Agile Methodology: Getting It Right
How To Ensure Agile Works For You
Agile methodology is at the forefront of a quiet revolution in software development. Its emergence signals a sea change in the way development is viewed, and in the project management process. Many developers currently working in industry were trained in an engineering context and use the traditional sequential approach, an approach that frequently results in a sub-optimal product.
Implemented properly, agile development can help you put this right. Instead of completing projects one module at a time, you’ll take an iterative, flexible stance that will enable you and your product to respond to unforeseen changes. But to be successful, it’s important to do more than pay lip service to agile development: adopt the following principles and you’ll be well on your way to getting it right.
Build a Partnership with Your Customers and Users
The best thing a developer can do is get input from the people who’ll eventually be using their product, and get it constantly and from an early point in development. This ensures that the product stays usable and relevant throughout the entire process. Another huge benefit of getting user involvement is that your client actually feels like part of your team, experiencing the talent and creativity of developers much as a colleague would.
From the other side of the coin, viewing your customer as your partner will help you get to know and value their expertise. Then you’ll be more willing to view their priorities as being in line rather than at variance with your own. And when adversity strikes – which it inevitably will - your whole team will be better equipped to work together.
Empower Your Team
This runs hand-in-hand with getting your client involved from the ground up. In a traditional approach to project management, the project manager is god, but in agile teams, responsibility and decision-making are shared. If this sounds like design by committee, think again: when top-down project management is supplanted by good leadership, the natural consequence is that a competent team becomes an exceptional one.
Take a Bite-Sized Approach
With traditional ‘waterfall’ development methods, you’ll be looking at a programme of analysis followed by development, then by testing. Agile development breaks this process down into many small iterations, each one its own cycle of analysis, development and testing, and each leading to an incremental release. At the end of each stage, the particular feature being worked on emerges in a fully developed condition, ready to be delivered.
You may think this approach sounds unnecessarily laborious, but it has particular advantages. The agile team is frequently in a position to release products ahead of schedule, because much software can be delivered whenever it’s fit for purpose: this saves time and money for your client, and is less likely to result in a product which becomes obsolete upon release. And if your project does run over budget, you’ll at least be left with something usable at the end of it rather than nothing at all.
Testing, Testing
Agile development doesn’t include a dedicated test phase, but rather incorporates testing throughout the development process. Importantly, this ensures that your team designs code which is intended to be tested in this way. Then, your code will be more likely to stay simple and elegant, and you won’t have to face the costly scenario of fixing complex bugs late in development.
But because agile development is all about making small, incremental releases, it isn’t usually possible to test software against a final specification. So to be truly agile, you’ll also need to rethink your approach to testing. Agile testers need to rely more on their subjective sense of what good software feels like, rather than how closely the project conforms to the minutiae of the spec.
It’s not easy to embrace agile development: many teams pay lip-service to this approach while still hanging on to the security blanket of the manager-led, sequential process. But the points outlined above will help you move from a focus on processes and tools, to prioritising individuals and interactions. Agile development is a reliable way to help your team build high-quality, commercially relevant software for appreciative users, and although many of its tenets may initially seem counter-intuitive, it is well worth getting to grips with.
For more information about how we approach our successful projects, get in touch today.