Have you ever heard of the butterfly effect? No, not that terrible movie with Ashton Kutcher. I’m talking about the metaphor that is often used to describe chaos theory. You know, the theory which says that any system of sufficient complexity is basically unpredictable. Even small changes in the inputs can result in major changes in the outputs. If enough variables are involved, then the system can easily become unpredictable.
The name “butterfly effect” comes from the idea that a butterfly could flap its wings in one part of the world, affecting a major weather event somewhere else through a series of complex interactions, all kicked off by a tiny change at the beginning. While this may sound like hyperbole, and it is, this kind of interaction is happening all the time. While systems like the stock market and the weather are two typical examples that are given to represent this phenomenon, human interactions and decisions are easily the most complex system that exists. And it is one that we are immersed in every day.
We can’t hope to predict the endless number of interactions that occur everyday in the world around us. We would never even try to, the idea alone sounds ludicrous. So why then are we so driven to try to predict them in aggregate? If you start to really think about everything that goes into an event occurring, or not occurring, you might find your head swimming. I mean, who could have predicted in the mid-80s that Microsoft would have succeeded and gotten to the point where it is now? How about the rise, fall, and then subsequent rise of Apple? How about the fall of 3dfx when Nvidia hit the scene? How about the rise of Ruby when Rails came along?
Sure there are pundits that make predictions, they just throw things at the wall until they stick. There are also people that notice an event or circumstance, and make a prediction based on that. If their prediction is true, then they will claim that they knew it was going to happen, and why it happened. In reality, the event was an infinitely long series of complex interactions, in which only a part of the outcome was determined by anything that they had knowledge of. (Unless of course they are psychic, in which case I need to get some stock tips)
For example, take Windows Phone 7. Tell me right now whether you think it will be a success or not. And why do you think that? Do you think it will succeed because of Microsoft’s market muscle and market penetration by will alone? Or do you think it will flop because it is too little too late? Or some other completely different reason? If your prediction becomes true, then as a human, you’ll likely point at your reasoning and assume you were correct. And you might have been partially correct, but there is very little way that you could have accurately predicted the outcome.
The whole point is that until an event has sufficient momentum, or a sufficiently large number of smaller events have occurred, it is next to impossible to predict what is going to happen. I used to spend a significant amount of time looking around and trying to figure out what the next big thing was. What is the next big web framework, what is the next big language, what is the next big tool that will change the world? I wanted to make sure that I was in on it. But thinking like that is a waste of time. You can’t possibly choose or know what that thing will be.
So what should I do? Well, for starters, stop paying attention to tools everyone tells you are cool, and find tools that make your life easier. You see, the best way to predict what will be big, is to ignore it and find tools that work. If a tool makes your life and your job easy, then other people out there will probably feel the same way. But you also have to remember that tools are optimized for a specific job, and if you aren’t doing that job, then the tool is most likely useless to you.
Did someone tell you that Clojure is the greatest thing ever and you must start using it? Did someone tell you that Node.js will change your life? Did someone say you were stupid if your source wasn’t in Git? Did someone tell you that Objective-C is the best language ever written? Did someone tell you F# was the next big language? All of these things may be true, or they might not. Who knows. What I do know is that they won’t all be true for you. In fact, if you’re using both Clojure and F#, then you’re doing it wrong.
So get out there, use the community as a barometer, listen to what others are finding genuinely useful and approach those tools with some healthy skepticism. If you find the tools a joy to use, then tell others about them, and you know what… you might just stumble into the next big thing.