I originally published this post about a week ago, on the DaedTech blog.
Apologies for my absence last week from the tech pundit-o-sphere. I was, well, what I mostly am these days: busy. But today, I’m back with a premise that sounds suspiciously motivational-speakery.
Don’t worry, though, realpolitik fans. It’s not that. Not exactly.
Sure, don’t let anyone tell you that you aren’t a ‘real’ programmer because (1) that’s a crappy thing to say and (2) because you’re awesome and all of that. But I’ll leave those lines of argument to others. Instead, I’m going to talk about why letting this nonsense into your head is bad for your career and your positioning.
First, though, let’s wander down to the anthropology dime store and categorize what we’re dealing with here. When someone tells you, for whatever reason, that you’re not a ‘real’ programmer, they’re most likely indulging in something called the “no true Scotsman” fallacy.
The gist of this is to create a subjective, moving-goal-posts purity test for membership in some club. And people generally do this as a direct follow-up to painting with too broad a brush and having someone subsequently call them on it. For instance, here’s the eponymous example, quoted from the Wiki article:
Person A : “No Scotsman puts sugar on his porridge.”
Person B : “But my uncle Angus is a Scotsman and he puts sugar on his porridge.”
Person A : “But no true Scotsman puts sugar on his porridge.”
In my personal experience with purveyors of this fallacy, I generally see two principle motivations, often intermixed:
- Zealous, subjective belief in the purity test itself.
- Having made a strident claim before really thinking it through, accompanied by a personal tendency never to back down afterward. (Sound familiar?)
Now, take a dash of this part of human nature, mix it into a heaping bowl of the internet, bake it in the oven for 20 years, and get ready to enjoy a bottomless casserole of “why you’re never good enough.”
By now, you might find yourself nodding along, imagining programming-oriented statements like this. Maybe people have painted you with a brush like this, or maybe you’ve just seen them do it to others.
- No real programmer works heavily with CSS and markup.
- Real programmers use the command line — not user interfaces.
- In 2019 you’re not a real programmer if you’re using anything but git.
- No real programmers just use their IDE out of the box, without customizing it. (Also, bonus for, “real programmers use VIM and not IDEs.”)
I imagine these statements sound quite familiar. There sure are a lot of armchair arbiters of ‘real’ programming, aren’t there?
So, having defined what this is and given examples of how to recognize it, I’d like to spend the rest of the post talking about why this type of seemingly-minor bloviating is actually insidiously pernicious for those exposed to it.
Let me restate something briefly for emphasis. People no-true-Scotsman-ing other programmers are behaving childishly and being needlessly mean. And you should do your best to ignore them — to not let the bastards get you down — because you don’t deserve this kind of treatment.
If you program, you’re a real programmer.
But I’m not writing a “let’s be nicer to each other” call to action, or am I attempting to give a motivational speech. Rather, I want to talk software developer careers.
So let’s do that. Specifically, let’s look at how the general miasma of “no real programmer” that floats around internet forums threatens to encourage bad decisions among those subject to them. And please understand that it’s no single one of these declarations, but rather the effect of the entire universe of them, often-conflicting, always-confusing, and never-helpful.
Long time readers of the blog know that I consider long-term career generalizing to be an anti-pattern. When your career is a never-ending stream of stacks, domains, verticals, psychographics, and roles, you risk having a career that consists of 45 entry-level years, rather than 45 years of cumulative, compounding experience. This acts as a drag on meaningful career advancement.
Now, think of a huge subset of the “no ‘real’ programmer” proclamations and their contrapositives. Real programmers sanitize their database inputs and parameterize their queries. Real programmers know that string concatenation is expensive. And so on, and so forth, ad near infinitum.
As software developers, we head to the internet for help and pointers, and we end up with a gigantic laundry list of professional obligations, according to random internet people. But if all programmers should know all of the basics across all stacks and all areas of programming, we have essentially no specialization of labor. Instead, everyone should pursue this bottomless checklist of table stakes.
The aggregate of the “real programmer” distinctions out there encourage you to focus on “rounding yourself out” with knowledge that might have literally zero applicability to your current gig, employer, or context. And that is quintessential over-generalizing.
Part and parcel with generalizing is labor commodification. You know how it seems like programmers (and probably knowledge workers, in general) really don’t like when people call them “human resources?” That visceral protest is a subconscious objection to their inevitable commodification.
Don’t call me a human resource! I’m a unique human being, with unique talents, unique skills, unique perspectives, and unique ideas!
It’s great in theory, and it’s actually true in real life. But the trouble with becoming a generalist on your tech stack is that your actions belie your protest. You say, _nay, _scream, that you’re not a resource, but you choose your skills to optimize for maximum deployability and interchangeability with your
fellow resources coworkers.
The collective culture of “real programmer” exacerbates this dynamic. When bombarded with the idea that “real” programmers use or avoid certain tools, stacks, approaches, etc., you experience natural pressure to move toward the area of greatest consensus, and thus greatest resource supply.
To put it much more plainly, “real programmer” declarations encourage you to make yourself imminently replaceable and unremarkable.
Commodification isn’t the only issue that arises when you find yourself drifting toward the center of the herd. Think also of the bell curve of adoption. At the center of that herd lies the fine line between “early majority” and “late majority” adoption.
I’m an old man in the programming world, and it’s about to show.
I use that example because it sounds funny in retrospect. But if you think of the consensus ‘wisdom’ of the “real programmer” declarers, they’re almost invariably touting the mainstream and poo-poo-ing the bleeding edge as fads and toys. They’re screaming at you to remain risk averse in terms of adoption.
One thing I haven’t touched on very much is how contradictory the entire cloud of “real programmer” assertions is. “Real programmers don’t use IDEs, but favor text editors,” some will say. But others will counter with, “_real _programmers take full advantage of their tools and only use IDEs!”
Now that’s a pretty binary example, but others are less obviously contradictory, perhaps encouraging tools that don’t conflict but don’t play well together, or approaches that create more complexity than the sum of their parts. And the danger here is that the whole corpus of this type of internet ‘advice’ creates incoherence in your own approach if you try to synthesize it.
I once wrote about this in a short, old post about what I called the “synthesize the experts” anti-pattern. Now, imagine that conundrum, but, instead of synthesizing established experts, you’re synthesizing armchair experts, like Bobby9442 on some random Q&A forum. Your quest to be viewed as a “real” programmer has the potential to result in some collectively weird approaches to software.
And, finally, consider the worst fate of all. I might argue that this particular one is worse than being discouraged out of the industry, to pursue a vocation where people aren’t so… vocally worked up all the time.
This is the fate where you become one of these “no real programmer” commentators — you become a person that spends their time arguing on the internet. And arguing on the internet is not just a complete, utter waste of your time, but a bad look, career-wise. And, it’s a doubly bad look if your arguing starts to veer into “bullying via logical fallacy.”
The Animal Farm-esque metamorphosis here isn’t as far-fetched as it seems, either. If you spend years trying to learn all the techs, adopt all of the approaches, build your “real programmer” checklist, and generally steer toward this collective ‘wisdom’, you’re investing heavily in this effort.
And, humans have a cognitive bias that causes us to defend our past decisions and investments to the point of irrationality.
Internalizing these statements will thus make you disproportionately likely to make them later. It’s the same cycle of hazing that defines college fraternities and Enterprise Silicon Valley interview processes. So internalizing the message that you’re not a real programmer will make you more likely to send that message to others, later, “for their own good.”
In the end, I think the most helpful thing is to adopt the mindset that “real” is literal nonsense when applied in this context. I mean, “real programmer” is something of a tautology in the sense that anyone who does any programming is a “real programmer” unless you want to get weirdly metaphysical. And, even something like “good” or “competent” has more meat as a modifier than “real,” even if those aren’t particularly helpful or objective either.
But “real” or “true” or whatever? Utterly useless.
So don’t respond to people on the internet (or in your company) that toss this around. Ignore it, let it roll off your back, and have a quiet laugh at how worked up people are getting over their own nonsense.
But, if you really can’t help yourself — if you really must respond — then I’d try this one on for size. When they say to you, “real programmers _____” respond with “real programmers don’t use the term ‘real programmer’.”
If they’re half as smart as they think they are, that self-referential statement will make their brain hurt so much they leave you alone, and go off to ponder both of your roles in an MC Escher loop of useless judgement.