Agile is a big game changer to how we develop software. Before Agile, most development projects were using some form of waterfall whether they realized it or not. What this means is that they were building software sequentially, going from one phase to the next. So, at this point, you’re probably asking what Agile development is.
What Is Agile?
Well, even after many years since the introduction of Agile, we still don’t really know. There is no clear and concise way to define Agile.
Agile is not really a methodology itself, instead, it defines at a very high level how software development should be done. The ideas behind Agile are based on the Agile Manifesto.
The Agile Manifesto
The Agile Manifesto is a set of values that aim to help develop better software. This set of values are:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
From the set of values, twelve principles were developed.
12 Principles Behind the Agile Manifesto
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The Positives to Agile Approach
Here are some positives to using the Agile approach:
- Development is more user-focused, which is likely the result of more involvement from the customer.
- In the case that the time to market is more important than a full feature set application at initial launch, Agile can quickly produce a basic version of the working software. The basic version can be built upon in successive iterations after the initial launch.
- The customer gains a strong sense of ownership by working directly with the project team throughout the project.
- The customer has frequent and early opportunities to see the work. The customer also can make decisions and changes throughout the development of the project.
- Development occurs in fixed schedule sprints (usually ranging from 1 to 4 weeks), which results in new features quickly and frequently, with a high level of predictability.
- Allows the customer to determine the priority of features. This results in software that provides the most business value to the customer.
- Accommodate for changes to the features.
The Negatives to Agile Approach
Here are some negatives to using the Agile approach:
- Agile focuses on time-boxed delivery and frequent reprioritization, which means it is possible that some item set for delivery will not be completed within the allotted time.
- Agile works best when every member of the development team is focused on the project. That means the developers should not be working on other projects at the same time.
- Requires a high level of customer involvement. Some customers may not have time or interest for such amount of participation.
- If the full scope of the system was not considered in the beginning, it can lead to frequent refactoring due to the iterative nature of Agile.
- Agile requires a close working relationship, which is easier to achieve when the developers are in the same physical space.
What Does This Mean for You, the Developer
Agile development is becoming the new norm for developing software. So, as a developer, it is likely you will be part of a team that will use some form of Agile approach for development. It helps a lot if you already know something about the Agile workflow so it doesn’t catch you by surprise.
Teamwork is vital in Agile development, so you always need to prepare for collaboration. It doesn’t mean you will not have any time to focus and code. After all, the other developers need some time to achieve focus and code too.
A big part of Agile development is that it is accommodating to changes. As a developer, be prepared for this. There will likely be frequent refactoring when a change to a feature comes in.
What are your experiences with Agile development? Do you think Agile development works well?
To stay in touch, follow me on Twitter, leave a comment, or send me an email at steven@brightdevelopers.com.