After a hiatus of seven years, StarCraft has come roaring back into my life with the release of StarCraft 2. Given the game’s phenomenal richness and complexity, I cannot help but draw parallels between its challenges and those of life writ large.
To succeed at StarCraft, a player must be able to shift between macro and micro management tasks as well as cycle with fanatic discipline through a variety of distinct but intimately related macro management tasks. Focus too long on micro management tasks, and though you may win present battles, you’ll find yourself without troops to micro manage later. Focus overly much on particular macro management tasks, and you’ll eventually find those tasks impossible and undermined. The various facets of StarCraft make up a tightly coupled system of systems that all must operate well to be successful. So, too, with “real” life…
A solid StarCraft player is running a tight loop in which he/she polls a variety of subsystems and issues commands to them to optimize the system’s state. Such high level queries follow…
- Are adequate workers being built?
- Do I have idle workers?
- Do I have adequate supplies?
- Do I have enough resource flow?
- Do I have enough production capacity?
- Am I spending my resources?
- Do I know what kinds and quantities of units my adversaries are building?
- Do I have enough expansion bases?
- Can I see enough of the map?
- Have my adversaries acquired expansion bases?
- Do I know where my opponents’ units are?
- Are my units well positioned?
- Have I upgraded my units’ strength and abilities?
- Am I about to be attacked?
- Am I harassing my adversaries enough?
- Can I handle cloaked enemy units?
- Can I handle highly mobile enemy units?
- Can I handle long range enemy units?
You do not want to switch to a sub-task because it became a problem. Rather, you want to cycle through tasks and hit each one before it becomes an issue. If you’re frantically building Turrets in your base because you’re being overrun by cloaked Banshees, you’re doin’ it wrong. If you’re popping out additional Supply Depots because your supplies are maxed out, you’re being reactive instead of proactive. More generally, if you’re only doing a task because some other task is actively blocking on it then you are doomed.
The exigencies of life have a way of making one focus on the most obviously looming problems at the expense of other issues until they start to provide more concrete impact. Therein lies the path to unhappiness and ineffectiveness. If you’re expending all of your effort on your project at the office, then you’re neglecting your health, neglecting financial management, neglecting continual learning, neglecting to keep up on current events, neglecting your relationships, and so on. Eventually these neglects will undermine the thing on which you are attempting to focus, causing you to fail at everything.
To break out of such a rut requires a conscious and concerted effort. Build a loop in which you poll the various facets of your life. Keep asking “Am I making progress in this arena of my life?”. Keep a trail of your progress and/or set and observe concrete milestones. Keep a journal. Keep a log book. Keep shelves of books you have read. And so on…
But don’t go for 300 Actions Per Minute in your daily life… The frenetic pace of StarCraft is not the pace one wants in life as a whole. That said, the regular and proactive monitoring and management of multiple tightly related sub-goals can serve as the underpinnings of a satisfying life.
To be more relevant to a purported software blog… A successful software project presumably also results from a well run “health” management loop…
- Am I delivering useful features to customers?
- Am I returning to messy code and cleaning it up?
- Am I writing enough automated tests?
- Is there enough documentation?
- Do I have good configuration management?
- Am I validating the usability of the user interfaces?
- Am I exposing good APIs?
- Is the system going to scale?
- Am I managing compliance issues successfully?
- Am I making good use of existing technologies?
- Am I anticipating the impact of coming technologies?
- Are my team members in good spirits and growing?
- Am I aware of my competitors’ status and plans?
- Am I keeping my partner organizations adequately informed?
- Am I keeping my management apprised of political and resourcing issues?