Last week, I commented on how I’ve been finding a lot of aspects to my career that function as a microcosm to my life as a whole. In particular, I noted how life needs to be “1.0” release, in that we need to get out there and live. If we take too much time waiting to get everything perfect, we’ll never get our life going. Similarly, by getting our life at 1.0 status, we can then slowly work “upgrading or modifying” our life to 1.1 status, 1.2 status, and so on.
Related to this concept is the “how” of going from the various “versions” of your life:
Life needs to be lived in an agile manner.
The idea of “agile programming” has been in the works for a while now. It has seen various names and has undergone various approaches, but from all I’ve seen, tried, and read, the core concepts of agile programming (as listed by the manifesto) are to:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
After reading over these tenants, and applying them in some of my recent projects, the focus of programming/engineering/crafting/insert clever acronym here has a shift to put more emphasis on the process. The reason for this is that too often in the older models of creating software, there was a HUGE amount of time devoted to setting out what the finished project looked like. There were rules, workflow models, data diagrams, and LOTS of meetings to establish precisely what would happen with the project. The timeline would then be set, a good 6 months, maybe a year to implement the large system.
The problem with this arises with the fact that the environment the project is designed for is a rapidly changing environment. So three months into the project, workflow requirements must change due to the way business is done. You’re then stuck with a dilemma: alter the project in progress (which starts to create something called “scope creep”) or stay fixed to the initial requirements/design documents (treated as a strict contract) and implement those changes when the process is done. This is just getting the 1.0 version released. Incremental changes from 1.0 to 1.1 suffer a similar fate, though not often as drawn out.
What agile seeks to do is eliminate such a rigid process by acknowledging that changes come fast and furious. To work with this, and still have a successful product, you need to have a workflow that accommodates to change and can deliver updates rapidly. By comparison, your agile 1.0 project will most likely not be as “feature rich” as “traditional” 1.0 application, but the application will be able to adapt easier to business rules changes and getting new features or fixing bugs will move a lot faster in the agile model than the traditional model because the process or infrastructure in which the application was built was designed to handle this.
[That’s all great and fantastic Mr. CodeFreak, but how does this apply to life?]
Thanks for stopping me from waxing eloquent on the 1s and 0s! As we progress through our life, there’s no doubt that changes come at us fast and furiously. One day the water heater dies and the budget for your nice summer sod lawn is gone. You get that phone call saying a dear relative has passed away. You read a new book that contains some wonderful grains of wisdom that you want to apply to your everyday living. You hear a sermon that convicts you of some serious changes that you need in your life. This list can go on and on.
How are we to respond to these kinds of situations? If we are living life in an agile manner, we easily integrate these changes into our life and learn from them. This is because we were expecting them to happen, to some small degree. The exact details are always unknown to us until they occur, but the underlying concept is there. You may worry that adopting a change to your life will make things worse. There’s a chance to that. There’s a chance to most of these things. But the nice thing is that if we’re living our life in an agile manner, we’ll realize that “change item X” didn’t work out as well and we’ll roll it back in the next release.
In facing the pressures and forces in our life, its easy to think, “I know what I need to know, I can handle this. I will stand as firm as a rock and will myself through it.” I’m pretty sure this will get you through a lot of things. There will be something out there that WILL crush you to the ground. If you’re still treating yourself like a rock, you’ll be decimated. Hopefully you’ll get back on your feet, but it’ll be a long and painful process. But consider this, if you stand as a rubber ball, you tend to think, “I know a lot of stuff, but I don’t know it all. Pressure will come, and it will probably squish me flat. But after that, I’ll spring back into shape, having learned something new, and continue forward.”
One thing I want to briefly mention is that while looking at this “agile” manner of living, I am by no means throwing everything out the window with each iteration, or even with the “1.0” release. There is still a clear and concise goal or core to the project (and you), its the process of building and fixing that becomes a little more flexible, in response to the joys and trials of life. My own experience has shown me that there is a core set of values and traits that defines you, and that needs to stay fixed. However, there are a lot of stuff not as important that are open to “revisional change” and probably should be done.
So that’s how I see it, life as an agile process. Flexible to the changes that come, but still driven to make things bigger and better.
I ask again. What about you? What parallels or “microcosms” do you see in your career that apply to your life as a whole? I want to know.