An Agile or Waterfall approach to bespoke software development?
What are the pros and cons of the agile approach to software development versus the waterfall approach to managing software projects, and can we establish which approach is best? What I have done is asked a few of my peers who are experienced software developers what they think about it. The purpose of this article is to state their opinions, and let you form your own opinion based on their expertise.
The question I posed was: “Is an Agile or Waterfall approach better suited for bespoke software development?” The reason being that many Manchester organisations take an iterative approach throughout the entire build process to ensure deadlines are met and budgets aren’t exceeded, while still having time to incorporate changes if necessary. Some take an iterative approach for just parts of the build process while others take a more waterfall approach.
Let’s start with a definition of the two approaches from the Software Project Management website on Agile :
“In software development, Agile refers to a group of software development methodologies based on iterative processes which require a high degree of collaboration between self-organising, cross-functional teams where requirements and solutions evolve through customer collaboration.”
Waterfall: “A model for delivering projects in which progress flows steadily downward (like a waterfall) through sequential phases until reaching ‘completion.'”
Now that we have got that out of the way, let’s discuss the thoughts and opinions I was given! (I’ve put them into categories below.)
Waterfall Approach: Stable, Predictable and Linear Progressions
“Agile should be used by companies that are not building complex systems. The reason being is that it’s too difficult to build the requirements at the start of a project for high complexity, meaning you will have to change them during the development process anyway. This does not work for agile.” “I feel agile can make things more complicated because you don’t know what you want until after the product has been built.” “The linearity of waterfall allows stakeholders to plan ahead, but I agree with your thesis that it is better suited to smaller projects.”
An Agile Approach: Flexibility and Dynamic Needs
“I prefer an iterative approach as it allows for more flexibility and adaptability to changing requirements.” “Agile is better suited for complex projects as you can change the direction of the project during the development process if things aren’t working out.”
An Agile Approach: Working Software Every Sprint
For some this was a key benefit, whereas others said it required too many resources.
“I think agile is great because at least there will be something built every few weeks/months that we could demo to stakeholders who want to see functionality sooner rather than later. A waterfall approach would be very resource heavy and I don’t see how anyone could possibly build anything with just an analyst and a developer!” “In theory it sounds great, however I have worked on one or two agile projects where it wasn’t the case and we ended up building very little.”
What does this mean?
I think it is safe to say that there are pros and cons for both approaches, and ultimately you should choose what works best for your project. However, some professionals seem to prefer an agile approach as it allows more flexibility and adaptability. Some would agree with me that waterfall is better suited for smaller projects as they need a clear end goal in mind before starting on development (although I don’t know if such rules exist).
Some of the benefits of an Agile approach:
- Flexibility; able to adapt on-the-go according to changes in requirements or technical considerations.
- Frequent delivery of working software which helps uncover/resolve issues early.
- Can be used for complex projects (needs further research).
Some of the concerns with Agile approach:
- Takes more time to plan, estimate and prepare; which could cause problems if the client is under pressure to release on schedule.
- If not planned properly, can result in unfinished or inadequate products due to changing requirements/lack of planning.
- Requires a lot of resources (due diligence should be made beforehand).
What other ways do you think we can improve software development?
Two areas that Manchester companies looking at bespoke software should consider are using domain specific languages (DSL) and creating reusable components . This way clients will get exactly what they want without paying for functionality they won’t use. It also means developers can focus on developing expertise in particular areas rather than becoming a jack of all trades.
Conclusions / Summary
- No matter what your thoughts are on Agile vs Waterfall approaches to bespoke software development, everyone will benefit from being open minded about new ideas and ways of thinking.
- It was interesting to see the mix of opinions regarding whether or not Agile would suit small projects or large complex ones – it seems there is no definitive answer! If anyone has any thoughts or would like to share their personal experiences, please feel free to let me know.
- Ultimately you need to pick a development methodology that works for your project – I have found both Agile and Waterfall work well depending on the situation, so it does depend on requirements. Your chosen bespoke software development company will have been round this loop before and will have a good understanding of how best to manage and delivery your software project.
Contact Manchester Apps so we can help improve your software development process.