Software developers like to work. The best way to motivate developers is to provide an environment that makes it easy for them to focus on what they like doing most, which is developing software.
Ownership or “buy-in” in one key to achievement motivation. People will work harder to achieve their own goals than to achieve someone else’s.
Microsoft’s Chris Peters points out that if we let developers create their own schedules, they take ownership of their schedules and we get their buy-in. We don’t have to worry about long schedules because the schedules that developers generate are always ambitious (Cusumano and Selby 1995).
We might have to worry about some of the problems associated with overly optimistic schedules or developers voluntarily working too much overtime but those are not motivation problems.
Goal setting is another key to achievement motivation. Explicitly setting development-speed objectives is a simple, obvious step in achieving accelerated software development and it’s easy to overlook.
We might wonder, if we set a development-time objective, do developers actually work to achieve it? The answer is “yes”, if they know how that objective fit in with other objectives and if the set of objectives taken as a whole is reasonable.
Developers can’t respond to objectives that change daily or that are collectively impossible to meet.
2. Possibility for Growth
One of the most exciting aspects of being a software developer is working in a field that is constantly changing. One has to learn something every day just to stay current and half of what we need to know to do our jobs today will be out of date 2 years from now. Considering the nature of the industry developers have chosen to work in, it is not surprising that they are motivated by possibilities for growth.
A company can show interest in it’s developers professional growth in any of these ways:
- By providing tuition reimbursement for professional-development classes
- By giving time off to attend classes or to study
- By providing reimbursement for purchase of professional books
- By assigning developers to projects that will expand their skill sets
- By assigning a mentor to a new developer/team member
- By avoiding excessive schedule pressure (which tells developers that the real, top priority is getting the next product out the door regardless of the personal cost)
How much should a company spend? There really is no upper limit. In “Thriving on Chaos”, Tom Peters reports that Nissan budgeted $30,000 per person in startup costs when they opened their plant in Smyrna, Tennessee (Peters 1987). Companies that are in the top 10 percent of their industries in quality and productivity typically provide 2 weeks of training per year for software developers and 3 weeks for managers (Jones 1994).
A focus on personal growth can have short-term and long-term impacts on a company’s productivity. In the short-term, it will increase a team’s motivation, causing them to work harder. In the long-term, a company will improve its ability to attract and keep people from the top of the talent pool. As John Naisbitt and Patricia Aburdene say in “Reinventing the Corporation”, “The Best and brightest people will gravitate towards those corporations that foster personal growth” (Naisbitt and Aburdene 1985). In other words, support for professional development is vital to the health of any company – and especially so in the software field.
3. Work Itself
Richard Hackman and Greg Oldham argue that generally, people’s internal motivations comes from three sources: They must experience meaning in their work; they must experience responsibility for the outcome of their work; and they must know the actual results of their work activities (Hackman and Oldham 1980).
Hackman and Oldham identified five dimensions of the work itself that contribute to these sources of motivation. The first three of these job characteristics contribute to how meaningful people find their work to be:
Is the degree to which your work requires you to exercise a variety of skills so that you can avoid boredom and fatigue. People find meaning in jobs that offer variety, even in work that is not very significant or important in any absolute sense.
Is the degree to which your job requires you to complete a whole, identifiable piece of work. People care more about their work when they have a whole, identifiable piece of work. People care more about their work when they have a whole job to do and when they feel that their contribution matters.
Is the degree to which your work affects other people and contributes to social welfare. People need to feel the final product has value.
The fourth job characteristic contributes to a person’s feeling of responsibility for the outcome of the work:
Is the degree to which you have control over the means and methods you use to perform your work – the sense of being your own boss, and the amount of elbow room you have. The more autonomy people have, the greater sense of personal responsibility they tend to feel for the outcome of their work.
The fifth job characteristic contributes to how much people know about the actual results of their work activities:
- Job Feedback
Is the degree to which carrying out the job itself provides you with direct and clear information about how effective you are.
4. Personal Life
Achievement, possibility for growth and work itself are in the top five motivators for both developers and managers (although they prioritise the factors differently). Those factors present a significant opportunity for developers and managers to understand what makes the other tick.
But personal life is fourth to developers, fifteenth for managers. Thus, the motivational impact of a developer’s personal life is likely to be the hardest motivational factor for a manager to understand. A close second is probably responsibility, which is ranked first for managers and tenth for developers.
5. Technical-Supervision Opportunity
Managers are less motivated by opportunity for technical supervision than are developers. The easiest way to understand this is to recognise the connection between technical-supervision opportunity and achievement. For a developer, a technical-supervision opportunity represents an achievement. An opportunity to supervise technical work implies that the developer has achieved a level of technical-expertise sufficient to direct others. For a manager, a technical-supervision opportunity would probably represent a step backwards; the manager is already supervising others and is quite happy not to be supervising technical details. So it’s really not surprising that developers and more motivated by technical-supervision opportunities than managers are.
Technical-supervision opportunities are not limited to assigning one person to be the technical lead on a project. We can use this motivator more broadly:
- Assign each person in a project to be technical lead for a particular area – user-interface design, networking, interfacing with other applications, installation, data conversion and so on.
- Assign each person to be the technical lead for a particular process area – technical reviews, reuse, integration, tool evaluation, performance evaluation, system testing and so on.
- Assign all but the most junior developers to be mentors. We can assign second-level mentors to work with the first-level mentors. The second-level mentors can help with the mentoring activity itself or they might provide more technically experienced advice to the first-level mentors.