Background Context
My startup co-founder recently wrote an article on what I previously considered "common knowledge", an article that went "viral".
Unfortunately, as per the rules of the internet. Anything "viral" will draw a fair bit of criticism and even personal attacks, especially outside dev.to; Some which I saw hurt my co-founder personally, as we look through them.
However, this is not about sexism, javascript, or the internet rule (all of which have valid problems worth highlighting separately).
This is about "developers", and our role in gatekeeping "knowledge" like the following from others
Read this dev.to article: Javascript Array.push is 945x faster than Array.concat 🤯🤔 - DEV Community 👩💻👨💻
Personal attacks aside, what caught my attention, that drove me to write this article - was the following comment:
Isn't it obvious that ______________ are you a ___,
Never ever write such < > articles again.
Side note: As its not my intention to shame/attribute the original author. The quote is paraphrased to make it un-googleable and to remove expletives. To be clear, the exact wording is different
It struck me not only because of how cruel it was at the end - but how the statement, was something I was guilty of saying as well.
SL: Really?!
push
made such a big differenceEU: Well
concat
needs to create a new array, and copy everythingSL: Doesn't the javascript jvm, automatically optimize such execution? Seeing that I do not use the old array
EU: Well it doesn't, and unfortunately due to the spec ...
SL: I should write an article on this
EU: Isn't it very obvious, I doubt it's worth writing
SL: It wasn't obvious to me
EU: (in my head - I am surprised you didn't know)
EU: Ok, it's worth a try then
SL stands for Shi Ling, my co-founder. While EU represents me, Eugene.
While it's much lighter in tone, the line of reasoning to not write the article is the same.
In the position of seniority, even lightly brushing off of such content being written can have chilling effects on other junior developers and peers. Especially in a much larger organization. So while such statements may not have deterred Shi Ling (she wrote it in the end), it could however for the rest of my peers around me silence them.
And was I wrong in my criticism!
Looking at the number of positive retweets and comments on how "I need to rewrite my code", or "I never knew", occurred. It wasn't obvious, and it is an article worth writing.
However, what hit me really hard - was when out of "frustration" or immaturity. I regrettably looked into the commenter's profile.
I realized it wasn't just a simple careless statement by a young teenager.
It was from a well respectable senior engineer, in charge of a large team of developers, with a similar background to mine. To me, it was terrifying.
I was looking into the mirror, of what could be me in the future
And on further digging around the various comments, he was not the only one...
This brings me to my next point...
PSA: What is common to you, may not be to another developer. So think twice before suppressing such content.
As an industry, programming is relatively immature, of being less than 200 years old (starting from Ada Lovelace). The web industry is even younger at being under 30 years old.
This pales drastically to
scientific medicine: ~2500 years old
architecture and construction: >5000 years old
As a result, the technology we learn seems to be constantly changing, with little in the way of a stable (think 12+ years) long-term standard for anything.
By this definition: any assumptions you made on what is learned for your generation as "common knowledge" that isn't worth spreading, is a false assumption made to your junior and peers.
We should also kick out the notation that, if one does not "understand this", that individual is not deserving to be called a developer.
To clarify, my co-founder is by no means a "junior" developer. We both have very very different specializations.
While I may have really deep-dive knowledge on the ES5 spec, and how V8 works internally, which distorted my view on what's considered "common knowledge" for javascript.
Inversely, she has really deep encyclopedia-like knowledge on the various quirks of CSS, and how modern front-end frameworks like vue.js
work. Something which I admittedly still make very fundamental novice mistakes till today.
So if my assumptions are wrong to a fellow "senior" developer with a different specialization, wouldn't it be worse for a new "junior" developer. Especially with the rise of coding boot camps.
So until we can figure out a common stable universal engineering standard for programming, which we can assume as "common knowledge", like how architects or doctors do (which we probably will not for another 50 years). I am heavily ringing this bell now, as we are like no other industry out there.
Never make that assumption.
Heck, to the unconvinced old seniors. Many of us (including me) used to consider C style memory pointer manipulation as essential common knowledge, which in absence, we used as grounds for a "no hire" for juniors.
How wrong are we now in modern web development and the programming language they use?
Bro-grammer? Couldn't we be kinder?
Even with valid criticism...
Ask yourself, would you have possibly made the same mistake?
Would you like to have such things said to you, or your loved ones?
Is it constructive criticism?
Instead of gatekeeping what should be written or not written on "superior grounds". We could instead encourage improvement with our criticism.
For example, one repeated criticism. Is regarding benchmarking methodology. However instead of statements like.
Worst benchmarking ever
A kinder, more constructive comment would be
We could improve the benchmark by doing __ instead of __
And to say it upfront, for most of the constructive criticism on benchmarking, you were right. While it probably will not change the end result, due to the large difference in between. It is a valid area of improvement, and both my co-founder and I do thank you for that.
Or as XKCD lovingly put it
Saying 'what kind of an idiot doesn't know about the Yellowstone supervolcano is so much more boring than telling someone about the Yellowstone supervolcano for the first time.
So which would you rather be?
Bro-grammer?
When I said this is not about sexism, I mean it.
The suppression of knowledge probably happens regardless of gender. It definitely happens from senior to junior as well.
However, the phrase "Bro-grammer" is used intentionally.
I am sure there are exceptions (there always is), but this is more on us the majority, the male gender of the development community, than the other way.
And while I will not have any statistical numbers to back it up.
The minority groups within our community know very well how it feels like to have their voice heavily suppressed.
The minority groups are the ones most mindful of not gatekeeping "knowledge" from others.
Almost all the personal attacks / mean criticism I saw to my co-founder was from our side of the male development community.
And it's on us to improve ourselves on this, to improve our community. Consciously, in speaking out against it. Or subconsciously in our words and actions.
I am not asking each one of us to achieve an unreasonable perfectionist standard (as there will be slips of tounges), nor am I criticizing who you are now.
I am saying this, as someone who has made mistakes as well. To make small incremental personal, mindful changes in us individuals that will allow us to push the community forward.
So ask yourself the man in the mirror? Will you make that change?
To improve the community around you. In encouraging the sharing of knowledge (as trivial as it may seem to you, or even me). Or to share such knowledge yourself.
I have seen similar things happen to other articles/tweets, anything I can do to help?
Instead of fighting head-on, and "feeding the trolls".
In cases of unconstructive criticism (eg. worse benchmark), in place of the author, asked politely
What do you mean by _____, how could the content be improved on?
This gives the individual, a chance to clarify as they may not always mean harm intentionally, sometimes it could simply be words being lost in translation.
Just keep in mind to remain respectful, constructive, and clear to defuse any tension
For really harsh comments or personal attacks, it might be better to reply to the comment, or author, while ignoring the bully. To let them know that there are others who appreciated their work. While lightly pointing at the criticism.
Personally I found the content useful, regardless of what anyone else says. Thank you
The above is universal regardless of content type (it can be applied outside of the development community).
And finally, for the developer who engages in such criticism, and partly the reason I wrote this article - is so I can point to it in the future for others. As it happens to them.
Personally, I think what you are doing is great, regardless of what anyone else says. Thank you. And for the developers who say otherwise, we should be encouraging instead of suppressing our peers.
Keep in mind while doing any of the above, as you run the risk of diverting the critical comment from the author and onto yourself. If it gets personal on you, do not feed into it. Be strong and ignore it.
Know you have done a part in letting the content creator, know that the criticism is not the only voice there. And as an observer to the receiving end, even if they end up in silence, I will say it helps go a long way in knowing there was someone there.
For all the unsung heroes, who did so. Thank you.
Keep doing your best!
To my co-founder, even if you face a double standard in your work previously, or the triple standards in investors as you fundraise presently, or the cruelty of the internet as you write content.
To all the other working moms, single moms, LGBTQ, and other minority groups.
keep on coding
keep on improving
keep on writing
keep on doing, the various great things you are working on
do not let the criticism suppress you
push that glass ceiling
and be great at what you do
Peace 🖖
Additional advice from comments (on dev.to)
Also, consider reading up on recurse.com/social-rules.
And understand the difference between passive/active gate-keeping
History sidetrack
For those interested in the accuracy of the yearly figures used above.
1975: The rise of portable computers such as SCAMP / IBM 5100
1958: Fortran/LISP, the predecessor to most modern programming languages.
1842: Ada Lovelace, published the first known computer program
300 BC: Herophilos, the first greek anatomist to push scientific-based medicine