What motivates software developers?
Developers who simply work for a paycheck have
different priorities so I am going to ask you to forget about them for a
minute. If you joined software development out of pure passion for the
industry then you have a different agenda. Building software is a very
creative and constructive process but the intangible nature of software
makes the parallels to traditional engineering difficult. The job titles
in our industry typically reflect some form of engineering but it seems to have
lost its impact (Do most people think of a software engineer and a civil
engineer having the same qualities?). Yet we do still share many of the
same feelings and priorities as conventional craftsmen.
Things like:
- A tendency towards perfectionism (ever caught
yourself tweaking the UI or code a little to get it aligned just
right?)
- Pride for the end product
- Strong sense of ownership
- Criticism of other work
- Responsibility for flaws
- Strong affection for our tools of the trade
(editors, IDEs, utilities, home grown tools)
- Strong need to use new tools and
processes
Some agile practices (collective code ownership,
pair programming, good enough) seem to reduce some of these basic craftsman
tendencies but they still exist in some form.
Unfortunately these traits don't always align with
the business interests of the project so we have to balance the different
priorities to achieve the optimal environment. How can we understand these
tendencies to enjoy our work more and motivate others on our team?
- Introduce new technologies and techniques
in a controlled manner so that the team is able to try new things without
taking large risks. Be sure to include developers in this decision
making process - after all they should be the ones 'in the know' on new
technologies, right?
- Practice pair programming to encourage
communication, sharing of skills and team building - this can bring a lot of
satisfaction to a developer team without changing the tasks or the priorities
of the project.
- Encourage participation in community developer
events (user groups, code camps), blogs (share links across the team), books
(monthly bookshelf anyone?) and conferences.
- Avoid generalized training - in my opinion this
tends to serve the paycheck programmer more than the dedicated ones.
Instead prefer specialized training which focuses on particular
new techniques that have already been piloted and now use that training
time to get a jumpstart and avoid early pitfalls.
- Interesting projects - this is tough to control
since business priorities and budgets usually dictate the schedule
however there are often ways to make projects more interesting without risking
timeline or budget.
- Satisfy your customer - there is nothing better
than the feeling of a job well done to motivate a developer
team!
Some of these ideas have been very
successful on our projects. What motivates you and your developer
team?
BTW - We are looking for another TDD .NET Developer to join our developer
team.
Jonathan Cogley is the CEO and founder of
Thycotic Software, a .NET consulting company and ISV in Washington DC.
Thycotic has just released Thycotic Secret
Server which is a secure web-based
solution to both "Where is my Hotmail password?" and "Who has the password for
our domain name?". Secret Server is the leader in secret management
and sharing within companies and teams.