Agile Project Management - the new standard
Agile project management practices are becoming the standard in the software industry…. is this because agile techniques are so much better than the more traditional project management approaches or is it because the old project management methodologies don’t work? The reality is probably a combination of the two.
The status quo
Before we explore the agile world, let’s take a moment to explore where the traditional management techniques all too often fall short.
Firstly, what do we really mean by ‘traditional project management’? Well, this is a development methodology that treats software development as if it were a mechanical process of turning requirements into specifications, into lines of code; and as if every detail of this process could be planned in advance and measured to arbitrary precision. Add to that heavy documentation baggage, staged processes and fixed deadlines, worst of all, the interaction with the business in the traditional approach is very inefficient. Often limited to a project managers report that states “74 % of the features are implemented and ready for testing, the next 10 % will be implemented by 1st October.”
This is comfortable to the business, because it feels that most of the project is done. However, the failure here is to realise that the most important and most complex features could be in the undone 26 % of the features. The business also assumes that there are no defects in the three quarters of the work that has been completed.
Suppose now that the deadline falls when the project is, say, 90 % complete. The business assumes that the 90 % includes the most important features and that the features match its expectations. What all too frequently follows is bitter disappointment.
The business discovers that the remaining 10 % includes some of the important features and that the rest of the system is not defect-free. The project goes back to the technical team to implement the important features and to fix the worst defects as quickly as possible. The time pressure forces the technical team to take shortcuts in the code and the quality of the code declines.
The new world order…
Agile promises a radical change to this process; a change that allows the business to control the development process, the technical team to maintain excellent quality of the code and for both sides to discover defects as soon as possible. With an agile approach, the business interacts with the technical team regularly and would be able to drive which features it wants to have implemented first. Consequently, if the project is incomplete by the deadline, at least the business would know exactly what features it contained. Furthermore, as a result of the short iterations in an agile approach, the business will have seen and tested the implemented features; this reduces risk and, in a sense, ensures that the business gets its money’s worth of software services.
So, what is agile?
Agile project management methodologies set out to minimise waste. By ‘waste’ we mean unnecessary work. Agile makes no distinction between the types of work: requirements, specifications, code; it is all the same to agile. This is certainly appealing: as the business, you get exactly what you pay for; as developers, you do not spend time and effort writing code that you do not want or the business doesn’t need.
So, let’s look at the root cause of waste. It is not difficult to see that code implementing a feature that the business does not want is wasteful. But developers do not invent more work for themselves; they implement the feature in a belief that it is exactly what the business needs. Similarly, when the developers implement a feature that does not match the expectations of the business, it will need to be re-written. Remember though that the developers based the feature’s code on the specifications document. The analyst produced the specifications after reading the requirements document. So, who is wrong? The developer, the analyst or the business? And how do we ensure that nothing is wasted in our projects?
Unfortunately, there is no recipe that will ensure that there are no errors. To err, after all, is human; the client, analyst and the developer are all humans and all make mistakes. We must abandon the idea of looking for a method that eliminates mistakes. It does not exist.
Instead, we must find a process that allows us to spot mistakes early; a process, where when we see a mistake, we stop to address the mistake rather than sweeping it under the carpet; continuing in false hope that it will all somehow turn out all right. To allow us to spot mistakes early, the analyst and the developers have to work hard to deliver tangible output early and regularly. It is up to the business to check that the product matches the expectations. If it does not, the business must tell the development team immediately. This allows the development team to correct their understanding of the system. It also helps the business refine its understanding of the system it wants.
In addition to the waste reduction, an agile methodology focuses on sharing concepts and ideas between the business and the entire development team. An agile approach advocates openness, clarity and excellence rather than hierarchical control, rigid processes and mediocrity of traditional methodologies. Agile can improve the way you run projects, it will allow you to avoid problems being discovered too late in the process; and also helps the teams improve their technical skills and their morale
The aim is not paint the traditional project management approaches in too bad a light, but the reality is that most development projects that continue to adopt a traditional project management approach, run only by the extraordinary effort of the analytical and implementation teams.
The choice is now yours; you can explore agile, and in so doing give the business what it wants and needs, give the teams the drive to be excellent, attract the best talent. Or, you can keep plodding along with the traditional project management approaches.
Members can download NCC Management Guidelines 338: Agile Project Management for free.