Programming is hard work. Programming, designing, deploying, scaling, debugging, and maintenance all done at the same time 12+ hours a day is even harder work — and the last 4 months have really taught me that.

During the three months from June through August spent participating in the YCombinator program I wrote a ridiculous amount of code, gained much knowledge, made a great group of friends, and brought a pretty sweet project to a quick launch. All in all it was fulfilling, rewarding and fun. After August and the program came to a close I began working on our next big feature, failing to notice that in all the excitement I had completely ran out of steam. Over the course of this month I slowed down and stopped working as much, despite being in front of the computer just as long as before. New bugs continued to delay a speedy release of concert tickets and as the need for a large refactoring came firmly into view, I began buckling further under the load. Today, a mere six days until concerts are due, I am just now realizing the full extent of these effects. Here are a few things I’ve managed to take away from the experience.

Learn to Recognize Stress

Perhaps it’s a product of age or experience, but recently I’ve started to recognize stressors much more than I used to. Injuries, deaths, significant life changes, catastrophic events, these things never got to me before. I am beginning to realize more than ever the importance of recognizing, reacting to and–where possible–heading off potential stressors. I think my default tendency to ignore these things works for short-term issues, but when I become stressed or burnt out by something I have to do every day–work that affects more than just me–I have to be more vigilant.

Learn Your Limits

We all have limits. I’ll never stake my livelihood in my ability to run a 5-minute mile; it’s just not going to happen. On the one hand, we should all strive for constant improvement and one of the best ways to do that is to put ourselves in situations where we have to exceed our expectations. On the other hand, attempt to bend too far and we will break. Maybe my breaking point is 3 months solid of near round-the-clock work; maybe yours is 3 weeks or 3 years of the same — the important thing is figuring that out and taking the hint that you’re reaching it, something I failed to do this time around.

Of course, different tasks call for different limits. The type of work you do is as important to the value of this variable as anything. For certain tasks that don’t require constant concentration and mental (and/or physical) effort, your limits will likely be higher. Regardless, it is possible to push these limits, but not indefinitely.

Separate Work from Everything Else

Today, if I told you that I “work” 14 hours a day all that really means is I’m in front of the computer for that length of time. Sadly, this figure is relatively accurate. However, the amount of actual work being done during all those hours varies wildly; it could be 10 hours, it could be two. The problem is, the only true relaxation I have on a daily basis is while I’m asleep. All other times I am working or thinking about work. I feel compelled to be working if I am in front of the computer, but can’t bring myself to do it at times because I feel too overwhelmed from being there constantly. It’s a nasty bit of recursion!

My new goal is to spend far less time in front of the “work” computer. Unless I am working, I will boot into Windows to play games, grab my laptop to surf the net, or avoid the computers entirely and read a book, play XBOX, etc. No more messenger or e-mail or other nonsense after-hours, either. I will also begin maintaining a more fixed schedule which involves going back to the gym every day. The last two I’ve already started. Maybe some day I will branch out and get one of those “life” things people are always talking about. I seem to recall a time when I had one of those and it was… nice?

This is just an example of how to tackle the issue; your mileage may vary. I recognize that like the world I am imperfect — there will be days when I wake up and simply can’t bring myself to work; there will be days when I get in the “zone” and code late into the night, ruining my sleep schedule for the immediate future. The key is to make neither of these a habit.

Finally, if you have your own methods for separating work from leisure, getting into the zone, etc. — please leave them in the comments (or email tom @ this domain). If I get enough submissions I’ll create a follow-up post with the highlights and hopefully help some fellow knowledge-workers in the process.

Conclusion

Don’t get me wrong, I love programming. I love all my work. If it weren’t for mentally stimulating work I would have thrown myself from a bridge long ago. Even so, sometimes the mind needs a break. Well, my mind anyway — I’m sure there are folks who can work 20/7/365 and thrive, but I’m not one of them! The ultimate goal here is moderation in all things work and play. It’s an attempt to curb the programmer stereotype of working non-stop for 40 hours or a week straight and then stopping for an indeterminate amount of time (I still haven’t determined it and I’m writing about it!)

As for affecting when concerts show up here on TS, well, I said they’d be up by the end of the month so that’s still my goal, granting that such an accomplishment might impress even me. I don’t know how long it will take to truly “right” myself, but hopefully however long it is it can wait until next month. And, hopefully, all these lessons and changes will lead to an even faster-paced release schedule around here in the coming months — one that doesn’t live by the whims of my errant mind.