Wednesday, 20 February 2013

What an Agile Project needs for success

In my previous posts I explained about the Attitude of a Great Software Developer and Attitude of a Great Software Tester.  I am a huge fan of Agile methodologies.  I believe, if an Agile project needs to be successful, there are certain factors that will make it happen.

  • Technical Craft
    • The technical capabilities of a team should be of top quality, if you want to run a successful Agile Project.  An Agile project is actually run by the collective strengths of the individual team members and hence they need to be highly adept at their jobs.
  • Team maturity
    • This is one of the critical success factors for an Agile Project.  Not everyone is comfortable in working in an environment where there are lot of changes.  Hence the team members and the team as a whole should be highly mature enough to understand the realities and make quick yet thoughtful decisions
  • Collaboration
    • I cannot stress this point enough.  The entire team should collaborate within themselves and also with external stakeholders.  This is actually one step ahead of an important point Communication.  It emphasizes the fact that it is a complete team game.  A developer needs to collaborate with Product Owners, Testers and vice versa.
  • Team Morale
    • Agile methodologies put a high emphasis on the people who run the projects.  It is a given that, a team with high morale will produce better quality work and with more speed.  It is important that the team is maintained with high morale during the entire course of the Agile Project.
  • Engineering Best Practices
    • This is one of the most important success factors for an Agile Project.  The level of best practices determine the maturity of the Agile Project and will decide the speed of the Feedback Cycle.  Some of the engineering best practices include but not limited to
      • Code Refactoring
      • Automated Unit Tests
      • Test Driven Development (TDD)
      • Source Code Repository
      • Build Automation
      • Static & Dynamic Code Analysis
      • Setup Automation
      • Automated Smoke Tests
      • Automated Functional Tests
      • Automated Regression Tests
      • Continuous Integration
      • Continuous Deployment
  • Support from Management
    • Highly Critical.  Support from the upper management is required for an Agile Project to be successful.  The trick is not to expect miracles overnight from an Agile Project.  A good Agile Project will regularly start to add value to the business as the time progresses.
  • Support from Product Owner
    • Mr. Product Owner is the instrumental person who directs what features are available to the market at what times and how critical are they.  He helps in prioritizing and re-prioritizing the features as the iterations progresses.  Hence it is absolutely critical that the person playing the role of a Product Owner is clear about what is needed, has the ability to think from the business perspective and decide which features will add more value to the users of the business.
  • Continuous Improvement (Not the other CI :-) )
    • This is also another important factor that will influence the outcome of an Agile Project.  An Agile team learns from its mistakes, so its a journey of continuous improvement for both the team as well as the processes that the team uses.  An Agile team would be flexible enough to accommodate process improvements continuously thereby getting better and getting the product / application better.

A well run Agile Project will have a lot of benefit for the business and the organization.  It also lifts the team morale and makes them progress towards a common goal of producing great quality software.  Hence it is highly recommended that the above mentioned points are taken care of, for the project to be successful.  

Thanks for the read.  Comments are welcome.

About the Author

Rajaraman Raghuraman has nearly 8 years of experience in the Information Technology industry focusing on Product Development, R&D, Test Data Management and Automation Testing.  He has architected a TDM product from scratch and currently leads the TDM Product Development team in Cognizant.  He is passionate about Agile Methodologies and is a huge fan of Agile Development and Agile Testing.  He blogs at Test Data Management Blog & Agile Blog.  Connect with him on Google+