{ End Bracket }

Passion for the Craft

Scott Hanselman

A recent discussion in the blogosphere stirred my interest more than usual. The term "5:01 Developer" was used disparagingly to refer to a kind of developer who basically turns off his brain at 5:01 P.M. and heads home. Many developers took umbrage at this term and began to defend their positions by declaring how many hours per day they work. Others suggested terms like "uninspired developers," and there were those who rejected labels of any kind.

To me, the label "5:01 Developer" has nothing to do with time on the job or hours logged. It refers to the lack of passion. Labels or not, I believe that to really excel in the field of software—or any field, for that matter—requires a high degree of passion/inspiration/concern/commitment/enthusiasm/excitement. Your job might involve turning a crank or designing a great new crank that will take the world by storm, but if you want to succeed—whether you're compared to your peers or not—then passion can go a long way.

I'm lousy with wood. Seriously, I'm not handy. If I attempted to use a power saw, I would very likely hurt myself. More importantly, I have no passion for woodworking. I enjoy looking at other people's work and can appreciate the effort to a point, but if I were forced to make my living creating things with wood, I'd certainly be punching out at 5:01. This lack of satisfaction creates the anti-craftsman, who is just slapping two pieces of wood together and hoping the chair won't break. And a sense of craftsmanship is just as important as passion for a job. There's a big difference in semantics between the word "job" and the word "craft." Craftspeople begin as apprentices, learning alongside a master, working their way through as journeymen. When software is built by a craftsman—a person with passion, talent, and a sense of stewardship—you can tell right away. A software steward takes personal responsibility for another person's affairs; in the case of software, this is the user's experience from install to run.

I posted my thoughts on this topic on my blog, and, as is common on blogs, the real gems were not in my own post but in the comments of others. Max Pool nailed it immediately when he said:

Some people, when asked what they do for a living, say, "I AM a software developer," and proudly interlace their persona with their career. This simple reply tells a lot about the amount of passion that someone carries with them every day.

Paul Brazelton shared his thoughts on balance:

I'm a father, a runner, a rower, an environmentalist, a human being, and, yes, a programmer. I'm a lifelong learner, and I love to learn everything, not just programming languages. I love technology, but there are so many other things in this world to love, and we have such a short amount of time.

Clearly, passion, craftsmanship, and stewardship should be part of a larger work ethic for any software engineer (or tester, or manager). Sometimes folks blame their lack of passion on the number of years on the job, or the kind of work, or the quality of the tools. Undoubtedly, when the tools get in the way, the work suffers. I'm particularly excited about software right now because it's becoming easier and easier to get more done faster than before.

I think what keeps things fresh for me when working as a developer are the choices. Not only is there always something new coming out, but there's always better techniques, new thinking, even new people exploring classic technologies. In the coming months, I'm going to dig into IronRuby and the flood of new Dynamic Languages being enabled by the CLR. I'm going to look at Model-View-Controller (MVC) Web Frameworks running on ASP.NET and at code generation tools to create whole administration sites auto-magically. I'm creating games for my Xbox® and plug-ins for my Media Center. I'm even going to hack my old Ceiva Digital Picture Frame if it kills me. Of course, all this work will happen after work. Does it make me a better developer or just obsessed? Probably a little of both.

Can this kind of passion (or obsession) be taught? Should it be? I don't know if I'm a craftsman or just a geek. I do know that I'm still having fun, but I still take pride in my work, and I'm learning something new every day. If you don't have a passion for your craft, why are you doing it? I can't imagine walking into my job every day and not finding something to like about it. The basic question is do you care about your craft? Perhaps not about your job, but at least about your craft. James Curran feels this pain:

As a 5:01 Coder, I must protest—I am passionate about my CRAFT, just not about my DAY JOB. (My train ride home is spent on a laptop, working on an open-source project.)

Ultimately it's about finding your passion—and figuring out how to keep it.

Scott Hanselman works for the Developer Division of Microsoft as the DevDiv Community Liaison and aims to spread good information about developing software in any way he can. He blogs at www.hanselman.com, podcasts at www.hanselminutes.com, and contributes to www.asp.net.