By Scott Berkun
When you've managed smart people long enough you wonder, sooner or later, what exactly you have to do to get them to do what you want. Often the term cat herding is used to describe what it's like to try and manage programmers and engineers, since, like cats, they are willful, independent and willing to use their weaponry, whether it's claws or brains, to prevent things they don't want to happen from happening. People that force cats, or programmers, to do things they really don't want to do can show you the scars.
Over two decades I've seen or tried just about every experiment for making programmers do what managers want. The cliché of bribing them with free meals and video games doesn't go far anymore, as they can get that almost anywhere. And much like morale events, it's often clear something good is being offered only to cover up for something unpleasant. Offering your second, or even first born child to programmers in exchange for doing what you want doesn't go over well either, ethics aside, since most offspring are not initially programmable, something many engineers demand in all of the devices they bring into their homes.
Ideas used as gimmicks like 20% time, casual Fridays, or switching to the trendy management method of the month, whether it's Agile, SCRUM, SixSigma or whatever acronym comes next, always fade in value. These things never address the fundamental challenges of work, especially when selectively sprinkled over the most superficial layers of a team. Programmers are exceptionally good at testing things, and figuring out what matters and what doesn't, and no matter what gimmick you try, they quickly sort out the difference between substance and pretense. No matter how fast you can try new gimmicks it doesn't change their honest opinion about you, or the quality of thought behind the things you are asking them to do for you.
The real answer for how to get programmers to do whatever you want is the answer no manager wants to hear. It's an old answer and it's deceptively simple, but since it's hard to achieve most people go their entire careers only seeing it done a handful of times if they see it done at all. Most people in powerful positions are so lost in their own egos and the granted powers their job title gives them than they never figure out the simple equation at the core of the problem. The way you get a programmer to do anything you want is you earn their trust.
Trust? When I tell most people trust is the answer their faces scrunch up in disappointment, distaste and dismissal. Much like telling someone the way to lose weight is simply to exercise more and eat better, it has none of the magic allure of hidden secrets, 5 step programs and the promises of instant, painless, cheap transformations that dominate how nearly anything is sold in this world. An amazing cultural comparison can be made between how weight loss and management advice are sold, even just in America. Despite the continual failures of the "get what you want quick" schemes, these well-worn infomercial inspired tactics play so well on our wishful thinking that we can't resist them no matter how little first hand evidence we've ever seen for them working, either for ourselves or for anyone we know. We are suckers for convenient lies about things that scare us and much of the popular advice about programmers and projects plays on that weakness in all of us.
The disappointment around trust being the answer centers on the fact that trust must be earned, and earning it takes time. It's not something you can buy or accelerate. Having a degree, a job title or a shelf full of impressive books doesn't make anyone trust you more than they did before, certainly not for long. You earn trust little by little each day, with each nugget of trust allowing you to ask for bigger and perhaps scarier things from people, and with each success their trust grows in you more until you can ask them to do nearly anything within the bounds of ethics and reason and they'll gladly say Yes. You see asking people to do things is easy if the person asking you thinks highly of you and has good reason to put their faith in you ahead of their doubts about what you're asking.
But no matter how much trust you have somehow earned, if what you ask people to do is completely stupid, of course they're not going to do it. Whenever someone complains "no one listens to me" I always think "perhaps there is a very good reason" and that reason is you are not as smart as you think you are. Or you requests are not as sensible, or coherent, or good. Or you simply stink at explaining your ideas well and getting people genuinely excited about them. All of those things are part of your job, and therefore the reason you can't get people to do what you want is because you're not as good at your job as you think.
Part of the trust that's granted to you is in your thought process, and the questions you've already asked about your own ideas before bringing them to someone else. And perhaps most important of all for working with smart people, your willingness to listen to their input, and improve, or drop, your requests based on their critiques, says more to them about how worthy you are of trust than anything else. Trust is reciprocal: if you never offer it, you'll never get it, certainly not from confident creatures with brains (or claws).