SLIMEPATTERN
@SLIMEPATTERN

ill-advised ranty programming post below the readmore:


some tools are better than others. that might sound like an incredibly obvious statement, but, somehow, in computer programming, there's a whole pile of people who keep posting variations of "there's no difference between good and bad things".

programming languages are tools. libraries are tools. compilers are tools. there are differences between these tools. some of these tools are, in fact, Bad. again, some ppl might read this and say, "that's obvious". but it's clear to me that this position is relatively commonplace among programmers or at least the type of person who reshares or upvotes discussion about programming across many different websites, communities, and subcultures.

in some ways i sympathize with the position. i've been programming for most of my life. when i was a teenager, i did think: "wow, why can't these people just live and let live. just use whatever tool you like. they're all good if you're a Good Programmer". i have learned better. other people can too. i should also note that my idea of what a good tool is like has changed a lot, repeatedly, over the years, as i've learned more and more. and a lot of that learning would've happened a lot faster if i hadn't been raised by a culture that was willing to accept this.

i shouldn't have to spell it out to this degree, but if there weren't any difference between languages or libraries or so on, there also wouldn't be any difference between old and new versions of them. there wouldn't be any difference in good and bad design choices, so in that case we might as well make decisions about tool design by die roll.

a common extension of all this is the idea if a programming language can do something, that it therefore should do that thing, and that it's completely fine for doing that thing. and since most programming languages are turing complete, most of them can do most things. this is part of where the "they're all good if you're a Good Programmer" nonsense comes in.

this might seem like it's in response to whatever the current month's computer discourse is, but that's because there's been a discourse like this every month since approximately the beginning of time. the reason we keep re-heating these discourses is twofold:

  1. an overall cultural refusal to accept the basic fact that some tools are bad.
  2. an overall cultural refusal to cut these arguments off at this basis. they are failing here at the axioms and values. but the rest of us keep trying to argue about the leaves of a tree structure that has "there's no difference between good and bad things" at its root.

so the next time someone tells you they are implementing their multi-threaded entity-component system in dungeons and dragons 5th edition instead of a more appropriate programming language, and that if you disagree you are a bad programmer and a bad dungeon master, realize where they are failing.

(also, as a person who sometimes gets called a Good Programmer, sure,. there are differences in skill and experience and so on. but when the concept is brought up in a discussion it's almost always used to justify complete bullshit. sometimes of the malicious sort, sometimes not.)


You must log in to comment.

in reply to @SLIMEPATTERN's post:

as a point of clarification the thing that set me off on this wasn't 1 thing, it was seeing 8 separate different completely unrelated posts over the period of 4-5 days all making this same type of argument.

(none of them were on cohost)

at least part of this seems like it stems from a lot of programmers having learned to undervalue user experience, put up with bad UI or bad APIs or missing features etc, so long as it works for them and the things they need to do are at least theoretically possible. a sort of resignation done out of ignorance or apathy.

there's also a disregard for other people who might need to use the software - sure, it may work for me, but if i've chosen a really painful paradigm or language or build system or whatever, then it probably is objectively a bad tool for the job which self-reinforces as nobody else can wade in far enough to help improve it.