I'm not entirely sure that i can agree with that statement in its entirety, at least in the context of this particular type of toxic gatekeeping.
If there are people who are inadequate at writing code and architecting software, then they should:
- not manage to pass their university classes and not get a degree or a programming qualification
- not manage to pass their internship by generating some value and proving that they're capable of learning and self-improvement
- not manage to get the necessary certificates for a particular technology, as a vague proof of basic competency
- not manage to solve the take home tasks that they're given by a company that's about to hire them or pass technical interviews
- not manage to pass onboarding for some months and therefore should be fired
- not manage to deal with their duties as a developer and therefore should be fired
Of course, depending on different cultures, these things could change (e.g. bootcamp instead of university education, personal projects instead of certificates), but none of those involve calling someone: "...mentally mutilated beyond hope of regeneration," just because they used BASIC, PHP, Python, or any other
easy language that let them solve easy problems without getting too deep into the internals of programming languages and how computers work.
Furthermore, the difference is in attitude - if a person doesn't pass one of the above, they can probably just upskill themselves and spend more time refining their craft, reading books, working on projects etc., whereas dismissing them entirely is likely to demotivate them and so they'll never achieve anything. It might also be selecting for the wrong types of people - those who simply brush off criticism like that and don't care, as opposed to those who are more sensitive, something that should hardly matter in regards to developing code.
There has to be a better and more constructive way of criticizing people and even dismissing them: for example, saying "Hey, your programming knowledge seems okay, but you should work on your system design skills. Try applying for a job in a year again," vs simply ghosting them.
> Software mistakes are common and expensive: there are very strong incentives to predict and prevent them by following processes and by putting someone competent in charge.
Lastly, this feels like the job of:
- the compiler, for errors and warnings
- the IDE and language server, for general suggestions
- the linter, for code style rules
- static analysis tools like SonarQube, for additional code checks
- testing frameworks (including code coverage gates), for unit, integration and end-to-end tests
- manual code reviewers, after everything above has been resolved by the code author
- QA specialists, after all of the previous checks have been successfully passed
As for having competent leaders, sernior developers, architects, security specialists etc., i wholly agree! That's not to say that the culture of software development needs to be a parody of anti-social behaviour.