The curse of plenty: what El Mariachi tells us about writing software

A musician arrives in a small Mexican town. He’s mistaken for a guitar-wielding killer. Assassins try to track him down and kill him. That’s the plot of El Mariachi, Robert Rodriguez’s 1992 film. It lacks some polish, but it’s a raw, gripping action film. It’s a better film than, say, Miami Vice.

Rodriguez spent $7,000 making El Mariachi. That’s less than Columbia TriStar spent on El Mariachi’s logo, and less than Michael Mann spent on Jamie Foxx’s private jet for Miami Vice.

So how did he do it? Rodriguez was both the editor and the photographer: he could make on-the-spot decisions about what to do. He used a single, hand-held camera. He used squibs made from condoms filled with corn syrup and food colouring. For the shoot-out scenes he borrowed a couple of guns from local policemen and gave water pistols to the rest of the cast. Local newscasters complained about people running down the street waving guns, so he put them in the film.

He still had a script though. Most importantly, he had a clear idea of what the film was going to be. He refused to get sucked into a spending spiral. He couldn’t: he had no money. In his own words, the key to making a low budget film is “You refuse to spend. Think of a creative way to get around your problem.”

Bill Buxton likens writing software to producing a film. What can we learn about software from Rodriguez? It tells us about the curse of plenty. If you have plenty of time, money and people then you use them. And the extra output isn’t always worth the extra input. Microsoft is a good example. They’ve got a lot of money, a lot of people, and a lot of time but they’d write better software if they didn’t. Last year, Moishe Lettvin wrote about how he spent a year on a feature that should have taken a week.

A couple of years ago, as Microsoft was desperately trying to get Visual Studio Team System out of the door, I asked the man in charge how he’d ship it faster. At the time, he had a team of 250 people, all working on this project. He said – and I don’t think he was joking – that he’d get rid of half of them. He was right. That would have been a good idea.

I see the curse of plenty at Red Gate too. We’ve just launched a new version of SQL Prompt, our code completion tool for SQL Server. We want a splash screen for the installer. We’ve already got a logo, so normally a developer would just stick it into Paint.net, add a bit of text and use that. Now, however, we’ve got an in-house graphic designer so we ask him. He’s a fantastic designer, with lots of great ideas. Obviously he wants to do the best splash-screen possible, with alpha-blending so we aren’t stuck with a boring rectangle. The installer is written in C++, so that adds complexity. Eventually, reason wins and we just use the logo with some text. Boring, but does it really matter?

Writing software, like making films, is a compromise. And that’s the way it must be. Unless, of course, you can afford to never ship. As Robert Rodriguez says, “It’s such a big production when you make a big production out of it. Don’t.”

Next time you’re in a similar situation, ask yourself “What would Robert Rodriguez do?”