What I do
My main passion is creating ideal software. I’m kidding, ideal software doesn’t exist.
As a lead developer / architect / team lead / whatever you call it, I have a few very challenging tasks to do:
- Understand very deeply the domain of the software
- Talk with the clients about the domain problems, understand deeply which new features or new parts of the system they want and why they want it
- Translate client fuzzy requirements to very clear use cases
- Create/Update system design to solve use cases that we just collected from the clients (my team also participates in this phase)
- Create guidelines that should be followed in the project so that the software is consistent and easy to understand and maintain
- Train developers to follow those guidelines, help them with understanding the ideas behind the guidelines, discuss improvements and help them with any other problem that can occur in their work
For my role, two main skills are needed:
- Knowledge of tech stack
- Design skills
Knowledge of tech stack
You need to know how some technology works, why it works that way, when to use which technology, etc. This is some stuff that all developers(regardless of their level) should know. My tech stack includes:
- Java
- Spring
- Hibernate
- Maven
- Gradle
- Docker
- Kubernetes
- Apache kafka
- SQL
- GIT
- Google Cloud Platform
Design skills
From the design perspective, things are a bit trickier because there is no silver bullet. But anyway, you need to be familiar with some approaches to solving problems and then apply some of them to the real project. Here are some things that I consider important:
- SOLID principles
- Domain Driven Design
- Ports and adapters architecture
- Microservices / Monolith architecture and patterns related to those architectures
- Test pyramid and ideas on how to properly test your code
- MVC arhitecture, etc.
Contact me
If you are a developer who would like to boost your career and learn from me or you are a company that needs a consultant to solve some challenging problems, feel free to contact me.