Popular Elitism In Programming

How your path of learning can affect your judgement towards other people

Fagner Brack
ITNEXT

--

A cartoon made by James Gillray called “Copenhagen house” (1795). The cartoon is depicting John Thelwall, a British Political Orator, Writer, and Elocutionist from the 18th century. The cartoon shows Thelwall from the top of a stage made of wood, preaching to a crowd with the right hand in the air.

I recently stumbled upon several comments from a submission on Reddit of an author who had a hard time installing NodeJS in their system. I never had any problem installing NodeJS and this post is not an attempt to judge that, only that those comments highlighted a trend that I’ve noticed happening offline. It's a trend of people ignoring the perspective of those who are not like them.

The comments were many, but they had this common theme:

I may sound elitist but, if you can’t install some tool, then you're not good enough for programming.

When you start programming, it's prevalent to have thoughts like this: To be good at "y", I had to learn "x". Therefore, to be good at "y", you have to learn "x" too. Otherwise, you're automatically bad at "y".

For example:

  • To be good at web development, you have to know NodeJS and React.
  • To be good at web design, you have to know CSS and Photoshop.
  • To be good at programming, you have to know how to install NodeJS.

In this case, "y" represents a broader field of knowledge and "x" is a technology or specific technique within that realm.

Unlike other fields such as medicine and civil engineering, in most countries, software programming is not regulated. Each programmer follows a very specific and unregulated path when learning how to program. The set of technologies and techniques the programmer learns in that path is unique to themselves. The route includes being immersed in specific technologies from tutorials, inheriting the tooling of their mentors, or using the same techniques of the peers within the communities they participate.

Thinking that everyone has the same learning path ignores that the world is far bigger than we can imagine. It's more likely people on the other side of the world, or even on the other side of the street, have taken a completely different path when learning how to program. For that reason, some programmers may have a completely different perspective on "y", which can overcome the need to learn even the basics of "x".

Imagine Dijkstra, one of the best computer programmers who never cared about computers.

I know people with deep knowledge in some areas. They can make most senior devs of FANGAM feel clueless about programming and engineering. Those people I know probably are not aware of "NodeJS", "React", or "Java". They may take a long time to figure out how to set up those tools and their dependencies depending on the clarity of the documentation and how difficult they are to install.

However, once they learn how the tools work, they can use their knowledge of fundamentals and their deep experience in related topics to revolutionize the whole development process using those technologies. It can even make the creators of those mainstream tools feel stupid for many of the decisions they made. Sometimes, the tools are getting in the way of producing better outcomes.

I call this linear way of thinking, for lack of a better name, where you believe everyone has the same path of experience that you have, as Popular Elitism (or "Poelitism" for short).

Poelitism is when you believe everyone had the same path of experience you had when learning the same area of expertise.

Poelitism is hurtful to your career and can't sustain the test of time. As you get more experienced, you start to realize you could make the same statement like when you were a beginner, now improving your "y" after learning other kinds of "x". Likewise, people who are more experienced than you in other areas of programming can point to techniques you would never know existed to solve your current problems and make the following Poelitistic statement:

To be good at programming, you have to learn Z … and you probably won't need X

However, even if it's ultimately true that you have to learn "z" instead of "x", that's not a helpful statement. You can't distinguish if it's right or wrong from the merits of the argument alone. Poelitism, either if it's ultimately right or wrong, is not better or worse than each other. They all suck. They're just opinions based on each individual's subjective experience and learning path, providing no significant value to the conversation.

Although you can be perceived as an "x" genius by some, Poelitism can adversely affect how more experienced devs perceive you. It will make you sound stupid when you find people that know unreasonably deep subjects that can increase your knowledge of "y". Most of what they say will probably sound alien to you, and you'll believe they are stupid because they can't do the basic "x", so they must know less than you do.

To give an example, look at the comments in this thread How the Slowest Computer Programs Illuminate Math's Fundamental Limits on Reddit. It's more likely someone in that thread has lost the ability to do basic arithmetic, and that doesn't change the fact they know more about math than most people reading this post ever will.

To give another example, look at the post It Doesn't Matter How Fast You Write Code. In that post, I explain why learning ways to type code faster can get in the way of productivity. Some experienced programmers may type much slower than the average programmer and create much better outcomes. They may create a highly maintainable software design, so there's no need for them to learn how to type faster.

Poelitism makes a programmer sound stupid in the face of more experienced devs.

It's essential to be aware of Poelitism if you run technical interviews. You'll likely find a programmer who fails your tech interviews but excels as a hire. The programmer failed at your interview because the difference of skill is so significant that the interviewer's assumptions don't make any sense to them.

Likewise, you'll likely find a programmer who succeeds in your tech interviews but is not performant as a hire. The reason the programmer succeeded at your interview is that the difference of skill is not significant. Therefore the company won't capitalize on the knowledge of that programmer to improve. They will remain average.

If you always hire those who can pass your technical interview, you’ll miss many opportunities of hiring the best of the best; the questions in your interview probably makes no sense to them.

Here's how you fix this problem: focus on what people know, not what they don't.

You'll never learn anything if you focus on what people don't know, but you can learn something new if you focus on what people do. Do you want to hire someone similar to your peers, or do you want to hire someone who can push the team forward?

Poelitism is unproductive for a healthy discussion, debate, or hiring process. They make experienced devs look inexperienced, and inexperienced devs appear as if they are experienced. It runs the risk to become more of a battle of ego than a productive exercise. It makes you focus on what people don't know instead of what they do.

Like Poe's Law, unless there's a smile, it's tough to know if the other person is joking or being serious.

To be good at programming, you have to know the limits of BB(n)

THAT would be elitist.

Edit 5 June 2021:

Paul Butler linked on Hacker News a post from 2017. It highlights some alternatives to handling the surprise of someone you expected to know something but don't. Useful to avoid becoming the Poelitist in the conversation.

If your team would benefit from a talk and/or Q&A session from me about this post or any of the other projects I have going on, please drop me a line at contact at fagnermartins.com.

Thanks to Avi Kessner, Jacqueline Lee, and Stephen Vance for their insightful inputs to this post.

Thanks for reading. If you have some feedback, reach out to me on Twitter, Facebook or Github.

--

--

I believe ideas should be open and free (as in Freedom). This is a non-profit initiative to write about challenging stuff you won’t find anywhere else.