When we introduce an Agile framework (like Scrum or XP) to a team that follows traditional development methodologies, we are usually hit by a big block of resistance from the team. Each role has its own peculiar question:
- From the software developer’s perspective: How can I develop software when I don’t have the complete requirement?
- From the software tester’s viewpoint: How can I test the software when all the features aren't developed?
- From an architect’s outlook: How can I design a system without an understanding of its complete scope?
- The technical writer’s dilemma: How can I document a system when all I get are small chunks in each sprint?
If we listen carefully to these questions, we can see the underlying anxiety: How can I create something without knowing the "big picture" of this software?
When I pondered this question, I thought about the path that I took to reach a true understanding of Agile. My introspection led me to realize that life itself does not follow the Waterfall model. In fact, humans have always been Agilists who practice the Agile method of living every single day.
Beginning the journey
During infancy, we take baby steps to achieve our goals. We never take long steps that might make us fall. And it takes at least seven months before we can take that first baby step. If we liken this time frame to a project, we're all provided with just-in-time requirements, like turning over on one side, dragging ourselves forward, sitting up, crawling, standing, and then finally taking that first step. When we manage it, there is no requirement that we need to run like Ben Johnson! A single step is all that's required, leading on to a few steps at a time without holding onto anything, walking steadily, and finally running. Each stage is complete in itself. The requirements evolve as we (the product) evolve, and we commit and do it.
The school project (K-12 and beyond)
As we progress through childhood and start school, we scarcely have any notion of what we intend to do with our schooling. We continue in the iterative mode when it comes to studies:
- We read/learn for monthly portion.
- We collate three months’ learning for quarterly exams.
- We expand our knowledge by studying more chapters.
- We collate six months’ learning for the half-yearly exam.
- We add more value by adding another six sprints (of one-month duration) for our final exams.
None of us study for final exams from day one. We take learning one step at one time, with a manageable requirement. During the release (exams), based on feedback from stakeholders (teachers/professors/parents), we revise the product backlog by adding value (learning), and we commit to add more value.
We don't ask our stakeholders/product owner why they aren't giving all the requirements for the final exam from the beginning, and we don't attempt to work on the final product during our first day. We take the requirement that is to be completed as monthly sprints and continuously integrate that with our previous sprint work, validating regularly. Also, during implementation of our knowledge, we follow our own ways of solving the problems ahead of us. We move forward by solving complex problems using simple solutions, which might get changed based on added value (knowledge).
As we move into college and adulthood, we follow a similar pattern in our personal lives, trying various ways and means to be attractive to the opposite sex, or to try and impress someone who has impressed us. We may not always succeed, but we do add our experiences to the knowledge pool and constantly refactor ourselves to make things work and achieve an agreeable romantic life.
Thus from infancy to adulthood, we take one stage of life at a time, trying to achieve what is required to the best of our ability.
Reflecting on our careers
As soon as we join the workforce, we stop being Agile. We want a situation where someone commits a deliverable on our behalf. This way we hardwire our brains with the thought that we will follow what our leaders say, and they are better at committing for us. They will find ways to solve a problem, and we don’t need to use all the values that we achieved though all those previous years.
However, that is an illusion. Even in our career progression, we do follow Agile. None of us became an architect from our freshman year in any software company. Do you remember how hard we worked during our software-engineer lives to get to that senior software engineer role? We took one step at a time to achieve our career goals. Once we achieved one goal, we used the added value and moved to the next goal by adding more and more.
We are the same people who are now asking, "How can I develop software that has a product backlog that changes constantly?" or "How can I develop product without knowing its full system design?"
I want you to ask yourself a question now: Am I Agile?