You’ve heard this term, but don’t know how flexibility and quickness apply to software development? This article is definitely for you. By the time you’ve read it, you will know the background and the most important rudiments of Agile software development.
Although Agile was thought of as a solution to software development challenges, we need to say something about Project Management first. The traditional approach to perform complex works originated in the Military, went to heavy industries and finally, found its place in software development enterprises. As a result, ideas and methods of doing things in highly hierarchic organizations (army) were transferred to organizations and teams that have always had different problems, like software development companies. Very often, it wasn’t the best idea. Software development is a complex process. Yet, traditional Project Management hasn’t been the best way to do it. Why? And how the Agile has changed the landscape?
Table of contents
- Why Waterfall Doesn’t Always Work In Software Development?
- Agile Software Development
- How to implement Agile to Software Development?
Why Waterfall Doesn’t Always Work In Software Development?
The traditional way of doing complex things, at least since World War II, has been the Waterfall Project Management. But, why is it called Waterfall? Imagine a river. The water flows with the current from the source to the estuary. You could flow against the tide, but only until you encounter a waterfall. As soon as you fall down the waterfall, there’s no way back. In Waterfall Project Management, it’s similar. There is a very clear and stiff process with stages that come one after another. Once you’ve completed a task, there’s no way back. You must go to the next one. One task after another, you go from the kick-off to the project closing. Straight ahead, no turning back.
Such an approach seems to be legitimate for the army and heavy industries, where you usually have very precise requirements and orders. All you need to do is efficiently implement the plan. As you could guess, traditional Project Management has critical disadvantages regarding software development.
Some of them are:
- fixed requirements and schedule leave very little place for change and improvement;
- every mistake is tremendously expensive to fix;
- there is no place for feedback from users and other stakeholders during development.
Developing software according to Waterfall principles resulted in expensive, user-unfriendly programs that didn’t answer the real-life problems. Developers would struggle with these issues in their day-to-day practice and tried to design a better, more suitable framework. That’s how the Agile was born.
Agile Software Development
According to the Cambridge Dictionary, agility is the ability to move quickly and easily, but also a way of “planning and doing work in which it is understood that making changes as they are needed is an important part of the job”. And so is the Agile as the approach to software development.
Unlike SCRUM, PRINCE2, or PMI, Agile isn’t a complete methodology. It’s rather a set of guidelines that enhance your capability to build software and improve the development process. Ideas concerning the new, better way to develop software had been emerging among developers around the world.
Agile manifesto appeared as the outcome of the meeting, attended by 17 programming practitioners (16 developers and a tester). They wrote and signed the manifesto, consisting of four values:
- Individuals and interactions over processes and tools;
- Working software over comprehensive documentation;
- Customer collaboration over contract negotiation;
- Responding to change over following a plan.
As you can see, this isn’t a list of certain practices you must follow. These values only guide you and tell what should be important in your job. It doesn’t mean that processes and tools are unimportant, but people and their interactions are more important. Documentation is still relevant and valuable, but it’s working software that need in the first place. Of course, contracts are crucial, but only deliberate collaboration with the customer will lead to the release of good software. Last but not least, we need a plan but if conditions change, we need to respond to that change.
12 Principles of Agile
Another founding act of the Agile is the list of the 12 principles. They’re much more detailed but still, you should treat them as recommendations rather than rules.
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. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity – the art of maximizing the amount of work not done – is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The effect of the implementation of the Agile approach is the user-centered organization. Its superiority comes from the free collaboration between specialists in different realms like development, marketing, quality assurance, etc. Self-organizing teams are created in anew way with a focus on gathering the right skillset among team, not particular units. All that brings higher agility and adaptability to change in a turbulent business environment.
How to implement Agile to Software Development?
A methodology most commonly associated with Agile is SCRUM, even though its history traces back to the ’80s, which is way before the Agile manifesto. Agile constitutes in a particular mindset, not in certain practices and their exact application. Think about Agile as of guidelines, enhancing your ability to respond to change and create better software.
One last tip. Agile Alliance provides the so-called Subway Map, which shows most of the useful practices from the most common areas and methodologies engaged in software development. That might be a good place to start.