Deep JavaScript Foundations, v3

Culture of Learning

Kyle Simpson

Kyle Simpson

You Don't Know JS
Deep JavaScript Foundations, v3

Check out a free preview of the full Deep JavaScript Foundations, v3 course

The "Culture of Learning" Lesson is part of the full, Deep JavaScript Foundations, v3 course featured in this preview video. Here's what you'd learn in this lesson:

Kyle advocates for a culture where less experienced developers are encouraged to learn correct practices.


Transcript from the "Culture of Learning" Lesson

>> Kyle Simpson: Now the argument I always get back from people, and some of you may be thinking this at this moment is, yeah, but even if I sat through your workshop and I learned all these nuances and I read the spec, what about all the junior devs on my code base?

They would never understand this stuff. This I actually, in theory, hits me almost more than any question I ever get. This mindset that says, well I'm smart enough but those junior devs they're too dumb to understand this stuff. That is complete and total nonsense. I don't know what your backgrounds are, but everyone of you is excellent at what you do.

You may know more or less about JavaScript but that doesn't make you dumber and less capable of understanding stuff, less capable of learning things. I do not subscribe to the belief that we should dumb down our code basis to the lowest common denominator. You should absolutely use the tools as effectively as you can.

You should be as obvious about how you're using the tools as possible. And when somebody is on the code base who doesn't understand, use it as an opportunity for them to learn. Use code reviews, use a culture of peer-to-peer learning, of pairing together. All of those things to help everybody learn how the tool works better.

When you receive a code review and some junior developer did something dumb, like they didn't do a coercion correct and maybe there's some corner case they didn't know about, you don't reject the code review and say, you're dumb. You say, hey, come sit with me for a minute, let me just talk to you about this corner case that you weren't aware of, and if you did this thing instead we'd avoid that corner case entirely.

Now you learned better and they learned better. This is a complete bunk argument, it's a lazy excuse for not wanting to actually do what we ought to do on our developer teams, which is promote that everybody should be learning, everybody should be headed upward. I don't care where you are, I care what your direction is, are you headed upward?

Are you learning more about your tool? This is not an excuse for not using the tools well. It is also not an excuse for being clever, right. Some people say, well the slippery slope argument here. I can do all this clever bit-wise math, right. I'm using the tool and I'm being clever, and I'm doing all of my programming on one line of code, the way we used to do in Perl.

That's not what I'm saying, either. What I'm actually saying is that your code is a form of communication, and there is an effective way to communicate that understands and uses the tool well. If you ask the reader of a code to understand something about the tool so that they can understand that line of code, that is an investment on their part.

Make sure that that investment pays off beyond that line of code. Make sure that when they learn how that worked, they're gonna see more of that. Rather than, they learn how you did something weird, esoteric bitwise trick, and then they never get to use that ever again. That's a waste of their time.

Makes you feel good but it's a waste of the time. And it's part of the reason why we struggle so much to have good dev culture, cuz we're not focused on promoting that everybody should be able to understand. From the person who is three weeks into JavaScript to somebody who's been at it for 20 plus years like me, we all oughta be able to interoperate on the same code base and communicate well.

Yeah, the junior devs gonna need to learn some stuff, but that's what happens in every job and in every industry, you have to learn some stuff. You don't see an architect saying, well we're not gonna design that building well cuz we've got an intern on the job. You teach the intern how to build the building well.

That's what we need to be doing. We need to be doing with all parts of JavaScript, but especially the parts that everybody tells you to ignore like types.

Learn Straight from the Experts Who Shape the Modern Web

  • In-depth Courses
  • Industry Leading Experts
  • Learning Paths
  • Live Interactive Workshops
Get Unlimited Access Now