Yes, this article has a cheesy title, but it is appropriate. Trust me.
Movies are big business. Production companies put together large teams and spend millions to bring the vision of a particular story to life on the big screen. Sometimes they end up with a great movie, other times they produce an OK movie, but sometimes, unfortunately, they produce a sequel.
I would hope that everyone reading this has seen a few movies. I also assume that you have seen a few sequels. It doesn’t take much research to spot that sequels are usually panned by public and critics alike. Over the years I’m sure there have been thouands of sequels, yet there are still lively discussions and web pages devoted to identifying the mere handful which are considered to be better than the original.
If sequels are so bad, then, why do they keep being made? The practical answer is, of course, money. A sequel to a sucessful and popular movie will often earn a lot of money based on goodwwill from people who enjoyed the first movie. Those same people will likely complain about it though, and this is the central conundrum of the sequel. After the first one, the audience wants more, but when it comes it does not satisfy.
In a moment, I’ll explore what I think is going on here, but first: What has all this got to do with software?
In the computer development business almost everything we do is a sequel or a remake. Think about it, when was the last time you really started with a blank page rather than basing your work on a previous example? Sure, we vary our sources - some projects start based on an example from documentation, some from a favourite open source codebase, some from a personal stash of past work, and so on, but they are almost all based onsomething. With software development dominated by sequels it’s important to understand what makes a good sequel and, conversely, why so many sequels seem so bad.
Let’s start at the beginning. Imagine you have an idea for a movie. You are personally convinced it will be a roaring success. You slog round, pitching it to everyone you can, hoping that someone will be as enthusiastic as you are. But something a bit surprising happens while you do this. You still love your idea, but the pitch changes just a little with every re-telling. You re-word a description which causes a look of puzzlement or a raised eyebvrow, you emphasise different aspects of your characters, you eliminate bits which don’t get the response you expect. In short, you hone the idea until it is good enough and simple enough to catch someone else’s imagination.
Somebody buying-in to a pitch is just the start, though. During production it gets written and re-written many times. Each scene is storyboarded until it seems right, then re-shot until it’s the best it can be. Then eveything is edited and re-edited, shown to trial audiences, edited again and so on, and so on.
The point of all this effort is to give the new-born movie the best chance in the big world. That’s not to say that every decision is perfect, or that budget, tools and skills are available for every whim, or that nobody forces through their peferences or misunderstandings. But the aim is to create a success, and nothing is sacred to achieve that.
Now, imagine this movie is a hit. Audiences loved the characters, cried and cheered with the twists of the story, and left the cinema satisfied but wanting more.
The production company now has some choices. Ignore it and start all over again with something different, or try and replicate the successful formula of the first movie. The second option seems easier, cheaper, and even has a guaranteed audience. Like so many zombie movie sequels, t’s a no-brainer!
But then the big mistake is made. A sequel is commissioned which follows on from the first one. It seems so natural. Everyone knows the setting and the characters, and the original movie is there as a template for a great story. Why would you want to risk making a bad movie when you have a proven success to base your next one on?
Except that it doesn’t work.
The setting was tuned for the original story. The characters have had their drama and finished the first movie heading for happy-ever-after, everyone knows the twists and has seen all the fancy effects. The very things which seemed appealing to carry forward to the new production are now holding it back. Hardly any of them would have made the cut if the sequel were to go through the same harsh process as the original, and every attempt to bend the new movie to fit the old one just makes it worse.
Almost all of the sequels generally considered better than their originals have something in common. They go in a different direction. They may re-use a few elements of the first movie, but they use them to tell a completely different story. Aliens, Toy Story 2 and Mad Max 2: The Road Warrior are found in most lists, and none of them is a simple follow-on.
Back in the world of software, this is not a cheerful analogy. The same kinds of thoughts are in the mind of many software developers and designers. It’sobviously cheaper and simpler to re-use code, libraries and frameworks built for previous projects. We’re bound to need all the extra tweaks we discovered while developing another system. That complex third-party framework is sure to provide everything I need in the way I need it.
By all means learn from past projects. Learn more effective ways to get things right, learn about dead-ends to avoid, but don’t assume you can carry forward code and data artefacts. Start with a blank sheet, build the code to fit your real needs and users. Make sure everything you add pulls its weight, or cut it.
If you want success think like an original, not like a sequel.