DEV Community

rhymes
rhymes

Posted on • Edited on • Originally published at rhymes.dev

You don't need to know everything (but you should know something well)

Dan Abramov recently published a couple of posts that made me think considerably. I regard these two posts as precious gifts. Let me tell you why.

In the first one, Things I Don’t Know as of 2018, he lists technologies and topics he knows little about or none at all. I'm not going to list them here because it would be beside the point.

Many developers struggle with the mythical manifestation of the omniscient programmer, those who inhale all the cool technologies (present, past and future). This myth probably arises from a combination of fluctuations in self esteem, peer pressure, unrealistic expectations, buzz wording as a sport, boisterous "ninjas" of software, aggrandized job ads and more. Going down that path either results in burn out or a progressive disappearing of one's social life.

So, as a breath of fresh air, I'm going to warmly suggest you go and read that first post. A couple of quotes:

We can admit our knowledge gaps, may or may not feel like impostors, and still have deeply valuable expertise that takes years of hard work to develop

This reminds me of the attitude of many devtoers that I follow with pleasure. Being knowledgeable or an expert in something and having no qualms at admitting where the end of that knowledge lies is a real quality. As a human in general.

I’m aware of my knowledge gaps (at least, some of them). I can fill them in later if I become curious or if I need them for a project.
This doesn’t devalue my knowledge and experience. There’s plenty of things that I can do well. For example, learning technologies when I need them.

This is the gist. Curiosity driven development (or "necessity driven development") are one of those traits that many successful developers have. Learning how to learn is even more important.

In the second post, The Elements of UI Engineering, Abramov talks about what he does know well, but with a twist that makes the article the real gift it is.

If the first list is about tools and stacks, this one is about metholodogy, patterns and the important things in UI development.

Abramov emphasises one aspect (and here we can draw breath the second time):

My biggest learning breakthroughs weren’t about a particular technology. Rather, I learned the most when I struggled to solve a particular UI problem. Sometimes, I would later discover libraries or patterns that helped me. In other cases, I’d come up with my own solutions (both good and bad ones).

It’s this combination of understanding the problems, experimenting with the solutions, and applying different strategies that led to the most rewarding learning experiences in my life. This post focuses on just the problems.

Another thing that comes up often in discussions on dev.to is the value of fundamentals and problem solving versus this or that tool.

As the title: you don't need to know everything, but you should learn something well.

I have a feeling that these two posts are going to pop up in 2019 again and again as reading suggestions for developers of all skill levels.

Top comments (20)

Collapse
 
ben profile image
Ben Halpern

I can't believe how many people gave Dan shit on Twitter over his admission that there were things he didn't know. So far outside the spirit of the post, it's boggling.

Collapse
 
jckuhl profile image
Jonathan Kuhl

I mean, he's Dan Abramov, the author of Redux! He's gotta know everything man! He's like the Pelé of React!

But seriously, some people forget we're all human and the software development world is too big for anyone to know everything at once.

Collapse
 
ferricoxide profile image
Thomas H Jones II

Perhaps the only thing more frightening than not knowing "everything" is when you discover that even the wizards don't know "everything". What's a common response to fear? Attacking the things that cause (or escalate your sense of) it.

Collapse
 
rhymes profile image
rhymes

I was cheering when I read these posts. Why are they bashing him? I'm sure he expected some backlash because in the post he said:

since I’m not in a vulnerable position myself right now, I can be honest about this.

but why from fellow developers? What are people saying?

Collapse
 
ben profile image
Ben Halpern

I think the reaction has been mostly positive, but folks saying “omg he doesn’t know this basic concept?!?”

Insecure projection imo

Collapse
 
thomasjunkos profile image
Thomas Junkツ

I can believe that.
It shows how wrong our industry is. Think of the bad reputation (e.g. being hostile) stackoverflow has/had. There is a long way to go to make it (SO as well as the industry) a better place.

Collapse
 
jamesdengel profile image
James dengel

I think it's a great trait to know where you have gaps of knowledge.

Because you know where your comfort zone is, where to push it and when to find help or look for advice or a book to increase your knowledge, blindly thinking you have everything is not a good place to be.

Collapse
 
rhymes profile image
rhymes

Exactly, there's value in knowing what you don't know. The issues arise when you don't know what you don't know :D

Collapse
 
ghost profile image
Ghost

This is very common sense what he said, I am surprised if some people reacted negatively to it. Without going into much explanation, I will bring a Bruce Lee quote which is similar to this idea: "I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times."
:)

Collapse
 
scotthannen profile image
Scott Hannen

That was awesome. This sent my mind down some odd paths. I'm just like Dan Abramov except for knowing a lot less. In my blog and StackOverflow answers, though, I try to project experience and knowledge. That makes sense. After all, we tend to write about what we know.

It's a little bit like social media. We post pictures of ourselves having fun with friends and going to cool places. If we're sitting home alone eating junk food we don't share that. Collectively it creates the illusion that everyone is doing awesome stuff surrounded by friends.

In the same way, people doing what they know and writing blogs about it inadvertently creates the illusion that we're surrounded by people who know everything. We participate by adding our insecurity-fueled flawed perceptions. We might never consciously realize that the person who writes about some specific React component and the one who writes about containers and the other who just created his own blogging platform are all different people. In our minds they become this composite developer who knows everything we don't.

Totally sideways: There are more male than female developers. Is this largely a man problem, like not asking for directions? I imagine that women have the same concerns as men do, but is unintentionally (or intentionally) projecting a know-it-all image a man thing?

Collapse
 
rhymes profile image
rhymes

Collectively it creates the illusion that everyone is doing awesome stuff surrounded by friends.

Yeah, that illusion of grandeur that feeds the fear of missing out in other people.

We might never consciously realize that the person who writes about some specific React component and the one who writes about containers and the other who just created his own blogging platform are all different people. In our minds they become this composite developer who knows everything we don't.

That's a great way to put it! We take bits and pieces about other people lives we like and create this Frankestein-meta-human we aspire to be, except that it doesn't exist

Collapse
 
molly profile image
Molly Struve (she/her)

Thank you for sharing those great posts! They were truly a pleasure to read.

buzz wording as a sport

I could not agree more that this is an unfortunate part of our culture. I used to always feel behind when someone would mention a new technology that I had never even heard of. Only now, after 6 years of doing this, am I starting to finally give myself permission to not know everything.

My biggest learning breakthroughs weren’t about a particular technology. Rather, I learned the most when I struggled to solve a particular UI problem.

YES x 1000 for this quote! Elasticsearch is one piece of technology that I pride myself at knowing backwards and forwards. I learned almost everything that I know from 3 years on the job struggling to scale our cluster at Kenna. There were a lot of "OH SHIT, that was wrong!" moments, but in the end, I wouldn't change any of it bc it made the breakthroughs that much more rewarding.

Collapse
 
rhymes profile image
rhymes

I could not agree more that this is an unfortunate part of our culture. I used to always feel behind when someone would mention a new technology that I had never even heard of. Only now, after 6 years of doing this, am I starting to finally give myself permission to not know everything.

You reminded me of the post Choose Boring Technology. Dan McKinley argues that we should default to technologies that are "boring and good" and when to introduce new ones.

Elasticsearch is one piece of technology that I pride myself at knowing backwards and forwards.

Cool :-) Elasticsearch is truly everywhere!

Collapse
 
giorgosk profile image
Giorgos Kontopoulos 👀 • Edited

I am afraid lots of companies ask from a developer to know EVERYTHING and refuse to hire if a candidate is not 100% on all those ridiculous requirements. I believe those companies are missing the point which for me is An Engineer/Developer is someone who can learn something required to finish the job at hand.

I believe partly because of this we have all the feelings of inadequacy and imposter syndrome that we read so often about in DEV.TO and other forums.

BTW Great topic and post and Bravo to Dan Abramov for posting such an article to englighten us all.

Collapse
 
rhymes profile image
rhymes

Thanks Giorgos, hopefully we can have a little bit of choice over companies to join sometimes. At the least the most privileged of us.

I wonder if there's a direct correlation between the huge amount of tech jobs that newspapers and magazine and statistics say that need to be staffed and the quality of the offer. I also wonder if there's a direct correlation between the quality of the offer page (and the knowledge of the person writing it) and the chances to fill such vacancy

Collapse
 
weeklytyped profile image
Weekly Typed

I have been reading Algorithms to Live By, and this is the problem that was going through my head during the chapter on Explore/Exploit Trade-off.

At what point should you learn something new vs dive deeper into what you already know? Exploring new things has a chance to payoff, but exploiting what is already working (and getting better at it) has better chances. In either case, there is a possibility of regret.

The interesting things I took away from the chapter were:

  1. People tend to over-explore.
  2. The time interval is important. Someone earlier in their career may benefit from more exploration, but someone later in their career may benefit from exploiting the best of what they've learned.
Collapse
 
danielrvt profile image
Daniel Rodriguez del Villar Trimarchi

Knowing everything in software engineering is as real as porn...

The fact is that abilities like learning fast and solving problems are far more important and evergreen than knowing react, css or angular

Collapse
 
ferricoxide profile image
Thomas H Jones II

Sadly, this "learn one thing well, first" problem isn't limited solely to (would be) technical practitioners.

Company I work for has been trying to grow to meet client demands. Due to both available rates and available talent, they've started to hire junior staff to fill positions. Unfortunately, many of the managers don't seem to understand how to use those juniors. Instead of instructing, "learn this one technology inside-and-out, then use it as your point of reference for learning the other technologies we need you to know," they seem to fall into the managerial-equivalent "too many tools to learn". Basically, they try to bounce these new people across all the tools, never affording them the opportunity to build themselves a Rosetta Stone.

I get bounced across a lot of projects because I long ago built myself a very good Rosetta Stone. So, I find myself having to back-channel to these managers (and to some of our customers, as well), "that's not how you senior-up your juniors, that's how you frustrate and burn them out: even if some of them manage to learn anything to a useful degree to you, they're going to leave as soon as they think they've fattened their resume enough."

Collapse
 
rhymes profile image
rhymes

You should be the one to be in charge of such juniors, or at least to get more in the loop...

Collapse
 
jessekphillips profile image
Jesse Phillips

It is interesting how close his list works for me. But I don't suffer from people thinking I know more than I do. Well I'm sure some people do.