Monday 7 July 2014

How Can Agile “Agility” Lead To Successful IT Projects?

IT development companies and organizations have been using Agile to boost up their development activity and deliver time bound projects. As on today, Agile framework is popularly used to reduce technical debt and control regression. The framework provides features through which product increments can be availed on a consistent basis and shippable user stories are delivered at the end of sprint iterations. While much has been discussed about the deliverables in Agile, the most important deliverable is a bug free working software release built using well crafted code – the “code base”.  It is very important to deliver the required project value through well designed, logical, and bug free code.  In Agile scrum, the cross functional development team should ideally exhibit virtues such as responsibility, pragmatism, professionalism, and even pride while delivering the productivity during the daily sprints. These values help to check technical debt and enhance the business values associated with the user stories.
 

The scope and types of software projects that can be developed using Scrum
While discussing any IT based project, the software development requirements and the scope of project development phases generally remain the same, and do not change much irrespective of the type of software project to be developed. The different types of projects that can be developed using Scrum include:

  • A client-server application/system
  • A standalone application/system
  • HTML/DHTML/XHTML, ASP, PHP, Joomla, and DotNetNuke web based site/portal development   
  • Java, VB Script, or any other script based development
  • Android/Symbian/iOS or any other mobile apps development, etc.

So what is it that can increase the “agility” in Agile and deliver successful software projects?
 
Well designed and crafted code
Most IT companies feel that on a practical basis, it is near to impossible, or very difficult, to develop bug free code offering robust functionality to the end users. IT companies tend to develop projects under extreme stress related conditions, and it is important to meet the release dates and client deadlines. The development team, in most cases, focuses heavily upon completing the project well within the stipulated deadline, and this becomes the core focus of their development activity. The haste in developing the project often leaves very little in testing the software features and functionality in a proper manner. This leads to technical debt. The company may even have to “pull back” the software release if the core features fail to function properly, and this can lead to bloated developmental overheads. If the re-development still fails to deliver the project value to the end users, the technical debt keeps on increasing. If this is not checked, it may become impossible to control technical debt and recover the project development costs. 
 
Agile helps to reduce technical debt and control regression. When functionality in the form of user stories is developed by the team, it is extensively tested with respect to the acceptance criteria linked with it. During the sprint retrospective, the product owner ascertains the development as regards the definition of “Done” and Okays the story if it fulfills the criterion. Thus, “shippable” and bug free product functionality is delivered through Agile sprints. This is how regression is primarily addressed using Agile. In addition, the sprint development is carried out based upon the feedback availed from the end users and stakeholders. The development team is able to focus upon providing the core functionality while developing the user stories. This directly, and indirectly, helps to check technical debt and keep it in control.  

Early and reliable feedback
Agile needs early and reliable feedback to produce successful product increments. The feedback should also be consistent. One of the main causes of concern in IT development is the availability of consistent and reliable feedback from the end users. The development carried out may be subjected to stringent quality and benchmark tests. However, when the release is deployed to the end users in the market, they may often argue regarding the nature of functionality offered.  The functionality may be properly designed, but still fail to deliver exactly what the end user may actually desire or need. If such is the case, the fault does not lie with the development team. It actually lies in the way the particular feature or functionality is understood and envisioned by the product owner. The result is an increase in technical debt, since the same story is required to be re-developed in accordance to the exact requirements suggested by the end users.  
 
Early feedback in Agile prevents this from happening. When a particular functionality is developed in the form of a user story by the team, it is approved by the PO during the retrospective sessions (the sprint retrospective meeting), who checks it, and ascertains whether it is technically sound i.e. it satisfies the acceptance criteria. Subsequently, the stakeholders review the functionality approved by the PO, and ascertain its business value i.e. how much important the story is to the end user and how much it contributes to the product’s “worth”. The story is actually considered as “shippable” only after the stakeholders approve it for its business value. This Agile feature prevents technical debt from increasing since the end users get involved with the project at an early stage and approve the development carried out as to whether it meets their criteria, and is indeed useful to them.
 
Professional programming teams
The development team forms the base of all development activity in Agile. In many ways it is the backbone of entire Agile framework. A cross functional team, experienced, and capable of executing successful sprints can go a long way in making Agile projects successful. With Scrum and Agile related discussions catering mainly to the product owner and the scrum master, it is equally important to discuss the development team without which, the existence of the PO and scrum master becomes superfluous. The productivity offered by the development team directly affects the success of the project. If the team is well collaborated, shares opinions and views, and feels comfortable carrying out the daily sprints, it would lead to reliable and consistent product increment. One of the main issues why the team fails to deliver shippable user stories is that the team often loses focus when faced with technical problems and finds it difficult to find acceptable solutions. Another important factor affecting the acceptance of stories developed by the team is a lack of clear understanding as to what the end user really expects from the product features. It is very common for the team to develop features which are rejected by the end users after the software is deployed simply because it fails to function in the manner so desired. In reality the team is not at a fault because it follows the development plan. This scenario is very common in case of Waterfall methods in which the development activity is carried out in stages.
 
Agile offers reliable and timely feedback which helps the team to understand the end user requirements and carry out the development activity in accordance to the feedback received from the stakeholders and the end users. If the functionality does not satisfy the end users, it is rejected and taken up for development afresh. This greatly controls the increase in technical debt since the development is “challenged” immediately after it is carried out, and user stories do not get deployed to be developed again later on. 

Subscribe to the permanent free version of the Quickscrum project management tool to get an idea about how the tool works and what it has to offer.

No comments:

Post a Comment