Trained Monkeys

Posted in management patterns software -

Trained Monkeys are the dream of every business. The idea is that you set up a company with tools and processes, and once you have that all ironed out, you can just hire Trained Monkeys to do the work. Trained Monkeys are low-cost and completely interchangeable. If they require any training, it can be done in a traditional and formulaic way. They go to classes, they take tests, and they get certificates. Then they are Trained.

This is crap. It’s a dream of the old industrial order, from back in the days when you were darn lucky to have a job at all. If you didn’t like it, there’s a guy on the next train from Peoria who will be happy to do it for a nickel less; your shoes won’t have time to get cold. It’s nostalgia for a vanished time when businesses were well-defined: They made stuff, and they succeeded based on being able to make more stuff faster and cheaper than the other guys. It’s a dinosaur meme from a time when machines were expensive and people were cheap.

That’s the shift - the rising ocean of industrial automation and the firey comet of Moore’s law. Tools have gotten cheaper and more powerful. People can do more with less, but they need more education and experience. The key here is that computers and machines don’t really replace people; they augment them. Machines only replace people who are acting like machines. If they take away jobs, they only take away sucky jobs. There’s a natural division of labor here: The things that people are good at are things that machines are bad at, and vice-versa.

People are creative, innovative, insightful, and reflective. We’re good at turning vague goals into detailed actions. We’re good at imagining outcomes and making decisions in the face of limited or unreliable information. We can figure out what information we’re missing, how to go about getting it, and whether to trust it once we’ve got it. We’re so good at this that we completely take it for granted. We don’t even realize we’re doing it. And if we make mistakes, we can learn from them and change the way we do things.

Machines have absolutely no facility for any of this, all of this stuff that we just think of as common sense. They can’t deal with ambiguity or imprecision or uncertainty. They can’t cope with the unexpected. They can only do exactly what they’re made or programmed to do. What makes writing software hard is trying to break down human behavior into directions so simple and specific and comprehensive that even a computer can follow them. The only reason why machines are any good is that once you’ve figured out how to get them to do something useful, they can do it quickly and consistently, indefinitely. Machines don’t get tired or bored or distracted. They may break, you may have designed them wrong, but they don’t make mistakes. If a computer can add two numbers correctly, it can add two million numbers correctly. It won’t forget to carry a one somewhere. Machines are really good at doing simple, repetitive tasks. They’re good at the tedious crap that people hate and are bad at.

I write software for a living, so that’s mostly the world I know and the audience I’m speaking to. I see this day in and day out - my company has built our business around this division of labor - but we’re not alone in this. I got a tour of a furniture factory recently. It’s not an army of guys with saws and chisels. It’s mostly computer-controlled milling equipment. Load the program, set it up, and stand clear. Machines are great at drilling and cutting and planing to narrow tolerances. But they can’t design a chair; they have no sense of style. So the folks there spend more time on design and management and customer relations, and leave most of the grunt work to the machines.

Back when machines were expensive and people were cheap, the people were just there to help the machine do its job. They had to bend to its way of working. While the machines were expensive, they also weren’t all that sophisticated - there was a lot of tedious crap that still had to be done by people. So those jobs sucked. Now that machines are cheaper and more powerful the balance has shifted. The machine is there to help you do your job. It’s a tool, like a nail gun or a spreadsheet. Even with big, expensive machines, you’re more likely to be supervising it than serving it. You’re there in case something goes wrong and there’s a sudden need for judgment, improvisation, and learning. You’re there to build new tools.

This is good for people, but a little awkward for businesses. It means that most of the value of a company is based on the skill and expertise of the people working there. It depends on their wisdom and creativity, which are hard to measure and impossible to train for. It depends on the connections between them, on fuzzy things like teamwork, corporate culture and customer relations. All of that value walks out the door every afternoon. You don’t want to have to rely on it coming back in the morning. You really want to have something more solid to sell to investors if you’re going for the big IPO cash-out, or even if you’re just trying to build a stable, long-term business.

Hence the persistence of the Trained Monkeys fantasy. You start with a few good people and try to build a system that doesn’t depend on having good people. “Once we’ve developed this application and set up the certification program…” “Once the business analyst and the enterprise architect have finished the spec…” “Once we’ve got our CMM certification…”

What’s the alternative? Plan for competence. Hire good people; treat them well. Bring on junior people as apprentices, not monkeys. Expect them to learn and take on responsibility. Treat them well, too.

This isn’t idealism; this is what you come up with when you do the math. In software, we’ve known for decades that the really good people are far more productive than average. Factors of 10 or more are often quoted. It’s not just that they work faster; they work differently. They come up with solutions that work better and require less effort, that are elegant. They’re more effective. A really good developer may cost as much as two or three Trained Monkeys, but with that kind of productivity difference, you’ll come out way ahead. It just doesn’t make economic sense to hire cheap. We’ve also figured out that good people like working with good people. The more good people you have, and the more you value them, the more likely they’ll stay, and the more stable your business will be. But good developers are rare - they’re out there, but they don’t come on the market often or stay on it long. If you want to build a sustainable, long-term business, you need to come up with some way of growing your own.

So you hire apprentices. Apprentices are different from Trained Monkeys in that you want them to be smart, motivated and ambitious. “Trained Monkey” is a dead end job. You don’t invest a lot in them because the assumption is that they’re going to quit eventually anyway. It’s kinda self-fulfilling. With apprentices, there’s a plan to turn them into experts. You mentor them and give them opportunities to build experience, learn responsibility, and develop judgment. You teach them about their profession and the business you’re in, what your customers need and how they work. You expect them to be there for a while. This too is kinda self-fulfilling.

So that’s the world I want to live in. There are plenty of companies, built on the backs of Trained Monkeys, that grow big and turn a steady profit. But they’re dehumanizing and just plain inefficient, and I want no part of that.

Older article
Java Logging