I recently worked with a Director of Project Management who had a saying regarding recruiting and motivating developers: "Developers want interesting problems to work on, and here at [former employer] there's no lack of interesting problems."
I had a full-body cringe every time I heard it. Besides the patronizing tone with which it was said, it's insulting because it minimizes the psychology of the creative people who were building the products. It's like saying software engineers are basically toddlers, endlessly entertained by new shiny toys. To be fair, tenacious curiosity is certainly a hallmark of engineers of all stripes and definitely a quality I seek in candidates when hiring. But to say that all it takes to keep developers happy is interesting puzzles shows an amazing ignorance of human motivation.
Around this time I had the pleasure of reading Man's Search for Meaning by Viktor Frankl, pyschoanalyst and holocaust survivor. The first half of the book is a heart-breaking memoir of the author's experience suriving Auschwitz, the second half outlines his technique of "logotherapy" inspired by this experience and subsequently honed in his professional practice. Logotherapy states that the desire to find meaning or purpose in life is the primary driving force for humans. And I would have to agree. As Frankl describes, meaning can come in many forms. Defining or discovering personal meaning in life can itself be an act of surprising creativity. And there are certainly other motivations in our lives that drive our actions (Nietzsche's "power" or Freud's "pleasure"), but the desire for it all to have meant something in the end is an idea that resonates very deeply for me, and for the most intelligent, capable, and talented people I've known.
So it's no surprise that there's this article making the rounds that
"The Most Innovative Employees at Google Aren’t Stanford/MIT grads with Perfect SATs". That seems intuitively obvious to me. That's not to say that there isn't a correlation with excellent performance in an academic environment and innovative talent, just that enormous creativity and academic achievement are separate phenomena arising from an individual's willpower.
For the highly creative people I've known, it's often that they want to create for a purpose. Sometimes it's a lofty goal, sometimes it's simply to enhance their little corner of the world. Harnessing this force in an honest and positive way is the true management challenge for software development. I am sure that this is true in other industries as well. If a software engineer truly comes to feel that his or her work is meaningless, and this is not uncommon given the product churn and management flailing in our industry, their talent will wither and you will fail to get innovative work from them. Put bluntly it will be a waste of money, and worse, a waste of talent and creativity. A waste of humanity. However, if they understand the meaning behind the work, even if it is defined in a very narrow and limited way, they will be able to hang their willpower on that hook and deliver what is needed.
What this means for a manager is that you had better explain your decisions in a rational and coherent way if you want people to follow your lead.
Which brings me back to the unnamed Director of Project Management's nonsense about how to keep developers happy. My belief is that developers want the same thing that everyone wants from employment besides financial gain: the opportunity to find meaning in their work. It doesn't necessarily have to be change-the-world stuff, as long as there's a concrete purpose for the effort. Sometimes developers can entertain themselves for a limited time by playing with an amusing mind puzzle. But the direction of the work will have limited accuracy relative to the business objectives and the effort will not be sustained. Entertaining your talent with fun projects is not a leadership technique. Straightforward discussion of the purpose and meaning of the work is.