What Is Agile Development? Part 1
In this 2-part blog series, I explain what agile development is and how it helps deliver software faster and then explore how you can implement this approach in SAP.
Join the DZone community and get the full member experience.
Join For FreeMuch of the software development world has adopted new methodologies, such as agile, that enable them to deliver changes and updates to critical systems more quickly and efficiently.
In this 2-part blog series, I explain what agile development is and how it helps deliver software faster and then explore how you can implement this approach in SAP.
Let’s start with the basics.
What Is Agile Development?
Agile is an approach to software development that prioritizes small, frequent product releases over huge development cycles. Instead of large, complex projects that take several months, projects are broken up into smaller units of work that can be delivered much faster.
These units are expressed as user stories, which detail something a user wants to accomplish with the system. The user story should be clearly explained with well-defined outcomes and tell the developers who the user is, what they want to achieve, and why it matters to them.
For example, a user story might be: “As a manager, I want to know how many days of vacation remain untaken by my staff this year, so that I can plan our capacity to take on new projects.”
Agile development methods date back to the 1990s. In 2001, a group of developers published the Manifesto for Agile Software Development, more commonly known as the "Agile Manifesto."
The manifesto encouraged development teams to focus on three main principles:
- Value responding to change over following a plan
- Functioning software over comprehensive documentation
- Collaboration over contract negotiation and processes.
At its core, agile is designed to streamline a company’s approach to software development to enable IT, teams, to build out important features and updates at the speed of today's modern business needs.
There are different ways to organize agile workflows but two are particularly common:
Kanban
Kanban is useful where work can’t be easily predicted, such as for support tickets and bug fixes. A Kanban board is used to visualize work in progress where each piece of work is represented by a card on the board. Columns show the steps in the process, and cards are moved through them (from left to right) as work on them progresses. If you’ve used Trello, you’ll be familiar with this layout. Kanban came from lean manufacturing originally and helps to keep work-in-progress to manageable levels. Key to Kanban is the concept of limited work in progress (WIP). Total WIP can never exceed agreed capacity – if you’re at the limit something must be finished before a new task can be started.
Scrum
Scrum is the approach we see most widely adopted in SAP teams. This approach uses fixed-length, short development cycles of two to four weeks called sprints. During the sprint, the team will work on developing an agreed number of user stories to completion. Working in short cycles makes it possible to deliver value more quickly. The team can get feedback earlier and iterate, improving the quality of software. Continuous improvement in both the product and the development process is central to the Scrum philosophy.
Why Is Agile Important?
Agile development has many advantages over the traditional waterfall development model typically used in SAP environments.
In the waterfall model, work is planned from start to finish before any development begins. All the design is done before the coding begins, and the coding is completed before testing begins. That works fine, as long as everything is predictable. Unfortunately, it rarely is. If problems with the design are found in the coding phase (or even the testing phase), there could be a lot of rework required to get the project back on track.
Waterfall projects might take months, or even years, which makes it extremely difficult to respond quickly to changing business needs. By the time the software has been deployed, the user requirements have probably changed. It’s hard for organizations to maintain a competitive edge if they are forced to wait months between minor updates.
An agile approach to software development helps to:
- Deliver value faster: The most important requirements can be delivered much more quickly. In a waterfall model, nothing is deployed until everything has been built and tested.
- Mitigate uncertainty: The agile approach responds to and even welcomes, changes in requirements. It recognizes that software development is iterative, and it’s not always possible to articulate all the requirements at the outset.
- Reduce impact and risk: With smaller changes, there’s less risk of something breaking. It’s easier to foresee problems when the scope is smaller and easier to test. There’s less impact on users, too, when small updates are delivered often, compared to big, infrequent changes.
- Prioritize and stay relevant: Agile teams choose which user stories to develop for each sprint and can select them based on today’s business priorities.
- Stay on budget: It’s easier to track costs with agile because completed features are being regularly delivered. It’s much harder to track costs over a long development project where nothing goes live until the end.
- Increase visibility: Delivering more frequent working features and collaborating with the business helps to increase visibility and understanding within the organization.
But what about implementing agile in complex environments like SAP? Although SAP landscapes have unique development requirements, agile methodologies can still be used.
I took a deeper dive into this topic in Part 2.
Opinions expressed by DZone contributors are their own.
Comments