As the hype around Agile Development has been reducing – it has moved from just being a buzz word to a set of principles with teams benefiting from adopting it. However, many teams trying to transition to Agile are still not able to do it successfully.
Part of the challenge is that a large focus of agile has been about teams being able to respond to change and thus working with multiple iterations while having working code. But the focus on iterations and working code is not enough to do agile successfully. Agile teams need to make sure that the teams collaborate and work together effectively to produce results.
A Case Study
One of the teams that I worked with tried to make a big shift to Agile but failed. As would be expected, when transitioning to a new way of doing things the involved teams had a rough start. Things seem to have settled after the first two months, with the engineering team being able to push releases out on a monthly basis. However, the business team of the project still spent months in building out detailed specifications of features and only provided high-level feedback. They focused on all the features that were not implemented instead of currently implemented use cases. Within a few months all traces of agile practices were stopped and projects were being planned for two-year periods.
On discussing the situation with the engineering team leads, the problem was described as ‘not having control over the specifications.’ The engineers pointed to problems with the business team and worked to make sure that they did not get burned in the process. To put it simply they implicitly asked the business team for detailed specifications of needed features so that they could give detailed project plans for the next 2-years.
On Collaboration Over Contracts
It is the responsibility of every team member in an agile team to collaborate with other team members to provide effective results. The Agile Manifesto puts it succinctly, “Customer collaboration over contract negotiation”. When collaboration with team members breaks down, then the only option for a development project to succeed is to work on getting detailed specifications that form the basis of such a ‘contract’. Team members in an agile team need to work to make sure that other team members can discuss feature details easily when needed.
For an engineering team this means working together and focusing on the team’s success instead of individual success. Team members will need to work to discuss challenges that might be seen during implementation so that features can be appropriately prioritized along with the customers needs.
Agile development can be very helpful in building out projects, but doing it successfully is more than just focusing on ‘rapid working iterations’. Agile team members need to work on making the team/project successful.
Image credit: flickr