A client approaches you because he wants your company to develop a new piece of software for him. Happy about the potential business that can come out of this, you meet the guy and have him fill in a questionnaire (if even) to better understand the scope of his demand.The meeting ends with both of you agreeing on a deadline for the project.
Shortly after you’ve met the client, you brief your development team so they can start on the project. The team gathers the necessary data, plans the required functions and timelines and then the work commences. Unfortunately, your staff hits some unexpected roadblocks along the way; a piece of code was developed with a bug that now needs to be found before you can proceed. The client is informed of the delay, but still opts to proceed with a postponed start date.
As the work continues, previous setbacks cause a domino effect and the development of the remaining functions and requirements keeps getting pushed back. By now, the client (understandably) gets a little frustrated. Feeling the pressure, the development team rushes and cuts a few corners here and there to finish the project faster.
This in turn causes further issues for the quality team. They have to rush as well and miss several important errors and changes. When the software is finally delivered to the client, it is of poor quality and does not meet the requirements laid out in the first place. To make things worse, your development team is burnt out and unhappy, which may lead to (some of) them leaving for greener pastures.
(Agile) Software Development
Does any of the above sound familiar? If it does, chances are your company hasn’t quite nailed the Agile approach yet. Instead, you may be using a linear type of process that repeats itself every 2 or 3 weeks. And although this may seem like a nimble way of developing software, it isn’t. Yes, it’s a process that is easy to assume and settle into for development companies, but it’s not an optimal solution. Therefore, it won’t get you the best quality software for your clients or the best possible work environment for your team.
What you want is a clearly visible and flexible approach; a process in which people know exactly where they’re at in a project and in which your developers get to test their designs right from the start. You want to be in a position where – even if a client asks you to change something last minute – you’re able to do so without burning out your development team. That in a nutshell is what true Agile software development is about.
Agile: A Bit of History
At the turn of the millennium, after the world realised the apocalypse wasn’t happening – or at least not just yet, a bunch of prominent software developers from some of the top firms met at a lodge and laid out a new Manifesto. They decided to call it Agile. Each of them had noticed the same thing; as Internet access and computer infrastructure grew, so did their user-bases and so did what people wanted to do with their computers.
At the same time, the rise of the smartphone/pda literally put computing in people’s pockets. It quickly became clear to our Masters of Software that 1) the conventional approach to software development was soon to be outdated and that 2) a new methodology was needed as quickly as possible. Another realisation they had was that many companies didn’t put their employees first. As such, those organizations ignored the fact that their staff was the driving force behind innovation, productivity and the quality of the software.
The Agile Manifesto
The 14 Principles of the Manifesto are as follows (the wording hasn’t changed since and is an excerpt from the original Agile Manifesto website that was setup back in 2001).
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals.
6. Give them the environment and support they need, and trust them to get the job done.
7. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
8. Working software is the primary measure of progress.
9. Agile processes promote sustainable development.
10. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
11. Continuous attention to technical excellence and good design enhances agility.
12. Simplicity – the art of maximizing the amount of work not done – is essential.
13. The best architectures, requirements, and designs emerge from self-organizing teams.
14. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
As you can see, these principles do not talk about structured processes or even ways to tackle problems. They are a set of values and beliefs within an organisation and they put a great deal of emphasis on the human element and the ability to communicate and work together. The goals for each project are incremental. Therefore they lend themselves perfectly to flexibility and allow for client requirements to be taken in at – any – stage of the process.
‘Great,’ you must be thinking, ‘but how can I go about implementing Agile development at my company or even within my team?’ First of all, change must always come from within. You can start by explaining the merits of the Agile approach to all stakeholders and show them the benefits of this method compared to your current one. Don’t forget to mention the human aspect and how employee well-being and team harmony are important values.
Once everyone’s on board, you can discuss why you need to go Agile and how it can best help you achieve your company goals. There are several methodologies and techniques that can be adapted, combined and customised. If you want to know more about adopting Agile, have a look at SCRUM and Kanban, 2 of the most common approaches.
Our Own Experience
Here at Gapstars we’ve embraced Agile software development right from the start: A set of values and principles that help develop software faster, with greater adaptability and customer collaboration. Agile development has been around for over 16 years now, so we can hardly speak of a temporary trend anymore. Going Agile not only helped us to become more flexible as a company, it also leaves us room to appreciate the people that work on the development projects. We constantly think about what would be the best way to communicate efficiently to get changes and improvements through the pipeline faster – and out to the customers. For us however, the most important thing is the fact that we can accept customer requirements or last-minute changes, no matter how far down the development pipeline a project already is.