Stacking the bricks in the software development process
We, developers, are searching for Holy Grail, one pattern to rule them all. There’s no such.
In his excellent book “Atomic Habits”, James Clear described how we should stack our habits.
If we want to change our bad habits, we should create a helpful environment for better ones. For instance, put our mobile far from our hands to avoid being tempted to check it too often.
In the same way, we should build our dev environment from small habits and good practices to enable good behaviours and make it harder to continue bad habits. That means focusing on composability, on being able to remove specific components without breaking the whole system. On making our dev life efficient and limiting distractions.
I’m thinking about good habits as some form of Kata; by doing them, we’re making those practices commodity. By that, we don’t need to think about how we’re doing it, but as we’re doing that subconsciously, using muscle memory.
That reduces the number of things we need to remember reducing the cognitive load. Thanks to that, we can get more focus on the most important things. So, for instance, the bigger picture.
Of course, there’s a risk when we forget that those small things are just bricks to build something bigger, and we need to keep an eye on that.
What small things then? For instance:
- understanding that generic doesn’t mean simple,
- cutting the number of layers in our architecture to not block the thought process,
- keep the things that are changing together in one place, e.g. by slicing the code by business behaviour and feature folders. It’ll reduce the context switching,
- focus on the removability instead of maintainability,
- reduce meaningless discussion and creativity where it’s not needed. E.g. define conventions for formatting, automate them and stick to them by making them a commodity,
- don’t take blindly advice from authorities. Be pragmatic, understand the context you’re in and in which patterns were designed. That will help you to be agile in the right way.
It’s essential to have tools to zoom in and zoom out. We need to have a vision of the solution, but then you need to execute it. A grand vision with poor execution won’t succeed. The same thing goes otherwise. I’m a fan of proof of concepts, so I do a quick dive into the code/tools to evaluate assumptions and ensure that they’re not show-stoppers before moving forward.
Ergonomy is underestimated in our industry. Houses are made from bricks. In the same way, we should be stacking small patterns and practices matching specific needs.
That’s also aligned with the Kaizen concept, so continuous improvement on the process instead of trying to design one that will stay forever as designed.
Don’t think then on Clean, Hexagonal, or Whatever Architecture, but how to make your development and deliver as smooth as possible, limiting distractions.
Enhance accessibility, work on ergonomy, and be consistent. Stack the bricks one by one. Start with small things. Big will come.
Cheers!
Oskar
p.s. Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, putting pressure on your local government or companies. You can also support Ukraine by donating e.g. to Red Cross, Ukraine humanitarian organisation or donate Ambulances for Ukraine.