Don't Play Hurt
I love the c2 wiki. At least once a year I’ll dive in for a day or two and read a swath through its accumulated wisdom. As I learn and experience colors my perspective, I always find new things.
One of the most important articles I’ve read on the c2 wiki wasn’t about a programming technique. It was PlayHurt. The core debate of the page is whether software developers can produce good code even when their hearts are not in it. Because development is a creative mental activity, it’s profoundly affected by the developer’s mental state. When I first read the page, one comment on it really caught my attention:
Is it possible that few of us have ever done anything but programming for a company while playing hurt? Companies seem to put most programmers into unproductive situations most of the time. Without properly supporting a technical developer, then developers PlayHurt and probably fail (the 95% of software projects fail rule again). For example if the marketing is not in place and we don’t have and never will have any real customers then we are playing hurt no matter how good a job we do on the code.
I was working on a product that was unrelated to the rest of the company’s business. It had originally been built in a hurry by inexperienced developers in an unfamiliar language, and no one inside or outside the company had a complete understanding of the product (self included). The CEO set the goal to increase sales 10,000% percent by the year’s end without creating a marketing budget (10% growth would have been lucky). The company culture was built around churning recent college graduates, so there were low standards and no professional criticism.
I don’t often read things and think they speak exactly to my situation, but that comment sure did. It put a name to what I was feeling. I felt terrible because I didn’t understand why I didn’t want to go to work in the mornings and why I had to push myself to fix every bug and complete every feature. I didn’t have the perspective or experience to recognize all the things I just listed that had gone wrong, so I felt like a failure because I couldn’t develop on command. I found some of that understanding on the wiki. I couldn’t Play Hurt anymore. I was just plain tired of being hurt. I quit that month.
If you want to write good code, you can’t play hurt. If you want to be proud of your work, you can’t play hurt. If you want to feel you’re making something of your life, you can’t play hurt. The best work is powered by passion and meaning, not obligation. Play hurt if you’re getting through the occasional frustrations that every job has, if you need to pay the bills, if you’re setting up someone you like to do motivated work. But don’t play hurt if you can avoid it. Find something you love. Create something meaningful. Encourage an environment that allows people to work at their full potential. And take risks to do it.