Click to Rate and Give Feedback
Related Articles

We use the new Asynchronous Agents Library in Visual C++ 2010 to solve the classic Dining Philosophers concurrency problem.

Rick Molloy

MSDN Magazine June 2009

...

Read more!

There's always been disagreement about whether large blobs, such as document and multimedia items, should be stored in the database or file system. In SQL Server 2008 you don't have to choose; filestream storage provides the best of both approaches.

Bob Beauchemin

MSDN Magazine May 2009

...

Read more!

Danny Simmons explores some anti-patterns you should look out for when building n-tier applications with the Entity Framework.

Daniel Simmons

MSDN Magazine June 2009

...

Read more!

We demonstrate creating a peer-to-peer processing platform where multiple players function together for a common purpose: getting your work done.

Matt Neely

MSDN Magazine June 2009

...

Read more!

Memory usage can have a direct impact on how fast an application executes and thus is important to optimize. In this article we discuss the basics of memory optimization for .NET programs.

Subramanian Ramaswamy and Vance Morrison

MSDN Magazine June 2009

...

Read more!

Popular Articles

Jason Clark

MSDN Magazine July 2003

...

Read more!

James Avery does it again with his popular list of developer tools. This time he covers the best Visual Studio add-ins available today that you can download for free.

James Avery

MSDN Magazine December 2005

...

Read more!

See how routed events and routed commands in Windows Presentation Foundation form the basis for communication between the parts of your UI.

Brian Noyes

MSDN Magazine September 2008

...

Read more!

Now you can perform efficient, sophisticated text analysis using regular expressions in SQL Server 2005.

David Banister

MSDN Magazine February 2007

...

Read more!

Here we introduce you to some of the concepts behind the new F# language, which combines elements of functional and object-oriented .NET languages. We then help you get started writing some simple programs.

Ted Neward

MSDN Magazine Launch 2008

...

Read more!

{ 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.

Page view tracker