Agile applies not just to software development, but to large-scale systems engineering too. Every company is trying to be more agile — it’s become part of the regular engineering management lexicon.
Agile replaces the traditional, linear “waterfall” development model, in which projects are preplanned and fully built out before they are tested, with an iterative process where small parts of projects are being built and tested simultaneously. Companies have embraced agile for a variety of reasons — to boost product innovation, more quickly meet customer demands, accelerate delivery cycles, reduce risk, and improve productivity.
But while agile has a proven track record in software development, it hasn’t been put to the test or used extensively in other types of development. A major telecommunications company, for example, used agile to facilitate the design of hardware and cloud-based connected services.
10 tenets of agile software development can be adapted for other types of complex engineering systems.
1. Spiral development cycles
In the traditional waterfall methodology, tasks and deliverables are broken up into staged gates of highly specific processes. Once each phase is complete, the output is reviewed; if something isn’t right, work continues on that phase until the output meets all the specified requirements, and only then does development move on.
By comparison, a spiral model is more fluid and iterative, addressing a problem through multiple passes, and cycling through the various stages of design until issues are resolved in small increments.
2. Time-boxed sprints
This practice splits development tasks into a series of iterations that must be accomplished within a specific time period — two weeks is a common benchmark, for example. Timeboxing helps demonstrate progress and keeps everyone working within the same fixed parameters. It’s a concept that can easily be applied to non-software development projects to keep everyone working toward the same set of goals.
3. Scrum teams
These are groups of individuals charged with working on a set of tasks to meet agreed-upon product requirements by following a common set of goals.
Key to the scrum lineup is the product owner, who is in charge of requirements and prioritizing tasks that must happen within the sprint cycle, and the scrum master, whose job is to enlist new resources when necessary and resolve problems.
While these positions may not exist formally in most teams outside of software development, there are ways to source the roles using existing talent. For example, a standard product manager role could be modified to serve as a product owner, while someone versed in both leadership and project management could be trained to serve as a scrum master.
4. Daily meetings
A key tool in the sprint, daily meetings set the context for the coming day’s work, facilitate coordination, and serve as a forum to address any lingering concerns or problems. There’s no reason why agile’s hallmark daily meetings can’t be leveraged to keep other kinds of product and service development projects on track.
5. What vs. how
This concept separates authority for what gets done from how it gets done. The product owner prioritizes work based on requirements and maintains a running list of what needs to happen and what is backlogged. The project leader or scrum master ensures that the work gets done using mechanisms like the daily meeting or running interference.
Kanban is a just-in-time scheduling system developed in Japan that relies heavily on visuals to track real-time manufacturing capacity. There are numerous ways to deliver visual displays of work in progress — from tools like cloud-based Trello boards to physical Post-it notes stuck to a wall for all to see in daily sprint meetings. Whichever way it’s accomplished, a visual roadmap is an effective way to keep the team apprised of who’s doing what and what’s been completed.
7. Feature prioritization
Not every feature or plan is equally important. Agile practices put an emphasis on the prioritization of work so that high-value tasks are first in line. Large-scale systems development projects, which often stall due to the sheer volume of features or tasks that must be completed, could benefit from such a reset to accelerate delivery cycles.
Literally a mashup of development and operations, DevOps gained popularity for developing in the cloud and contended it can have merit in other areas, particularly manufacturing and service delivery systems. Instead of a “throw it over the wall” mentality, the practice involves getting operations and development to work closely together at early-stage design. The alignment allows issues to be resolved quickly and integration to happen continuously.
9. Branch and merge
A practice popularized by Git, the open-source distributed version control system, branch and merge lets people work separately on portions of a system and then combine their work in a way that seamlessly preserves changes.
10. Hybridized agile and planned-staged processes
To scale agile effectively, it helps to combine its principles with traditional development practices. For example, it’s possible to retain the planning and control elements of the traditional staged-gate development process while allowing for agile execution.
One approach is to break up the work of each stage, with multiple agile teams doing parallel sprints and work planned incrementally within each stage. Another option is the scaled agile framework for enterprise (SAFe), which facilitates coordination and planning across scrum teams.
Agile practices have transformed the software development landscape, allowing teams to innovate faster, deliver more quickly, and zero in on customer needs.