Modern Programming: Anti-Evolution?

For a moment let’s just not bother arguing the merits of evolution versus whatever, and look at one of the basic ideas behind it.

Every one’s heard the cliche phrase of “the strong will survive”. Most likely it’s been in some movie you watched, some coach spouted it out, maybe you hear it from some business “guru”. Doesn’t matter. (Although there is actually a lot more since it’s not the just being strong but the best suited for the current environment ect, but let’s just play Sesame Street evolution.) Let’s go by the overall idea that those that have traits that are against survival will be removed… ie the weak.

The best code I’ve ever written was someone else’s.

Whenever you do something new, you run into problems mostly due to lack of knowledge. In the programming world, this is an everyday occurence provided you’re actually trying to learn. Can’t figure out how to make something work? Well just go search for it. No matter how new something is, most likely there are already people answering questions about it on a forum, posting it on a blog, or probably some site that is dedicated to it (Say like MSDN) that will give you an idea of what to do. That’s the beauty of programming today. But what about 20-30 years ago? What happened when you just plain didn’t have instant answers or dare I say it? No Stackoverflow. Well some people would be just fine. Those people would just plow through and figure it all out. They would go through whatever written specs there are on… paper… and get it done. They are the people who already have posts about it in their blogs now days before you even asked about it. These are the real programmers. Problem is, for every one of those there are probably 10 people who take what they have and run with it. Then for everyone of those there are 10 who barely understand it, just copy/paste, and post it somewhere. And for every one of those, there are ten that take that code and use it. And guess what? Most likely all those people still have a job. All of them.

The herd isn’t thinning

The question now is: How bad is this? Basically with the wealth of information out there, even the worst of programmers can keep a job that no way in hell they would have held 20-30 years ago. (How can I guess that? Because even 7 years ago when I first started really programming it was difficult to find things and that was with search engines.) With the demand for programmers being so high in so many places, businesses are almost forced to take on people who have just barely (Due to said search engines/copy and paste) made it because hey at least the person has prior work, so he/she must be good right? So the cycle continues, but in the long run most likely it continues in a direction contrary to evolution. Because remember, by my completely accurate and undebatable numbers, there are 1000 bad to every excellent. By that idea, and since the bad aren’t being removed, the amount of bad code out there is growing at an incredible rate and it’s being learned by new people. People who may not be bad but will be eventually due to the amount of horrible stuff out there. The bad are breeding bad, and it isn’t being stopped. At some slippery sloped point you have to wonder if there will only be mostly bad to learn from.

Those that are most capable of surviving in the present conditions will be chosen

So the whole “only the strong will survive” isn’t exactly the whole story. It’s not just strong but whoever is best suited for the environment. When we think of strong, we think most rugged, toughest, most able to surive encounters. However, in the evolutionary sense this isn’t true. If it were, all dinosaurs would have been like this almost mythical bad boy. Problem is things like food availabilty, ability to avoid predators, hell even resistance to sun exposure can all factor into what is really “strong”. The point is, those who are chosen are best for the environment they live in. Now lets take the 1000 bad coders to every 1 excellent one. With that in mind, most environments entered into are going to be suitable to which group? The bad ones. A lot of us have seen this. Started work at a company that the code was just dreadful but the 3 guys that have been there for years and the one dude that was hired in a week before you are all happy as a pig in… well anything. We try to change things. We try to move things forward, but in the end we get burned out and leave. Guess who replaces you? The guy who works well with the other four. In fact, this is another part of evolution is that if two groups of the same animal are split by something, say a new river, the two might in fact eventually become incompatible. Think about it, a company that has strong programmers and weak ones that becomes taken over by the weak will eventually spawn a whole new type of programmer and programming shop that it completely alien to a decent programmer and would allow itself to continue unstopped. At some point, slipery slope full on, there may end up being way more bad companies then good and the good programmers may get weeded out.

How do I know if I’m the strong?

Fact is, you probably can’t. Some people know it because they work for high end companies like Google and Microsoft. The rest of us mortals don’t. I think that is why this career has frustrated me at times actually. I can’t really be proud of what I’ve done because I’ve never been fired for bad code. I’ve never been released for writing bad programs. Hell I’ve never even been pulled into an office. You would think that means I’m doing something right except I’ve never known anyone who has. And I’ve had about 8 jobs over 7 years(All due to contract work or companies going under… Let me tell you, I’ve was on a streak of joining failing companies for a while), so I have my feel for bad code and bad coders. None of them were fired or let go because of bad code. And companies keep hiring in bad people so I’d have to believe that even if someone was let go, that person would find another job eventually. Hell, go to somewhere like Chicago, and you practically have to shoot someone to get fired because companies need people so badly.

Better than being dead.

So maybe its a good thing. Since after all I still have a job, I still get paid well, I still have some security. But in the long run, is this a good thing? Can programming as a whole grow as this situation continues? Everyday it gets easier and easier to be a programmer. I can’t imagine that’s going to change. With tools like jQuery, StackOverflow, Google, and any other way to help people with kid’s gloves, it’s hard to think that things are going in the right direction.

Last note

While writing this I couldn’t help but realize that this my be riddled with hypocrisy. After all, how do I know if I’m not one of the bad people? Sad thing is I don’t.

What about you?