Fidgety Meditation
I’m not very good at meditating. I’m a fidgety person. I can’t keep magnets around my desk because I’ll fidget and play with them all day. Instead of meditating, usually, I go running. Usually 3-4 times a week, I venture outside and run 3-4 miles. Generally, I have my headphones and I listen to podcasts or audio books. Sometimes music.
If I’m feeling particularly anxious or unsettled, I leave the headphones at home and I use some of the techniques from meditation to help me focus on mindfulness – counting my breaths, counting my steps, focusing on the sound of my sneakers on the pavement, the smell of the trees along the side of the path.
Mindfulness is a practice of bringing one’s attention to the present. Not focusing on yesterday. Not focusing on tomorrow. Focusing on the present. Right now. Being “here.” That’s not saying, “Ignore the past”, or “Ignore the future”. It means that right now – and right now for you means reading this missive - is far more important.
During one of these headphone-less runs, I had the realization that Agile software development is a mindful approach to planning and building software and systems. We’re aware of the future. We learn from the past. We focus on the now.
A Mindful Approach
If you’re not aware of Agile Software Development, it begins with The Agile Manifesto – a document conceived in 2001 by some of the brightest minds in technology. These technology and software professionals came together to try and figure out why so many software projects failed and determine better ways of building and delivering technology solutions. The manifesto lists a number of values and principles for developing software and technology, and I feel it has tremendous value both inside and outside of technology.
It reads powerfully:
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.
That last item in the comparative list is what triggered this epiphany. “Responding to change, over following a plan.”
The Illusion of The Perfect Plan
A plan is our pitiful human attempt to predict the future. It’s trying to extrapolate from what we learned yesterday, what we know today, what we might know in the future. Knowing the future is an impossible task. Ask every fortune teller who has failed to win the lottery.
In software development, or building a house, or even baking a cake. We must be ok with not knowing. We must be ok with starting toward our desired outcome knowing that our plan is merely a guess. An educated, well-intentioned guess, but a guess nonetheless. In software development, we may learn of a new technology or service and adjust our plan accordingly. In building a house, building materials may be delivered late, requiring a change in the plan. In baking a cake, our oven may be slightly hotter or cooler than the temperature the recipe calls for, necessitating an adjusted plan once again.
There is immense freedom and value in viewing our plans in this light. In knowing that our plans will inevitably change. That the plan cannot reasonably account for every variable and possibility. That we will learn more in each moment as we move down the plan and evaluating, adjusting, and adapting that plan to our newfound knowledge.
It leaves us room and encourages innovation. To try that new software library or a new algorithm. To experiment with new building materials and designs. To add a new ingredient or flavor to our cake.
Embracing Chaos
The plan is our method to begin working toward a desired outcome. It has no intrinsic value of its own. More important than the plan is now. What we know we must do in this moment. In this present. Right now, as we have the clearest picture of our knowledge, is more important.
It would be foolish to stick to the plan of building an application for a client who had gone bankrupt. It could be equally foolish not to build an application for a new client you didn’t expect and hadn’t been in your plan. Rigidly holding to a 12 month plan based on 6 month old knowledge necessitates that you stick to decisions made with outdated information.
Plans should be living documents, to be mindfully and intentionally adjusted now that you have more information. When you’ve received feedback from your clients, partners, or customers. After experimenting with new approaches. New technology. Evaluating current market opportunities and realities.
I heard a quote recently that reads, “Plans limit your options; planning expands them.”
The Mindful Plan
The Agile approach to software development, and indeed any planning task, is fundamentally a practice in mindfulness. It emphasizes the importance of living in the present, continuously assessing the path forward based on the current reality, not blindly adhering to a potentially outdated plan.
It is crucial to remember that plans are guides, designed to be adapted as we gain more insight and information. As we learn of new tools, technology or opportunities, the plan should evolve accordingly. Our goal should always be to deliver the best, most valuable, most impactful outcomes, and that involves deviating from the original path as we learn.
Being mindful of our plans empowers us to stay flexible, innovative, and responsive to change. It challenges us to regularly reassess our assumptions and adapt our course of action. This agility is what sets successful teams and individuals apart.
Next time you're embarking on a project, whether it's software development, building a house, or baking a cake, keep in mind that the plan is just the beginning. Stay mindful, stay adaptable, and keep your focus on the outcome.