My "Working" Day
Someone asked how I seem to get so much done. I had to answer honestly:The unfortunate truth about my personality and my day is that I lurch back and forth between being intensely focused and very distractible. There is some daily rhythm to these swings in attention capacity, some random X factor, and the undeniable fact that if I am “in the zone” and you interrupt me enough, I lose focus and I can’t get back into it.
When I am working from home (either for clients or on my own projects), the key to productivity is not letting those focus hours slip through my fingers. When I’m “on,” that’s the time to put
TextMate front and centre. When I’m “off,” I try not to force it too much, there are plenty of things to do that can be done in short dribs and drabs.
Getting Things Done is “The Book” on managing your projects while keeping your blood pressure down. Like many technologists, I find it ideal because it provides a framework for handling the “loops,” the obligations you have to others and others have to you. It is especially relevant for my life within an office because it emphasizes organizing tasks by context.
It’s part of the system to work on office tasks when at the office, phone tasks when you have set aside time for calling, and errands when you're on the road. This fits perfectly with people who need to block aside time for actual programming and still do a myriad of other little tasks in collaboration with others.
My current day job involves working in an office where the prevailing culture is “interrupt-driven,” to the point where it is
mandatory (yes, a company rule) to have IM on so that people can interrupt your coding without even bothering to invest the five minutes to walk over to your desk. Needless to say, the day job environment does
not feature offices for programmers. Nor do people respect the fact that there is code on your screen and headphones over your ears as signs you may be performing a billable activity.
This would be a complete block to productivity, except for the fact that our clientele impose so much bureaucracy on getting anything done that my ratio of virtual paperwork to code approaches one.
1So:
When I have some
serious code to write, I do it at home before I go to the office, or after five when everyone leaves (you can tell a lot about the company culture by observing the stampede for the exits every afternoon). I can debug, embellish, and tinker during the day, but I can’t actually concentrate enough to write anything serious, so I no longer bother trying.
That’s when I usually
lurk on reddit, talk to colleagues, talk to clients, and answer emails. It’s a good time for lightweight research, like figuring out
how to get JRuby working so it can be called as a scripting language from a Java application.
I use
Actiontastic to manage my
GTD system on my
Apple MacBook Pro. That way, although I’m not getting hard coding done, I am advancing my projects and my clients love my high-bandwidth, real-time communication.
Now, from time to time there is a crunch of some kind where I absolutely must get something done and for whatever reason I can’t just leave. I usually hide in the board room and crank. I have to slap myself if the mouse hovers over the Firefox icon. In extreme cases, I turn Internet Access off entirely.
I also get some night hacking time, and if I’m not too exhausted, that’s a good time for coding. I like to save several evenings each week for family time: from dinner with my family to putting my son to bed is a time slot where work, blogs, and even start ups do not intrude.
- Update: R-E-S-P-E-C-T.
Do you have a better idea for how I could be applying my talents to helping a software company grow?