How Design Documents Will Save You Time, Effort and Money
Nobody enjoys paperwork. Software engineers want to be coding, hardware engineers want to be tinkering with hardware, and managers want to be managing a work in progress.
While they all like to "talk about" a project enough to get it started, writing out paragraphs to describe design decisions is considered "no fun" and "wasted effort". Hence, documents that go along with a product design either don't happen or fall down the priority list. What remains can be an informal design that leads to buggy and unmanageable code.
How can having a design document save you time and money?
A base product that is very clearly defined can speed up time-to-market. Documentation helps engineers focus on the design of the core requirements and not features that are evolving or will be tossed out at the end. Everybody is working towards a common goal of a quality design that is manageable and easily extensible. Time is not wasted and that alone is worthy of a little paperwork.
In the short term, design documentation also:
- Makes the developer look at high level on how all aspects of the system will work together based on the requirements.
- Spurs questions, ideas for improvement and modularization.
- Improves the accuracy of how much time it is going to develop the code and deliver it - with set milestones along the way.
- Clarifies the purpose and intent of the product to all involved.
- Prioritizes features in the project plan.
- Uncovers issues early on so that effort is not wasted on bad design, logic, bugs and less important features.
In the long run, documents help reduce the costs of product maintenance:
- An easily understood and quickly digestible document (one filled with bulleted lists, block diagrams and flow diagrams) can help engineers on the project team quickly ramp up. This can also help for maintenance or when new features are developed and the original team is working on other projects.
- Documenting the technologies, languages, tools, build environments and special skills, allow managers to assign the right engineer to take over, as well as help newly assigned engineers get up to speed more quickly.
- Documenting saves time by not forcing engineers to set break points and walk through the software to grasp its understanding.
- A history of changes and alterations shows the evolution of a product from idea to concept to final product to maintenance. With a record of who did what, it's easier to go back to ask questions to the right person as well as gain an understanding of how you can do better the next iteration.
- An understanding of the whole project can help an engineer expand a design without breaking it.
Design Documents to Consider
Design documents present clear instructions, explain the purpose and intent of the final product, and give details how/why you want things to be done. It describes what is fact and what is assumed. Documents that may apply include:
- System Requirements Specification / Software Requirements Specification (SRS)
- Architecture and High Level Designs (HLD)
- Systems Design Document / Software Design Document (SDD)
- Build Environment / Configuration Management Plan (CMP)
- Test Plan or Test Design Document (TDD) / Verification & Validation
Design docs or "paperwork" might not appear what engineers were hired to do, but they are one of the most important aspects of the position. A little paperwork can influence a products' success or failure - by helping the companies we work for gain market share and customer loyalty.
Good design documents help us build better products, help us get to market more quickly, and in turn, help our sales department sell more, so we can press on to the next project or feature.