After being in the software development space for a while you start to notice a relationship between software design quality and software development speed. Software design here doesn’t just mean UI/UX design, it refers to the structure and relationship of software components as well as software development paradigms.
Software design is important and takes time & effort, it is generally seen as an activity that slows developers down. What is often disregarded but highly valued by more experienced teams is that software design allows for easier improvement later on. In fact, software development speed picks up in the long run when there is proper software design carried out in the early stages.
No design now allows you to move fast but in the long term, it becomes painfully hard to improve the software by adding more features. This is why at hackathons you can quickly build an app but it will become harder and harder to add features to that same app over a period of time due to the lack of design.
This chart shows how software development speed improves when software design is carried out. This is depicted by the orange line. The green line shows that there is a rapid development of features at the very early stages but over time this speed drops and it becomes harder to add features due to the lack of design.
Point ‘a’ shows that at the early stages of software development, a team that engages in proper software design will be seen to be moving at a slower pace when compared with another team that disregards software design (point ‘b’).
So don’t treat your non-trivial software development like a hackathon for the illusion of short-term speed. Properly evaluate your non-trivial software development and give it the design attention it needs. Slow now but easier to improve in the long run.
Further Reading
1. Read my article about the importance of software design.
2. Read my article about a related topic, technical debt, here.
3. Learn more about what the design payoff line is all about in Martin Fowler’s post here.