It also describes how that natural enthusiasm can be crushed,and how it can hopefully be regained 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).
Like most entries of this genre (see also Optimal Software Development Processes and Practices) Iselected a small list of widely applicable, but often overlooked,factors. This most certainly isn’t exhaustive, but hopefully itleads to a bit of reflection.
The Enjoyable Profession of Software Development
Software development can be a tremendously rewarding, enjoyablecareer.
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.
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 software development?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 downsizingspells. These are second-rate, artificial passion substitutes:Mixed into the recipe, they yield sub par results, often leaving anasty aftertaste of 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 many software developers in the industrytoday, a feeling of enthusiasm and enjoyment for the pursuit isjust a distant memory (often during the happy days of universityand your first job). Instead it has become a career, and is justsomething you do from 9-5 (or more when passion is replaced bysacrifice). Skills have likely stagnated, moving just enough tocompete with coworkers, or to avoid obsolescence.
Of course there are those who’ve never enjoyed this career, andthey probably will never enjoy it — it just isn’t their thing. Theonly advice I can offer to those people is a suggestion that lifeis too fleeting to spend so much time doing something you don’tenjoy.
Many others, however, remember the passion, and sporadically geta fleeting taste of it again. For those people I propose somepersonal habits that, coupled with workplace practices (formanagers, as well as people who rightfully manage up), will helprecapture 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. They’re the ones thatfeel a little guilty getting paid to do something they enjoy somuch.
The Top 5 Habits of Productive, Happy Software Developers
1. Be Marketable – Keep Up To Date Skills and NetworkContacts
Most of us will work for over a dozen different firms overour careers.
We’ll leave for better salaries and working conditions.We’ll relocate to accommodate a spouse’s career. We’ll be laidoff during corporate mergers and spin-offs, or even when thecompany goes bankrupt. We’ll get turfed out because we’reover-skilled, and thus overpaid, relative to the needs of theposition. We’ll be downsized because we aren’t compatible with thenew boss’ empire building schemes. Maybe we’ll get bored of aposition and seek out something new.
This is the employment reality of most careers in the 21stcentury.
To some professionals this represents an excitingjourney, and each transition is met with anticipation andenthusiasm. These people feel confident in their abilities, have anetwork of peers in the industry communicating interestingopportunities, and their skillset is up-to-date and marketable(they have the appropriate laundry list of abilities, credentialsand certifications, and upgrade as needed), and while thepossibility of their current employer closing shop tomorrow issomething they’d prefer not happen, and they probably love thegreat group of people that they work with, it isn’t something thatthey fear.
To less prepared professionals, however, the idea of losingtheir cushy job hangs over them like a black cloud. Their lackof apparent opportunities, and the feeling that they couldn’tfind an equivalent job, is enormously destructive of bothmotivation and job satisfaction. Paradoxically, job protectionism(such as making one “indispensable” through obscurity, bydenigrating coworkers, and so on) often becomes a more likelyactivity of people in such positions than legitimatecontributions.
This is incredibly destructive to morale, not just for theindividual in question, but for everyone on their team: Often themalcontent, contagiously demotivated member of the team is theleast employable, and it can be debated which condition led to theother.
SUMMARY: No matter how much you loveyour current job, you should keep your CV current, andyou should always keep up-to-date on industryopportunities. Know what skills are in demand, and try to gainexperience in them (even if it means pursuing formal orself-training during your own time), and attain a level of comfortthat you could transition to a different opportunity with minimaldiscomfort.
MANAGER SUMMARY: You should doeverything in your power to make your group feelconfident in their abilities — ensure that everyone gets achance with marketable technologies; encourage the pursuit ofdesirable certifications; and build skills through internalresources, workshops, and seminars. Unless you’re running asweatshop, this is unlikely to lead to a feared exodus ofemployees, but instead will empower and motivate your group tomore openly contribute, and to demand more of each other.
2. Be The Master of Your Domain
The control we have over our environment can have a tremendousimpact on our happiness.
Something as simple as a sporadically malfunctioning key on ourkeyboard can ruin an entire day, for instance. Similarly,when you’re nearing a deadline and your network connection startsflaking out, it can make an enjoyable jog to the finish line afrustrating exercise of physical restraint (in this caserestraining yourself from tearing the wiring out of the wall). Atleast we have optical mice now, eliminating one of the primarycauses of environmental control frustration.
Many times our work habits inevitably bring a feeling of “lackof control” into our work lives: By failing to fully read thedocumentation for our tools, investigating their behaviour, APIs,and nuances, we often create a situation where much of ourdevelopment is basically crap-shoot trial and error, reacting asthings don’t work as planned.
I’ve witnessed development groups, not to mention that I’vedemonstrated this unsavoury trait myself, unhappily fighting withperceived technology deficiencies (usually as a deadlinerapidly approaches), moaning and complaining about what seems to befaults in the language, technology, or platform, forever buildingworkarounds under a fog of uncertainty, when in reality it wasactually a fault in the understanding of the same.
More often than not it’s simply that they haven’t spent theupfront time to understand the language (I remain amazed at thenumber of C# developers who have no idea what the usingkeyword is for, or why seemingly out-of-scope file objects arestill locking files until some magical, indeterminate time in thefuture. Or the Delphi developers who needlessly nulled variables atthe end of scope in a futile misguided attempt to fight mysterybugs), the technology, or the platform. Their frustration iscreated out of ignorance, and a small up-front investment wouldhave sped up development, increasing the sense of control that thedevelopers have over their domain.
SUMMARY: The next time something seemsmysterious or unknown, take the time to properly investigate it.Classic lack-of-control approaches such as hacked workarounds or”reset the server daily” lead to a feeling of losing control,reducing job satisfaction and adding to the natural dailyfrustrations. And get your keyboard replaced if it startsmalfunctioning.
MANAGER SUMMARY: Identify and investigate”easy-outs” proposed by your development team. While mostsoftware has faults, and products and technologies often workdifferently than we might imagine, many times such excuses are dueto a lack of investigation and analysis. Even when thingsdon’t work as advertised, which is frequently thecase, formally investigating and empirically determiningbehaviours is vastly superior to each developer endlessly fightingwith and then hashing out strategies on a need basis. And make sureyour developers have functioning keyboards.
3. Accommodate Your Financial Needs
I’ve worked in some great positions at the wrong times in mylife, sapping my motivation until eventually I moved on. Thesepositions were for great firms, with great working conditions andgreat coworkers and management, but it couldn’t realistically adaptto accommodate my evolving financial needs. I inventeddissatisfactions with the situation, turning an ideal situationinto a daily torture.
After getting married and planning for our first child, forinstance, the financial risk/reward that worked when I was livingalone in a $600 apartment eating Ramen noodles was no longersatisfactory. Demands of owning a home, a car with infant carseats,education funds, daycare (for two children costing more than itwould cost to lease two (2) BMW 750i’s), and boxes and boxes ofdiapers, required more financial returns than I needed yearsbefore.
I moved on.
While the resulting role superficially wasn’t as satisfactory,from a life perspective my mood brightened dramatically, and my daywas much more enjoyable.
Of course this seems like cheap advice: Make more money! AndFast! Yet the reality is that developers often do make choices tothe detriment of their financial condition, and if they go too farthey will hate their job no matter how perfect it otherwise is.Working for equity of a start-up is great when you’re just out ofuniversity, but it is destined for failure when you’re moreestablished.
SUMMARY: If your financials are out of balance,it will unavoidably sour your mood during the workday, making youresent your employer and your workplace. When life goals exceed theincome of your position, immediately begin investigatingalternatives (be it asking for a raise, looking for a more seniorrole in your organization, or seeking employment elsewhere). Nomotivational boost or cool company games room will overcome thisbasic life need.
MANAGEMENT SUMMARY: Be aware of the goals andneeds of your group. Sometimes someone’s needs grow beyond thepossible return of a position, and it is important to appropriatelycommunicate this (rather than giving vague hints of unseen raisesand super-bonuses at some future point).
4. Have A Life Outside of Work
This is a rule that works for all professions — havingaccomplishments providing satisfaction outside of work will smooththe inevitable downs of our professional lives, often providing onewith a much better perspective. Without this, often minor workplacefailures can explode into seemingly momentous events.
These accomplishments can even be in the same domain: Aprofessional coder by day, and an open-source coder by night, forinstance.
SUMMARY: There will be periods when everythingseems to go wrong in the workplace. Having the cushion ofachievements outside of work can avoid it spiraling into aworkplace disaster, keeping spirits up through the tough times.Often non-work experiences benefit the workplace as well, whetherit’s techniques learned from nighttime projects, or deliciouscoffee courtesy of the nighttime barista classes.
MANAGER SUMMARY: There is a world outside ofwork.
5. Properly Manage Expectations
Developers, as a general rule, are terrible at managingexpectations: Many of us are prone to overpromising deliverables,assuring stakeholders that we’ll deliver these amazing resultssooner than is reasonable. I’ve fallen victim to this syndromemyself, and I’ve seen it occur rampantly across the industry.
When D-day comes we convince ourselves into believing that theusers built their own unrealistic expectations, and managers forcedus into untenable timelines. While often that is the case, just asfrequently the developers were the origin ofmisinformation.
While there is a temporary sense of satisfaction wowing usersand management with an exaggerated declaration of our abilities(we’ve likely even convinced ourselves), as time wears on thismisinformation can be enormously destructive and debilitating. Withevery day closer to the deadline we get a little more desperate fora silver bullet, hoping that some magic technology or componentwill deliver us from damnation.
It seldom works out that way.
Users are unhappy. Management is dissatisfied. Employees aredemoralized and devastated.
The best option is always to manage expectations, to ensure thatwe can reasonably deliver promised results without heroiceffort.
SUMMARY: Plan for the long term, realizing thatpromises that aren’t delivered on will cause you great workplaceunhappiness later. Manage expectations to ensure that you cansatisfy your “customers” with reasonable effort, and with areasonably high probability of success.
MANAGER SUMMARY: Never demand unrealisticdeadlines, and question employees when provided with the same.Encourage your troops to be more reasonable with their promises,especially to stakeholders outside of the group, and they’ll have amuch greater probability of meeting external expectations, leadingto increased motivation for everyone.
This is an amazing, expansive career full of incredibleinnovation and endless opportunity. Ensure that you don’t diminishyour enjoyment through simple mistakes, such as pigeon-holing intoa position, or endlessly setting up yourself for failure.
Control your destiny.