From time to time, I run into people who are interested in breaking into programming. Last night at the company holiday party a guy (we’ll call him Sam) walked up and introduced himself, asking for advice on how to move from his current role over to development. Sam’s attitude impressed me – those with a genuine desire to learn go places quickly. And on many occasions I’ve hired someone very green simply because I could sense a genuine interest in the craft and a hunger for knowledge. I’ll take attitude over aptitude.
Obviously, the road to becoming a better developer begins with learning. Everyone learns differently, but I’ve found no better way to learn than watching over the shoulder of someone else, bending the technology to his or her will. That’s why I was so amped to become a Pluralsight author. I really believe in the format. Yes, tech books are also a great resource for going in depth. I read Pro C# nearly cover to cover, but not everyone would benefit from this approach. Much falls out of your head with that much breadth over such a short period. That said, learning isn’t hard if you follow a recipe. It’s starts simple enough:
- Watch someone
Thus, I personally watch videos or read books and blogs. But I’ve learned that step one isn’t enough, so I quickly follow that up with a real world implementation. This second step is key:
Now, be forewarned that according to National Training Laboratories, the percentages on this diagram have no known source behind them, so take my references to the absolute percentages with a grain of salt. That said, the fact remains that we retain very little of what we hear from others compared to other learning approaches. But what if we practice doing what we just learned? Well that get’s us to a seriously juicy 75% retention rate, baby! So go learn a new tech somewhere using the learning format you prefer. Then pick a topic you’re into. Games, cars, sports, doesn’t matter, and write some basic piece of software related to it. That will help stoke your interest and give you something real life to talk about in an interview. So now, we have a simple two step process:
- Watch someone
- Try it yourself and experiment
But that’s not the end of the road. As the learning pyramid shows, we learn best by teaching others. So ideally, once you learn something new and have practiced enough to not look like a total idiot, schedule a lunch and learn or share it with someone at work. Justifying your logic will both clarify and solidify your knowledge. It will shine a spotlight on the areas you thought you understood and force you to fill in the gaps. And keep in mind that you don’t have to teach someone in person to benefit from this step. Write a blog post, explain it to your cat, or post your new piece of software to GitHub in hopes of receiving feedback. The act of organizing and justifying your thoughts is the important part for increasing both retention and comprehension. This brings us to the magical three step process for becoming an expert at anything:
- Watch someone
- Try it yourself and experiment
- Teach someone else
Presto. Next thing you know, you’re the senior developer telling other people how bad their code is! (Yes, everyone gets their turn). And remember, once you’ve built something, anything, you’re no longer merely “learning development” or wanting to “break into development”. You *are* a developer, so sell it. Don’t wait for someone to come pick you. Pick yourself. They can question your methods and your skill level, but no one can say you’re not a developer once you’ve crafted an application with your own hands. Hint: we’re all learning development together. Never apologize for that.
Does this ring true for you? Join the conversations on Hacker News or Reddit.
It’s common practice in the medical field to hear residents learn by 1) see one, 2) do one, 3) teach one. What you’re saying about action is completely true; whether it’s code or appendicitis , we have to get our hands dirty to make to make stuff stick.
Nice post! Doing and teaching really are key. Two additional points:
1) When reading a programming book, I think it helps a lot to have the mind-set that you’ll write a review of it afterwards (on Amazon, or elsewhere). It forces you to put it in context, to think about what was good and bad, what you learnt, and what the key take-aways were.
2) Blogging is very good for clarifying your thinking on a subject. I like this quote by Joan Didion: “I don’t know what I think until I try to write it down”.
So true!
What I would add, if you cannot arrange a teaching session for any reason, writing a tutorial is an alternative option – not just for programming, but also for grapsing the concepts of a new theory you are engaging in.
I had to write a post about this topic after reading yours, though in no way is my post against your way of thought. Just so many people I know say these three steps and I kind of disagree.
http://www.mussukka.org/2013/12/15/three-steps-to-knowledge/
The three steps you mentioned are one of the core features mentioned in The 8th Habit (https://en.wikipedia.org/wiki/The_8th_Habit%3A_From_Effectiveness_to_Greatness) 🙂
Nice article, thanks for some insight in the learning process. In the past year I have really enjoyed teaching others what I know and it’s such a great way to learn new things.
The retention rates from your pyramid appear to be from Eldon Ekwall and William Glasser. Despite some poking around on the internet and Google scholar, I could not find an original source.
This document looks pretty interesting also.
http://www.wmich.edu/chemed/documents/TheBrain-FriendlyClassroom.pdf
Watching Videos? Videos of what? How big guys doing programming? Please elaborate.
Examples include Pluralsight, WatchMeCode, Uncle Bob’s Clean Code series, etc.
Unfortunately the numbers are a myth. To suggest that someone who watches a movie remembers twice as much about the story than someone who reads the book is clearly not true. These numbers are based on Dale’s cone. See http://www.willatworklearning.com/2006/05/people_remember.html for a bit of interesting reading.
Hello Corey House, nice share here, i really appreciate the time you used in sharing this tips, programming our brain to getting to learn more is hard, but your image said it all.
Teaching others empower our brain to know and store more.!
Teaching is Best. This increases the retention of the topic you learned or tried…. moreover motivates/forces you to do your best and become an expert.
I just love teaching.
At least part of the retention information is from one of the first studies of learning conducted in the 1880’s or 90’s. It actually dealt with repetition and retention. The researcher’s name escapes me now. Obviously, audio visual and video were not part of that study but observing a lecture without any post-lecture thinking doesn’t lend to retention of information. Preparing to teach would obviously give one more internal representations and increase the retention. Or, at least that is how I read the numbers.
One of the difficult part is to comprehend recursive algorithm, because they goes deep and deep. But following these steps certainly helps.