Transcript from the "Nouns, Verbs, Conditionals, & Iterators" Lesson
>> And now, since we've laid this foundation with the primer, here's the big idea. After 20 years of programming, I realized that I've essentially been doing the same four things over and over and over. Describing things, performing actions, making decisions, and then repeating these particular actions over and over and over with iteration.
[00:00:34] And so I realized that programming in its fundamental basis, data structures, functions, conditionals, and iterators. Or, as I like to think of it, is just nouns, verbs, conditionals, and iterators. And I had realized that I've been doing these particular things or working with these particular things with ease since I was a very small child.
[00:01:09] And when this hit me, I realized and I started to think about the arc that I went on in terms of skill acquisition that I spent 20 years programming and programming and programming and programming to arrive at a place that, Essentially was almost where I started. And I began to think about other areas in my life where this particular pattern started to emerge.
[00:01:47] And I thought about martial arts, I thought about skateboarding, I thought about everything that I've ever done in terms of skill acquisition. And I realized that mastery is not a cumulative, that true mastery is reductive, that you, over time, are reducing a complex domain into its most simple and basic parts.
[00:02:19] And I think that to a point, if you've ever participated in an activity with somebody who's really, really good, and you ask them like, how did you do that? Let's say you're playing music. What did you just do there? I don't know, I just I did it because something has been reduced to peer muscle memory.
[00:02:40] So in the skill acquisition matrix is that at the far end, you have unconscious competent, that you reduce things to such a point that cognitively is barely even registering. And so with that in mind, I realized that after I reduced everything that I'd done in programming for 20 years to these four things.
[00:03:07] I realized most small children, they are familiar with these concepts. And so let's do a quick thought exercise. If I showed you three trays of donuts, we have a blue tray, a green tray, and let's say an orange tray. And we have three trays of donuts on a table, and I said to a child, do you see those trays of donuts?
[00:03:37] Do you see the green tray? On that tray, find all the donuts that have sprinkles on them. Bring them back to me. Is there anything in this statement that is mysterious, hard to understand that most children would not be able to parse? And I feel like probably not, especially in regards to my kids.
[00:04:10] If there were donuts on a table that this would almost be less of a pull based transaction or more of a push based transaction that they would go and find the donuts and consume them. But here, we realize that these are some very digestible commands that even small children understand.
[00:04:35] And so in terms of code, select the tray. Well, trays.find and you loop over the tray. So again, we're talking about a collection, which is a form of a noun. And we're iterating over it and we're evaluating is the tray color green? If it is, then the trays are sitting, you're saying, shall I stay or shall I go.
[00:05:04] If I go, there'll be trouble. If I stay, there will be double. And so that's one of my favorite conditionals ever, but we're saying, if this is green, you're coming with me. And then now you have a selected tray that has donuts, another collection. We're filtering them out and we're saying, does this donut have sprinkles?
[00:05:24] If yes, we set it aside and we are creating a new array of sprinkled donuts, and the best function in the world, child.fetch(sprinkleDonuts). And so this is the big idea. Drumroll [SOUND] our goal is not to learn more. My goal here today is not to just heap on new knowledge, new principles, new concepts.
[00:06:00] But rather, it's not to learn more, but to gain a deeper understanding of what we already know. And so this is where, as we start on a journey with any kind of skill acquisition, it's accumulative by nature. And as we start to gain mastery, what we start to realize is that we don't have to learn more, we need to understand what we already know.
[00:06:36] And so this is the highest possible principle that I can lay out today is that our goal is to not necessarily learn new things. But I want to present things in such a way to help you gain a deeper understanding of what you already know