Developer Tea

4 Principles of Great Learners

Episode Summary

What do great learners have in common? In today's episode we're talking about are the common factors of successful people and what we can learn from their experiences.

Episode Notes

What do great learners have in common? In today's episode we're talking about are the common factors of successful people and what we can learn from their experiences.

Thanks to today's Sponsor: Bitrise

If you're looking for an automatic platform and configuration detection, to build, test & deploy in minutes check out Bitrise. They've got an open source library of 170+ integrations, and the best part there's no scripting needed! Run the same config locally with the open source CLI by downloading the bitrise.yml

If you're looking for a job, they're hiring tooling & devops engineers at their Budapest office

Get in touch

If you have questions about today's episode, want to start a conversation about today's topic or just want to let us know if you found this episode valuable I encourage you to join the conversation or start your own on our community platform Spectrum.chat/specfm/developer-tea

Episode Transcription

What do great learners have in common? We can talk about all kinds of people when we discuss the category of great learner. For example, Grace Hopper, who is not only the most accomplished female in early computer science history, but also created the concept of the compiler, which ended up leading to co-ball as a language, we can talk about people like Richard Feynman, whose accomplishments are so long that we don't even have time to list them, and who really made a career out of learning. We can talk about Elon Musk or Ben Franklin, these multi-dimensional kind of geniuses or really everything that they decide to do, they find a way to do it. What we want to find is some of the common factors with all of these people. That's what we're going to talk about in today's episode. My name is Jonathan Cutrellng, you're listening to Developer Tea, and my goal in the show is to help driven developers connect to their career purpose and do better work, so they can have a positive influence on the people around them. Learning is a huge topic on the show because learning helps you in every area of life. Learning is kind of the core activity for any great developer, and for all of these people, learning could have been considered or could still be considered their core activity. You can look at Feynman, for example, who learned to play musical instruments. He also learned how to have a comedic personality on top of his teaching personality, and really his ability to learn, underpinned everything that he did. This is true for most great developers. It's true for most extremely successful people, the concept of constantly learning, whether you become a multi-dimensional person. In other words, if you're going to work in many different areas beyond just being a software developer, or even beyond being a software developer in a particular area, a particular field, you could go well beyond just one field or just one expertise, just one set of talents, and we see that in a lot of these super learners. What are some of the underpinning motivations or character traits? The attributes of the way that they execute, the way that they actually live that out. We're going to look at a couple of those in today's episode. The first underlying aspect that every great learner understands is to make everything simple. Make what you are learning simple. You'll notice that we are not saying that you take complexity out of the subject, and we're not saying that everything can be elementary. But rather, that the way that your brain can grasp onto something starts at a simple level. What does this actually require you to do? How can you make something simple? By the way, just to give you an idea, the Feynman method is to figure out how to teach any subject to someone who doesn't know anything about it, and more specifically to a child in simple language. Einstein said something along the lines of, if you can't explain it simply, then you don't yet understand it. What we're trying to do, and we've talked about this on the show in the past, what we're trying to do is find words that bind up some kind of complex subjects and break that down into its component part. Simplifying your language may feel a little bit strange at first, but really what you'll learn is it is kind of an art form. So if you were explaining to a brand new programmer, what a particular function did. Well, first you'd have to explain what a function is. And when you explain what a function is, you start to get at kind of a fundamental definition, and a more kind of primitive definition for the way that your code is working. Now what this does for you as a learner, you'll realize that we're going to talk about you teaching a lot as you are learning. But what this does for you as a learner is it points out places where you have relied on abstraction in order to understand something. And if you're relying on that abstraction and you don't understand it underneath, then it's possible that you don't understand it at all. That even the abstraction is fuzzy for you. Now you may be a keen listener and you may remember our previous discussions on abstractions and finding trust where the abstractions in order to be able to not have to dig it all the way down to the machine code in order to be productive. And it certainly is important to not take this too far. So you do need to set a baseline, something that you're going to assume is true. For example, you may assume that your programming language doesn't have any internal bugs that the language works as expected. And that as long as your syntax is correct, the language will work. This is a reasonable assumption. So defining where your baseline is in order to kind of remove abstractions that are built on top of the baseline. We're not talking about going all the way down to the very lowest of the lowest primitive explanations because then we'd always be talking all the way down to machine code. In fact, we'd be going even further down to the physics of computing. And that's not really going to get you where you want to go. It's not going to be productive necessarily. So setting that baseline in order to make things simple, that is a key step in the process to actually using this kind of principle of every great learner. And that is, once again, make things simple. So making something simple, trusting a baseline actually helps you to make something simple because now you're not complicating things by trying to go too deep into that breakdown process. So making everything simple, whenever you say a word that has more meaning that is wrapped up inside of it, try to break that word down. Try to break it down until you get to something that is kind of irreducible on top of your baseline. So that's the first principle, make things simple. The next principle is a little bit difficult to understand, but hopefully this will come across. For those of you who have experienced it, you'll know what it kind of what it feels like. And that is to teach yourself from within. What does this mean? Teach yourself from within. Well, most of the great thinkers that we've listed on this show and really any great learner that you can imagine being on that list, they start kind of with an internal proposition. Einstein would start with thought experiments where he would kind of concoct a given scenario that he could dissect just in his mind, just in his thoughts without using an external reference. Posing questions, and it may feel like a philosophical exercise more than it does a learning one, but posing questions that come from your own reasoning and then being able to resolve those questions, this is how a lot of great learners tend to operate. So another principle that didn't really make it onto this list, but really kind of fits in with this one is to develop your mental models. Your mental models are ways of seeing the world, but they're also ways that particular systems work. For example, you may have the mental model of capitalism. This is kind of a system. It's large enough that you can create a mental model around it and you can see how different things interact with that system. So when you are teaching yourself from within, you may start by establishing, in your thought patterns, establishing one of these models as kind of the basis of whatever that thought is, whatever that thought experiment like Einstein did, whatever your thought experiment is. This kind of relies on a relatively strong grasp of logic so that you can perform these kind of thought experiments by testing out theories in your head. Again, this sounds very complicated, but ultimately it's not as complicated as it may sound. When you think about a scenario and you put it into this kind of constructed world in your mind, you can imagine it playing out. It's really, it comes down to kind of an imagination, right? An imagination that constructs a logical sequence of thoughts. This is something that great learners do and they teach themselves from within. So it's not absorbing knowledge from the outside in. It's creating knowledge by observing from the inside out. There's a huge difference and it sounds nuanced, but the result is very different. If you learn from the outside in, in other words, if you were just absorbing information, very often that information doesn't click, it's not as usable as much as it is just simply memorized and catalogued. So that integration process of taking that information and being able to apply it in a different scenario, for example, that's not going to happen as easily. People like Elon Musk have become masters of this because the way that he approaches a problem, and you can read about this online, if you Google Elon Musk and mental models, the way he approaches a problem is by taking a different model from a different arena and applying it to a new problem. This is very difficult to do if you don't have that internalized understanding if you didn't teach yourself from within. We're going to take a quick break for today's sponsor, BitRise, and then we're going to come right back, keep on talking about how great learners, well, how they learn. Today's episode is sponsored by BitRise. This is the very first episode that BitRise has sponsored on Developer Tea. So let's make sure that they feel welcome. BitRise is mobile continuous integration and delivery for your whole team with dozens of integrations for your favorite services. BitRise features automatic platform and configuration detection, build, test, and you can deploy in just a few minutes. Now, they have an open source library of 170 and growing integrations, and there's no scripting needed for that. You can run the same config locally with the open source command line interface by downloading a simple YAML file. They call it the bitrise.yaml file. You can actually build your workflow. They have a workflow editor. You build your workflow in an easy to use UI. You can see it kind of piecing these things together. For example, you can have a get clone to repository and then you can run Xcode unit tests and then deploy to something like fabric and then ultimately end up sending a Slack message to let you know that everything went as expected. So this tool is such an incredibly powerful option. Again, it's using over 170 different integrations and bringing them all together. Go and check it out. Head over to spec.fm slash bitrise to get started today. Thank you to BitRise for sponsoring today's episode and for making mobile developers' lives just a little bit easier. We're talking about great learners, the habits or really the principles of great learners. The next one is really, again, it's something that we've talked about on Developer Tea before. We've talked about it in multiple different ways but we're going to very simply call it learning progressively. We talked about this specifically with call it a Zod and the metaphor that Callad uses is the progressive JPEG. If you're not familiar, if you load a progressive JPEG in a browser window, you're going to see a relatively pixelated image at first. And then as the image loads in, it becomes higher resolution. It continues to refine over the loading process. So great learners learn this way as well. You'll notice that great learners typically start with a high level overview. They want to understand something at the highest level possible. So give me a one-sentence explanation of this very complicated topic. And then they want to dig in a little bit deeper and understand once again from a high level but a little bit more detail. You can see how the metaphor of the progressive JPEG starts to apply here. The learning progressively means that you're revisiting the same subjects and adding new levels of detail. And you're seeing how the whole thing fits together. And that's the key piece of importance. Because you may ask, well, why can't I just learn that same way except one thing at a time and just learn that one thing much faster? The important factor to note here is that progressive learning means that you're revisiting all of these things together because the integration between them is so key to really understanding the whole. In other words, it doesn't really make sense to only understand the top 10 or 20 pixels of an image because you're totally missing the context of the rest of that image. So no matter how high resolution those top 10 or 20 or 30 lines of pixels are, you still don't have an idea of what is in the rest of the picture. And so that can drastically change the topic that you're learning about. If you only know 10% coverage of that topic and you have no perspective on the rest of it, that can drastically change the way that you think about that 10% once you start looking at the rest of that topic. Now here's the thing to know about this. If you adopt progressive learning, at first it's going to feel like everything is going much slower. And in a way, it kind of is because for a given sub-piece of whatever it is that you're learning, whatever top you're learning, you are taking really a significantly longer amount of time to fully grasp, you know, kind of to the detail level that part, that sub part of the topic. But once you do fully grasp it, the rest, kind of the benefit here is that the integration is complete. You have a full and complete understanding of the whole picture and how everything works together. All right, so we've gone through three different principles. The first one was make it simple. The second one was teach from inside. The third one was to learn progressively. And finally, and perhaps the most important, and the reason I left it for last, is curiosity. curiosity is this underlying drive to learn. You could call it kind of the fuel for learning. Just wanting to learn is not quite enough. Having a curiosity and interest, a compelling kind of agitation in a way to learn something to a more complete extent. This is something that all great learners have in common. And this curiosity very often follows its own path. And so you may learn something that is totally unexpected, but is enlightening for you. And this is why we talk about cross training, for example, on development. If all of your learning is only kind of sequestered to a career advancement opportunity, then very often that spark of curiosity is really kind of put out. If you can find something that you are genuinely curious about, that you are driven to learn because of that kind of embedded curiosity, then you're going to end up being a much better learner. But here's the thing about great learners. They are curious really about everything. They're hunger for knowledge, and they're hunger for understanding exceeds their desire to be practical. So I encourage you to find ways to stoke your own curiosity. Some of this for developers is quite simply lifting your head up and out of what you are doing and exposing your mind to new completely different things, allowing yourself to be interested in something other than code for a little while. This is going to stoke your curiosity. But I want you to also notice that as your curiosity in these other areas grows, your curiosity for technical subjects will grow as well. And perhaps in ways that you didn't expect them to grow. For example, you may be a DevOps engineer in your curiosity for front-end development may grow more than you expect it to. So be prepared for this. As you cultivate curiosity through this concept of variety, introducing variety into your experiences, be prepared that it might change your mind about who you are and what you want to do. Thank you so much for listening to today's episode of Developer Tea. I encourage you to strive after this idea of becoming a lifelong, passionate learner. Thank you again to BitRise for sponsoring today's episode and thank you so much for listening to today's episode. Head over to spec.fm slash bitRise to try out BitRise's awesome UI and to get started with mobile continuous integration today. Thank you so much for listening. If you're enjoying today's episode and if you've enjoyed previous episodes and you haven't yet subscribed, I'll now the time. Driving to the show ensures that you don't miss out on future episodes and we have three of them per week. So it's very likely that if you don't subscribe, you will end up missing out because it's kind of hard to remember to go back over and over and over to the same show. Thank you so much for listening and until next time, enjoy your tea.