Agile software development methodologies such as Scrum and Kanban have been widely adopted by industry software development teams. Although agile practices originated in the realm of software development, other types of information technology teams can benefit from adopting similar approaches.
Fundamentally, agile methods are a set of practices that help teams to collaborate, organize their work, and see it through to completion.
Agile methods for software development
Agile methodology has emerged as a widespread practice for software development in response to the frustrations common in traditional software development projects, with their distinct, lengthy phases of scoping, requirements definition, design, build and testing. Each of these sequential phases can take months, leading to long software development cycles.
Especially in large organizations, traditional software projects can be difficult to manage and unsatisfying for those involved. If you’ve ever had to grapple with business requirement documents that are hundreds of pages long, or if you’ve sat through requirements and design walkthroughs for days on end, only to be disappointed by the software that was eventually delivered nine to12 months down the road, you’ll understand those frustrations.
At the risk of oversimplifying, I would describe agile software development as a shift to short software development cycles (weeks vs. months) and restructuring how people work together to develop software. I have found that these changes significantly improve the experience of software development for all parties involved.
Benefits of incremental delivery
Years ago, before agile methods became widely adopted, I asked one of my software development directors about the release schedule for his products. Since I came from a traditional software development organization, I expected to hear that he had two or three or four major releases per year.
Somewhat apologetically, he replied that his team didn’t have a formal release schedule. They just released features and enhancements whenever they were ready. Although unusual for the time, that incremental, “agile” approach has proven to be an effective way to work for many teams, resulting in improved products and a better experience for team members.
Product/usability benefits. Quickly getting new features into the hands of users provides important benefits. Software can only provide value when it is in the hands of end users, so the sooner we release, the sooner we can realize that value. Feedback, whether positive or negative, is best gathered from actual use, so the quicker we get that feedback the better.
Benefits to the development team. Short development cycles, for example two weeks, can benefit delivery teams in many ways. Small development tasks are easier to estimate than large ones, which makes meeting delivery deadlines easier. Short cycles establish clearly understood objectives and limit the amount of work in progress. This provides teams with the focus that helps them to drive tasks to completion. Software testing is simplified because a small amount of change is introduced in each release.
Finding better ways to work together
In addition to short development and release cycles, agile methods define a set of practices for how teams work together. A key concept is that the team commits together to getting the work done, which helps reduce overcommitting and finger-pointing.
A common practice is to have small, self-managing, self-organizing teams who interact with each other frequently, for example in short daily “standup” meetings. Another frequent practice is to break work down into units that take a short time to finish (for example, one to three days). In addition, many agile teams work together as a group to estimate work, increasing the accuracy of their estimates.
Beyond software development
Besides software development teams, other teams can benefit from adopting agile methods. Just as the field of project management grew from its early beginnings in engineering and construction into a more generalized discipline, agile methods can be broadly useful for various types of work.
In my organization agile methods have been adopted by a number of information technology teams, including teams that support our enterprise EMR, data analytics, IT operations, and systems administration. Non-IT teams have also followed suit, for example in marketing and our innovation center.
Regardless of the nature of your work, if you are interested in finding a better way to work, consider agile.
Glenn Fala is the Associate CIO of Application Development at Penn Medicine.