In traditional software development, pre-agile, every single part of the process was documented prior to execution. This meant that a significant amount of time was spent documenting things that would never be revisited. The documentation process was often slow and cumbersome, and any significant changes required additional documentation. This focus on comprehensive documentation often detracted from the actual development of working software.
However, the agile development approach recognizes that software development is about creating working software that delivers value to users, not just documenting every detail of the process. When the end goal is to create software that works and provides value, we should be more concerned with whether it accomplishes this goal than how well documented its development is. Whenever we spend time documenting, we are losing valuable time toward development. Time is particularly valuable when the market is evolving rapidly, and we need to get our software out to users as quickly as possible.
Agile development recognizes that documentation is still important, but only to the extent that it supports the creation of working software. The agile development approach uses a Just In Time (JiT) documentation model, meaning that we only create documentation that is important to success, and only when we actually need it. This approach contrasts with the traditional approach, which focuses on creating extensive documentation upfront, often before any actual development has even begun.
While regulatory concerns and other drivers may require additional documentation, the agile development approach only creates as much documentation as is needed for the project and no more. We like to substitute the word “value” for “software” because working software without value isn’t a success. Documentation needs to serve the process, not the other way around.
The agile development approach prioritizes working software over comprehensive documentation, but this does not mean we do away with documentation altogether. Instead, we aim to rethink what is important to document. We only document what is important to success, and we use documentation to support working software. While documentation is still important, it should only serve and guide the process of creating working software, rather than bottleneck it. By focusing on working software over comprehensive documentation, agile development enables software teams to deliver value to users more quickly and effectively.