By Samantha John (Engineer, Pivotal Labs) A few months ago, I attended the TechCrunch hackathon in NYC. I expected an intense all-night session where programmers would crank out crazy amounts of code at top speed. As it turned out, my assumptions were far off from reality. Walking around the room there was conspicuously more Redditing than programming on my fellow hackers' screens.
As it turns out, developers goof around. A lot. It's understandable. Everyone procrastinates and it's even more difficult to focus when your job is the internet. The result is that programmers tend to spend a lot of their work time caught in internet wormholes. For most, the hackathon was no exception.
In contrast, my friends and I were able to effectively work for nearly the entire time. This meant that we finished early enough to head home and catch some sleep. When demo time came around we presented Nerd Nearby, a feed of photos tweets, checkins and other social activity happening around you. We even had time to buy our URL and point TechCrunch readers to our site. Other teams had stayed up all night to come up with half-finished and buggy pieces of software. Many of the teams didn't even complete their hacks.
The Nerd Nearby team didn't have special abilities, we're just experts at optimizing time. Three of us are engineers at Pivotal Labs, a consulting company that prides itself on efficient engineering practices. Pivotal has developed practices to make engineers happy and productive (it doesn't hurt business either) and I've happily stolen their ideas for my own pursuits.
Here are some productivity tricks I've learned to help get me through programming sessions, hackathons and beyond.
Nothing beats it. With a pair in tow you absolutely cannot sit there and check your email when you intended to be programming. Try it, I dare you. At the hackathon my friends and I spent the entire night pairing. It paid off. When we got up to take breaks we'd see other people sitting around browsing the internet, on gchat, doing anything but programming. By pairing, we were able to get work done the entire time we were in front of our computers. As a bonus, we got to spend the night being social rather than wearing huge headphones and attempting to shut out the world.
Turn Off The (Distracting Part Of The) Internet
While pair programming is ideal sometimes it's just not practical. Maybe you are working on something by yourself or with someone non-technical. Or if you do have a pair your schedules don't always perfectly coordinate. The next best thing is to start blocking out distractions. There's some great browser plugins (such as Stay Focusd for Chrome) that allow you to firewall specified websites either completely or with a time limit.
Different Computers For Different Contexts
Sleep experts recommend that you use your bed only for sleeping. Why not apply the same principle to computers? You'd never pick up your Xbox and think of work. Why would you pick up your Facebook machine and expect to get some programming done? If you have the resources, a second computer just for work can be indispensible.
A Different Profile For Your Computer
Having 2 computers can be expensive and unrealistic for many. Setting up profiles, on the other hand, is free and easy. I recently set up new profile on my laptop using parental controls. In my profile I blocked a bunch of websites as well as certain applications. I can still use my computer for fun stuff but when I log into my new account my computer goes into workstation only mode. I can pretend it has nothing in common with the YouTube player I just closed.
Take Real Breaks
Everyone needs breaks. Make sure you take them knowingly. There's nothing worse than realizing you've just unintentionally taken an hour break from work while getting lost on Wikipedia. Instead, put down your computer, stretch your legs and leave your desk for a bit.
Get Out Of The House
Sometimes a change of space is all you need. It's tempting to work from your couch but that's the place you go to veg out and watch TV. Go to a coffee shop or cafe, somewhere you can associate with work only. With other busy workers around you can't very well spend 2 hours on Farmville. If you must work at home try moving away from your recreation area. Even if you're apartment is small, there's always the floor!
Set Clear Stopping Points
Set achievable goals and give yourself a treat when you achieve them. It's difficult to work with an indefinite ending. It feels like you'll be going forever so you procrastinate actually getting started. Try planning to take a break once you've reached a milestone, or done a specified time's worth of work. It's much easier to work for four hours straight if you've already decided that is the maximum work time for the day.
Break It Down
An important lesson from Pivotal Labs is the power of breaking down and organizing your tasks before you start. Figure out the smallest possible chunks you can accomplish and track your progress (Pivotal Tracker is made for just this). I've often suffered from not knowing what to work on next once a goal is reached. An orderly backlog of tasks makes it easy to keep going at a steady clip. By frontloading the planning part of your project, you can focus your mental energy on speeding through the implementation.
About the guest blogger: Samantha John is a web developer and entrepreneur based in New York City. She is currently working as an engineer at Pivotal Labs. In her spare time, she's developing Nerd Nearby, a location-based aggregator for social media. She also enjoys running, cooking and long walks on the beach. Samantha holds bachelor degrees in Applied Mathematics, English and Comparative Literature from Columbia University's Fu Foundation School of Engineering and Applied Science. Follow her on Twitter at @SamJ0hn and her app at @nerdnearby.