I had presented the contents of this blog as a lightning talk @ Agile India 2014 Conference on Feb 27, 2014.
Traditional processes usually define success is in terms of factors such as delivery on time, delivery on budget, and delivery according to specification. However, even if the project was successful based on these factors, if it doesn’t provide the intended value to business, it doesn’t make much sense and can’t be considered as really successful. For instance, consider building an online website. By the time you start building the web site, you might not have any competitors for that business. If, by the time the project is finished, some other players have already come in the market, you might not get the profit you thought you would be getting. So timing is important and you need to release the product as soon as possible. This is a shortcoming of traditional models such as waterfall model, where you decide on all possible features, freeze the requirements, finish all those features and then deliver. An agile methodology, instead, try to deliver the most required features initially and then incrementally build the system to a more matured level based on user feedback and requirement priorities. Thus the agile way of doing things provide better organizational value and hence can be considered more successful in the above example.
According to the book “The Art of Agile Development” by James Shore and Shane Warden, there are three types of success which are important: personal success for the developers, technical success for the project work and organizational success. According to the book, “Without personal success, you’ll have trouble motivating yourself and employees. Without technical success, your source code will eventually collapse under its own weight. Without organizational success, your team may find that they’re no longer wanted in the company.” Out of these, the most important should be the organizational success, as the organization’s interests are the primary reason for the project and also they fund the project. Hence we can say that the actual success of the project depends on the value that you bring to the organization through the project. However in real world often the organizational success is ignored by individual teams and concentrates only on technical and personal success. This happens mostly because the individual teams might not have an overall picture about the organizational goals and has access and knowledge only limited to their modules.
Many consulting companies recently have understood the importance of organizational value, and they try to provide more value through business proposals and POCs that can improve organizational success and/or reduce the cost. While I was working with a consulting company before, managers, technical leads and developers had an extra goal added to our appraisal goal sheet to provide business proposals and POCs that can provide organizational value. This would often require you to work across teams. We used to work across teams and modules, creating proposals, POCs and then presenting to client during client visits. While working across teams and boundaries aiming at organizational success, we will eventually gain technical and personal success. Though our focus till now was on organizational success, technical and personal success is also important.
Agile help us to achieve overall success for a project through methods such as methods like Extreme Programming (XP) and Scrum. As we have seen already, agile methods like XP and scrum help us in bringing organizational success through early releases and allowing us to change requirements based on market conditions and customer feedback. Agile also provides means to achieve technical success. For instance, in addition to frequent release and adoption of changes, XP also include programming in pairs or doing extensive code review, unit testing of all code, simplicity and clarity in code, making sure the problem is better understood, and frequent communication with the customer and among programmers. While code reviews were considered a beneficial practice in traditional methods; XP takes it to the extreme, by making sure code is reviewed continuously, i.e. the practice of pair programming.
Personal success is also very important as it will motivate you and your team. Proper motivation for team members is very essential for the success of any team in the long run. However agile doesn't say much about achieving personal success directly unlike technical and organizational success; we need to find out how we can bring personal success to ourselves and team; and the definition of personal success depends from person to person. However, the experience and learning you get while participating in an agile project is more valuable than what you can get from any text books. Remember the quote, “Experience is the best teacher”. Though not considered as important by many managers and manager turned scrum masters, this is also very important to motivate them and help them continue to deliver technical and organizational success. Therefore Managers and management also needs to make sure they see into the personal success concerns of employees.
Please share how you define success and how you try to achieve it within your project, especially personal success.
Note: You can even login using your facebook id to post your comments using the fbconnect button in the sidebar, though I would prefer you to register as a user here.
“The Art of Agile Development” by James Shore and Shane Warden