The rants of a computer programmer

I'm a software developer. I work on software around 12h a day, be it at work or my own projects. I've done so for more than 6 years now, so let's take a look inside why Funcom won't just click the "Fix the jump exploit" button. Now, programming is like teaching a baby how to make a coffee. You have to tell it where to get the coffee machine, where to get the coffee, where the water comes from, how much to open the water tap, how much water to put in it, where to put it to boil, for how long, and so forth.

Okay, but any of us can do that, right? Well yes, of course, but what happens when you forget to tell the baby to use a teaspoon to put the coffee in the maker? Well, it might try to use a shovel. That's what bugs are. When Funcom told the engine "Hey, whenever someone tries to boost off of another person, keep pushing them to the side so they fall off. Oh, also, do the same for walls, so they can't climb up on straight walls", the engine said "Ok." and it started crunching numbers. Well, the engine was also told "Whenever someone stands up, move their hitbox up x pixels" and the engine did just that. Now, math is tricky. Sometimes math will get you in trouble. The engine does move the hitbox, as it was told, and it is pushing the player, just as told. But the engine was never told how FAST to push the player, for example.

The engine was told "Hey, when an OBJECT is destroyed (dies, falls, etc), let's refund some of the materials." and then it was told "You know what an object is? Well, a bench is an object, a player is an object, everything is an object!" but it wasn't told "But hey, if the object is an explosive, be careful and just destroy it". Okay, seems easy to fix right? Just tell the engine "Oh and by the way, treat explosives like pests and just squash them until there's nothing left". And maybe they did tell it that. But the engine keeps doing what it was doing before. Why? Well, that's a bug. When you have any lengthy process that you have to explain in great detail to a dumb machine, it's really easy to forget one teeny, tiny little step. That step can be the difference between Uranium 238 and Uranium 237. Just a teeny, tiny neutron. Boom.

Okay, but I hear you say…silently: "But they KNOW what is happening. They SHOULD be able to fix it". I hear you, I hear you. Let me tell you how we fix bugs in programming. First of all, we work in teams. We've got maybe 4, maybe 5, maybe 50 developers working on the same code. Do you know that popular forum game of "Let's make a story, everybody write 5 words" ? Well, it's something like that. My 5 words will have a different style and structure than your 5 words. It's like coming home and seeing your window is broken. Okay, you may change the window. Next day, it's broken again. Now you know SOMETHING is afoot. But what? Is it some kid throwing rocks? Is it a pack of suicidal birds? Is it the second coming? Is it karma coming after you for you know what? You don't know. What can you do? Well, sit still, next to the window, until you see it break. Easy, right? Okay, you are next to the window and all of a sudden BOOM, it breaks. Okay, there is no rock, so definitely not a kid throwing rocks. No birds either, no tweets or chirping, so the murder is out of the way. After some time you peak out and look towards the sky. Huh, nothing. But it's cloudy, maybe it is in the sky and you can't see it. Or maybe the clown neighbor decided to hit it with a stick and hide below it. You stand there, analyzing the possible solutions, looking all around, then BOOM, another window breaks. That's programming. Programming is a mess. Programming is telling a baby pug how to run physics simulations on the universe.

"Damn computer, why does it have to do what I told it to do instead of what I want it to do?"

PS: To all those comments stating "Funcom made their revenue, they can stop now and move towards the next game". It's not like that. Do you think that pissing off your gaming community will help you sell the next game? Software works on trust. It works on brand forming, it works on having a name. You know how you never see that weird, semibald guy who's always with a hand down his crotch, working with kids? Well, guess why.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.