Organization is, I’m pretty sure of that, the cornerstone of the telecommuter. As a telecommuter, you don’t have the benefit of discreet boundaries, in space or in time, so you have to be strict on how you manage your time. Otherwise, you will spent the whole day tweeting. And unless your name is Justin Halpern, tweet is not going to pay the rent.
For the past 15 years, I have tried every Getting Things Done system I knew about. They all seems pretty impressive, and they are all filled with big promises. I failed miserably with all of them, well, almost all of them.
The thing is, I’m a programmer, I like to write code, I don’t like to dance around folders, and post-its, and have dozens of different rules to organize my day. I don’t want to learn rules just to keep my todo list trim.
Then I found the Pomodoro Technique. It also is overflown with dozens of marketing superlatives, and fancy words. But at then is just as simple as concentrate on the task for a few minutes, then rest a few more minutes, and start all over again with the task. You have to try to forget about the world, and for 25 minutes immerse yourself in the job. Is dead simple. And is actually how I was working ever since college. I’m a big procrastinator, so, specially when the job at hand is boring, I treat myself with 5 or 10 minutes of absurd laziness after half an hour of work. Give or take a few minutes, and you have Pomodoro.
There two really important aspects that Pomodoro tries to cope. First, it is easy to procrastinate when the job is boring, or the task is overwhelming. With Pomodoro, you act like a recovered alcoholic, one pomodoro at a time. You just have to worry for the next 25 minutes.
The other one is unplanned interruptions. Interruptions are expensive. Imagine yourself thinking really hard about a bug in your code. Ten minutes into the debugging session a colleague storm into your office to chat about the last episode of The Big Bang Theory. Five minutes later, he’s gone. But you don’t even remember what’s the bug you were working on. Don’t take me wrong, I love Sheldon Cooper like any other geek, but kills my mood to waste so much time. The interruption cost is not only the 5 minutes spent talking about some TV show, but the 10 minutes before that (because you are no longer able to remember what you’ve been working back then), and the 10 minutes after that (trying to remember what you were thinking).
Obviously, some times interruptions are needed. For instance, the server is down, and you had to take a look at what’s happening because thousands of users are getting angry. But for the most part, they has to be avoided. That’s pretty much my summation of Pomodoro, as far as I am concerned, set a timer and forget about the world until the timer fires. No interruptions for 25 minutes. No email, no twitter, no web (only to browse documentation), no nothing. You and your code.
But wait a minute, how’s the timer firing up is any different of an email, or your colleague talking about The Big Bang Theory? Well, for once, you have allocated more time, so the chances of actually getting something done before the timer is fired are much greater. And if you have done something useful, then the chances of get into “procrastination mode” are smaller. Is like a game (actually, I play a game with my self, trying to beat my pomodori record each day). You also know when the timer is about to get off, so you can project in advance. If you know you have just one minute left in your Pomodoro, you can create a dump note with all your ideas about what you were doing. Then, as soon as the rest is done, you can start right at the same point (you don’t have to think about what you were thinking, you have your notes there to help).
So there it is, I hate interruptions. Does that means I code in a cave, from where occasionally I emerge to deliver my product? No. I know guys that are able to rewrite Unix in a couple of weeks by themselves. I’m not one of them. You have to be a genius for that, and I am not a genius. I love to engage with smart people, love to have ideas flowing all over the place, waking up in the middle of the night with something that I have to share with the guys because this is really awesome. We really have to implement it.
Because of that, I need human interaction. At least once a day, a brief phone (or Skype) call to let everyone else knows what I’m running after, and what the rest is working on is the needed. And twice or thrice a week, a longer call is also useful to understand where the team is headed.
The daily call is just a five minutes chat to get everyone in the loop. “Hi there, what are you working on?” Excellent, then I will start with X, hopefully tomorrow X is going to be done, and you can start with Z". That’s all. Really
The longer calls should never be longer than half an hour, and if possible, the agenda should be available to all participants before the call. If the agenda is public to everyone, then each member of the team can think about ideas to share at the call. And more importantly, everyone in the call can play Miss Sweetie Poo. The more time a coder spent talking, the less time he or she has to actually code. Managers all around the world, remember that.
The calls has to be scheduled, so everyone can organize to take the calls avoiding interruptions.
Mail is really useful to communicate between two persons, but it is not that good to handle anything else. Don’t use email to alert about a bug. Why? Because everyone receives dozens of messages per day, and is really easy to spend long minutes just looking for the message that reports some bug to get the details. A good Issue Tracking System is as important as a Version Control System 1. There are services with all the whistles. But being a simple guy, all I need is just a plain old board to record bug reports, and features requirements. The one included in Github is excellent. Pivotal Tracker and Lighthouse are terrific as well. And if you are a little paranoid, you can run your own instance of Redmine.
And talking about features requirements, the ideas behind them has to be nurtured. Yes, phone calls or email messages are great to ignite the spark, but wikis are even better to make them grow. But soon enough threads became a mess. Wikis, on the other hand, are great to consolidate ideas, and incubate them. It is just one piece of text, collectively composed, but just one piece. Once again, Github offers a good enough solution to implement Wikis.
Private email groups are perfect to share problems and ideas between more than two members of the team. Why they are better than plain vanilla email? Because you are broadcasting to the whole team. So, let’s say you have a problem, the solution is elusive. Why don’t tell the rest of the team about it? Most of the time, the simple exercise to think carefully about the problem in order to write it down and share it with the rest, will help you to find a new perspective to fix it. And if that’s not the case, actually shooting the message will give everyone the chance to help. The same is also true to enhance ideas for features. Wikis are great to have a uniform repository for new born ideas, emails are great to discuss details that will be added to the wiki description.
When files has to be shared, nothing like Dropbox. Really. Even a free account will give the team a lot of space to share files. Again, for the paranoids (and yes, I am a little paranoid myself), a simple FTP or sFTP box is enough. At least for geeky teams, if commercial fellas has to be able to share files, you better set a dropbox account.
Tools of the Trade
There are plenty of technology that helps telecommuters team to get things done. Let’s take a brief look to some of them.
- Telephone / Skype / Google Chat: There is nothing like a conversation to have the whole team on the same page. And also to move ideas back and forth.
- Mail: Quite useful to share bits of information, not big enough to grant a support ticket.
- Chat: No really a big fan of chat. It is really easy to waste a lot of time chatting. Anyhow, sometimes is useful to have a back channel to communicate with the team.
- Campfire: (my personal favorite, specially with Propane
- IRC: (for geeky teams, IRC channels are also great)
- Pivotal Tracker
- Scheduling Meetings:
- Control Version:
- Bitbucket (useful if the version system of choice is Mercurial)