The four dimensions of developer happiness
Posted June 23rd, 2009
I’ve spent a lot of time thinking about what I like about programming for a living, what I like about my job in particular and what could make it all even better — and I’ve boiled it down to four dimensions that need to be satisfied by a workplace to make it truly rock. I’ll call them “Taylor’s Dimensions of Developer Happiness.”
If you’re firing on all four cylinders, congratulations — you’ve found a great place to work.
The code: writing good software
As software engineers, the product of our toil is essentially a pile of text files — but the quality and composition of them is vital. Even more important is the collaborative, thoughtful process that goes into creating a lasting set of reusable, maintainable components.
Gauging this category might mean answering questions from the Joel Test, but there’s even more. How about some of these:
- Do you believe in testing? Does someone on your team freak out if a code path is untestable (or untested)?
- Do you do code reviews? Have you been talked into refactoring a nasty bit of code recently?
- Do you have deep discussions about the merit of various source control systems?
All of these things individually are great — but the more that resonates with you, the more likely it is that there’s experience behind the process you’re following to build good code.
The coworkers: working with people you like
I am a strong believer that the people you spend eight hours a day with should be people you’d gladly spend the rest of the evening with at a bar or restaurant. If you can’t get along with them over drinks, you sure as hell won’t be able to build a quality product with them.
That isn’t to say you should be best friends with everyone you work with — just that you enjoy spending the majority of your daily life with them and that you trust in their ability to make decisions that impact you on a daily basis.
This is mostly something that goes without saying, but it’s easy to glaze over or forget the importance of the team’s social makeup when you’re interviewing or distracted by a job offer.
The mission: building a great product
I saw a talk recently by one of the co-founders of Alice.com talking about what has led to the success of his previous start-ups. He said something to this effect: Start-up employees are on a mission to change the world; they need to know the mission and be revved up about the product to make it all come together. In fact, he said the start-up employee is one of the only advantages start-ups have.
Whether or not you work for a start-up, however, the mission is extremely important: You need to be commuting to work every morning for a reason.
You should be able to delve into an exciting summary of the work you’re doing and talk my ear off for about a half hour without stopping. It should keep you up at night. The end result of your work is extremely important: You need to be proud and excited about what you’re doing.
The challenge: learning as you go
The last dimension to developer happiness: The environment you work in should push you with new challenges on a constant basis. This means learning new things and venturing into unknown territory every day.
Lots of different things can be challenging, and in a start-up environment especially, challenges will crop up out of nowhere all the time: technological nightmares, interpersonal conflicts and everythingelseinal challenges abound.
But I think it’s important to put yourself in an environment that breeds those challenges, and to avoid situations you know you can handle.
The… end
And that’s it. This is mostly the product of my working in a small start-up and evaluating the options out there in the rest of the world — so, take it with a grain of salt. I am fairly certain, however, that if you can cover those four bases, the job is a great fit.
Comments on “The four dimensions of developer happiness”
There are no comments on this entry yet.
Add a comment
Comments on this entry have been closed. Please direct feedback to taylor (at) this domain.