18th December 2012 | By: jasonvincent
How does "Agile Development" impact your clients?
I’ve had a number of meetings recently where I touched on our Agile Development practices, and one of two things tends to happen: I get confronted by either a look of utter confusion, or a look of skepticism. It’s a term that is bandied about frequently by tech companies and primarily sales people, but what does it really mean in practice these days?
I thought I’d focus on 5 main points of Agile Development and how they impact, not the development team, but rather the end client. As a director of Aeguana specialising in large web applications and solutions, I can confidently say that we have adopted this methodology for a number of years, and the results definitely speak for themselves. So let’s get to it!
1. Deliver visible progress more often, and faster
A crucial part of the process is constant communication with the “client”. If it’s an internal project, then that’s likely to be the project or product manager. But in the case of an agency working for external companies, it would be the representative from your client’s firm. Depending on the complexity of the project, we recommend you undertake either one or two meetings per week between your agency and the client. Again, depending on the project, this could either be with the project manager or even one of your lead developers – this is important, as having someone technical speak directly with the end-user can be incredibly beneficial for the projects success.By prioritising features and requirements, developers can make much smaller releases, but with increased frequency. It may be better for a client to have a particular feature fully working tomorrow, than a host of features by the end of the month.
2. Reduced propensity for “scope creep”
By having more frequent meetings, and pushing more frequent releases, you can ensure the project is progressing in the right direction. Unfortunately, this is not always the case. Clients often have ideas that are not clearly communicated in the initial stages, so when they see their ideas translated into an interactive working solution, problems can arise. However, what is for certain is that it’s much better (for both parties!) to realise there is a divergence in opinion early on in the development process, than after months and months of development and refinement of the product.
3. Less bugs
Everyone hates them. Clients hate finding them, and developers hate fixing them. Agile Development is centred on developers taking responsibility for their code and their product, irrespective of which component they are currently working on. If someone identifies a bug or badly written code, they are encouraged (and somewhat obligated) to fix it immediately. It’s better to invest the time while you’re in the middle of it and fully understand the problem, than to try to address it later on when it possibly can’t even be replicated. All in all, what this means is each release has minimal bugs, compared to standard development procedures.
4. Increased accountability
Clients hate speaking with developers or project managers who claim to not be responsible for “x” or “y” part of a project. From their perspective, they have commissioned you to deliver a solution and expect it to be done. Hearing about how the UX was done by another developer or how you don’t know when exactly a particular feature will be released just communicates incompetence in their eyes. With Agile Development, the development teams should be meeting every day to communicate what they have achieved, and what they will be working on. This means everyone knows where the project stands, and what everyone else is doing.
5. An understanding of the underlying business requirements
I’ve spoken to a lot of developers, including within the financial sector, who don’t really understand the value of a lot of software they write. They know “how” it works, but not “why” it is needed. It’s an essential skill of an effective project manager or even developer to understand the underlying reasons for why a particularly piece of software should behave in a certain way. By having this knowledge, developers can plan for future requirements and the scalability of the application – beyond what is documented in the original specification. Agile Development integrates the client so closely into the development team, that everyone should have a solid understanding of why they’re doing what they are… If you give your developers the opportunity to contribute, you’ll be amazed at the improvements through suggestions that wouldn’t have arisen had they not fully understood the implications of their work.