why does software suck?

Software is ubiquitous and yet it sucks. Linux and Windows crash every time the temperature fluctuates above or below some unknown range or if you just look at the screen the wrong way.

Some segment of the programmer population thinks the way to make it suck less is more types, more logic, more math, more discipline, and more whatever you think there should be more of. Another segment prefers shuffling bits and bytes because sometimes performance and deadlines are what matter and the only thing you are familiar with that gets the job done is C. Extending the deadline to deliver better software is the right thing to do but as the byte slinger you don’t really give a shit or want to invest 3 more months to learn another shiny new thing. Your personal productivity and business needs trump everything else. The well-being of your fellow human beings is probably one of the last things you’re concerned about. So what if a few people get an extra dose of fatal radiation?

No rant post is complete without of course identifying which side of the imaginary line I fall on. I don’t really have any horses in this race. I enjoy solving problems and software seems to be the one place where I can do that and get paid for it. Many other programmers feel the same way. I don’t think I’m unique in that regard. I would have stuck with math if it had paid any better or if the general economics of professorship made any sense but it didn’t and here I am. So what side am I on? I agree with whatever segment of the programmer population is on the side of the imaginary line I fall on at any given time.

When I’m on one side of the imaginary line I don’t want to learn yet another programming language to not kill a few more people. Plus, that’s a really melodramatic take on software safety. More people have died from ill-designed bridges, roads, and buildings than ill-designed software. We have gotten this far with C and JavaScript and the segment of the programmer population that wants more safety is not making a very compelling case. How much safety do you really need to blow up an atom bomb or sling some JSON over a socket? Just like we can continue burning oil until dinosaur farts raise world temperatures to levels detrimental to human well-being we will continue writing software in C and JavaScript until every buffer in every deployed piece of software everywhere has overflown.

When I’m on the other side of the imaginary line trying to write something without any race conditions it takes a lot of energy to not throw the keyboard at the wall. I start to wonder why can’t we throw out this entire mess and start from scratch? Maybe more types is the answer.

But at the end of the day whatever segment of the programmer population you identify with there is no escaping the fact that everyone is just a little bit too selfish. Sensibilities and values change based on whatever is most convenient at the time. It’s not a technical problem. It’s a purely human problem and all the cool kids are coming at it from the wrong angle. No amount of technology can save programmers from themselves. I have to give props to my boy Anders Heljsberg though. I think the only person in this entire business approaching the problem from the right angle is him.

As humans we just don’t have much empathy for our fellow human beings unless of course you’re Anders Heljsberg in which case you should already have sainthood. As for the rest, if we gathered them all into one room and gave them the Voight-Kampff test they would all fail even if they were allowed to help each other cheat

Thanks clang. That was very helpful. I can take it from here. Someone tell Deckard we need him.