My startup co-founder recently wrote an article on what I previously considered "common knowledge", an article which 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.
This is about "developers", and our role in gatekeeping "knowledge" like the following from others
Personal attacks aside, what caught my attention, that drove me to write this article - was the following comment:
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?!
pushmade such a big difference
- EU: Well
concatneeds to create a new array, and copy everything
- 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 me. 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...
Which 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 then 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.
Inversely, she has really deep encyclopedia-like knowledge on the various quirks of CSS, and how modern front end frameworks like
vue.js works. Something which I admittedly still make very fundamental novice mistakes till today.
So if my assumptions are wrong to a fellow "senior" developer with 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?
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?
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, then 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 on not gatekeeping "knowledge" from others.
For almost all the personal attacks / mean criticism I seen 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 sub-consciously 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 of 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.
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.
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.
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
Also, consider reading up on recurse.com/social-rules.
Thanks for writing up this post @picocreator !
Along these lines, I am a big fan of the Recurse Center's social rules -- particularly in this case the one about "no feigning surprise." Their explanation of this:
Feigned surprise is when you act surprised when someone doesn’t know something. Responding with surprise in this situation makes people feel bad for not knowing things and less likely to ask questions in the future, which makes it harder for them to learn.
No feigning surprise isn’t a great name. When someone acts surprised when you don’t know something, it doesn’t matter whether they’re pretending to be surprised or actually surprised. The effect is the same: the next time you have a question, you’re more likely to keep your mouth shut. An accurate name for this rule would be no acting surprised when someone doesn’t know something, but it’s a mouthful, and at this point, the current name has stuck.
Feigning (or actually being) surprised is definitely not as mean spirited as some of the examples you referenced, but it can still discourage folks that are new to an area from speaking up or reaching out for help. Just wanted to note this as well since I think it's pretty easy for (otherwise well-intentioned) people to do this without meaning to.
And understand the difference between passive/active gate-keeping
I think the problem is two-fold.
One part is the active gate-keeping. People running around telling everyone they or the tools they use aren't good enough.
People shitting on each others' work for all kind of senseless reasons instead of helping each other out. That needs to stop and I have the feeling that more women and minorities in the industry will just lead to that. CoCs are spreading like a wildfire and people become generally kinder. The few old-school uber-nerds I saw here on dev.to didn't stay for long.
On the other hand, we have passive gate-keeping or simply ignorance. I guess that is what you're talking about. This can have many reasons and I can only talk about the ones I encountered.
I often had the impression I'm a bad-to-mediocre developer, so I didn't value most of the stuff I knew and this lead me to think I was one of the last in the industry to learn stuff. Took me a year to understand functions, took me a few months to understand closures, took me another year to understand monads, etc. I was always a slow learner, swimming with 9, biking with 14, so I guess that's where the impression came from that everyone else already knew the stuff I just learned.
I also had to work with many of such old-school uber-nerds who choose tech for projects and generally acted like they had it all figured out. Took me a few years of freelancing and blogging to find out most of them are just talking big and there are a whole bunch of people out there who don't know half as much as I do and would love to work with or learn from me.
For those interested in the accuracy of the yearly figures used above.
- 1991 : HTTP protocol 0.9 was formalised
- 1975 : The rise of portable computer such as SCAMP / IBM 5100
- 1958 : Fortran/LISP, the predecessor to most modern programming languages.
I have been sitting on this piece for some time, it is intentionally written in a way to not blame individuals for their past action, but to encourage them to reflect back on how to do better.
As writing is hardly my biggest strength, and I am sure my approach to this topic may be flawed as well. Any discussion, for similar experiences on this issue, either to encourage others, or to suggest other possible ideas, or even amendments that should be made to this article. Will be gladly appreciated.