Efficiency

A formal design step in your development process can bring about a benefit in efficiency.

An efficient development process is an important enabler of agility.

Design helps make the development process more efficient by reducing the number of changes that need to be made after code is first written - for example, reducing the number of changes that come out of a code review. Refactoring and reworking are redoing things that have already been done; these can be reduced by doing things better the first time. Getting feedback from senior team members who might not be able to afford the time to pair programme is another example of attention to the 'shift left' initiative we are encouraged to embrace.

Having each member of the team undertake a design separately, but then come together to discuss it once it is complete achieves greater throughput. Developers can design in parallel, thinking about the details of about solution at their own speed. Once they have finished, they can offer the design for review, which allows cross-fertilisation of ideas, getting other people's opinions of the proposed solution. All of this can be achieved before any code has been created, which avoids the need for applying changes to the codebase as a result of the discussion. Pair programming is a great way to share knowledge in the team, but at the cost of efficiency. We have found that there can be similar benefits to design reviews, but with more parallelisation.

A well designed system generally needs less support. Reducing the amount of support that needs to be done on a live system is achieved because the design process helps developers to step away from the code, freeing them to thinking about the pitfalls of a potential solution before it is written. This ensures that developers remain free to focus on their next development task, rather than be distracted doing support.

A good design tool can also help maximise efficiency. If the tool helps reuse structures and patterns then the team can move through their tasks quicker. A tool that can offer automation of some of the development is better still. That's why we created our custom design tool!