As a long term contractor/freelance software developer, I have been fortunate enough to have gain experience of multiple software projects and in depth knowledge of the software development life cycle. One of the negative points of being a hired gun is that sometimes organisations only call in contractors in when a project is under staffed or organisations feel that resources are being stretched to the max. I have often ,while discussing day rates with potential clients, been asked a question “Does your rate include extra hours?” or “Is the rate the same if you work weekends?” , it is usually at this point that I know the project is in real trouble. Once I get on site I normally find out, that the delivery date is just a few weeks away and there are still x amount of features the software still needs to be implemented. It is normally in situations like these that contractors normally have to prove their worth and deliver that bit of magic or experience that we carry around with us in our laptop bags!
It is normally on these types of projects that one really starts the value the benefits and concepts of Agile development. I am not saying that all other models of project management should be deprecated and the entire universe should be governed in an agile manner, heavens no. I think project management is a fine art, and I have had the privilege to work with a number of extremely talented people in this field, and have also learned a great deal from these people. However, one of the lessons I have learned from joining these seemingly doomed projects, is that normally turning a project from a certain to failure to a mediocre success is by adopting elements of the Agile methodology. There are also tell tale signs of a project that is lurking in the quagmire of success or failure:
- Features take longer and longer to implement
- New releases take longer and longer to get out
- QA cycles are cumbersome and time consuming
- Increased bug counts
- Increased support overhead
- Development team morale is low
- Customers are losing faith
In my experience there are few Agile techniques that can be implemented by a project team that can help to stabilise a project. These can be implemented without much effort and don’t require a departmental restructure, anybody with qualifications in Agile, Management buy in or any of the other million objections that may be raised. Al they require is a few simple guidelines and commitment from a team to implement.
Daily Stand Up
A daily Stand Up is a short daily team meeting held to provide a status update to the team members. There are a few rules required to effectively run successful stand ups.
- Meetings are held at exactly the same time every day.
- Meetings should be held in the same location every day.
- All team members should be standing through out the meeting
- Each team member has the opportunity to say three things:
- What they did yesterday
- what they are planning on doing today
- Are there impediments in their way
- Meetings are strictly time boxed to 15 minutes.
Some tactics I have used in the past in order to help maintain focus on the short durations of the meeting, is to hold the meetings in some uncomfortable surroundings. i.e Car Parks, fire escapes etc. This serves to remind people to keep their updates short and dissuade long protracted conversations.
I know most “Agile” frameworks say not to use the information from Scrums to update management meetings, I have found in the past that providing management with a short scrum update containing the impediments or general issues proved useful.