The Prime Directive

From Programmer 97-things

Jump to: navigation, search

Forward and sustainable progress can only be measured through a software system that works. There is no other way!

Requirements documentation, architecture, design models, and test plans may provide value, but they do not offer accurate insight into the current state of the development effort. Conversely, a software system with a multitude of compilation errors or failing tests only offers a false sense of security that the team is making progress simply because something appears to be happening. Without a system that works, there is no way to be certain that the development team is moving in the right direction. Continuing to develop and add new features to a software system that doesn't compile, or whose unit tests fail, will only steer the development team further off course, away from their intended destination. Without question, it is counterproductive to add code to a system that doesn't work.

The prime directive of software development states that a software system should always compile and its tests should always execute successfully. From the moment the first line of code is written or the first unit test created, the development team should strive to ensure the system can be built, tested, and executed at any point in time throughout the development lifecycle.

The prime directive assures the development team that they are building a system exhibiting the functionality their users demand. It ensures they are developing a system that performs, is secure, and is dependable. How so? Because the system works it can be tested throughout the lifecycle. In addition to unit testing, testing also includes acceptance testing, load testing, integration testing, and many other forms of testing. Customer demonstrations can be held that ensure the software meets their needs. Important feedback garnered from these demonstrations allow the development team to adjust their course. Problems aren't allowed to fester in the system for prolonged periods of time. As issues arise, they are dealt with by the development team. The result? No problem is ever older than the last successful build.

Of course, the prime directive has implications. If at any point in time a compilation error surfaces, or a test fails, it must be the priority of the development team to resolve the situation as quickly as possible. The can seem counterintuitive, especially for teams with severe deadline pressures. So the prime directive requires discipline. And it is with this discipline that the development team is able to ensure sustainable and forward progress throughout the duration of a project.

There are many practices, agile and otherwise, that development teams adopt to improve quality, speed delivery, and increase project transparency. But each of these practices depends upon the fundamental notion that the software works. This is how it should be. This is how it must be!

By Kirk knoernschild

This work is licensed under a Creative Commons Attribution 3

Personal tools