Mar 2012

Optimizing for Happiness in Software Development

by Steve Wortham

This is something I've been thinking about a lot lately running my own business and doing contract work on the side.  Optimizing for happiness is all about creating a work environment for yourself and those around you where stress and burnout are no longer a concern.  And yet you can still get work done, and do it well.

A little background

I started programming when I was 12 as a hobby.  But my very first job was actually doing manual labor at age 16.  I did maintenance and repairs for a local tennis club.  It was a summer job in Texas and my boss had this philosophy about work.  He said that in his experience, once you start working too deep into the day you begin making mistakes.  Then you spend the next morning undoing your mistakes.  So we had hours from 8AM to 3PM, or roughly 6 1/2 hours a day with the lunch break.  For those counting, that's about 32 hours a week.  I always liked those hours, and I liked his philosophy.

Fast forward a couple years and I began working as a web developer at age 18.  This company had your basic 40 hour work weeks.  And it was alright for me because I was doing programming for a living and I loved it.  I was learning faster during the 3 years of working there than anytime before it.  But as my career progressed I began to think more and more that my boss was right.  And a shorter work week could be a good thing in the world of software development as well.

Doctor: Eh... in my opinion you are having a burnout.

About 5 years later I was experiencing symptoms of burnout which can be described as, "long-term exhaustion and diminished interest".  Deadlines were constantly being missed which feels like a continuous string of failures.  There were surely a lot of contributing factors.  But however you slice it, it was clear that I had become disenchanted with what I did for a living.  It was no coincidence that was the same year that I created BucketSoft.

When burnout occurs, you might continue working for the company cranking out project after project.  But the quality of work will likely suffer, as will your mental and physical health.  If you don't recover from it, it'll surely lead to you quitting your job just as I did.

A better way

It's my belief that the way to run a software company is to do the following:
1. Reduce the number of work hours
2. Eliminate deadlines

Of course this is all about optimizing for happiness and it's obvious that these are very attractive ideas to any employee.  But it's more than that.

Let's break it down...

Advantages of  reducing the number of work hours:
1. Improve focus.  How many people can claim they have 100% focus every day, 40 hours a week?  Focus is absolutely critical in building quality software and it's something we should absolutely optimize for.
2. By giving your employees a little more time for themselves they're able to take care of personal errands during off hours.  And that's exactly how it should be anyway.

Advantages of eliminating deadlines:
1. Google the words "deadline stress" and you'll find thousands of sources talking about it.  The pressure and urgency that comes from a deadline encourages people to work extra hours.  But at what cost to your employees?
2. Improve software quality.  What kind of mistakes are going to happen when your employees rush to finish a project within the deadline?

Don't take my word for it

Some extremely successful software companies operate with this philosophy.

At 37signals they work 4 days (32 hours) a week.  They've been doing this since 2008 and they've mentioned it in blog posts on several occasions.  My favorite is titled, "Urgency is poisonous".

Tom Preston-Werner, the founder of GitHub, also talks about Optimizing for Happiness.  He says...
There are other really great things you can do when you optimize for happiness. You can throw away things like financial projections, hard deadlines, ineffective executives that make investors feel safe, and everything that hinders your employees from building amazing products.

And last but not least, there's Balsamiq.  They're one of my favorite startups ever and a big inspiration for me in creating BucketSoft.  And they do not believe in deadlines either...
It may be because we're small and it might change in the future, but the few times I've tried to set a deadline so far, things quickly started to go south.  We started stressing out, not enjoying our work as much and, ultimately, not doing our best work.
He goes on to say...
I also value work/life balance immensely, and believe employee burnout is one of the worst things that can happen to a small business.