If you’ve never heard the name Helmut Bakaitis before, I’m not surprised. Until a few minutes ago, I hadn’t either. In fact it wasn’t until I decided to look up the actor who played one of the most pivotal characters in The Matrix trilogy that I stumbled upon his name. I also discovered that even though Helmut is an actor, outside of his performance in The Matrix he’s not particularly well known.
This isn’t really a post about an obscure actor, though. In fact, it’s not even really about his character. Oh, that! I almost forgot. Yes, the pivotal character I mentioned but failed to name before is, of course, “The Architect” who reveals himself to Neo in the second film as the creator of the Matrix. “Creator” – now that word has a nice ring to it, don’t you think? I have another related word, though. One which I prefer to apply to my work: designer.
Software architecture in its pure form is a very cerebral exercise. Essentially you are the person responsible for taking the overall goals and coming up with the plans or blue-prints which the implementers will use to build a solution. In that (overly simplistic) model, one person writes no code and another person does nothing but write code. Obviously the reality is something far less delineated in most environments, including mine.
However, I have noticed something which relates back to a post I made recently with regard to my productivity. What I noticed is that I seem to have far less issue with productivity when my work on any given day is balanced between architecture and coding. While in that mode I don’t consider myself an architect nor a programmer, but rather a designer. It’s that sweet spot wherein I’m able to take some time thinking heavily about my next steps and then immediately move to implement the plan I’ve devised, all the while identifying areas where the design may be weak or could be improved and quickly able to adjust the plans or completely re-architect them as needed. When I get into these cycles, those are the days when I’m most likely to get a call from Crystal saying “are you coming home tonight, or just sleeping there?” Even more telling is that I have to consider the options before responding…
It’s one thing to identify these types of motivators, but I think the harder task is to find ways to use them for gain. For instance, having realized this about myself I’ve considered that rather than cramming all of my design-oriented work into one or two days, I may be better off to try spreading that work over several days or weeks if the task is large enough. In some cases that won’t really be feasible, but I think the majority of the time it should be possible.
Determining whether or not this tactic actually produces a noticeable improvement in productivity would be difficult without some sort of metrics. That, of course, leads right back into my afore-mentioned post and the oh-so-loveable NPT form.