Overengineering will destory your organization
Thereās a common phrase that gets quoted in software development, "premature optimization is the root of all evil". This has merit, but itās not the root of all evil. The quote is old, and software development has changed since Sir Tony Hoare spoke those words.
Large organization with thousands of employees working globally now make up the popular software we use today. Designed and built by many different disciplines. Itās impressive how a business can manage the scale of people involved.
Software development is not an assembly line. People canāt be told to do a task and repeat it exactly over again. Itās continuous thinking and incremental.
Leaders are tasks to provide the path for others to follow. By architecting systems that allows the platform to scale alongside the teams using it. This is the seed that leads to over-engineering.
Take the most basic software you can think of, now imagine having 100 developers work on it. Everyone must be involved (youāre paying them after all).
Take a pause and try to picture the high level architecture in your mind, or draw it on paper.
Imagine a team of 5. Would the architecture be the same?
Companies struggle to understand why things were so fast before. They think that management is to blame, they will cull down the numbers, in hopes that the developers can spend less time in meetings and more time on code.
If by chance development has sped up, the next hurdle is that there is no new feature work, because the product team hasnāt had time to come up with approved ideas due to the design team being spread thin. The design team is bottlenecked because the research team is still gathering data to write a long case study about something that only a few āimportant peopleā will look at, but will skim through the diagrams and summary section. Meanwhile, the developers are left to do tech debt work, most of which is out-of-date due to recent platform changes.
Over-engineered software stems from an over-engineered organization. That one person you know who comes up an idea and over engineers it, will still not be as complex as an enterprise system.
A software company should remain as lean as possible. Only hire to do a role, not to occupy a seat. Hold everyone accountable. Teams, are the product owners.
With an emphasis on being as lean as possible, peopleās roles will feel valued. The companies head count growth will be slower but the product will be better. The talent will be higher as the barrier to entry is harder. Overall, everyone will be happier.
If youāre working in an organization thatās growing rapidly, remember, once youāve over-engineered you canāt go back. If you do, expect a lot of friction and unhappy people.
Therefore, it truly is the root of all evil.