DEV Community

Rangan Mahesh
Rangan Mahesh

Posted on

How to not overengineer in software development

OverEngineering

Software development is becoming increasingly complex with the need to address different variables such as security, compliance, latency, reliability, recovery and so on.. software development is also becoming easier with growth of various tools, better technologies, automation, cloud and so much more..

So... how to make it simple ?

Software development becomes simple when you engineer the problem just enough and make proper use of tools/technologies to solve it.

Don't assume

Most of the complexity, technical debt, improper design, incorrect behavior and many more problems arise due to improper communication and lack of common understanding among the team.

Ask the question, is this going to be X or Y ? do not make an assumption and build on top of it, make sure everyone has a common understanding and are working towards the same goal.

Understand your end goal

Do no focus just on the implementation and what cool tech/tools you can use, think of the end goal and find out if there is a better approach, a simpler approach which would solve your problem and get you to the end result.

Best example ever

You can't do anything about it ?

We often think of various scenarios/blockers/bottlenecks which could be caused by factors out of our control (such as another team, a resource you need access to, dependency with another system) and try to solve them. While these are very good pro-active and essential measure to be able to work towards a goal smoothly, sometimes it becomes too much and leads to lot of resources being spent in vain.

Try to bring it up and voice out what is needed to the levels required, but do not put more than what is required, instead think of what else can be done which is under your control.. if none, then wait for it 😄.

Let's make it generic and futuristic

Everyone loves creating software that is futuristic and is applicable across various domains, but the effort required to do so keeps increasing as the design becomes more fancier.

Generic/futuristic software code is really good, but do evaluate the value it generates vs the effort put, are many people/teams going to be benefited with some more effort ? Yes ? Go for it.

Timebox

While we have to spend time to explore and solve lot of problems, it might lead to the trap of getting lost and not knowing when to quit thus overengineering and overthinking.

Timebox what you are going to explore, once you hit your timer think about 'are you on the right track ? do you see any outcome with some more effort and time ?' and decide what to do next based on your answer to that question.

Top comments (0)