Being able to actually motivate programmers to accomplish great feats and deliver difficult projects is so important to managing effectively that this chapter is devoted to this single topic. You can be good at this and passable at most of the rest of the topics in this book and still be a great software manager. If, however, you are not good at motivating your staff, you will not likely succeed as a software manager.
Motivational Theories
Several motivational theories emerged during the twentieth century that have helped shape the thinking of businesses regarding motivation. Though a bit theoretical for this book, it is important to be aware of these theories since they periodically but inevitably come up during management discussions. Having a basic knowledge of these theories will help you speak more authoritatively regarding your motivational efforts and gain management support for them.
Though the literature is now rife with motivational theories, there are three primary ones we suggest you become familiar with:
• Maslow’s Hierarchy of Needs
• McGregor’s X-Y Theory
• Herzberg’s Motivation and Hygiene Factors
Of these three, we adapted Herzberg’s Motivation and Hygiene Factors to be more directly applicable to programmers. Here is a brief review of Herzberg’s work before discussing our adaptation of it.
Herzberg’s Motivation and Hygiene Factors
Frederick Herzberg, clinical psychologist and pioneer of “job enrichment,” is regarded as one of the great original thinkers in management and motivational theory. His book “The Motivation to Work,” written in 1959, first established his theories about motivation in the workplace. Herzberg expanded his motivation-hygiene theory in his subsequent books, and the absence of any serious challenge to Herzberg’s theory continues to effectively validate it.
Herzberg was the first to show that satisfaction and dissatisfaction at work nearly always arise from different factors and are not simply opposing reactions to the same factors, as had always previously been believed (and still is by the unenlightened). Figure 7.3 illustrates how Herzberg’s research showed that one set of factors truly motivate (“Motivators”), whereas it’s a different set (“Hygiene Factors”) that lead to dissatisfaction.
Fig. 7.3
Herzberg’s research showed that people will strive to achieve “hygiene” needs because they are unhappy without them, but once these are satisfied, the effect soon wears off—satisfaction is temporary. Poorly managed organizations fail to understand that people are not motivated by addressing “hygiene” needs. People are only truly motivated when they are enabled to reach for and satisfy the factors that Herzberg identified as real motivators—achievement, recognition, the work itself, responsibility, and advancement—which deliver a far deeper level of meaning and fulfillment.
It is important to note that in Herzberg’s study, salary ranks, as a motivator, a distant sixth and, as a cause for dissatisfaction, a distant fourth—it barely outranks “interpersonal relationship with supervisor” as a cause for dissatisfaction.
Another way of looking at this is shown in Figure 7.4. This representation shows that you must address the basics (“those factors that when lacking cause dissatisfaction and impair your ability to motivate”) to create a strong motivational foundation, but it’s the motivators that provide the elevators to lift your team to the top.
Fig. 7.4
The foundational factors are the pilings on which the motivators rest; when they are damaged or undermined, there is no stable foundation, but in themselves they do not motivate.
Herzberg’s pioneering work paved the way to better understanding worker motivation. The theory remains relevant and provides a solid foundation for motivating your staff.
Motivational Factors as Applied to Programmers
To try to bring a more software-centric view to Herzberg’s factors, we have modified his categories and rated them as our experience dictates. These adapted Herzberg factors are shown in Figure 7.5.
Fig. 7.5
We believe these motivational factors, while not determined by means of formalized research and polling, are more representative of the motivational factors that actually matter based upon our many years of managing and working with programmers.
We were also intrigued when we noticed, after debating the rankings and arriving at the final set shown in Figure 7.5, that these top motivational factors largely correspond to the factors that make up most successful startup environments.
The stark contrast between factors that motivate and those that demotivate was what struck Ron with his own “aha” moment when he first read Herzberg’s article in the Harvard Business Review. “Whenever I had sat in management meetings up until that time to talk about motivating our teams, the conversation had always been one-dimensional. The realization that we needed to focus first on ensuring that our people were satisfied with a basic set of factors in order to be able to motivate them with a different set was a true epiphany. It changed the conversation.”
Common management practice is to throw money at the motivational problem by posting performance bonuses tied to project completion. But our experience matches Herzberg’s evidence that money’s not a motivator and risks being a demotivator. That conclusion was substantiated by Daniel Pink in his popular book “Drive: The Surprising Truth about What Motivates Us.”
Pink cites repeated studies that show that, in fact, contingent rewards—for example, the promise of bonuses for finishing faster—for the most part cause projects to take longer than they would have without the promise of a reward. The studies show that rewards narrow focus, which is just fine for motivating manual piece work, but are counterproductive for creative work— the essence of our programming craft. Furthermore, rewards can become addictive (“I won’t give extra effort unless you offer me a bonus”) and can foster counterproductive short-term thinking (“Who cares how many bugs—I’m going for the bonus!”).
“When people use rewards to motivate,” Pink says, “that’s when they’re most demotivating.”
He does not propose dropping salaries. On the contrary, he says, “One reason fair and adequate pay is so essential is that it takes the issue of money off the table so that [people] can focus on the work itself.”
Pink concludes what we have seen many times over the years: “Intrinsically motivated people usually achieve more than their reward-seeking counterparts.”
Putting Theory into Practice
Understanding that job satisfaction and dissatisfaction come from different factors are important messages that set up the rest of this chapter. Putting theory into practice is always where the rubber hits the road.
The rest of this chapter discusses the tactics we employ to address those causes of satisfaction and dissatisfaction that we, as programming managers, can impact. We start with the basic foundational factors that you need to get right before you can even begin to motivate your staff. These match closely to the top seven causes of dissatisfaction (when lacking) that we have adapted to programmers from Hertzberg’s work:
• Respect for supervisor
• Having fun
• Learning and growing
• Good working conditions
• Sane company policies and administration
• Ethical management
• Fair compensation
We then continue with the most important motivating factors, which also match closely to the top six motivational factors that we adapted to programmers from Hertzberg’s work:
• Making a difference in the world
• Learning and growing
• Toys and technology
• Recognition and praise
• Having fun with your staff
• Upside
Use all of these to help get you and your team working to peak productivity and motivated to make outstanding contributions.
Foundational Factors—Causes of Dissatisfaction (When Lacking)
Work hard to make sure you provide all of the foundational factors, or you will find your staff dissatisfied. While similar to motivational factors (in fact, some are the same, with different emphasis), foundational factors are essential to provide before you can begin to motivate your staff. As shown in Figure 7.4, the foundational factors are just that—they’re the foundation you need to make sure is in place.
Respected as Supervisor
You earn the respect of your staff as their supervisor in many ways. The techniques that follow are ones that we have seen work for ourselves and others.
• Gain technical respect
• Respect others
• Establish your culture
• Lead by example
• Help solve technical problems
• Manage and coach
Manager: a person who controls and manipulates resources and expenditures
Coach: a person who gives instruction or advice to others
• Focus on your people
Your job as a manager is to never overlook your people and always make them the first priority.
Having Fun
It is important to allow play into your workplace if you expect your staff to work hard. If you think of play as “unprofessional,” rethink.
Play helps make the hard work worthwhile and possible. You cannot expect people to work hard all the time. Providing escape valves will pay big dividends. The key is to find ways to encourage your staff to work hard and play hard.
Learning and Growing
Because programmers are not primarily motivated by compensation (or “not coin-operated,” as we have heard it said), providing an atmosphere of learning and opportunities to grow is exceedingly important. Strive to provide access to technical training (on- or off-site), presentations about new technical developments, new development technologies, and other learning opportunities. If you are budget challenged and cannot provide formal training to all of your staff, you should still bring in vendors and peers to present new products or industry developments.
An oft-repeated refrain is that “nobody ever jumped ship who wasn’t already standing by the rail.” Helping your staff to keep learning and growing will move them farther away from the rail.
Good Working Conditions
If your staff doesn’t like being at work, they will likely find reasons and excuses for not being there!
• Make the workplace a good place to work
• Be mindful of the “no jerks” rule
• Be flexible
• Feed your team
Sane Company Policies and Administration
Unless you start a company and have full control over its policies and communications, you will never have an opportunity to ensure that all the policies and members of the administration are sane. However, here are things you can do to make the most of the policies and administration you do have.
• Communicate
• Protect your staff from organizational distraction
• Protect your staff from bad organization communication and policies
Ethical Management
If you expect great things from your staff, you must set an example. One of the most important examples to set is that of a professional and ethical person. A manager who is ethical is forthright and honest in dealing with his staff and others. He can be trusted to keep confidences and stand up for his staff against anyone in the company. A professional shows up on time to work and to meetings without being reminded. A professional does not use abusive or profane language and projects an aura of being in control of a situation without undue attention. A professional has high expectations of himself and others and demonstrates an aura of cool and calm under fire. A professional tells the truth and does not try to manipulate facts or people.
If you are a manager who is ethical, fair, and not self-promoting, you will be a long way down the road to having your staff think you are a great manager.
• Be ethical and professional at all times
• Be fair
• Compensate fairly
• Promote appropriately
Key Motivating Factors
If you provide the foundational factors, you will have provided the foundation. Now you can more readily motivate your staff by applying the motivating factors. This does not mean that your staff cannot be motivated without first shoring up the foundational factors, but your job will be easier if there are no causes of dissatisfaction to dilute their motivation.
There are no “silver bullets” for creating a motivated staff, but those motivating factors listed below are a good place to begin. As shown in Figure 7.4, once you’ve got the foundational factors in place, the motivational factors lift the team to top performance.
Making a Difference in the World
It is the rare individual who does not want to make a difference in the world. Many if not most of us chose to program at least in part for the opportunity to positively impact the world we live in. If your organization is building or providing something that can be pitched as making a contribution— improving the world in some way—you will have an easier time recruiting and motivating your staff. People are always willing to work harder and longer when they feel their efforts matter.
Steve Jobs was the master of high-tech evangelism. His famous challenge that recruited John Scully out of Pepsi to run Apple in its early years was “Do you want to sell sugar water or change the world?” Steve’s Apple employees have been fanatical about being part of Apple’s mission to change the world.
But it doesn’t take a Steve Jobs to pitch this kind of vision (though being an “insanely great” communicator with a “reality distortion field” certainly doesn’t hurt). Look for and find how your company is helping to change the world and point it out in your recruiting pitches, in your regular communications to your staff, and especially when you’re calling upon people to dig deeper and work harder for some milestone. It will make a difference!
Learning and Growing
Few can be successful in the software industry without continually learning and growing professionally. Technology changes so rapidly that new college grads would likely be obsolete within only a few years if they didn’t continue to learn.
Toys and Technology
One of the simplest ways to reward and motivate programmers is to equip them with a top-of-the-line development machine and environment. Though this was even more true in the past, it remains true today primarily because of this rule of thumb: “Software gets slower faster than hardware gets faster.”
Finding ways to use toys to reward individuals or teams will win you points with your staff and help motivate them. This is one of the simplest “win-win” things you can do!
Recognition and Praise
An important part of your role as a manager is to make sure that the appropriate people receive recognition and praise for exemplary work.
Everyone wants to be praised. From the time we are born, we learn that smiles and praise go hand in hand and make us smile and feel good in turn. Praise from someone whom you respect and work for is tremendously rewarding and makes you want to exceed their expectations and gain additional praise.
Likewise with recognition directed to individuals, groups, and teams. Recognition can be for a task completed, for a project completed, for a job well done, for a milestone achieved, for anything that is worthy of recognition. It can be delivered verbally, in e-mail, in video, in a meeting, in the hallway, over lunch, on the way out to the car on the way home, and in fact anywhere. Never pass up an opportunity to say, “Thank you and a job well done!”
Having Fun with Your Staff
Previously we listed “having fun” as one of the foundational factors for a successful programming manager. It’s also a motivating factor because there is another dimension to having fun that, if you can achieve it, will make your job as a manager much easier. That is the ability to loosen up and enjoy working with your staff.
You don’t have to have fun every day, but if you can’t sit down and laugh with individuals or members of your staff about events of the day, or the random things that happen, or just a chance joke, you and they are likely not having fun!
Upside
Upside has always been an important ingredient in personal performance. From ancient times, individuals have been driven to be successful by the promise of multifold return on their investment of hard work and results. In the high-tech software world this has traditionally been in the form of
• Higher salary
• Significant bonus
• Stock options (or equivalent)
• Strong company growth
• Increased perks
Use any form of upside as a tool; relish it and use it creatively as best you can!
Personal Commitment
Though this is not one of the foundational factors or key motivators, we have found that for motivating staff, the ability to seek out and obtain personal commitments for key deliverables is an important ingredient that defines an outstanding software manager. A key to obtaining personal commitments at critical times is casual engagement all the time.
When important projects or milestones are looming, the best way to ensure peak performance by your staff is to seek a personal commitment from those key contributors who are most capable of producing success. In a private setting (or as private as possible, without dragging them off to your office or a conference room), approach them and discuss the looming project or milestone. Discuss with them their part of the project. After it is clear to both of you what their contribution will be, reiterate why the project or milestone is important and ask them if they will “move heaven and earth” to make sure the milestone or project is completed on time or successfully.
Most technical people are not motivated by fear or rewards, but rather by personal pride and wanting to perform well for their peers or manager(s). By securing a promise as a personal commitment, you will find that people work harder than you might expect from almost any reward you could offer. Make sure you acknowledge their efforts and spend at least as much time afterward discussing the project’s or milestone’s completion as you did when originally soliciting the commitment.
Keep in mind that you cannot seek this kind of commitment too often or it will lose its motivational effect. Save it for truly important projects or milestones.
Technology Offense and Defense
You and your staff are continually inundated with announcements of new technologies. Some of them are obviously important, and you must play good offense and investigate, anticipate, and plan for their adoption. One of the biggest motivators for most programmers is the chance to investigate innovation and learn new things. Rewarding staff who are doing excellent work by sending them to a technical conference to report on a new area of technology, or assigning them to investigate a new release of software or survey a breakthrough that you need to consider adopting are great motivators. They will use these brief breaks from their usual tasks to recharge themselves and feel fulfilled. You must ensure that your key contributors have time in their schedules so that you can give them these kinds of rewards. Consider this an important “offensive play” in your management playbook.
However, this sometimes requires a judgment call on your part. All too often many of the new technologies inundating you and your staff are half-baked, unimportant, and will never see commercial success. Any time spent investigating these is time wasted and lost! For such technologies, play strong defense by ensuring that your staff is not seduced by the allure of new “shiny things.”
Understanding Your Programmers’ Motivations Begins on Day One
As Herzberg’s research showed, there are many factors that contribute to job satisfaction and dissatisfaction. But how these factors rank and how important they are to anyone specifically will vary. More than most, programmers are individualists, so it only stands to reason that what motivates each programmer will vary from person to person. One of the first things you should do is try to understand what motivates each one of them.
The mental model we build for each person is mostly a prioritization of the topics in this chapter. By mentally ranking these items for each individual, we can begin to make sure that those most important to each individual are reinforced when they perform in an excellent or outstanding fashion. We think that all these are important, but when you have the opportunity to reward outstanding performance, make sure to address those that will have the most impact on the individual.
Summary
There is no magic silver bullet that will allow you to motivate your programming staff. Setting realistic milestones and making sure everyone is working toward these milestones is a good starting place. But it takes continual efforts and personalized attention to make sure your staff is motivated to work hard and meet demanding milestones.
The information presented in this chapter can get you thinking about how best to motivate your staff, but in the end you must think about this over and over and continually work to make sure your staff is motivated every day, week, month, quarter, and year. The age-old adage of getting “all the oars in the water at the same time” is a good one to help you visualize how your motivated technical staff can and should work together as one.