No one gives a shit what programming language you use

I’ve had it up to here (gestures at nose level) with the bullshit around programming language elitism. Back when I thought it mattered I was just as bad as the bullshit I’m seeing today, but when I see this elitism in 2021, from people who long ago should have learned better, it just sets off my I-can’t-fucking-take-this alarm.

This tweet made its way into my timeline via screenshot; and because it’s Sunday I’m going to respond to it, because I have nothing better to do at the moment. The littlest is taking a nap, the older two are playing on the Switch, and my wife and I are snuggling on the couch. Normally I’d sigh and save my words, but not today. Not today.

I’ve written about the plague of UBM on our industry previously, but unfortunately that plague isn’t going anywhere. It has deep roots that we all must work to yank out, lest it destroy the good parts of our industry.

One such example is the elitism expressed in the above tweet, and in the continual billing of software programming as ‘craftsmanship’, and equating good software developers with ‘craftsman’, as if software exists for its own sake, and purity is the goal. It’s performative craftsmanship, and deeply unlike what you see from actual crafts-people in their field. Take Jiro from Jiro dreams of Sushi, an example of a master of the ‘craft’ of making Sushi. Jiro doesn’t tout that he’s the best at it; but everyone else does. That’s a major difference from UBM’s (and others) self-identifying as a craftsman, is that Jiro doesn’t do that. He humbly learns and tries to get better, and more importantly tries to serve others. He doesn’t parade around with a self-given label that says “Sushi Craftsman” even though he ostensibly is. If you’re good at what you do and you bring value to others, they’ll label you with the appropriate moniker.

This performative craftsmanship is a load of horseshit that we’ve given too much credence to. I hear it from ‘agile’ podcasts, and from UBM and his ilk, and even otherwise level-headed programmers express some sort of allegiance to taking pride in the code as a necessary bar to being a programmer. Anytime you hear a podcast talk about ‘code quality’ in isolation, or about ‘being a professional’, you’re hearing this same sort of elitist attitude towards software development. The only people who have to proclaim they’re professionals are people who are ostensibly not professionals. It’s another example of the idea that you can’t label yourself by your words, others label you by your actions.

In another example of this performative culture of software craftsmanship, and I’ll use wood-working as an example because I grew up in that culture, woodworkers take pride in the finished product, and seeing that finish product being used. They are not all hot on the tools they use, and nor do they value the art of planing for its own sake. No, it’s always in furtherance of the ultimate goal: to produce something another human will enjoy using.

Or put another way, no one gives a shit what programming language you use. No one gives a shit what your framework or technology stack is. I can guarantee without even checking that every single fortune 50 company uses Excel in ways that would potentially cost hundreds of millions of dollars in losses if there were an error. Do you think the person that pays for the VBA programmers cares that they’re using VBA? No. Do you think the programmer is just jonesing to replace VBA with clojure? Not if they understand what side their bread is buttered on, they don’t.

I was going to make a bullshit analogy to a programming language being like a hammer, but that’s too simplistic. The purpose of the software defines the stack you end up using, and there are far more considerations than “this is a nice language to use”. In fact, I’d wager that the niceness of the language is probably the least important part of choosing a language. Just ask everyone who bet the farm on coffeescript.

But the “you should use language X because it’s great” mantra doesn’t stop there. It’s a symptom of a larger problem: Thinking of programming as a worthwhile pursuit on its own, and focusing on the act of programming while ignoring how that software will be used.

With the katas and the code quizzes, we tend to lose sight of the fact that programming for its own sake is mental masturbation, useful only in the most idle of circumstances. Writing tools and frameworks only help if they have a purpose outside of our own gratification. A programming language exists to put software into people’s hands and to make their lives better. It does not exist for the idle purpose of being good at that language, and it certainly doesn’t exist as gatekeeping, as a way of separating programmers into social classes.

The elitist fucktards that create these social classes do so because it makes them feel important. They have created a bar and put themselves above that bar, while the lowly working programmer should follow their example if they want to be a ‘software craftsman’ or a ‘software professional’. It’s self-serving poppycock (another word for bullshit, I’m certain). It’s also why if you brand yourself as a ‘clojure programmer’, there’s literally only two sets of people who will ever care: Other programmers you want to impress, or a recruiter who is looking for a ‘clojure programmer’. Go say you’re a clojure programmer to your spouse or family, and be prepared to realize how much bullshit language segmentation is to people outside of our industry.

I used to suck at programming. I mean, I still do, but I used to too. So I get that it feels good to ‘be good’ at programming. But being good at programming doesn’t matter if you’re not producing valuable software for people to use with those skills.

If the most gifted singer in the world doesn’t sing to an audience, does it matter how gifted they are?

So you want to pick a framework or a language? Great. The last person you should listen to is UBM, and the second to last person you should listen to is me. Pick the language and stack based on your team’s needs and comfort, based on your business’s need and risk tolerance, and based on how easy it will be to produce software for your target users in that language or framework. That’s your criteria. Not what I think, not what UBM thinks, and certainly not the language or framework de jour on Hacker News.

And if you find yourself proclaiming everyone should be using your favorite programming language or framework, save it. We don’t give a shit.

10 thoughts on “No one gives a shit what programming language you use”

  1. Maybe it’s a good thing to keep in mind that Bob is just a guy, he’s not a prophet or a god, he doesn’t know everything about everything … you don’t have to do or believe everything that Bob does or says or anyone else for that matter.
    But also Bob is entitled to his opinion, and I think he can tweet his opinions without being called elitist or anything alike because otherwise if we started name calling people with opinions, we’re in deep deep shit!
    PS: you can substitute Bob with any other name

  2. Goerge, thank god for you, you can write, because I cannot. My response to this topic would be defamatory and full of cusses. Thank you for writing this for me!

  3. I only care what programming language you use if I need to maintain the code after you’ve finished writing it! 🙂

  4. I think you might be right about the elitism in that tweet. It’s probably also intended to simply be provocative and to make noise.

    I think there’s another side to the thing with programming languages: keep an open mind, learn new ones and other concepts from other communities than the one you are used to. Don’t get “stuck” in your comfort zoned. Personally, my favorites went from c# to JavaScript to Python to … Clojure!

    I think a lot of developers care a lot about languages, I think it’s a huge part of our passion for the thing we do.

    And, Clojure is a really, really nice language – you should check it out 🙂

  5. I agree in spirit with the article’s concept of “performative craftsmanship,” but building a system is not like building a sushi roll. It’s like building the sushi roll, curating the environment where the roll will be consumed, sourcing the fish, vetting the sources of the fish, carefully preparing the rice, and practicing the wisdom of those who came before you while also making your own decisions. In other words, it’s impossible to communicate all the work that goes into what makes it good. That’s why so much cuisine is performative. The chef is trying to communicate much more about the food than what’s on your plate.

  6. I think you’re right about the elitism in that tweet. I guess his intention probably also is to be provocative and to make noise.

    I think there’s another side to the thing with programming languages: keep an open mind, learn new ones and concepts from other communities than the one you are used to. Personally, my favorites went from C# to JavaScript to Python to … Clojure!

    I think a lot of developers care a lot about languages, I think it’s a huge part of our passion for the thing we do. I tweet and talk a lot about my favorite tools and languages, I guess you do too.

    With that said: Clojure is a really, really nice and modern language – I think you should check it out 🙂

  7. Uh no, I disagree. While on the one hand there’s too much up-manship going on for the sole purpose of resume-padding, there’s a reason certain languages are considered “better”: you can express more with less mental gymnastics and the same amount of cognitive load.

    Case in point: I’ve been agonizing for the past week over poorly written Amazon AWS Java libraries and the only way around the design mistakes is to dumb my code down to an endless slob of labor.

    Of course if the purpose is to extract some marginal value – however minimal – from load of minimally trained “coders” then fine, I guess you’re right.

Leave a Reply to EddyECancel reply