Software Architecture
HereĀ are some of the software architectures and architectural patterns I have been intensely working in various mission critical projects:
- Highly distributed application architecture
- Service Oriented Architecture (SOA)
- Event driven architecture (EDA)
- Microservices, breaking down the monolith
- Real-time stream processing
- Domain Driven Design (DDD)
- Command query responsibility segregation (CQRS)
- Event sourcing (ES)
- Pub-sub messaging
Methodology
Using the right methodology to successfully complete a complex project is key. Throughout my career I have been practicing the following methodologies:
- Agile development, SCRUM, Kanban
- Test driven development (TDD)
- Proof of concepts (PoC), Prototyping, Mock-ups
DevOps
In a fast changing world with ever changing requirements DevOps is of uttermost importance. I have introduced and driven the implementation of:
- Continuous Integration & Continuous Deployment or Delivery (CI/CD)
- Zero downtime deployment (rolling updates, blue-green, canary releases)
Quality Engineering
To be able to adhere to the first principle of the Agile Manifesto, namely “our highest priority is to satisfy the customer through early and continuous delivery of valuable software” we need a fully automated regression tests suite. I am leading the test automation initiative that automates a formerly manual test suite.
- Defining types of tests how to write automated test that are robust and reliable
- Working with test management to define the processes
- Guiding the creation of test cases and their breakdown into component and end-2-end tests
- Guiding the linking of test cases with tests and the collection of test evidence from test runs
Programming Languages & Frameworks
All the following languages and frameworks I have used to write and enhance mission critical applications and/or been teaching from entry to advanced and expert level:
- .NET, C#
- Java
- Python
- Java Script, Node JS, Angular JS
- HTML, CSS
Operating Systems & Scripting
I’m deeply familiar with Linux, MacOS and Windows and am using Bash and PowerShell to automate complex tasks
- Linux (CentOS, Ubuntu, Alpine)
- Windows 10, Windows Server
- Mac OS
- Bash, Fish, Zsh, Bourne Shell
- PowerShell
Infrastructure & Platforms
I consider myself to be an expert in container technology and highly distributed application architecture. I have written several books about Docker containers, orchestration engines such as Docker Swarm and Kubernetes. I am deeply familiar with the architecture and the inner workings of Apache Kafka and the Kafka ecosystem:
- Docker containers
- Kubernetes and Docker Swarm
- Apache Kafka, Kafka Connect, Schema Registry, Kafka Streams, KSQL
Security
To me, security can never be an afterthought and sprinkled like magic dust on top of applications running in production. Security is a base requirement for any business application. As a consequence I have been digging deep into the following areas:
- Authentication: Mutual TLS (SSL), SASL, OAuth2, OpenID
- Authorization: ACLs, Role-Based Access Control (RBAC)
- Transport: TLS, custom encryption
Soft Skills
Current and former supervisors, coworkers and mentees have been associating the following soft skills with me:
- Leader and visionary
- Empathetic leader, role model
- Mentor, trainer, coach
- Excellent communications skills
- Translating complicated structures into easy to understand content
Management
As a part of my various roles as lead, distinguished and chief architect, as well as lead curriculum designer I have acquired the following management skills
- Leading strategic initiatives
- Formulating strategic and tactic goals
- Leading interdisciplinary projects
- Developing roadmaps
- Estimating and managing timelines
- Enabling and fostering teamwork
- Reducing friction, optimizing processes
- Gathering and analyzing business requirements
- Creating specifications
- Thinking out of the box