2 Posts in 2 days, wow. But it is largely just a big cut and paste, so I guess I don’t get too much credit.
There’s an old joke, so old that I don’t even know for certain where it originated, that’s often used to explain why big corporations do things the way they do. It involves some monkeys, a cage, a banana and a fire hose. You build a nice big room-sized cage, and in one end of it you put five monkeys. In the other end you put the banana. Then you stand by with the fire hose. Sooner or later one of the monkeys is going to go after the banana, and when it does you turn on the fire hose and spray the other monkeys with it. Replace the banana if needed, then repeat the process. Monkeys are pretty smart, so they’ll figure this out pretty quickly: “If anybody goes for the banana, the rest of us get the hose.” Soon they’ll attack any member of their group who tries to go to the banana. Once this happens, you take one monkey out of the cage and bring in a new one. The new monkey will come in, try to make friends, then probably go for the banana. And the other monkeys, knowing what this means, will attack him to stop you from using the hose on them. Eventually the new monkey will get the message, and will even start joining in on the attack if somebody else goes for the banana. Once this happens, take another of the original monkeys out of the cage and bring in another new monkey. After repeating this a few times, there will come a moment when none of the monkeys in the cage have ever been sprayed by the fire hose; in fact, they’ll never even have seen the hose. But they’ll attack any monkey who goes to get the banana. If the monkeys could speak English, and if you could ask them why they attack anyone who goes for the banana, their answer would almost certainly be: “Well, I don’t really know, but that’s how we’ve always done things around here.” This is a startlingly good analogy for the way lots of corporations do things; once a particular process is entrenched (and especially after a couple rounds of employee turnover), there’s nobody left who remembers why the company does things this way. There’s nobody who stops to think about whether this is still a good way to do things, or whether it was even a good idea way back at the beginning. The process continues through nothing more than inertia, and anyone who suggests a change is likely to end up viciously attacked by monkeys. But this is also a really good analogy for the way a lot of software works: a function or a class or a library was written, once upon a time, and maybe at the time it was a good idea. Maybe now it’s not such a good idea, and actually causes more problems than it solves, but hey, that’s the way we’ve always done things around here, and who are you to suggest a change? Should I go get the fire hose?
Why did I post this as a whole? Because it is so true. It is a human behavior I have known and not understood throughout my life in software. For a long time, I was just frustrated without knowing why. The realization that I was different, that I did not have as strong a shackle on the past was a blessing when it came. Not that I was any less frustrated when I saw the practice in life, but I knew why. It allowed me to focus my efforts and help people understand that just because we “always did it that way” did not make it a good idea.
Being the person to play that role is hard. People do not like hearing it. And sadly, getting attacked by the monkeys is not fun at all. It wears on you when you do not see a way to convince people. You bring them numbers, show them the tole their policies are taking in terms of dollars, in terms of people, in terms of families, and they can’t understand that there could be a better way if they only let go of the past.
But it is in me to be that person, and I love doing it. I have plans and I’m stubborn and I can’t wait for the opportunities to do the right thing and see the results.