The Enriching Craft of Software Development – Enjoying Your Job [PREVIEW]

This is a preview of an article scheduled for completionbefore the week is out (and while it sharessuperficial similarities to a recent Paul Grahamarticle, it was started before Paul “published”, andhas been a topic that I’ve long wanted to cover).

I’ve dedicated a little more time to writing now, and shouldfinally complete another commissioned magazine article over thenext month (this one on distributed/symmetrical computing with.NET), which will be satisfying to finally .

Introduction

Software development can be a tremendously rewarding andenjoyable career.

Few careers offer comparable opportunities to weave intricate,complex structures that, while virtual, have such a  positiveimpact on the world around them. Few offer the freedom andcreativity that software development does, or the very realpotential for entrepreneurial riches.

Whether it’s building a new peer-to-peer application, controlsoftware for a massive power generator, or improving the workflowof the corporate scorecard system, done right this can be a veryfulfilling, enjoyable, challenging pursuit.

This article describes the wonder and curiosity that manydevelopers start out with, whether it’s when they pick up theirfirst JavaScript in 1 Hour book, when they start toying with thegcc compiler for the first time, or when they started their firstComputer Science course in university. It describes how thatnatural enthusiasm can be crushed, and how it can hopefully beregained or maintained.

This is written for the developer, whether a new recruit or aveteran, motivated or unmotivated, spirited or crushed, yet it’salso written for software development managers (who might identifyhow to make the workplace more enjoyable and more rewarding).

A Passion for Software Development

Does your mind race at all hours, abuzz with potential solutionsfor vexing software development challenges Do you lie awake atnight — anxious like a preschooler on Christmas Eve — eagerfor morning to arrive so you can implement the crafty codingstructures you just thought up Do you frequently find yourselfpowering up your system in the twilight hours to implement thefruits of an epiphany?

Or do you put in just enough face time and superficial effortthat sacrifice makes up for undelivered results Do you purge yourmind of software development the moment the virtual end-of-daywhistle goes off, sliding off your Aeron dinosaur satisfied thatit’s one day closer to the weekend Do you dread Mondays,motivating yourself to keep going with the dream of a far offvacation?

Do you eagerly embrace new technologies, seeing it as achallenging opportunity to learn something new when a solutioncalls for a new skill Would you voluntarily dive into the innardsof the Firefox web browser if a solution demanded it and you’dnever touched it before Do you swim through documentation,thirstily absorbing new APIs, tools, and languages to expand yourskill-set, eagerly embracing industry advances?

Or do you dread anything different, praying that you’re taskedwith challenges that require only the skills you’ve long held,allowing you to apply them in a mechanical, repetitious fashion Doyou hope every project is an echo of a prior project Do you putoff any task requiring research, and show disdain towards newlanguages, techniques and practices, hoping that they don’t gaintraction?

Are you really passionate about softwaredevelopment?

Be honest with yourself.

A desire to outshine a teammate isn’t passion. Nor is amotivation to impress the boss. Neither is a combination of the twoworn as a magic defensive cloak against downsizing spells. All ofthose are second-rate, artificial passion substitutes: Mixed intothe recipe, they yield subpar results, often leaving a nastyaftertaste called burnout and dissatisfaction.

Instead I’m talking about a bona fide interest andenjoyment of the craft and challenge of softwaredevelopment, even outside of career or job security issues (thoughit benefits the same). This isn’t a job ad demanding that you’re“passionate about business reports!”, but rather is just amoment for sober reflection on whether you’re over-clocking life,or running idle instructions in a tight loop.

If you’re like most software developers in the industry today, afeeling of enthusiasm and enjoyment for the pursuit is just adistant memory (often during the happy days of university and yourfirst job). Instead it has become a career, and is just somethingyou do from 9-5 (or more when passion is replaced by sacrifice).Skills have likely stagnated, moving just enough to compete withcoworkers, or to avoid obsolescence.

Of course there are those who’ve never (and will never) enjoyedthis career. The only advice I can offer to those people is asuggestion that life is too fleeting to spend so much time doingsomething you don’t enjoy.

Many others, however, remember the passion, and sporatically geta taste of it again. For those people I propose some personalhabits that coupled with workplace practices (for managers, aswell as people who rightfully manage up), that will help recapture,and maintain, that passion.

Software developers who truly love what they are doing are theones creating the most innovative code. They’re the ones withproductivity rates multiples of their peers in the industry.They’re the ones getting paid to do what they love doing.