Before writing code to solve all but the most trivial of software problems, a software engineer should write a tech spec.
Some software engineers may regard writing specs as unnecessary process that gets in the way of the agile approach. The point of a tech spec is not to impede progress, but to take a brief step back and think things through. Remember: a software engineer’s job isn’t to write code but to solve problems.
A tech spec forces you to think through complicated issues and to get everyone on the same page. This helps to avoid wasting time on dead-end solutions or building the wrong thing.
There are other benefits, too:
- Improve the accuracy of estimates and timelines.
- Consider operational and long-term support costs.
- Prevent security and privacy problems.
- Provide documentation for future teams.
Experienced engineers know that the majority of their time won’t be spent writing code. It’s reasonable to set aside time for thinking through problems, planning, and communication. The tech spec is an excellent tool for this.
Source: On Writing Tech Specs, Chuck Groom, https://codeburst.io/on-writing-tech-specs-6404c9791159