Through this blog, I want to descibe the wonder and curiosity that many developers start out with, whether it's when they entered their first display program in C Language, picked up their first JavaScript in 1 Hour book, when they started toying with the gcc compiler for the first time, or when they began towards their first Computer Science degree in university.
I will try tp describe how that natural enthusiasm can be crushed, and how it can hopefully be regained or maintained.
I am writing this blog for a developer, whether a new recruit or a veteran, motivated or unmotivated, yet it's also written for software development managers.
Software development can be a tremendously rewarding, enjoyable career.Few careers offer comparable opportunities to weave intricate, complex structures that, while virtual, have such a positive impact on the world around them. Few offer the freedom and creativity that software development does, or the very real potential for entrepreneurial riches.
Whether it's building a new peer-to-peer application,designing a website, or improving the workflow of the corporate scorecard system, done right this can be a very fulfilling, enjoyable, challenging pursuit.
Does your mind race at all hours, abuzz with potential solutions for vexing software development challenges? Do you lie awake at night --eager for morning to arrive so you can implement the crafty coding structures you just thought up?
Yes, I'm talking about a bona fide interest and enjoyment of the craft and challenge of software development.
If you're like many software developers in the industry today, a feeling of enthusiasm and enjoyment for the pursuit is just a distant memory (often during the happy days of university and your first job). Instead it has become a career, and is just something you do from 9-5 (or more when passion is replaced by sacrifice). Skills have likely stagnated, moving just enough to compete with coworkers, or to avoid obsolescence.
Of course there are those who've never enjoyed this career, and they probably will never enjoy it -- it just isn't their thing. The only advice Many others, however, remember the passion, and sporadically get a fleeting taste of it again. For those people I propose some personal habits that, coupled with workplace practices , will help recapture and maintain that passion.
Software developers who truly love what they are doing are the ones creating the most innovative code. They're the ones with productivity rates multiples of their peers. They're the ones that feel a little guilty getting paid to do something they enjoy so much.
Most of us will work for over a dozen different firms over our careers.
We'll leave for better salaries and working conditions. We'll be laid off during corporate mergers and spin-offs. We'll get turfed out because we're over-skilled, and thus overpaid, relative to the needs of the position, which is the current trend in software industry. Maybe we'll get bored of a position and seek out something new.
To less prepared professionals, however, the idea of losing their cushy job hangs over them like a black cloud. Their lack of apparent opportunities, and the feeling that they couldn't find an equivalent job, is enormously destructive of both motivation and job satisfaction. This is incredibly destructive to morale, not just for the individual in question, but for everyone on their team.
SUMMARY: No matter how much you love your current job, you should keep your CV current, and you should always keep up-to-date on industry opportunities. Know what skills are in demand, and try to gain experience in them (even if it means pursuing formal or self-training during your own time), and attain a level of comfort that you could transition to a different opportunity with minimal discomfort.
MANAGER SUMMARY: You should do everything in your power to make your group feel confident in their abilities -- ensure that everyone gets a chance with marketable technologies; encourage the pursuit of desirable certifications; and build skills through internal resources, workshops, and seminars.
Something as simple as a sporadically malfunctioning key on our keyboard can ruin an entire day, for instance. Similarly, when you're nearing a deadline and your network connection starts flaking out, it can make an enjoyable jog to the finish line a frustrating exercise of physical restraint.
Developers, as a general rule, are terrible at managing expectations: Many of us are prone to overpromising deliverables, assuring stakeholders that we'll deliver these amazing results sooner than is reasonable. When D-day comes we convince ourselves into believing that the users built their own unrealistic expectations, and managers forced us into untenable timelines. While often that is the case, just as frequently the developers were the origin of misinformation.
While there is a temporary sense of satisfaction wowing users and management with an exaggerated declaration of our abilities (we've likely even convinced ourselves), as time wears on this misinformation can be enormously destructive and debilitating. With every day closer to the deadline we get a little more desperate for a silver bullet, hoping that some magic technology or component will deliver us from damnation.
It seldom works out that way.Users are unhappy. Management is dissatisfied. Employees are demoralized and devastated.The best option is always to manage expectations, to ensure that we can reasonably deliver promised results without heroic effort.
The Top 5 Habits of Productive, Happy Software Developers
This is an amazing, expansive career full of incredible innovation and endless opportunity. Ensure that you don't diminish your enjoyment through simple mistakes, such as pigeon-holing into a position, or endlessly setting up yourself for failure.
Control your destiny.