On Tools and Correctness

(I am not the first person to say this, but here's my hot take nonetheless.)

C Sucks

There's a recurring idea in tech - particularly in games - that it somehow matters what engine, language, or (more generally) what tool you use to achieve some goal. To some extent, this is true. Tools have their intended uses, and some tools are better than others for particular tasks. The discussion, however, often goes far beyond that.

People argue fiercely for a religiously held opinion that some tool X is "the best", or that some tool Y "sucks" - not just for some task, but generally. For example, some programmers feel that everyone should use C for everything, cause it's fast and portable and has lots of libraries. Some programmers feel noone should ever touch C because it is unsafe and ancient and is terrible for string processing. All the stated pros and cons exist, but a wholesale adoption or rejection is a ridiculous conclusion.

Users Don't Care

I'm often asked by modders and budding game developers what tools I use for Pixel Art, what KAG is programmed in, what library we used for some functionality.

While this can be helpful as an academic exercise, it is harmful if the plan is to try to emulate our workflow exactly - particularly as we have a notoriously clunky workflow. I use the tools I use because they suit my needs "well enough", but that doesn't mean they'll suit you or that your tools will suit me. There isn't some cure-all solution in this field, no matter what people tell you.

This brings something quite important to light though: your users, even your dedicated ones, dont know what tools you used. The vast majority don't care. What they do care about is if your game, app, website, or whatever works smoothly and makes doing what they want to do easy and fun. How you make that happen is up to you.

Guilty

It's not just folks new to the field that think this way. I'm often guilty, and I see a lot of my peers talking this way online. It takes conscious effort to not say things like "ruby is terrible" or "web programmers are idiots" or "OSX is a terrible piece of shit and whoever invented this packaging system should be shot at dawn".

I've come to realise that these opinions I've formed are just the result of bad experiences, lack of exposure, or the tool not suiting my needs. The tools we end up as advocates for are (nine times out of ten) simply the ones we tried and liked. That we spend so much time and energy trying to convince others to follow our own tenuous convictions is testament to nothing by arrogance.

Challenge yourself to re-try tools you have a bad perception of - it can help you find new things for your tool-belt. At worst, if you still hate using them, you're richer for the experience - you can hopefully understand what some people see in it, and you'll understand better what you yourself dislike about it.

The truth is, when it comes to computers, everything "sucks". In order to get anything done, you have to pick a tool, make the most of the good in it, deal with the bad in it, and get on with your day.

Citations and Thanks

  • A lot of this has been said in a more eloquent form by James Hague, and his writing has probably informed a lot of my recent tech philosophy.
  • Thanks to Gregor Cieslak for making me question my beliefs whenever we talk.
  • Thanks to Ben Porter for making sure I know how grumpy I can seem and discussing tools and code over coffee.
  • Finally, thanks to Andrew Tunnecliffe and MichaƂ Marcinkowski for their infectious "just get it done" attitudes.

Previously...