Who Says Agile Is Just For Software?
Note: This article was first published in GovernmentCIO magazine
Agile is disciplined; not reckless
Agile Development is for software.
This is a basic tenet of Agile, and you can find it right there in the definition:
The Agile Software Development Methodology is a set of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
You can even see it in the Agile Manifesto:
We are uncovering better ways of developing software by doing it and helping others do it.. Through this work we have come to value:
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
But, I challenge you to consider whether or not Agile is actually so limited in its application. When you look at the Agile Manifesto, what is it really saying? When you read, “working software,” what you should really understand is trial and implementation. When it says, “customer collaboration,” you should be hearing, “user engagement.”
Consider that Agile is not really about software development. The Agile methodology is a framework for how you should approach your problems, and can be applied to a myriad of situations outside of software development.
Consider a student who uses Agile to organize her schoolwork. Operating on a sprint schedule, a student can prioritize her coursework in a backlog based on the value each course or assignment offers. This hypothetical student can measure her progress using velocity and burndown to ensure that all of her work is done in a timely, efficient, and organized manner while reacting to the changing circumstances of her study schedule, (i.e. new assignments).
Or consider a parent who uses Agile to organize his family life. We can see that valuing individuals and interactions means that he better understands the state of his family, and ensures that he never sacrifices quality time for increased productivity. Additionally, in this case, customer collaboration makes sure that the needs of the entire family are being met, and not just his own.
These are two examples of how Agile Development concepts can be applied outside of a software development environment, but if you’re still not convinced, let’s take a look at the roots of Agile. Agile was born out of a combination of the lean movement and organizational dynamics, neither of which was developed inside the software industry. Nor does Agile use tools unique to the software industry; authors, managers, and stay-at home moms all around the country have been using post-it notes and visual task-boards/to-do lists for decades. What Agile does do, is take these non-unique tools, and encourage its practitioners to combine them to recognize changing circumstances, and adapt accordingly. Agile asks its practitioners to not just react, but to predict; to not just adapt, but to anticipate.
Agile tools such as task boards, user stories, reviews, and retrospectives will provide value to anyone who is attempting to empathize with another person or group of people. A family could easily turn a chore-chart into a task-board. A student can break a group project down by using a task-board to divide the work, and then the group can meet to review the work completed during their “sprint” and discuss what worked and what didn’t about their new approach.
Consider, a marketing team trying to develop a new campaign for a product or idea. What better way to understand the needs of their target audience than by writing user stories for them? A well written use story will provide insight into the wants, needs, and motivations of the desired audience. Ideally, Agile concepts provide practitioners the opportunity to communicate with their desired audience in a productive manner without sacrificing time, quality, or personal satisfaction.
This is not to say that every situation can be improved with Agile, or that Agile is the ultimate form of project management. Every situation is unique and should be treated accordingly. Should a teacher creating a lesson plan use Agile? Probably not; they may find more value in having a structured syllabus with pre-defined modules. But what about a construction company or an automobile manufacturer? The incremental development required by Agile would certainly provide value to them in building the sturdiest bridge, or designing the best supercar.
Agile concepts have value, not because they empower developers to create more efficiently, but because the ideas behind Agile are capable of building an environment in which creative and constructive thought can flourish. I encourage each and every one of you to take the time to think about how you can use Agile concepts to positively impact your life. Once you have something, take a chance on it, and if it doesn’t work out, adapt accordingly; it is Agile, after all.