The Pros and Cons of Agile Product Development
By Arijit Banerjee
Let’s start with the definition of Agile Product Development – it’s basically an iterative approach to product development that is performed in a collaborative environment by self-organizing teams. The methodology produces high-quality software in a cost-effective and timely manner to meet stakeholders’ changing needs. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement. It also encourages rapid and flexible response to change.
Let’s take a look at some of the pros and cons of this philosophy of development.
The biggest advantage of agile development is its emphasis on responding to dynamic challenges and working on projects/tasks that matter the most at that point in time. The philosophy does not force teams to come up with time-bound projections. An agile team has a list of things they need to work on in order of priority. They need to work on the most important tasks at hand on a day-to-day basis. As and when tasks get completed, they move to the next most important task – on a continuous basis. This method has many benefits:
- Customers get solutions to their most important problems – faster
- Tasks can be prioritized in an order that is reflective of real-time market conditions
- Developers feel they’re doing more fulfilling work since they’re working on the big problems at hand and getting feedback from people using their products
The agile method accepts the fact that we don’t know everything about a project at its start. Agile believes that developers will learn about the project during the course of development. They are prepared to discover that their technical solution doesn’t really solve the customer's problem or even unearth an entirely new problem altogether hidden under the initial problem, which on solving will resolve not just the current issue at hand but other challenges as well. This practice encourages prioritization and experimentation, which in turn reaps greater benefits.
For product development teams to be responsive to change and prepared for uncertainty, there needs to be a rapid iterative and cyclical review process in place throughout the course. In agile, work is constantly reviewed by the client to ensure that the final output is exactly what the customer is looking for or is satisfied with.
Lesser Clunky Documentation
Agile has a single-minded focus on solving pressing problems. Developers constantly collaborate with customers to design solutions that move the product from its current state to the next improved one. This basically means that there’s no need for spending time or money on detailed contracts or negotiations around scope of work of projects. The focus is purely on developing a solution.
Lack of Investment
The single biggest problem with Agile is that most development teams don’t understand the core of being agile. A lot of companies set-out to be agile, but fail to invest enough time and money into educating their teams on its methodologies and principles. This leads to the development teams not adapting agile in a way best suited to their organisation; which in turn leads to failure. Every change in the process – just like people or culture – requires some investment.
Another problem that stems from the lack of fully understanding agile systems is that teams often engage in irrational behaviour due to the flexibility provided by the agile philosophy. This obviously leads to failure and the team predictably blames the agile method instead of looking back and identifying its own mistakes. This is the reason why many adopters of agile have renounced the method and spoken out against it.
Not Every Organisation's Cup of Tea
Not all organisations are prepared for the drastic changes that the agile method requires. Adoption of agile requires changes throughout the organisation – and not just the development team. For agile to work:
- Customers / stakeholders need to regularly invest time in reviews
- Marketing and Sales divisions need to rely less on predictable feature roll outs
- Top management needs to understand that agile is a ‘push’, not ‘pull’ model
If an organisation cannot cope with these changes or adopts the method without implementing the basics of the philosophy, it’ll most certainly lead to failure.
Low Visibility Into Future
The Agile method promotes a system where development teams work on the most pressing issues in order of their priority. If teams start prioritizing the ability to quickly change over, following a clearly drawn out plan – they’ll invariably need to sacrifice the security and predictability provided by feature-driven product road-maps. This can be difficult for other divisions (like marketing, sales and finance) in the organisation to cope with. If an organisation has a high dependence on a perfectly predictable future, it’s most likely not going to be able to adopt the agile philosophy.
Bringing Diverse Skillsets Together
The agile method encourages teams to deliver a high quality output all by itself with zero or minimal dependence on externals. This ask sounds simple, but can be extremely difficult to implement if different functions like design and testing are involved. Sometimes, important aspects like design become the last piece of the puzzle in the development process. This leads to serious compromise in the overall quality and experience of the product.
Agile methods like scrum recommend teams between the sizes of 5 to 9 individuals. If an organisation has a team of 500 developers, that’s 50-100 smaller development teams! A smooth collaboration between such large teams is definitely going to be an issue. Agile methods were developed for small and nimble teams to adapt and adopt. So the agile philosophy may not gel well with your plans to scale or expand as an organisation.
The bottom line is – you need to choose a product development methodology that suits your organisation best. You’ll need to take into consideration various factors that will have an impact on the method you choose before going ahead and implementing anything. So choose wisely!