It’s always enthusiastic to start a project from scratch and have full control to it, decide which technologies or architecture to use the feeling of freedom to refactor or rewrite whatever you want it whenever you want it, without having to explain or fight with the rest of the team.
But wait a second!! IT world is not a solo game!! isn’t it? Software development is like a cooperative board game, everyone wins or everyone loses and like all cooperative games, you must take into consideration all your teammates before taking any actions and in a timeline scale, we should take in count the past the present and the future (developers who will work into the projects)!
Let’s quote a classic story…
We all had heard the story “The Tortoise and the Hare”. The Hare so confident in its abilities does not take the race seriously, and so naps while the Tortoise crossed the finish line.
Developers in real-world are in a pretty similar race every single day. You must have heard your teammate or yourself saying “We can clean it up later, we have to deliver this…” and of course, things never do get cleaned up later, because of more and more requirements comings in and they have to go get them done. Taking this kind of actions with the passing of time the codebase will transform into something unreadable and a nightmare.
The Toxic developer!
Toxic developers as the Hare are overconfident in their ability to remain productive, and it’s just a matter of time this will be reduced to zero. They are living in a big lie that writing a messy code will make them fast in the short term, and just slows them down in a long term. They are selfish by only taking into consideration themself and the task assigned to them!
So how to not be Toxic developers?
Every Software system provides two different values to the stakeholders: behaviour and structure. The software developers are responsible for ensuring that BOTH of those two values remain high. Unfortunately, developers often focus on lesser of the two values (behaviours).
Let’s put flesh on the bones 🍗…
One of the developers responsibility is to write code to satisfy stakeholders requirements. And maintain it and fix eventual bugs 🐛.
Toxic developer often stops at this point…
…the second responsibility is to take care of the architecture…
The goal of software architecture is to minimize the human resources required to build and maintain software.
While writing code, taking actions or simply maintaining a product as developers we must take into consideration all the aspects to make sure the delivered code is good for both users the final user who will use the feature and the developer user that will work into the codebase…
So for a developer point of view means to define and structure a solution that meets technical and operational requirements, implemented in a way that features and functions are easily programmed, easily modified and easily extended.
“ If architecture comes last, then the system will become ever more costly to develop, and eventually change will become practically impossible for part or all of the system. If that is allowed to happen, it means the software development team did not fight hard enough for what they knew was necessary.” — From a speech at Northwestern University in 1954.
Before we end…
This is my first post so far, so thank you for the time you spent by reading this article!
You can @ me on Twitter (@nokrimohammed) with comments, or feel free to follow.
Uncle Bob “Clean Architecture: A Craftsman’s Guide to Software Structure and Design (Robert C. Martin Series)”