Anxiety Driven Development
Creating software involves doing something that hasn’t been done before - it is inherently an activity with uncertainty and risk. It is not surprising that software projects are late, use more resources than planned or involve heroic efforts to hit deadlines.
At the start of a project there is a desire to get going and show progress. It is natural for developers to pick up work they are confident they can complete and rapid progress is made. Work that involves more uncertainty is left for later, often resulting in unexpected complications causing delays at the end of projects - a cause of work being 90% complete for a long time.
The work needed to complete a software project follows the 80/20 principle, 80% of the uncertainty is contained with 20% of the work, and this is the work which is usually left until the end of the project. Intentionally considering this at the start of a project and focusing on the work with the most uncertainty as early as possible has a lot of benefits. Complications are discovered early in the project when there is still time to adapt or replan, we reduce our anxiety and steadily gain confidence in our ability to deliver as the project progresses.
Developers will often know which work has the most uncertainty as this will be the source of the greatest anxiety. Different developers with different skillsets and experience will have different anxieties, these often include new technology, new libraries or APIs, performance requirements, approvals and co-ordination with other teams, unclear requirements and feature creep.
Simply starting with the work you are intuitively most anxious about is effective. It is also useful to proactively look for hidden uncertainty and techniques such a running a pre-mortem (where we perform a retrospective on the project in the future which it has already failed), is a great way to uncover these.
Adopting this approach can make it seem like not much is being accomplished at the beginning of the project, left unexplained this will create considerable anxiety for the project sponsor. Being open with project sponsors about how we are managing risks within our projects can enhance professional credibility and provide re-assurance that the project is not in fact going off the rails just as it starts. Businesses create value by taking risks and managing these effectively, managing risks around uncertainty creates value.
Using anxiety to drive how we approach development is an effective way to deal with the uncertainty inherent in creating software. Reducing uncertainty early sets the project up for success, reduces project risk, allows time for course corrections and enables a sustainable working environment that is not reliant on heroic efforts.