I have seen a worrying trend recently among corners of the web and software development community. This trend is the accusation of elitism and “gatekeeping” towards members of our profession who may for good reason be correcting incorrect use of terminology or poor practices and standards among other, often newer members to the profession. Worse still, this has too often been accompanied by unfair accusations of misogyny when the subject of such corrections is female.
Granted there has been in the past, and unfortunately still is, a problem with elitism, gatekeeping and misogyny among members of our profession and our industry at large. But I see the term gatekeeping thrown around too often and used wrongly to put down fair criticism or correction of false information. Often this is in online discussions when a correction or retort to a debate focused on issues around programming is presented.
This is a very worrying trend that does not help our profession move forward and advance itself. We should be able to challenge each other and debate issues, as well as coaching junior members of our profession and each other to better our working practices. If we cease to do this for fear of hurting each other’s feelings or being “negative” we will come to a position where we are happy with mediocrity as a bar to reach for. Far from being accommodating to newcomers to professional web and software development, this will be a severe disservice to those individuals.
Examples of disinformation I have seen
Below I will give some examples of disinformation I have often seen that led to fair criticisms of this information. These critics were more often then labelled as partaking in “gatekeeping” or being elitist.
1. CSS and HTML are programming languages
This claim is often accompanied by an accusation that those who disagree are gatekeeping and elitist programmers. That may be true of some of those people. But it is definitely fact that CSS and HTML are not programming languages and pointing this out alone is not elitist or gatekeeping. Just based on their characteristics and actual definitions we know they are not programming languages. This in no way devalues them as tools or lessens the skills of those who have good skills and knowledge of either or both technologies.
HTML: A markup language.
CSS: A stylesheet language.
You may ask why is it important to make this distinction? Simply because it is incorrect and as an industry we should accept certain standards of accuracy to be taken seriously.
For a computer language (of which the above both are) to be a programming language it needs to allow for conditions and loops/iterations. If the script can be run repeatedly or based on conditions in one instance, for example with if/for/while loops, it is a programming language.
Until you can create a CMS, payment solution, server-side application, entire interactive website or other projects in just CSS or (not and) HTML – they can not be regarded as programming languages. This is simply a fact.
The fact is web applications are now much more complex than they were 20 or even 10 years ago. It is not unreasonable to expect at least some knowledge of current frameworks, libraries or a particular programming language.
Coding is one of the easiest and most affordable, if not THE most easiest and affordable, skills to learn in 2020. There are countless resources to learn for free online and it costs nothing to create a code portfolio or hobby projects on GitHub or CodePen.
3. If you have ever written a line of code or a “Hello World” program, you are a developer
This is incorrect for two reasons.
Firstly “developer” is a job title. It is not the activity of programming a computer. Computer programming is also not an activity that is exclusive to developers or software engineers. As well as being something a user can do to get better use out of their personal computer, it is also a skill used in many other professions to some degree. Some of these professions are; data scientist, engineering, scientific and mathematical research, devops, business analysis and more.
Secondly computer programming is a skill. Learning this skill does not equate to having any particular job. If somebody can tend to plants in their home garden and look after them well so they flourish, that does not make that person a professional “gardener” even if they like gardening as a hobby, no more than somebody who knows CPR or first aid can claim to be a paramedic, or somebody who plays football in an amatuer team can claim to be a “footballer”.
Equating having written a single line of code, yet alone any amount of code, to being a “developer” is simply incorrect. Coding or programming is the skill, not the profession. If a teenager who knows how to code later pursues a career in medicine, law or marketing etc – would it be correct to refer to them as a “developer”? By the logic of some, this would be correct. But it is not.
You cannot self-identify your job title or profession.
Why is it problematic to not criticise?
If we fall into a trap of not having constructive criticisms, correcting misinformation in our sector or avoiding sensible debate out of fear of hurting feelings or offending others we are setting a precedent that we do not respect our profession enough to uphold standards. We would also set up a precedent that it’s okay to allow our new (and current) peers to put their own careers at risk by not helping them in correcting their misunderstandings or helpfully criticising their work or practices.
This could lead to the very definition of gatekeeping as it would create a heirarchy of the serious programmers who really know their craft, theory and practices well and all others who are not corrected out of fear of the person correcting them being labelled a gatekeeper or elitist. If we are to expect those both outside and within our profession to take us seriously we cannot allow such concerns to get in the way of reasonable correction and progress.
Why definitions do matter
Exemplified in the incorrect claim that HTML and CSS are programming languages, I can’t believe I have to say this in 2020: Definitions do matter. One definition that matters in the context of this blog post is the definition of the term “gatekeeping”.
Gatekeeping is the verb gatekeep in the present tense. Gatekeep means:
1. To control or limit access to something.
2. To limit (sometimes manipulatively, rather than directly) how much role another party, often a spouse, has in some task.
3. To limit another party’s participation in a collective identity or activity, usually due to undue resentment or overprotectivenesshttps://en.wiktionary.org/wiki/gatekeep#English
By correcting misunderstanding of our peers we are not doing any of these things. In fact I would argue that by not correcting members of our profession and each other, or challenging and debating each other we are preventing ourselves from learning and improving our skills, and can be harming that individual’s career prospects.
Also important to note that our industry is one that is truly international with teams often spanning the globe. Many members of our industry will be using English as a second or even third or fourth language. In these kind of situations it is imperative that we use correct definitions and terminology in a way that is correct and consistent.
Why “gatekeeping” would not make sense
I’m not claiming that there are not people who are truly gatekeeping in our industry. But I imagine that is a minority for one simple reason. It would make no logical sense. This is because it would mean that as an industry we were actively preventing or making it unnecessarily difficult for new people to join or progress. How would this be of benefit to us?
We need new members to join the industry to replace the programmers who are nearing retirement age or those leaving to pursue other careers. Also on a smaller scale we may need bigger teams to take on different projects. When people understand what gatekeeping is, they will see that it makes no sense for a profession to do that. Constructive criticism and correcting misinformation is not gatekeeping – it helps our peers to get ahead in the industry rather than hindering their progress.
To grow and advance as a profession we need to support each other and each other’s individual development. Part of this is correcting each other when we are mistaken or presenting information that is not entirely correct. Computers are not very forgiving of mistakes and poor choices in development. Us humans are able to be and can contructively correct eachother. Through doing this we strengthen our industry and the integrity of our profession.
We should not throw away what our industry has and can accomplish, and change meanings of terminology, purely for political purposes.