To me it seems like pretty good breakdown from a seasoned professional. I'm a bit taken aback by your take. For one thing, one of the points he's making seemed to me to be "be language agnostic".
I feel like we have all lost sight of what Dijkstra noted: it is all about the computation (paraphrasing).
Also what is missing from much of today's programming training is a problem solving attitude. The focus seems to be overwhelmingly on tools and arguments about tools, not about how to solve problems.
Sorry if this is off-topic but I often see in HN (either in articles posted here, or in the comments) lack of empathy.
He talks about a "friend" and then proceeds to say things like "To be honest, I suspect he didn't know or think much about them" or "This was not a fruitful conversation".
How is that supposed friend, who might very well be aware of this person's blog, going to feel after reading this? Is it a cultural thing and this is not offensive everywhere?
The irony is that the main page says "I ♥ people; look for ways to make them happy, and empower them."
You can absolutely have friends that you have unfruitful conversations with. The idea that every interaction needs to be positive to constitute friendship is extremely unhealthy and sterilizing.
I agree. I think in modern American vocabulary, "Friend" is thrown around quite loosely to mean "somebody who I know and I'm not adversarial with".
Personally, I have very few friends - people with whom I have an emotional investment, who I'd trust to call if I had a bad breakup or needed money or some sort of personal help. But I have tons of casual relationships with folks that I'm on friendly terms with.
I agree with the forced positivity thing, I work for an American firm and if you're not positive, you're reprimanded. I had to be told several times to learn to feedback constructively.
While I do appreciate this, and I understand it, I just feel like a robot now, not a human at work. So much tip toeing around issues it all just feels so fake and there is little room for emotion.
Sometimes, I think it's ok to just be honest with people , but not in America for some reason.
FWIW, my experience (being a 45yo who immigrated to North America at 15) is that "Culture of fake niceness" predates "Culture of Emotional intelligence and empathy"
I find in last few years, many people/groups/companies are working toward increased emotional intelligence and empathy. I see that as a good thing. It just gets mixed up with the original "somewhat real but also somewhat fake classless friendly positive culture".
It's... nice that I can call my client Bob and my VP Laurie, instead of Mr Neubauer and Mz Jameson. It's nice that we speak as equals. It's however false to then erroneously assume that we are equals or that we have equal relationship, so there are layers and nuances to lessons a newbie to north american corporate life needs to learn and internalize.
Anyhoo, what I'm getting to: the "original corporate fake positiveness/niceness" indeed could suck the life out of me. The "new & improved show empathy and grow emotional intelligence" I quite enjoy; it's a good challenge for systems-oriented nerd actually. I always think "What leads us to Star Trek future" and I think empathy is a key factor. So showing empathy in code review is good. Showing sterile niceness and avoiding constructive criticism is bad. It can be easy to mix them up though.
As an American, I think there are two sides to this coin. On the one hand we have various (annoying) forms of forced positivity. American cheerleader culture is one, the cult of PMA (Positive Mental Attitude) is another, and similar things. It’s like some of us think the natural state of humans is to be overtly happy all the time, and if you’re not you’re deviant.
On the other hand though, toxicity is worth avoiding. It can ruin team dynamics, and turn a high-functioning org into a backstabbing dysfunctional one. For instance, one wise thing Joe Biden did at the start of his term was to require that everyone in his administration be nice to each other, treat their colleagues with respect and dignity [1]. He was preemptively killing toxicity before it could emerge. HN enforces this too as a matter of policy.
You can of course have the latter without the former. And criticism can be constructive and honest without being overtly cheery. (The Japanese are good at this fwiw - “Fix the problem not the blame”). But some Americans, subcultures, and corporate cultures, don’t always understand the distinction and mix them up. And some business people believe that happy workers are more productive, and so encourage positivity for that reason, even though studies on the subject have long produced mixed results.
I think this is just "colder" Europeans that can't understand that Americans are usually genuinely happy in those interactions. Like, they aren't being fake or lying to you when they are overly nice and positive. It's just how they actually feel.
I'm neither American nor European but I honestly always felt that Americans are much warmer and genuine than Europeans whenever I visit. But I guess it is harder to see when you are used to be in a colder "rude by default" environment.
It's not how they feel at all. Or, if they do actually feel that way... it's inadvertently the "fake it till you make it" where they have done this for so long and so intensely that they've tricked themselves into feeling it.
It's likely the origin of some large fraction of mental illnesses.
Let's not overly stereotype here. America is a huge place with many radically distinct cultural regions.
Certain regions have this "forced positivity culture," notably the west coast. Others, such as the northeast, are famous for the opposite.
American regional cultural differences are obscured -- especially to foreigners -- by the use of a common language. California is as culturally different from Maine as Portugual is from Norway.
There's no need to conflate "unfruitful" and "negative." Plenty of people have fun arguing without persuading one another of anything, more or less the definition of an "unfruitful" conversation.
It's negative when someone's not having fun. Or more to the point, when someone feels the need to post on the internet about how defective the "friend" they were arguing with is.
I don't think I'd personally be offended by those bits. People have different focuses! Sometimes conversations aren't fruitful! I'm ok with that.
But I do think there's a lack of empathy displayed in his strong value judgments. His "here are the different things people think about" breakdown is interesting. But there's a flavor of "and these specific people are bad and wrong" here that I don't like. I think he should have kept going to "and here's why they focus on those things" with the same amount of appreciation.
OP didn't call his friend a jerk though. He said the conversation wasn't fruitful. There was a bit of an heir of "Oh, you don't know about GC?" but I think people are reading too much into that line.
I'm maybe not as offended as you because I think his friend is more mature and should be proud they avoided being baited.
The GC being preemptive might be part of a group choice at selection time, whether the language is painful to read and/or write is a permanent factor in your quality of life at work until you eventually move to another project.
Of course whether they are not emphatic enough is more a matter of whether the author sees it as a criticism of their friend.
I think a lot of people have these kind of discussions behind people’s backs. I’ve certainly done it.
Who hasn’t occasionally mentioned to one friend how another friend annoyed you?
On the other hand, it’s not something you do in public. I’d be just a tad upset this person didn’t tell me how they felt and instead told everyone but me.
Yeah. A friend telling me I'm being annoying or stupid is fine. The narcissism of turning your life into content creation where I happened to cameo isn't something I could ever get used to though. :p
That feels like such a new and toxic dynamic enabled by the fact that anyone can (and is incentivized to) blog online.
Decades ago, my group of close friends made a pact: if anyone of us is talking shit, talking nonsense, or simply expressing attitude that smells of self deception, do not let it lie and declare it is time for a reality debate. Friends should never let friends descend into self deception, because that slippery slope can kill, as well as sour everything one experiences. Others seeing us in the midst of a reality debate would often form little crowds. If you ever witnessed the "pseudo intellectual club" debates at the Boston Pour House during the late 80's, that was us. That group of close friends is long dispersed into the winds, several still keep in touch, and it is that 'reality debate' activity we continually return, and debate the state of the world.
That kind of conversation often lacks for how to deal with deceitful, ruthless, and generally harmful people.
Not everyone is decent, and turning the other cheek doesn't work or communicate what it once did in this age of platform megaphones.
The corruption of indeceny is everywhere, and most people don't even realize it when they do it because of menticide, indoctrination, or whatever you want to call it.
We are all each other's arseholes. I didn't find what the author posted rude. I find accusing him of having a lack of empathy rude. Ignore the noise, engage with the content.
>Sorry if this is off-topic but I often see in HN (either in articles posted here, or in the comments) lack of empathy.
You are absolutely correct. This place is populated with quite a few nerds. Nerds typically have subpar social skills, which is is both fueled by and results in a lack of empathy.
>"I ♥ people; look for ways to make them happy, and empower them."
The propaganda arm of the Soviets is called "Pravda", which means "truth". It's like people who say "I'm such a nice guy", "I'm very humble", or this author saying "I love people and my friend" but then they talk shit about their friend in this very article.
Listen not to what someone says, observe what they do. "Actions speak louder than words" and all that.
>I wanted to talk about its garbage collector (1, 2), its cooperative scheduler that many people think is a preemptive scheduler, its very loose approach to correctness… and he didn't want to talk about any of that.
This is not the way an emotionally intelligent person approaches a conversation. The idea that a conversation should be a demonstration of ones own knowledge is a pretty common notion I see with socially-stunted geek types. Growing up with a narrow or minimal social group will do that, it's no one's fault, but it's a pretty clear indicator this person's advice on interpersonal relationships shouldn't be taken too seriously.
In the same way you can tell immediately from a blogpost that someone is an inexperienced engineer, the takeaway from this one for me is that the author is an inexperienced friend.
> This is not the way an emotionally intelligent person approaches a conversation.
Good thing you and the other apparently high EQ commenters in this thread are here to set the records straight and bully some guy over his personality traits as determined by you after reading a single blog post.
One reason, but to be fair MBA types can have the same lack of empathy. Their interactions can turn into (actually kind one of the things the author complains about) treating people purely as capital and relationships as means to financial end.
Everyone I've talked to about their experience in MBA programs say that it feels designed to teach you to think of people as if they are somewhere between cattle and plants, mere generators of productivity metrics for spreadsheets and dashboards. The only perspective is quantitative, and it's largely based on arbitrary, misleading metrics.
It's true they've begun to "reform" the curriculum to be more human-centered across different (but far from all) departments, but it's akin to the clumsily-tacked-on ethics classes in scientific/technical tracks: if you take them seriously, they're valuable, but even among the cohort of students there is little respect for them and are usually considered mere drudgery if not an afterthought.
Interestingly enough I read the above comment and assumed it was speaking about the MBA types having the lack of empathy, not the other way around. The purely transactional relationship (often one sided) is one of my biggest issues with them.
I get what you're saying, but I think the "nerds typically have subpar social skills" meme is often used as an excuse for behaviour that shouldn't be acceptable anywhere. I'm not even sure it's that true. Most of the more capable people I've worked with have been very emotionally intelligent, and I don't think I've ever found nerdy behaviour to be a useful judge of genuine skill or interest in a subject.
But in a reply to your comment there's already someone talking about nerds not getting on with "MBA types", like this is some American high school film and not real life...
Acting "properly" socially is exhausting for me. I mostly avoid social gatherings because of it. For stuff for the kids I just focus on them and let my wife handle the adults.
For things my wife wants me to go to (without the kids), I will go, but I tend to just sit there and not talk. I'm fine observing. People find that socially awkward, but her friends are used to it by now.
My friends are used to me sometimes saying weird/crazy shit.
Think about it like this: yes, I can act properly. But it's like work. I would rather leave work at work.
It could be an aspect of undiagnosed or unmedicated ADHD. ADHA applies more broadly than just states of focus and includes social conditions that when the ADHD is advanced can mimic behaviors commonly thought of autistic. One of those impaired social behaviors can include empathy development. Please note this does not apply to most cases of ADHD and seems to apply in cases that are more pronounced.
One key indicator of whether impaired empathy is the result of ADHD is that everything tends to be communicated as either starting from or directly referring to the person forming the communication almost as if narcissistic, but not necessarily with a selfishness intent.
> ADHD is advanced can mimic behaviors commonly thought of autistic
Please stop and go educate yourself.
ADHD is at times co-morbid with autism, but they are not the same thing, have different neurological causes, symptoms and treatments.
Sincerely, a diagnosed ADHD, non-autistic person that self-identifies as an empath (i.e. the opposite of a psychopath. I can read body language and empathise with people better than most. It's not always as fun as one might think.)
A common misconception is that empathy means love and compassion for everybody. No. It just means being able to easily put yourself in other people's shoes and feel their mental states. Empathy alone doesn't turn you into Mother Theresa.
I never claimed they were the same. I have been recently educated on this matter through numerous visits to psychologists/diagnostics in support of a family member. I promise it’s a better authoritative source than YouTube or amateur bloggers.
Are you claiming to know more than someone with the actual disorder because of secondhand discussions, and that also gives you the power to diagnose strangers over the Internet?
The entire point of Go is that it's designed for less talented programmers, i.e. people who can't understand or don't want to put in the effort to understand those things.
That's the whole appeal of many programming languages, they massively simplify the mental model (for a price).
I've been a lot happier and more productive since I switched to a slow language (which younger me would have been sad to hear).
I think they are referring to the famous Robert pike quote (though I disagree that it implies a lack of talent from its users, it just means that the language was designed to be practical):
"The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt."
It's usually used in a tongue in cheek manner to mock Go which is usually pretty funny but it's disingenuous to argue that it seriously implies that go programmers are not talented.
Completely agree. Especially since most languages are designed to be simple and even "stupid simple". That's a good thing! There's nothing inherently smart or talented in having to wrestle with a complicated language just to get stuff done.
Honestly, is it just me or do I find Javascript unnaturally difficult? I've learnt Python, C++, MATLAB, heck, even picked up some Rust and LabVIEW on the way. But I found Javascript (and Typescript) hard to pick up.
I've spent most of the last 20 years working with JavaScript, and as ridiculous as it sounds, I never quite got the hang of it. Meanwhile other languages clicked within a few days.
I had a similar experience with e.g. Flash vs GIMP. Even after a decade of not using it, I found that the Flash shortcuts were intuitive to me, but GIMP (which I use every day, several times per day) never quite "clicks".
I'm not exactly sure why this is the case. Another example is that I rarely use Python, and yet find myself vastly more productive in it.
Thanks to the magic of Turing completeness, lots of the complications don't actually buy you anything...
The explicit choice in the design of Go is to prefer fast reading over fast writing, which helps maintainability and debugging.
Complex language features are terrible for maintainability: the reader may not know the feature, it may interact in unexpected ways with other language features, or have other non-obvious pitfalls. Debugging these things are ultimately a waste of time, and time is the highest price of all. And for what?
I believed this to be literally the case, that Go was designed for the "lowest common denominator", i.e. to make that area of programming at Google more accessible than it was previously. Have I been misinformed?
How is that supposed friend, who might very well be aware of this person's blog, going to feel after reading this?
In Spanish there's a saying, la confianza da asco, that could be translated more or less as "familiarity sucks". You often treat your friends and family worse than you would to strangers. It also means that if a good friend doesn't talk truth to you, who will?
that's your take away from this? so tired of hearing about the e word, and all this therapy talk in business/tech world. "psychological safety" and "vulnerability" (not related to security unfortunately) are two others that make constant rounds among the management caste. i instantly cringe when someone starts talking about this crap at work. please, just focus on your job.
Talking directly and honestly with your friends is a very good thing, but don't talk trash about them behind their backs - it is passive-aggressive, deceitful and reflects very poorly upon your character.
Yeah-- that's always been the case in more technical crowds from my experience. I switched to HN from Slashdot like a decade ago because the Slashdot crowd seemed to get overrun with folks like that.
Recently, I most frequently notice it when people discuss potential job losses from AI automation. Regardless of whether or not this is good for society, it's absolutely bizarre how many folks around here (and some other places, like related subreddits,) gleefully dance on the grave of artists of all people. Some seem to disdain creatives wanting to participate in our economy using their hard-won skills and vocation, almost as if their doing so is oppressive to non-artists. Others seem to think it appropriate to act like they've just beaten them in a game. The majority of folks around here seem to act pretty reasonably about it but that vocal minority is obnoxious, to say the least.
Accuracy of their predictions aside, it's just a disgusting way to talk about people whose careers, they imagine, were just unexpectedly flushed down the toilet through no fault of their own. Unsurprisingly, these people usually have the least sophisticated, and least useful philosophical understanding of what art is. I imagine this is a cognitive limitation directly related to their empathic limitations.
It's been my experience that in conversations about AI, literally nobody actually wants empathy. People want to talk about empathy and deplore the people they disagree with as lacking it. The underlying assumption and implication is that a person experiencing genuine empathy would both display it in some legible manner and agree with the speaker's positions on things. In short, the idea of empathy is weaponized.
Perhaps unsurprisingly, this falls down on several points. It's just a disgusting way to talk about your fellow human beings when it's your own failures tripping you up. I imagine this is a cognitive limitation directly related to their own empathic limitations.
In conversations about AI, people usually want changed behavior and similar concrete shifts. Empathy is viewed as a lever to produce those changes. When the changes are not forthcoming, the conclusion people reach is that clearly it's because the emotional experience of empathy isn't happening. This avoids considering awkward and unpleasant questions such as if there may be other good reasons why those changes are not forthcoming from a person who may be experiencing sincere and genuine empathy.
I spent a lot of years as a professional software engineer. Many of those left me daily on the receiving end of people for whom calling on the empathy of others was their preferred means of shaping behavior. I had to learn to set aside those emotions in order to preserve my own judgment. Now I see, daily, the same kind of people deploring that the tools they taught me to resist are not working.
What I see in this blog post is someone relating a story in which an awkward encounter is anonymized. The anonymization is itself a form of empathy in action - the person is not called out specifically, only the conversation. There's plenty of room to criticize the author in what is presented, but we really have no idea who missed what cues in that conversation. It's not a kind comment on either person.
a) I was responding to an admittedly off-topic comment, and not the article.
b) Your argument that people solely use empathy as a kudgel to get their way is not reflected in reality. What you describe is emotional manipulation, and as far as I can tell, you're essentially arguing that all calls for empathy in conversation are emotional manipulation... which is ridiculous.
c) Simply speaking about people respectfully is actually important and doesn't change the concrete components of a conversation. Discussing whether or not there should be some concrete action in response to a bunch of people losing their livelihood doesn't benefit from "lol get a new career, idiot." If you don't understand that, you've probably got a serious problem understanding the effect your words have on other people.
My argument was and is that specifically and narrowly in conversations about AI and its impacts on the livelihoods of people, calling for empathy from others is deliberate emotional manipulation with the objective of cudgeling people into compliance. It's also often a rallying cry, used to de-legitimize the positions of their counterparts as cold, uncaring, unfeeling, and devoid of humanity. Common enough ad-hominem material, though obviously fully emotionally justified.
The only broader comment I offered was that I have worked with a number of people who operate that way on a daily basis. I understand why. It helps them hit their professional goals, ensuring their livelihood and those of their families. Many of them see a resistance to these tools as a lack of respect for their skills, abilities, hard work, or reasonable economic interests.
As to personal respect - how prepared are you to see respect in someone saying they understand but disagree? I can both understand the impact of my words on other people and refuse to shift my position because of their emotional response. Many others may not react as well as you to a compassionate, empathic, kind, caring, and understanding essay arguing that creatives feeling threatened by AI should seriously consider a change of career.
> My argument was and is that specifically and narrowly in conversations about AI and its impacts on the livelihoods of people, calling for empathy from others is deliberate emotional manipulation with the objective of cudgeling people into compliance. It's also often a rallying cry, used to de-legitimize the positions of their counterparts as cold, uncaring, unfeeling, and devoid of humanity. Common enough ad-hominem material, though obviously fully emotionally justified.
Sorry, no. You're conflating two very different things. Saying it's unethical to entirely disregard people's livelihoods when deploying new technology doesn't even resemble an ad-hominem attack. Saying that anybody who has an opinion that doesn't match yours is arguing in bad faith IS an ad-hominem. For example: equating advocating for considering people's livlihood as being emotionally manipulative, full stop. It's pretty ironic that you're accusing them of not respecting opposing opinions.
> The only broader comment I offered was that I have worked with a number of people who operate that way on a daily basis. I understand why. It helps them hit their professional goals, ensuring their livelihood and those of their families. Many of them see a resistance to these tools as a lack of respect for their skills, abilities, hard work, or reasonable economic interests.
I don't know anything about your daily life, but I do know that trying to apply the motivations of the difficult people in your life to others you find similarly difficult is pretty intellectually lazy.
> As to personal respect - how prepared are you to see respect in someone saying they understand but disagree?
I do it all the time. I'm always the one trying to get people to see things from someone else's perspective. In this topic, specifically-- I strongly argue with people who think these technologies need to be locked down and left to huge companies solely to protect people's careers. I argue with developers who don't think they need to consider anything beyond technological advancement when deploying technology. Both opinions completely fail to acknowledge the needs of other people and the consequences for protecting their self-interest.
> I can both understand the impact of my words on other people and refuse to shift my position because of their emotional response.
Ok, great. Unless you prove that's true of everybody else, that doesn't address what I initially said.
> Many others may not react as well as you to a compassionate, empathic, kind, caring, and understanding essay arguing that creatives feeling threatened by AI should seriously consider a change of career.
You're right. Many others might not react well to a respectfully worded essay that said those things. You'll notice that I never, ever said that people who advocate for balancing technological advancement with the needs of the people replaced by it are fundamentally unethical. At all.
IMO, the grave-dancing on artists most likely arises from a (probably small) subset of artists having a vocally "fuck you, pay me for my skill" attitude.
The tech world might not be as empathetic as some other human endeavors, but it has a unique approach.
We need to consider whether we should foster more empathy or simply adapt to the existing landscape. Being practical and discerning, sometimes to the point of discrimination, has proven effective in areas like space exploration, business, and even the natural process of evolution. And tech, too. Over the past 30 years, the tech industry has achieved remarkable feats, feats that would seem magical to people living a century ago. This success stems from swiftly testing new ideas and people, and discriminating between those who can deliver results and those who cannot.
However, such judgment or discrimination can pose problems. While it might be beneficial in natural systems, facilitating improvement, it isn't perceived positively in our society. We aim for fairness and equality for everyone. The term "discriminate", even though integral to nature and many productive systems, often carries a negative connotation in sociology. And indeed when we look at examples of unfairness and inequality in history, they are generally seen as immoral. But I wonder if that is because the inequality was often means to an end for someone else's decadence.
Here's a difficult question: should tech become more empathetic or continue to discriminate based on ability? If we become less judgmental of skills, we might not achieve as much. If we continue to be unempathetic, that will cause social friction. While I don't have a definitive answer, it's certainly worth considering.
In my tentative opinion (since I don't feel particularly adamant about it), we should continue assessing individuals based on their technical understanding in the tech realm, but within reason. We need to maintain humility, recognizing our limited knowledge and potential to misjudge others. Our critiques should be measured, and we should avoid letting our assessments of others' technical skills cloud our perception of their worth in other areas. After all, one can possess excellent personal attributes yet lack technical skills or be unfit for a specific tech project. In that sense, I lean more heavily towards the fundamentally non-empathetic approach. But that's just N=1. The important part of my message here is that we need to acknowledge the equity/empathy-effectiveness trade-off and be conscious of it.
It's an interesting notion that you can't disagree or find faults in your friends, especially if we adapt the Anglophone definition of a friend as a loose sorta sustained contact. Would people rush to criticizing in this manner if someone truthfully wrote that their friend has problems hauling 20 kg weights up four floors of stairs?
The description is undiplomatic, could be written in a more roundabout way, but this could be read as even more haughty and rude. I'd say that as human collectives we need to maintain a grip on reality, and it is wasteful and dangerous to live in a web of polite lies.
This is an inaccurate and highly reductive stereotype of what the supposed "Anglophone" cultural world believes about friendship.
In reality, there are vast cultural differences between different English speaking regions, which foreigners often overlook due to the shared language. California, New York, Miami, Johannesburg, New Zealand, and rural Yorkshire are all technically "Anglophone" in some broad reductive sense, yet are as culturally distinct (or even moreso) as, say, Sweden and Greece.
Right? As he explains, there are many different hierarchies of critiquing a programming language. Yet, they heavily imply if you care about “surface” topics, your feelings aren’t as valid as if you were more interested in the garbage collector.
It's a well-worn genre. "Here are the things you need to know to be a real X" where there just so happens to be perfect overlap with every subject the author knows well. Anything the author doesn't know much about is, of course, irrelevant, and not something a real X would waste their time on.
I think it's perfectly okay if my friends think they had an unfruitful conversation with me and thought that I didn't know what I was talking about. I don't like rubber-stamp people who just say whatever I want to hear and have no depth of their own and aren't willing to disagree on anything.
In fact, I really can't stand when I talk to someone and they seem to agree unconditionally with everything I say; it's not believable. Surely they disagree, why can't they express their feelings? Why is no one willing to go on a limb and be wrong or criticized? I find it particularly prevalent in the tech circles, when talking to parents of other kids in the SF Bay area. Everything is very picture perfect, and I can't believe it, so I feel I can't trust the people speaking. They're too nice, too polished.
I like my friends who will disagree with me (most of the time respectfully) and allow me to say stupid things and forgive me for my imperfections, and equally for theirs.
Hi! Author here. This is fair; I can see how you feel this way from the article. That said, "I suspect he didn't know or think much about them" isn't a value judgement on him; just as I didn't care much about his point on `for` loops, we all have things we care about more and less about than others. Same with "fruitful conversation" — I meant that for both of us! I think both of us could have had a better time.
I'll try to be more mindful in the future, but I think "the original characterization doesn't trash him" is defensible. If he sees the blog and thinks its unfair, he's perfectly able to reach out (we're not actually very close). I make it clear we value different things but I never explicitly say "this guy sucks" _because I don't believe that._ He's a fantastic dev who's built great systems, but I wish we had a better framework for chatting about Golang.
Edit: I've updated the language with a few more details to better reflect how that whole interaction went down, which was a playful chat between two seasoned devs with ~12 companies between them. I didn't want to spend too much of the article on the anecdote, so I originally cut out some surrounding context (he was excited to "get into it," it's not like I just came at him when he said "I like Go").
"He's a fantastic dev who's built great systems, but I suspect he is not interested in these aspects of software" would have changed the entire tenor of the article.
This person doesn't need to be in the article at all and I had a lot of trouble getting past this section to the many reasonable points made after it.
Thanks for the feedback. I updated the language a bit to better reflect how that whole interaction went down, which was a playful chat between two seasoned devs with ~12 companies between them. I also removed the language that was being perceived as judgemental.
Language discussions are unpleasent and waste of time
Ive seen like hundreds of discussions like that
Java vs c# vs rust vs go vs kotlin
It is always heavy of emotions, unverified claims (performance especially)
and dependent on what stuff do you value.
This kind of discussion requires wide knowledge, hands on experience, curiosity and open mindness.
All of those 4 are really desirable itself, so together even more and are really rare!
>I prefer to work with an excellent software engineer, who doesn't tie their identity to a specific language or technology (e.g. would prefer a great hacker than someone who identifies as a "Ruby developer" or "JS developer.")
Why it matters to you how somebody calls himself?
Is this "single lang programmer" insult variation?
Especially when you are aware that concepts are above languages
>For all my advocacy in this post, it may surprise you to hear that I believe it takes years to be excellent at a language. It's not just syntax, it's soil and atmosphere: common bug flows and how to spot them, footguns, tooling,
Agree!
Many people do not get it, they are always like "you can learn langs after your first within a month" or so
>Functional programmers insisted without evidence that their programs were More Correct.
Throw in the fact that most programmers are terrible communicators, and we get complete nonsense non-debates that are little more than emotional cry fests.
> Many people do not get it, they are always like "you can learn langs after your first within a month" or so
In my experience: half a year minimum, and only after your 10th. The amount of uninteresting trivia that you need to wade through on your way to concepts you already know is vast, much greater than you'd remember from 10 years back when you learned your previous language. More then 10 languages I already know do help, in that I can easily pick up any language in a matter of days, but... that's only if we're talking about the language[1]. Developing a skill in using that language, including absorbing the specific culture (books read, talks given, whose blogs to read, which Discord/Slack/#freenode to visit, and so on) and learning the details of the ecosystem (from stdlib to common libraries to frameworks, to the details of implementation, the FFI, and so on) and it's a lot of things to learn.
Well, at least I know that my next language will be a lot easier to learn, thanks to a revolution in the rubber duck industry, which gave us a duck that can - sometimes convincingly - pretend to understand what we're saying. And sometimes even gives you a hint that turns out to be real! Oh, the progress...
[1] As long as there's no genuinely innovative features in that language. Which, sadly, seems to be the case 95% of the time.
To a newspeak school to unlearn precise terminology.
So to translate OP, "soil, surface, and atmosphere" apparently refer to semantics, syntax, and runtime.
("Pedantic" is a favored word these days. In my days, objections to those who actually knew something about CS was that they are "academic", and "theoretical".)
I don't know. Syntax and Semantic are pretty much both Surface in this metaphor. The "Soil" seems more like the Environment/OS, while the "Atmosphere" is also the OS? Maybe I'm just throwing wrenches
But yea, maybe we can't have a PL conversation without also having a conversation about our own language? Ugh
Alright. Lets say in any group of people you have a normal distribution of people caring about the thing you care about. On the left, people dont care at all. On the right people think its the most important thing on the planet.
An argument that suggests people dont want to talk about the things you want to talk about and then uses fabricated classes of thinkers to suggest the things you care about are the grounded ones is just well written flame bait. You can easily find a set of people online who can argue about the garbage collector behaviour of several languages: thats actually pretty cool. But saying people arent hackers because they dont want to discuss it the same way is literally defining a set of people to exclude them from your “group”.
It occurs to me that if you buy into the concept that there are "posers" and also "the real deal", then the first thing the posers should do is start whining about "gatekeeping" and how awful it is. It's just the best strategy considering their lack of merit. If the terminology "gatekeeping" hasn't been invented yet, then it would be strategic to invent that word.
This is the specific spot my suspension of disbelief broke:
> innovation tokens are completely made up, it's like talking about the finite number of "love tokens" you can give your spouse in a given year.
You can't complain that "'atmosphere' questions are extremely based in feelings" and then just get high on feelings like this.
The amount of "love tokens" you can give your spouse in a year is absolutely finite, because they take time and attention. You can see easily this in the complaints that come in advice columns and relationship subs. And innovation tokens are no more made up than anything else. Time and attention are finite at work just as much as at home.
Hackers didn't go anywhere. The solution to the puzzle is that hacking is an ethos not generally suited to creating profitable businesses. However, we've seen a massive expansion in business use of computers, and most of those businesses are trying to be profitable. Yes, a bunch of those early companies were populated by hackers because that's who knew how to use computers then. But the industry has changed as more and more people have seen it as a professional career, not a way to feed a hacking habit.
Hacking is still alive and well if you know where to look for it. People are still doing lots of weird and wonderful things. But they are, thank goodness, not doing them as much at their day jobs. And as a person who has had to clean up other people's "play", I say: hooray! Play at home. Play in disposable playpens. Production is for shit that works.
Of those I have been in contact with lately most have gone away from public spaces in general because we are sick of being distracted from hacking by screaming holy warriors, bad-faith assholes shitting on everyone to make themselves feel better, and the gradually worsening infiltration of commercially-sponsored misinformation.
Making things easy is the problem. It's been long known in secret societies, that guarding entry through a solvable but hard entry barrier makes it more rewarding for those who do make it through and the ones already inside. In programming, we have tried to make everything easy: JavaScript everywhere. Electron everywhere. Slow code everywhere. No need to think about memory of cpu cycles at all. The result is piles of crap like Microsoft products and Slack and hackers are the minority.
In some ways things are a lot harder. In the early 90s I was able to borrow Turbo C from my brother. He gave me a pointer to video memory and I could use math to draw stuff. I was making stuff in a few minutes.
yes but they enjoy that. there is a reason why notion and things have gotten so popular. people love to pretend they are doing hard shit, when all they are doing is faffing around. react is the textbook definition of faffing around. useHooks. Jesus Christ. What a waste of time.
Which secret society has seen 4 decades of "it it breathes and codes, it's hired" business climate with hundreds of billions of dollars behind? It's not like anyone wanted for the September to last for eternity, it just had to happen given the situation.
So the article seems to imply that "hackers" are the sort of people that look at a partially working system and say: "hmm let's re-write that in a new and untested language" or worse still "lets write this in language x because I've always wanted to try it"
if thats the case, then I formally suggest that such people can get in the sea.
I might be somewhat unfair, but that was my reading.
> innovation tokens are completely made up
So are programming languages.
Innovation tokens are there to make sure that a business can complete a project vaguely on time and vaguely on budget.
Look the reason why people were able to get away with pissing away millions of dollars in pointless re-writes of things is because the speed of business based on those systems was slower. Now, if your site is down, then customers flee.
I mean sure, writing your own database for your SaaS company might be a thing, but its almost certainly expensive and pointless. You're on the hook for scaling it, recovering it when it fails, and finding and fixing all the bugs.
In short, this article, I feel, encourages a damaging, selfish side of CS that I think should be phased out.
Just to set the context: I like Golang as a language, but I think writing a program that's more than ~10k lines of code in Golang is a mistake (honestly, the limit is probably a lot lower), and I also don't think they should've added generics, just leave the language as useful as it is.
Anyway, I think the author missed the point a bit with his friends argument about "Go developers knew that all you need is a for loop". It's not just an "atmosphere " argument. The programming language literally restricts you to using for loops. That's a surface property of Golang (or maybe it used to be, haven't used it in a couple years).
Golang has been designed to have a minimal and thus very smooth surface. Those issues the author mentioned about Python, that's rough surface.
The article then digresses into the main point which is that engineering leaders are afraid of spending innovation tokens without giving evidence that this is more so the case than it was before.
Not sure if it's relevant, but Twitter starting on Ruby was them spending an innovation token. They then realised there was a big large scale low latency high throughput situation that Ruby didn't have a suitable ecosystem for, so they hired a team that had experience scaling these sorts of systems specifically with Scala. Picking Scala was in that sense the safe choice, the risky one would have been to try and get the existing Ruby codebase to apply the concepts from Scala (which is now more than a decade later a reasonable thing to do in Ruby).
If Mesos has managed to be slightly more useful, it would have been a Kubernetes written in C++ situation. Of course in my opinion it being written in C++ was the whole reason it had limited usability so it probably would never be.
Having worked with Scala I disagree it’s a safe choice. Scala is a huge, complicated, difficult language built on the huge (but very powerful) JVM. It’s also hard to hire Scala devs AND hard to train non Scala devs to write Scala, because it’s not a language you can learn in a weekend. (Speaking from experience)
Also speaking from experience: Scala takes much less time to learn if you have someone familiar with regular programming concepts (not FP religion) to decode it for you. But ultimately agree, it's a bad choice for pretty much any purpose.
Mmm... depends, I guess. We had a team of JavaScript programmers and we (me included) needed to maintain the Scala back-end our client consumed, that was built by contractors a year or two previously and not really been worked on since then. It used Spray for routing, which IMO was the worst part of it, but there were a lot of other quite "cerebral" Scala-specific concepts in there too like implicits and other stuff that I forget now. A lot of it I'd never really come across before in any other programming language.
Maybe if you're familiar with something like Haskell Scala is more straightforward to decode?
> Maybe if you're familiar with something like Haskell Scala is more straightforward to decode?
Only if it's a particular flavor of Scala I think. Even then there's so much "excess" added by Haskell-esque Scala you'll have to develop the skill of mapping from one to another.
A simple but realtively easy example is sum types in Haskell are case classes in Scala.
I'll add some anecdata, to give more context on why "atmosphere at all costs" might be en vogue.
- Most software engineering is CRUD
- Almost all 3rd generation, higher level languages can achieve CRUD (e.g. Javascript, C#, Java, Python, Ruby, PHP, Python, Perl -- even Bash)
- Most engineers will not have to dig around in the internals of a language to be able to do their jobs (e.g. that you can fine-tune and pick your own garbage collector (or even disable it completely), depending on the domain in Java (such as low-latency environments); whereas in .NET, you cannot really tune, swap out, or turn off the GC completely)
- Without needing to know the internals of a language, all the aforementioned languages are largely interchangeable (again, for CRUD -- and based on taste)
This is why you may commonly see people recommending that even if you don't know a language, you should be able to pick up whatever language a potential engagement requires (see: "a senior should be able to pick up frameworks and languages within a week or two"). I've always disliked this way of seeing the world. It rubs me in a certain grating way: that most work is CRUD, so you should optimize your career for being an interchangeable COG.
In my experience, if you take the time to learn a single language or ecosystem thoroughly, your chances of finding work for that specific ecosystem greatly increase -- versus the "generalist." Likewise, you'll be able to tell when it's the tool that's messing up, or yourself. Further, you'll be able to find more interesting, "deeper" work to handle -- rather than just building another CRUD web app. And lastly, life is too short to work with stuff you don't like.
For example, I love the .NET ecosystem. If I want to build something that isn't in the HPC space, I'll reach for it first. I know Java, but I don't like Java -- and I do not ever want to work with it. My ability to land .NET work is much easier, because I know the ecosystem -- not just how to program in an OOP language.
Or how about databases? I love Postgres. If I want a great OLTP DB, without any fuss, I'll reach for it first. I know MySQL/Mongo/SQL Server (to be fair, this one is also really good)/etc., but I don't like most of them. My ability to land work that utilizes Postgres is much easier, because I've taken the time to thoroughly understand it.
Or in other words, most people in the game are optimizing for commerce: how much money they make.
The hackers? They're in lower-level, systems programming languages; they're in compiler and language design; they're in low-latency or kernel programming; they're in stuff that isn't directly related to making money. Part of the reason I'm learning C++ is because the work there is more interesting (database engineering is very fun, but you need C++ or C in some cases) -- and the people more passionate. But also, because the gravy train is starting to dry up in CRUD -- anyone who can program can do it.
I love .NET ecosystem but it sucks that it lacks of fancy jobs that you mentioned. If you want to do compilers with C# then it feels like you have to work for C# Compiler / Roslyn Team(s)
For cool jobs there is shitton of CPP which I do think is huge mess and I hope that Rust will steal CPPs market share because my experiences with it were way way more pleasant
Yeah, a lot of the .NET stuff is low-paid, low-challenge big business work (and the only high-visibility "cool" .NET work is at MS).
There's a few positions that intermittently pop-up doing "cool" work in .NET: usually startups, or small teams; the chances are much rarer, and you have to be in the right place at the right time -- but your chances are much greater than someone who's coming in from any other ecosystem (e.g. Javascript back-end).
Or in other words, sniper vs shotgun approach. You're going to get less targets overall if you specialize; but it'll be much easier to have a strong chance of being "the best" in the crop of applicants (or even for marketing purposes, a la personal consultancy).
maybe its because the article yesterday, 80% of jobs are gotten through networking, and if the rest are from leetcode interviews.. you kind of have decided to select against diversity.
I like the spirit of the soil/surface/atmosphere split but I think it’s a bit misleading to frame it as a way to talk about ‘languages’.
It feels like those things can be better framed as ‘runtime/tooling’, ‘language/libraries’ and ‘ecosystem’.
And under that taxonomy it isn’t wrong for people who say they like a ‘language’ to not be talking about the runtime or the tooling.
Like, take JavaScript (the good parts at least): I like that language! And I separate that out mentally from the fact that I hate the browser runtime, and I don’t have much love for the node ecosystem. I have complicated feelings about working in javascript as a result. But I still consider myself an admirer of the core good ideas at the heart of the JavaScript language.
The surface matters a lot. You have to live there.
I think the author of this article grossly misunderstood the purpose of his interaction which lead to this article.
You aren't architecting a new programming language, man, you're talking to a guy about computers because you're wearing a shirt of a computer thing he liked. He wanted to talk to you because he had a mutual passion he wanted to share, and you openly challenged him in front of other people. Sorry, you were a shitty friend.
I don’t agree. My perception is that the author doesn’t think “atmosphere” discussions about programming languages are of less value, it’s just an example to segue into the classification of “soil, surface, and atmosphere” as types of programming language considerations, and off of that the observation that the past decade has shifted significantly to “atmosphere” as the most important aspect for safe, boring software engineering (which is the actual primary topic of the article)
None of that is to imply the friend is wrong or inferior in some way
Yeah agreed. I’ve talked with Pablo before about languages, he just really enjoys discussing them and wants to be on the same page of what you’re discussing.
I am however now worried if I said anything about Go lol
You don't know what the other person really wanted or thought - and neither did the author, apparently. The breakdown in communication here is that you, and the author, had certain expectations, assumptions, and unknown information, and you both made conclusions based on all that variable, unknowable, uncommunicated stuff.
Rather than assume what's going on in the other person's head, ask them. Assume good faith until evidence to the contrary. It allows less judgement and negativity, which leads to more fruitful conversation.
My issue isn't what he said, it's how he said it. He could have been more respectful about the other person's opinion about go, but "I suspect he didn't know or think much about [feautures of go]" suggests a very prevalent judgmental attitude towards CS I feel brings the culture of the industry down.
> He instead emphatically talked about how much he loved that "the Go developers knew that all you need is a for loop. Someone brought Scala into my company and I hate the mental shift."
All you need is a for loop? Interesting! Why did they say that? What design decisions informs this approach?
If someone with neither experience in scala or go were to choose one language for this project, why would they use Go or Scala?
If the guy truly has no idea what he's talking about, then it should be evident just by him speaking and you asking questions. If he does, then at best you learn something new or at worse hear a different perspective. Be an active listener and engage with what the other person is saying. You can be critical without being judgmental. It's sort of impossible to have bad faith in this way, because you're taking what the other person is saying seriously instead of writing them off.
The description of this interaction in the article makes me sad for the author - they criticise and belittle another. Imagine instead what they could have learnt if they opened themselves up to another persons perspective.
It’s notable how little this article actually discusses the delivery of any form of value. The tech is not the end in itself, it’s a means to an end - and we live in an age with so many well matured and valid options that for many of the problems we seek to solve what tech we use isn’t necessarily a critical decision.
The author answers their own question - where have the hackers gone? We are getting on with it and building stuff. This kind of language flame war stuff just isn’t as important as it once (debatably) was. It’s a dying trope.
Thinking on the initial mistake our author made - framing the conversation rigidly through their own frame of reference - I’ve personally found Matthew Syed’s work on cognitive diversity helpful in understanding and addressing this. [1]
This was my first reaction, but the author won me over to his point as he went along.
I find the soil, surface, atmosphere analogy useful.
Also, I am one of those many many Python programmers who don’t know much about Python. Fascinating how you can be quite productive in tech, even so. Perhaps that’s the glory of Python. But for the record, nobody cares about the specifics of import, or anything else, unless it is likely to influence a problem or solution that we are grappling with.
I’m curious about Python… but I also have a job to do and a deadline.
His comment regarding preemptive vs cooperative scheduling, so which is it? Does Go have preemptive scheduling or not? I was under the impression that it did get that somewhat recently? Could anyone point me in the right direction?
It's preemptive, I just tested. Spawning an infinite loop inside a green-thread while limiting the program to 1 core does not freeze the program. This will output "hello" and exit normally as expected:
package main
import (
"fmt"
"runtime"
)
func infiniteLoop() {
for {}
fmt.Println("world")
}
func main() {
runtime.GOMAXPROCS(1)
go infiniteLoop()
fmt.Println("hello")
}
Foundations are often missing: semantics. This is the dividing line, I find, between practitioners and researchers. Like most dichotomies there is some bleed over between the two groups: I consider myself a practitioner but I tend to think in terms of semantics and try to keep up with the research. I know of many researchers who dabble in practice and build things with the fruits of their labours.
The difference between soil and foundation is almost as vast as the difference between soil and atmosphere. For people who think about programming in foundations they're more interested in how solving recurrence relations can lead to better optimizations; more generally speaking, how formal calculation of programs is influenced by or limited by language.
My take is simply that programming has gotten way bigger. People seem to think that in the “old days”, programmers ate raw potatoes and programmed in assembly because it put hairs on their chest. The reality is, computers were way simpler objects back then. Assembler on the Intel 4004 has like, 30 opcodes or something. The list fits on your phone screen without scrolling. Modern javascript bundlers pull in more code than entire operating systems back then. C only has about 20 keywords. If you know assembler, you can probably learn K&R C in a weekend if you go hard. Modern C++? Forget it. Apparently the spec just for c++ initialisers is 300 pages long.
Today the same amount of knowledge makes you barely passable in a single niche domain. Consider web development. To get really good at modern web development, you need to know modern javascript, CSS and html. You need to understand how browsers work and all the quirks of how http requests and loads webpages - including what dozens of http headers do and how they interact. You need to understand the browser rendering process, performance tools, accessibility and debugging tools. And learn dozens of javascript libraries, like react, express, webpack, database wrappers, and so on. It’s accomplishment to learn all of that. But if you do, you still only know web programming. That knowledge doesn’t really translate to operating systems work, mobile development, databases, AI, embedded, etc.
Most professional programmers only have the inclination and capacity to learn one ecosystem. And, even then usually with big holes in their knowledge. True polyglots are rare because the mountain you need to climb to get there is higher. But we also depend on polyglots to guide us toward useful tools. Language / ecosystem choice still matters. It matters for performance, velocity, security and compatibility. But how can you really evaluate that stuff unless you’ve spent time debugging Go programs, or tried to squeeze every last drop of performance out of a big legacy Java monolith?
We’re left talking imperfectly from our own experiences. And living in whichever niche of programming we’ve carved out for ourselves. The days of everyone being all terrain programmers is over.
I like this take. Good luck being a “hacker” when the webpack config takes 2 days for a pro and a week for a novice. The programming landscape is far more complex.
This rings true. Widespread existential dread of "am I investing / have I invested in the correct niche since I can't learn it all" feels like a logical progression.
The cambrian explosion is happening within subfields too (e.g. AI -- everyone is a specialist within a specialty).
349 comments
[ 4.0 ms ] story [ 346 ms ] threadAlso what is missing from much of today's programming training is a problem solving attitude. The focus seems to be overwhelmingly on tools and arguments about tools, not about how to solve problems.
He talks about a "friend" and then proceeds to say things like "To be honest, I suspect he didn't know or think much about them" or "This was not a fruitful conversation".
How is that supposed friend, who might very well be aware of this person's blog, going to feel after reading this? Is it a cultural thing and this is not offensive everywhere?
The irony is that the main page says "I ♥ people; look for ways to make them happy, and empower them."
The normal (at least in Canada) seems to be as you suggest. I'm perfectly ok with being the weird one though.
Personally, I have very few friends - people with whom I have an emotional investment, who I'd trust to call if I had a bad breakup or needed money or some sort of personal help. But I have tons of casual relationships with folks that I'm on friendly terms with.
This dude just wanted a pretense for a blog post about Very Strongly Held Feelings Concerning PLangs.
You just have to find people that enjoy banter and aren't insecure, which isn't very easy.
While I do appreciate this, and I understand it, I just feel like a robot now, not a human at work. So much tip toeing around issues it all just feels so fake and there is little room for emotion.
Sometimes, I think it's ok to just be honest with people , but not in America for some reason.
I find in last few years, many people/groups/companies are working toward increased emotional intelligence and empathy. I see that as a good thing. It just gets mixed up with the original "somewhat real but also somewhat fake classless friendly positive culture".
It's... nice that I can call my client Bob and my VP Laurie, instead of Mr Neubauer and Mz Jameson. It's nice that we speak as equals. It's however false to then erroneously assume that we are equals or that we have equal relationship, so there are layers and nuances to lessons a newbie to north american corporate life needs to learn and internalize.
Anyhoo, what I'm getting to: the "original corporate fake positiveness/niceness" indeed could suck the life out of me. The "new & improved show empathy and grow emotional intelligence" I quite enjoy; it's a good challenge for systems-oriented nerd actually. I always think "What leads us to Star Trek future" and I think empathy is a key factor. So showing empathy in code review is good. Showing sterile niceness and avoiding constructive criticism is bad. It can be easy to mix them up though.
My 100 Croatian Lipa, FWIW :->
On the other hand though, toxicity is worth avoiding. It can ruin team dynamics, and turn a high-functioning org into a backstabbing dysfunctional one. For instance, one wise thing Joe Biden did at the start of his term was to require that everyone in his administration be nice to each other, treat their colleagues with respect and dignity [1]. He was preemptively killing toxicity before it could emerge. HN enforces this too as a matter of policy.
You can of course have the latter without the former. And criticism can be constructive and honest without being overtly cheery. (The Japanese are good at this fwiw - “Fix the problem not the blame”). But some Americans, subcultures, and corporate cultures, don’t always understand the distinction and mix them up. And some business people believe that happy workers are more productive, and so encourage positivity for that reason, even though studies on the subject have long produced mixed results.
[1]:https://www.foxnews.com/politics/biden-administration-be-nic...
I'm neither American nor European but I honestly always felt that Americans are much warmer and genuine than Europeans whenever I visit. But I guess it is harder to see when you are used to be in a colder "rude by default" environment.
It's likely the origin of some large fraction of mental illnesses.
Certain regions have this "forced positivity culture," notably the west coast. Others, such as the northeast, are famous for the opposite.
American regional cultural differences are obscured -- especially to foreigners -- by the use of a common language. California is as culturally different from Maine as Portugual is from Norway.
It's negative when someone's not having fun. Or more to the point, when someone feels the need to post on the internet about how defective the "friend" they were arguing with is.
But I do think there's a lack of empathy displayed in his strong value judgments. His "here are the different things people think about" breakdown is interesting. But there's a flavor of "and these specific people are bad and wrong" here that I don't like. I think he should have kept going to "and here's why they focus on those things" with the same amount of appreciation.
Friends don’t have to agree on everything. Calling your friend a jerk because their interests don’t align with yours is… odd?
The GC being preemptive might be part of a group choice at selection time, whether the language is painful to read and/or write is a permanent factor in your quality of life at work until you eventually move to another project.
Of course whether they are not emphatic enough is more a matter of whether the author sees it as a criticism of their friend.
Who hasn’t occasionally mentioned to one friend how another friend annoyed you?
On the other hand, it’s not something you do in public. I’d be just a tad upset this person didn’t tell me how they felt and instead told everyone but me.
That feels like such a new and toxic dynamic enabled by the fact that anyone can (and is incentivized to) blog online.
Not everyone is decent, and turning the other cheek doesn't work or communicate what it once did in this age of platform megaphones.
The corruption of indeceny is everywhere, and most people don't even realize it when they do it because of menticide, indoctrination, or whatever you want to call it.
It seemed more like hyperbole, and I certainly didn't get that from what you said.
You are absolutely correct. This place is populated with quite a few nerds. Nerds typically have subpar social skills, which is is both fueled by and results in a lack of empathy.
>"I ♥ people; look for ways to make them happy, and empower them."
The propaganda arm of the Soviets is called "Pravda", which means "truth". It's like people who say "I'm such a nice guy", "I'm very humble", or this author saying "I love people and my friend" but then they talk shit about their friend in this very article.
Listen not to what someone says, observe what they do. "Actions speak louder than words" and all that.
>I wanted to talk about its garbage collector (1, 2), its cooperative scheduler that many people think is a preemptive scheduler, its very loose approach to correctness… and he didn't want to talk about any of that.
This is not the way an emotionally intelligent person approaches a conversation. The idea that a conversation should be a demonstration of ones own knowledge is a pretty common notion I see with socially-stunted geek types. Growing up with a narrow or minimal social group will do that, it's no one's fault, but it's a pretty clear indicator this person's advice on interpersonal relationships shouldn't be taken too seriously.
In the same way you can tell immediately from a blogpost that someone is an inexperienced engineer, the takeaway from this one for me is that the author is an inexperienced friend.
Good thing you and the other apparently high EQ commenters in this thread are here to set the records straight and bully some guy over his personality traits as determined by you after reading a single blog post.
Thanks for a succinct description of something I’ve been noticing a lot lately. This is going to stick with me.
But in a reply to your comment there's already someone talking about nerds not getting on with "MBA types", like this is some American high school film and not real life...
For things my wife wants me to go to (without the kids), I will go, but I tend to just sit there and not talk. I'm fine observing. People find that socially awkward, but her friends are used to it by now.
My friends are used to me sometimes saying weird/crazy shit.
Think about it like this: yes, I can act properly. But it's like work. I would rather leave work at work.
One key indicator of whether impaired empathy is the result of ADHD is that everything tends to be communicated as either starting from or directly referring to the person forming the communication almost as if narcissistic, but not necessarily with a selfishness intent.
I personally think people can make empathy mistakes without having a permanent neurological disorder.
Please stop and go educate yourself.
ADHD is at times co-morbid with autism, but they are not the same thing, have different neurological causes, symptoms and treatments.
Sincerely, a diagnosed ADHD, non-autistic person that self-identifies as an empath (i.e. the opposite of a psychopath. I can read body language and empathise with people better than most. It's not always as fun as one might think.)
A common misconception is that empathy means love and compassion for everybody. No. It just means being able to easily put yourself in other people's shoes and feel their mental states. Empathy alone doesn't turn you into Mother Theresa.
Bloody hell the gall of some people.
That's the whole appeal of many programming languages, they massively simplify the mental model (for a price).
I've been a lot happier and more productive since I switched to a slow language (which younger me would have been sad to hear).
"The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt."
It's usually used in a tongue in cheek manner to mock Go which is usually pretty funny but it's disingenuous to argue that it seriously implies that go programmers are not talented.
I don't even code in Go these days but I hold HN to a higher standards.
I had a similar experience with e.g. Flash vs GIMP. Even after a decade of not using it, I found that the Flash shortcuts were intuitive to me, but GIMP (which I use every day, several times per day) never quite "clicks".
I'm not exactly sure why this is the case. Another example is that I rarely use Python, and yet find myself vastly more productive in it.
The explicit choice in the design of Go is to prefer fast reading over fast writing, which helps maintainability and debugging.
Complex language features are terrible for maintainability: the reader may not know the feature, it may interact in unexpected ways with other language features, or have other non-obvious pitfalls. Debugging these things are ultimately a waste of time, and time is the highest price of all. And for what?
I believed this to be literally the case, that Go was designed for the "lowest common denominator", i.e. to make that area of programming at Google more accessible than it was previously. Have I been misinformed?
In Spanish there's a saying, la confianza da asco, that could be translated more or less as "familiarity sucks". You often treat your friends and family worse than you would to strangers. It also means that if a good friend doesn't talk truth to you, who will?
Friends are people you can talk like this about and they are still your friend afterwards.
Recently, I most frequently notice it when people discuss potential job losses from AI automation. Regardless of whether or not this is good for society, it's absolutely bizarre how many folks around here (and some other places, like related subreddits,) gleefully dance on the grave of artists of all people. Some seem to disdain creatives wanting to participate in our economy using their hard-won skills and vocation, almost as if their doing so is oppressive to non-artists. Others seem to think it appropriate to act like they've just beaten them in a game. The majority of folks around here seem to act pretty reasonably about it but that vocal minority is obnoxious, to say the least.
Accuracy of their predictions aside, it's just a disgusting way to talk about people whose careers, they imagine, were just unexpectedly flushed down the toilet through no fault of their own. Unsurprisingly, these people usually have the least sophisticated, and least useful philosophical understanding of what art is. I imagine this is a cognitive limitation directly related to their empathic limitations.
Perhaps unsurprisingly, this falls down on several points. It's just a disgusting way to talk about your fellow human beings when it's your own failures tripping you up. I imagine this is a cognitive limitation directly related to their own empathic limitations.
In conversations about AI, people usually want changed behavior and similar concrete shifts. Empathy is viewed as a lever to produce those changes. When the changes are not forthcoming, the conclusion people reach is that clearly it's because the emotional experience of empathy isn't happening. This avoids considering awkward and unpleasant questions such as if there may be other good reasons why those changes are not forthcoming from a person who may be experiencing sincere and genuine empathy.
I spent a lot of years as a professional software engineer. Many of those left me daily on the receiving end of people for whom calling on the empathy of others was their preferred means of shaping behavior. I had to learn to set aside those emotions in order to preserve my own judgment. Now I see, daily, the same kind of people deploring that the tools they taught me to resist are not working.
What I see in this blog post is someone relating a story in which an awkward encounter is anonymized. The anonymization is itself a form of empathy in action - the person is not called out specifically, only the conversation. There's plenty of room to criticize the author in what is presented, but we really have no idea who missed what cues in that conversation. It's not a kind comment on either person.
b) Your argument that people solely use empathy as a kudgel to get their way is not reflected in reality. What you describe is emotional manipulation, and as far as I can tell, you're essentially arguing that all calls for empathy in conversation are emotional manipulation... which is ridiculous.
c) Simply speaking about people respectfully is actually important and doesn't change the concrete components of a conversation. Discussing whether or not there should be some concrete action in response to a bunch of people losing their livelihood doesn't benefit from "lol get a new career, idiot." If you don't understand that, you've probably got a serious problem understanding the effect your words have on other people.
The only broader comment I offered was that I have worked with a number of people who operate that way on a daily basis. I understand why. It helps them hit their professional goals, ensuring their livelihood and those of their families. Many of them see a resistance to these tools as a lack of respect for their skills, abilities, hard work, or reasonable economic interests.
As to personal respect - how prepared are you to see respect in someone saying they understand but disagree? I can both understand the impact of my words on other people and refuse to shift my position because of their emotional response. Many others may not react as well as you to a compassionate, empathic, kind, caring, and understanding essay arguing that creatives feeling threatened by AI should seriously consider a change of career.
Sorry, no. You're conflating two very different things. Saying it's unethical to entirely disregard people's livelihoods when deploying new technology doesn't even resemble an ad-hominem attack. Saying that anybody who has an opinion that doesn't match yours is arguing in bad faith IS an ad-hominem. For example: equating advocating for considering people's livlihood as being emotionally manipulative, full stop. It's pretty ironic that you're accusing them of not respecting opposing opinions.
> The only broader comment I offered was that I have worked with a number of people who operate that way on a daily basis. I understand why. It helps them hit their professional goals, ensuring their livelihood and those of their families. Many of them see a resistance to these tools as a lack of respect for their skills, abilities, hard work, or reasonable economic interests.
I don't know anything about your daily life, but I do know that trying to apply the motivations of the difficult people in your life to others you find similarly difficult is pretty intellectually lazy.
> As to personal respect - how prepared are you to see respect in someone saying they understand but disagree?
I do it all the time. I'm always the one trying to get people to see things from someone else's perspective. In this topic, specifically-- I strongly argue with people who think these technologies need to be locked down and left to huge companies solely to protect people's careers. I argue with developers who don't think they need to consider anything beyond technological advancement when deploying technology. Both opinions completely fail to acknowledge the needs of other people and the consequences for protecting their self-interest.
> I can both understand the impact of my words on other people and refuse to shift my position because of their emotional response.
Ok, great. Unless you prove that's true of everybody else, that doesn't address what I initially said.
> Many others may not react as well as you to a compassionate, empathic, kind, caring, and understanding essay arguing that creatives feeling threatened by AI should seriously consider a change of career.
You're right. Many others might not react well to a respectfully worded essay that said those things. You'll notice that I never, ever said that people who advocate for balancing technological advancement with the needs of the people replaced by it are fundamentally unethical. At all.
Is it? I'm pretty sure people in positions of authority are mentioning empathy constantly while it's rarely mentioned in polite conversation.
Maybe your polite conversations?
I suspect this might be like the folks who put down windows administrators.
I think it's sort of like "windows has a gui, anyone could do that", which might mean they're not special like me.
We need to consider whether we should foster more empathy or simply adapt to the existing landscape. Being practical and discerning, sometimes to the point of discrimination, has proven effective in areas like space exploration, business, and even the natural process of evolution. And tech, too. Over the past 30 years, the tech industry has achieved remarkable feats, feats that would seem magical to people living a century ago. This success stems from swiftly testing new ideas and people, and discriminating between those who can deliver results and those who cannot.
However, such judgment or discrimination can pose problems. While it might be beneficial in natural systems, facilitating improvement, it isn't perceived positively in our society. We aim for fairness and equality for everyone. The term "discriminate", even though integral to nature and many productive systems, often carries a negative connotation in sociology. And indeed when we look at examples of unfairness and inequality in history, they are generally seen as immoral. But I wonder if that is because the inequality was often means to an end for someone else's decadence.
Here's a difficult question: should tech become more empathetic or continue to discriminate based on ability? If we become less judgmental of skills, we might not achieve as much. If we continue to be unempathetic, that will cause social friction. While I don't have a definitive answer, it's certainly worth considering.
In my tentative opinion (since I don't feel particularly adamant about it), we should continue assessing individuals based on their technical understanding in the tech realm, but within reason. We need to maintain humility, recognizing our limited knowledge and potential to misjudge others. Our critiques should be measured, and we should avoid letting our assessments of others' technical skills cloud our perception of their worth in other areas. After all, one can possess excellent personal attributes yet lack technical skills or be unfit for a specific tech project. In that sense, I lean more heavily towards the fundamentally non-empathetic approach. But that's just N=1. The important part of my message here is that we need to acknowledge the equity/empathy-effectiveness trade-off and be conscious of it.
The description is undiplomatic, could be written in a more roundabout way, but this could be read as even more haughty and rude. I'd say that as human collectives we need to maintain a grip on reality, and it is wasteful and dangerous to live in a web of polite lies.
In reality, there are vast cultural differences between different English speaking regions, which foreigners often overlook due to the shared language. California, New York, Miami, Johannesburg, New Zealand, and rural Yorkshire are all technically "Anglophone" in some broad reductive sense, yet are as culturally distinct (or even moreso) as, say, Sweden and Greece.
Don't worry. The friend is probably imaginary just for the story.
In fact, I really can't stand when I talk to someone and they seem to agree unconditionally with everything I say; it's not believable. Surely they disagree, why can't they express their feelings? Why is no one willing to go on a limb and be wrong or criticized? I find it particularly prevalent in the tech circles, when talking to parents of other kids in the SF Bay area. Everything is very picture perfect, and I can't believe it, so I feel I can't trust the people speaking. They're too nice, too polished.
I like my friends who will disagree with me (most of the time respectfully) and allow me to say stupid things and forgive me for my imperfections, and equally for theirs.
I'll try to be more mindful in the future, but I think "the original characterization doesn't trash him" is defensible. If he sees the blog and thinks its unfair, he's perfectly able to reach out (we're not actually very close). I make it clear we value different things but I never explicitly say "this guy sucks" _because I don't believe that._ He's a fantastic dev who's built great systems, but I wish we had a better framework for chatting about Golang.
Edit: I've updated the language with a few more details to better reflect how that whole interaction went down, which was a playful chat between two seasoned devs with ~12 companies between them. I didn't want to spend too much of the article on the anecdote, so I originally cut out some surrounding context (he was excited to "get into it," it's not like I just came at him when he said "I like Go").
Ive seen like hundreds of discussions like that
Java vs c# vs rust vs go vs kotlin
It is always heavy of emotions, unverified claims (performance especially)
and dependent on what stuff do you value.
This kind of discussion requires wide knowledge, hands on experience, curiosity and open mindness.
All of those 4 are really desirable itself, so together even more and are really rare!
>I prefer to work with an excellent software engineer, who doesn't tie their identity to a specific language or technology (e.g. would prefer a great hacker than someone who identifies as a "Ruby developer" or "JS developer.")
Why it matters to you how somebody calls himself?
Is this "single lang programmer" insult variation?
Especially when you are aware that concepts are above languages
>For all my advocacy in this post, it may surprise you to hear that I believe it takes years to be excellent at a language. It's not just syntax, it's soil and atmosphere: common bug flows and how to spot them, footguns, tooling,
Agree!
Many people do not get it, they are always like "you can learn langs after your first within a month" or so
>Functional programmers insisted without evidence that their programs were More Correct.
Hah
In my experience: half a year minimum, and only after your 10th. The amount of uninteresting trivia that you need to wade through on your way to concepts you already know is vast, much greater than you'd remember from 10 years back when you learned your previous language. More then 10 languages I already know do help, in that I can easily pick up any language in a matter of days, but... that's only if we're talking about the language[1]. Developing a skill in using that language, including absorbing the specific culture (books read, talks given, whose blogs to read, which Discord/Slack/#freenode to visit, and so on) and learning the details of the ecosystem (from stdlib to common libraries to frameworks, to the details of implementation, the FFI, and so on) and it's a lot of things to learn.
Well, at least I know that my next language will be a lot easier to learn, thanks to a revolution in the rubber duck industry, which gave us a duck that can - sometimes convincingly - pretend to understand what we're saying. And sometimes even gives you a hint that turns out to be real! Oh, the progress...
[1] As long as there's no genuinely innovative features in that language. Which, sadly, seems to be the case 95% of the time.
To a newspeak school to unlearn precise terminology.
So to translate OP, "soil, surface, and atmosphere" apparently refer to semantics, syntax, and runtime.
("Pedantic" is a favored word these days. In my days, objections to those who actually knew something about CS was that they are "academic", and "theoretical".)
But yea, maybe we can't have a PL conversation without also having a conversation about our own language? Ugh
An argument that suggests people dont want to talk about the things you want to talk about and then uses fabricated classes of thinkers to suggest the things you care about are the grounded ones is just well written flame bait. You can easily find a set of people online who can argue about the garbage collector behaviour of several languages: thats actually pretty cool. But saying people arent hackers because they dont want to discuss it the same way is literally defining a set of people to exclude them from your “group”.
> innovation tokens are completely made up, it's like talking about the finite number of "love tokens" you can give your spouse in a given year.
You can't complain that "'atmosphere' questions are extremely based in feelings" and then just get high on feelings like this.
The amount of "love tokens" you can give your spouse in a year is absolutely finite, because they take time and attention. You can see easily this in the complaints that come in advice columns and relationship subs. And innovation tokens are no more made up than anything else. Time and attention are finite at work just as much as at home.
Hackers didn't go anywhere. The solution to the puzzle is that hacking is an ethos not generally suited to creating profitable businesses. However, we've seen a massive expansion in business use of computers, and most of those businesses are trying to be profitable. Yes, a bunch of those early companies were populated by hackers because that's who knew how to use computers then. But the industry has changed as more and more people have seen it as a professional career, not a way to feed a hacking habit.
Hacking is still alive and well if you know where to look for it. People are still doing lots of weird and wonderful things. But they are, thank goodness, not doing them as much at their day jobs. And as a person who has had to clean up other people's "play", I say: hooray! Play at home. Play in disposable playpens. Production is for shit that works.
This blog post was very painful to read without suffering second hand embarrassment.
if thats the case, then I formally suggest that such people can get in the sea.
I might be somewhat unfair, but that was my reading.
> innovation tokens are completely made up
So are programming languages.
Innovation tokens are there to make sure that a business can complete a project vaguely on time and vaguely on budget.
Look the reason why people were able to get away with pissing away millions of dollars in pointless re-writes of things is because the speed of business based on those systems was slower. Now, if your site is down, then customers flee.
I mean sure, writing your own database for your SaaS company might be a thing, but its almost certainly expensive and pointless. You're on the hook for scaling it, recovering it when it fails, and finding and fixing all the bugs.
In short, this article, I feel, encourages a damaging, selfish side of CS that I think should be phased out.
Anyway, I think the author missed the point a bit with his friends argument about "Go developers knew that all you need is a for loop". It's not just an "atmosphere " argument. The programming language literally restricts you to using for loops. That's a surface property of Golang (or maybe it used to be, haven't used it in a couple years).
Golang has been designed to have a minimal and thus very smooth surface. Those issues the author mentioned about Python, that's rough surface.
The article then digresses into the main point which is that engineering leaders are afraid of spending innovation tokens without giving evidence that this is more so the case than it was before.
Not sure if it's relevant, but Twitter starting on Ruby was them spending an innovation token. They then realised there was a big large scale low latency high throughput situation that Ruby didn't have a suitable ecosystem for, so they hired a team that had experience scaling these sorts of systems specifically with Scala. Picking Scala was in that sense the safe choice, the risky one would have been to try and get the existing Ruby codebase to apply the concepts from Scala (which is now more than a decade later a reasonable thing to do in Ruby).
isn't Kubernetes mostly Go? Just sounds like an arbitrary limit. I say that when I try to limit shell scripts to a single-scroll in editor.
There is a FOSDEM talk about it.
And how things are going in CNCF projects, if Rust had been more mature in 2014, most likely it would have been Rust instead.
Maybe if you're familiar with something like Haskell Scala is more straightforward to decode?
Only if it's a particular flavor of Scala I think. Even then there's so much "excess" added by Haskell-esque Scala you'll have to develop the skill of mapping from one to another.
A simple but realtively easy example is sum types in Haskell are case classes in Scala.
I'll add some anecdata, to give more context on why "atmosphere at all costs" might be en vogue.
- Most software engineering is CRUD
- Almost all 3rd generation, higher level languages can achieve CRUD (e.g. Javascript, C#, Java, Python, Ruby, PHP, Python, Perl -- even Bash)
- Most engineers will not have to dig around in the internals of a language to be able to do their jobs (e.g. that you can fine-tune and pick your own garbage collector (or even disable it completely), depending on the domain in Java (such as low-latency environments); whereas in .NET, you cannot really tune, swap out, or turn off the GC completely)
- Without needing to know the internals of a language, all the aforementioned languages are largely interchangeable (again, for CRUD -- and based on taste)
This is why you may commonly see people recommending that even if you don't know a language, you should be able to pick up whatever language a potential engagement requires (see: "a senior should be able to pick up frameworks and languages within a week or two"). I've always disliked this way of seeing the world. It rubs me in a certain grating way: that most work is CRUD, so you should optimize your career for being an interchangeable COG.
In my experience, if you take the time to learn a single language or ecosystem thoroughly, your chances of finding work for that specific ecosystem greatly increase -- versus the "generalist." Likewise, you'll be able to tell when it's the tool that's messing up, or yourself. Further, you'll be able to find more interesting, "deeper" work to handle -- rather than just building another CRUD web app. And lastly, life is too short to work with stuff you don't like.
For example, I love the .NET ecosystem. If I want to build something that isn't in the HPC space, I'll reach for it first. I know Java, but I don't like Java -- and I do not ever want to work with it. My ability to land .NET work is much easier, because I know the ecosystem -- not just how to program in an OOP language.
Or how about databases? I love Postgres. If I want a great OLTP DB, without any fuss, I'll reach for it first. I know MySQL/Mongo/SQL Server (to be fair, this one is also really good)/etc., but I don't like most of them. My ability to land work that utilizes Postgres is much easier, because I've taken the time to thoroughly understand it.
Or in other words, most people in the game are optimizing for commerce: how much money they make.
The hackers? They're in lower-level, systems programming languages; they're in compiler and language design; they're in low-latency or kernel programming; they're in stuff that isn't directly related to making money. Part of the reason I'm learning C++ is because the work there is more interesting (database engineering is very fun, but you need C++ or C in some cases) -- and the people more passionate. But also, because the gravy train is starting to dry up in CRUD -- anyone who can program can do it.
I love .NET ecosystem but it sucks that it lacks of fancy jobs that you mentioned. If you want to do compilers with C# then it feels like you have to work for C# Compiler / Roslyn Team(s)
For cool jobs there is shitton of CPP which I do think is huge mess and I hope that Rust will steal CPPs market share because my experiences with it were way way more pleasant
There's a few positions that intermittently pop-up doing "cool" work in .NET: usually startups, or small teams; the chances are much rarer, and you have to be in the right place at the right time -- but your chances are much greater than someone who's coming in from any other ecosystem (e.g. Javascript back-end).
Or in other words, sniper vs shotgun approach. You're going to get less targets overall if you specialize; but it'll be much easier to have a strong chance of being "the best" in the crop of applicants (or even for marketing purposes, a la personal consultancy).
It feels like those things can be better framed as ‘runtime/tooling’, ‘language/libraries’ and ‘ecosystem’.
And under that taxonomy it isn’t wrong for people who say they like a ‘language’ to not be talking about the runtime or the tooling.
Like, take JavaScript (the good parts at least): I like that language! And I separate that out mentally from the fact that I hate the browser runtime, and I don’t have much love for the node ecosystem. I have complicated feelings about working in javascript as a result. But I still consider myself an admirer of the core good ideas at the heart of the JavaScript language.
The surface matters a lot. You have to live there.
You aren't architecting a new programming language, man, you're talking to a guy about computers because you're wearing a shirt of a computer thing he liked. He wanted to talk to you because he had a mutual passion he wanted to share, and you openly challenged him in front of other people. Sorry, you were a shitty friend.
None of that is to imply the friend is wrong or inferior in some way
I am however now worried if I said anything about Go lol
Rather than assume what's going on in the other person's head, ask them. Assume good faith until evidence to the contrary. It allows less judgement and negativity, which leads to more fruitful conversation.
> He instead emphatically talked about how much he loved that "the Go developers knew that all you need is a for loop. Someone brought Scala into my company and I hate the mental shift."
All you need is a for loop? Interesting! Why did they say that? What design decisions informs this approach?
If someone with neither experience in scala or go were to choose one language for this project, why would they use Go or Scala?
If the guy truly has no idea what he's talking about, then it should be evident just by him speaking and you asking questions. If he does, then at best you learn something new or at worse hear a different perspective. Be an active listener and engage with what the other person is saying. You can be critical without being judgmental. It's sort of impossible to have bad faith in this way, because you're taking what the other person is saying seriously instead of writing them off.
For starters, Go not having a while loop.
It’s notable how little this article actually discusses the delivery of any form of value. The tech is not the end in itself, it’s a means to an end - and we live in an age with so many well matured and valid options that for many of the problems we seek to solve what tech we use isn’t necessarily a critical decision.
The author answers their own question - where have the hackers gone? We are getting on with it and building stuff. This kind of language flame war stuff just isn’t as important as it once (debatably) was. It’s a dying trope.
Thinking on the initial mistake our author made - framing the conversation rigidly through their own frame of reference - I’ve personally found Matthew Syed’s work on cognitive diversity helpful in understanding and addressing this. [1]
[1] https://graphic-designer-richmond.co.uk/2021/01/business-boo...
I find the soil, surface, atmosphere analogy useful.
Also, I am one of those many many Python programmers who don’t know much about Python. Fascinating how you can be quite productive in tech, even so. Perhaps that’s the glory of Python. But for the record, nobody cares about the specifics of import, or anything else, unless it is likely to influence a problem or solution that we are grappling with.
I’m curious about Python… but I also have a job to do and a deadline.
1. https://knowyourmeme.com/memes/oh-you-love-x-name-every-y
The difference between soil and foundation is almost as vast as the difference between soil and atmosphere. For people who think about programming in foundations they're more interested in how solving recurrence relations can lead to better optimizations; more generally speaking, how formal calculation of programs is influenced by or limited by language.
Today the same amount of knowledge makes you barely passable in a single niche domain. Consider web development. To get really good at modern web development, you need to know modern javascript, CSS and html. You need to understand how browsers work and all the quirks of how http requests and loads webpages - including what dozens of http headers do and how they interact. You need to understand the browser rendering process, performance tools, accessibility and debugging tools. And learn dozens of javascript libraries, like react, express, webpack, database wrappers, and so on. It’s accomplishment to learn all of that. But if you do, you still only know web programming. That knowledge doesn’t really translate to operating systems work, mobile development, databases, AI, embedded, etc.
Most professional programmers only have the inclination and capacity to learn one ecosystem. And, even then usually with big holes in their knowledge. True polyglots are rare because the mountain you need to climb to get there is higher. But we also depend on polyglots to guide us toward useful tools. Language / ecosystem choice still matters. It matters for performance, velocity, security and compatibility. But how can you really evaluate that stuff unless you’ve spent time debugging Go programs, or tried to squeeze every last drop of performance out of a big legacy Java monolith?
We’re left talking imperfectly from our own experiences. And living in whichever niche of programming we’ve carved out for ourselves. The days of everyone being all terrain programmers is over.
The cambrian explosion is happening within subfields too (e.g. AI -- everyone is a specialist within a specialty).