Ads Top

Learning to Learn Programming (and other things)

I've been on a lot of interviews for developer positions. Full disclosure, most people do not know what they are doing. I'm not only talking about the interviewee side, but also the interviewer side.

Being in these situations, it is often the case where you are asked something that you may have some knowledge of, or at least know of, and you cannot recall it. In the instance where you can recall it, you might not be able to explain it properly.

This happened to me on a few occasions. The feeling you get could vary but it is mostly frustration because you actually did know it at one point. A lot of times when a technical question is asked, for some reason, my thought process flows like this:

1: I know this (because I probably do)
2: Create a mental picture in my head of a time I googled this and I can actually see me doing it
3: Try and recall the word for work definition

I can't define it word for word so I start talking and of course ..... mess it up and the impression is left that I don't know the topic.

An interesting example that comes to mind is someone asked me to explain Javascript Promises in layman terms. This should have been easier since I didn't have to remember word for word the technical definition. But as I started talking I wanted to change it up a bit midstream and ended up messing up the explanation.

Now, I'm a fairly competent developer. I've worked on many large applications, build things from scratch .... blah ... blah .... blah. But something was missing. Why is it that I couldn't explain simple things that I do almost daily?

The answer: I didn't have a full enough grasp on the topic to begin with. I could accomplish what I needed to accomplish, bit I may not have known it on a deeper level. So at some point I learned how to do something and could get it done. But in reality I didn't LEARN how to do that thing on a deep enough level to be able to articulate it well enough. Knowing something well enough to get it done for yourself is ok, but knowing something well enough to the point where you can explain it to someone non-technical really sets you apart.

This is not a development/programming issue. It was a learning issue. With that I started investigating learning techniques. I stumbled upon two interesting methods that I have combined with great success.

The Feynman Technique
Richard Feynman, best known as a theoretical physicist, is the thought provider of a learning technique called ..... The Feynman Technique. Feynman was actually know as the great explainer. He had the ability to take highly dense topics and explain them in ways that even average people could understand.

The Feynman technique is a system for learning which basically comes down to understanding what you are learning to the point where you can explain/teach it to someone else using your own words and examples.

Sound simple? It is once you get to the point of understanding a topic.

There are four main steps to the technique
1. Pick a topic to learn: Gather all of the information about this topic you can. Keep track of it somewhere. A notebook, a word document, google docs, anywhere. When you get new information about the topic add it to this place.

2. Teach, or Pretend to teach to topic to someone: Explain the topic in the simplest terms possible so that even someone who is not an expert on the subject could understand it.

3. Read over your notes or other sourced material when you get stuck. When explaining something, you may realize the holes in your knowledge. At this point go back and learn more and again.

4. Use analogies to simplify. This is a process that gets easier as you go along. Even a simple explanation at the beginning may seem complicated as you gain a deeper understanding.

Spaced Repetition
The second method I have been integrating is called spaced repetition. Spaced repetition is quite simple as it sounds, the spacing out of learning new knowledge of skills over time instead of cramming it all into a short period of time.

A good explanation

How to apply spaced repetition

What is a Promise in JavaScript?
I haven't been asked to explain a promise in javascript since that interview, but if I did I would start with a non-technical explanation first and then go deeper into the tech if we had to.

For example: A promise in javascript is a way to handle asynchronous functionality. For example, making a call to an API, you then have to wait for a response back but the program could continue running. You could use a promise to deal with this type of situation.

Or better yet ...... A layman example

Imagine you and a group of friends go to a restaurant and place an order for food with your server.

The order is the Promise that is now in a PENDING state

There are two possible scenarios that could happen
1: The chef makes the order and it is ready to be brought out. The server delivers your food. Success. The Promise returned a RESOLVED state you can now deal with

2: The server takes the order to the kitchen and finds out that what you ordered is now sold out. Failure. The Promise returns a REJECTED status.

In Closing
That is essentially it. Learn a topic by detailing it out as in depth as possible. Space out your learning using spaced repetition. When you have a very deep understanding, come up with a simple example that could be used to explain it to a child. Repeat the cycle for a new topic.

Now, the next time you go on an interview or just have a random conversation about something, you should have an easier time to explain what you know because now you actually do know it.

For more on Promises check out this entry

Like this post? Follow me @ _thedevnotebook on twitter


  1. Present day innovation has made ready for another modern age, with man-made brainpower (AI) and AI among the main impetuses behind advancement.machine learning course in pune

  2. We will talk more about the APL programming language on other article posts, for right now let's focus on A+.list of IDE for PHP

  3. Regretfully, the full paid version of the IDE is not cheap, and probably not appropriate for a hobbyist, but fortunately to learn VB the free version is enough. In practice, very few commercial programs are developed in VB these days, but the Visual Studio IDE allows you to use many other languages. ergonomic chair

  4. Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. pregnancy tests

  5. Despite the fact that support up is a decent reinforcement choice (pardon the play on words), reestablishing your WordPress site to a sponsored up adaptation is an issue so it's best not to release things wrong in any case. error establishing a database connection

  6. One thing that every single new developer must come to term with is the measure of time learning a programming language takes.excel vba training london

  7. Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking. applicant tracking system

  8. Great survey, I'm sure you're getting a great response. satta king

  9. In case you're hoping to get yourself on the main page of Google's list items quickly, this SEO direct isn't for you.SEO lead generation

  10. Schools across the globe are going through a growth spurt of sorts, which is both painful and unavoidable. I'm talking, of course, about technology integration. Maybe your class is using a COW (Computer on Wheels) cart once a week or maybe every student in your school is suddenly holding an iPad and administrators are throwing around the dreaded phrase "going paperless." Programming Help

  11. I am so grateful for this post and thanks such a lot for sharing it with us. آموزش بازی انفجار

  12. This is on the grounds that there are those customers who might pay under $100 every month while others will pay more than $5000 per month. Webdesign Hasselt

  13. Your blog never ceases to amaze me, it is very well written and organized.~`’-: buy shrooms canada

  14. Yes i am totally agreed with this article and i just want say that this article is very nice and very informative article.I will make sure to be reading your blog more. You made a good point but I can't help but wonder, what about the other side? !!!!!!Thanks best office chair for software developers

  15. Be that as it may, SEO can likewise be the most productive techniques for driving leads in light of the fact that any leads you get from SEO are free leads. Webdesign

  16. Your texts on this subject are correct, see how I wrote this site is really very good. best R course for data science

  17. This program is administered by Frank H. Steensnaes and is run from the San Diego State University Research Foundation's office located at 6495 Alvarado Ct. Suite 103, San Diego, California 92182. The far-reaching effects of this program impact many academic institutions, private commercial enterprises, and civil organizations. The delivery of this program has influenced the energy and financial markets in California and throughout the country. To facilitate understanding of the regional environmental ecosystem surrounding San Diego State University, it is crucial for us to consider the broader sustainability perspective of the institution. San Diego State is dedicated to the delivery of social, ecological, and economic growth for it community and students תכנות לילדים


Powered by Blogger.