Tuesday, November 03, 2009

Need experience planning for and executing a long term project? Run a marathon.

This thought came to me on mile 21 of the Marine Corps Marathon that I ran and finished on October 29th, 2009. Planning, training for, and running a marathon is similar to executing a long term successful project. Both activities require superior commitment, strategic planning, progressive results, and a clear goal.

A marathon is different by definition - it's a solo event. However there are some points of interest.

- Goal. For a marathoner a goal is clear - finish the race in a given time period. A successful project must have a clearly defined goal that can be achieved and measured.
- Planning. Superficially it may seem that planning for training is easy. However poor planning will prevent you from training properly. And you won't be able to catch-up later (an equivalent of Fred Brook's motto of adding more people to a project that's already late will only delay a project). Long runs must be planned - including a day before and runs during the week. Planning for a long term project has the same demands. One must think through the milestones and deliverable artifacts along the way, as well as software development process that's appropriately tailored for your approach.
-Executing. Training (running) is what builds endurance, muscle, and mental capability to actually finish 26.2 miles. Concrete progress, evolving architecture from cartoons to formal documents, core code base that iteratively grows and aligns to design (plan), is the foundation of the final product.
- The race. The actual race is your test of how well you planned, trained, and executed over many months of preparation. The process of deployment to production and a cut-over (or roll out) of a system to users is your mile 10 of a 26.2 mile distance. The other 16.2 miles and how well you enable the system to handle it will be demonstrated over short time while the system is in production and used by actual users.

Why is this important?

Few people have the opportunity to be in the leadership circles of long term (2+ years) software intensive projects, but it's precisely that experience that enables us to understand the fine nuances that dramatically affect design of systems architecture. Identifying and addressing soft architectural drivers in your architecture designs is essential since it's often the organization and not the technology that places the greatest constraints on an architect.

I can't guarantee that training for and running a marathon will make you better strategist or a better architect, but I guarantee you'll have plenty of time to think about this topic when you train and when you run the race.

Constantin K.
Firebrand Architect®

No comments:

Blockchain learning path for Enterprise Software colleagues

I wrote this post to document my learning path of blockchain concepts and Ethereum technologies while keeping my “new to blockchain” collea...