loading...

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

rhymes profile image rhymes ・3 min read

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.

Posted on by:

rhymes profile

rhymes

@rhymes

Software developer @ Forem

Discussion

markdown guide
 

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.

 

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.

 

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.

 

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?

 

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

Insecure projection imo

 

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.

 

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.

 

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

 

I get you also as a newbie myself, but this actually makes me feel a little better and encourages me, we will never know everything as a developer but that makes it more fun, so let's just keep learning.

 

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.

 

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!

 

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."
:)

 

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.

 

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

 

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?

 

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

 

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

 

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."

 

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

 

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.
 

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.