At Quick Left, we spend a lot of time thinking about how we learn.
As consultants, we find ourselves in a new code base, or coming to terms with a new business domain, on a regular basis. Getting ramped up on code is the name of the game, so effective learning is an essential skill for us.
Even if you’re not a consultant, knowing the lay of the land when it comes to the latest and greatest technologies is essential if you’re a developer. Programmers spend a lot of cycles tinkering with “the new hotness”. For every framework or language that does eventually see some level of success, many others fail. Because of this, we inevitably invest some time learning things we’ll never use. It’s important to be efficient in our learning, to minimize wasted time and effort.
Other programmers ask me about some of the strategies I use in my own learning. Because I used to be a teacher, I’ve spent a fair amount of time thinking about how people learn. In this post, we’ll talk about how to examine your process so that you can figure out how learn best as a developer.
In education research, there’s a term called metacognition. It means being aware of your own knowledge and being able to think critically about how you think. The U.S. Department of Education’s TEAL project has many great resources exploring the topic. This article gives a good primer on the specifics of researchers break metacognition down.
To simplify, we can talk about two main aspects of metacognition: metacognitive knowledge and metacognitive regulation.
Metacognitive knowledge means what you know about yourself as a learner and how you approach problem solving.
Metacognitive regulation refers to ways that you hack your process to help control the outcome of your learning.
When you’re beginning the process of examining your learning, it can be helpful to begin by establishing a baseline of metacognitive knowledge. We’ll take a look at one of my favorite tools for doing this, finding out your learning style, in a future article.
Once you have a basic idea of how you learn, you can begin apply metacognitive regulation strategies to level up your learning. As you continue to use these strategies, you will expand your self-understanding as a learner (increasing your metacognitive knowledge).
Let’s take a look at how to apply metacognitive regulation to improve your learning.
There are a number of activities you can use to regulate your learning, and just about all of them fit within the following pattern: identifying intention at the outset of learning, checking in with yourself throughout the process of learning, and summarizing the result afterwards. Educational research summarizes these three phases by labelling them Planning, Monitoring, and Evaluating.
For the remainder of this article, we’ll look at some questions to ask yourself during each of the phases. The questions listed come from Fogarty (1994) in this article.
- What am I supposed to learn?
- What prior knowledge will help me with this task?
- What should I do first?
- What should I look for in this reading?
- How much time do I have to complete this?
- In what direction do I want my thinking to take me?
Once you’ve set your intention for your learning session, you begin. As you go, it’s a good idea to monitor your comprehension. Giving yourself this kind of feedback is one of the strongest tools you can use to make sure you’re actually “getting it”.
Whenever you finish reading a section of documentation or a block of source code, you can ask yourself “how would I summarize what I just read to someone who knew nothing about it?” If you struggle to answer, that’s a signal that you should go back and read more deeply.
You can also keep track of how far you’ve gotten relative to your goal. “What percentage of the documentation have I read? How much longer will it take me to read it all?”
Finally, it can be very helpful to become aware of distracting stimuli as they arise (I’m looking at you, Growl notifications!), and consider removing them.
- How am I doing?
- Am I on the right track?
- How should I proceed?
- What information is important to remember?
- Should I move in a different direction?
- Should I adjust the pace because of the difficulty?
- What can I do if I do not understand?
As you conclude a learning session, you should reflect on your what just happened. Identify the higher level concept(s) you just read about, and assess whether you would be able to put what you learned into practice by using them to build something. It’s also really helpful to set yourself up for future success. Ask yourself what more you want to know about the concept, sketch a plan for your next learning session, and identify other resources you can use to find out more.
- How well did I do?
- What did I learn?
- Did I get the results I expected?
- What could I have done differently?
- Can I apply this way of thinking to other problems or situations?
- Is there anything I don’t understand—any gaps in my knowledge?
- Do I need to go back through the task to fill in any gaps in understanding?
- How might I apply this line of thinking to other problems?
Being a programmer is tough work. As if solving complex problems and debugging dependency issues weren’t enough, we have to stay up on the latest technologies, and continue learning all the time to keep abreast of the pace of technology. Sometimes trying to organize that process can feel like throwing spaghetti at the wall and seeing what sticks. But our time is precious, so we would like to make the most of the it when we sit down to learn.
In this article, we explored educational research on Metacognition – awareness of our own knowledge and learning process. We explored the Planning-Monitoring-Evaluating framework. This approach gives us a way to break down a learning session and ask ourselves self-reflective questions along the way to make sure we’re getting the most out of our time.
In a future article, we’ll take a look at some more specific strategies that can also be used to level up your metacognitive knowledge and regulation efforts.
Until then, best of luck, and see you on the interwebs!
P.S. If you do decide to give Planning-Monitoring-Evaluating a go, leave us a comment and let me know how it goes! I don’t know many developers who are using this strategy, and I’m curious to find out whether it works as well for you as it does for me.
Also published on Medium.