Effective Learning for Developers
Some notes on learning more effectively.
The following is a list of concepts and ideas I've either read or adapted that help me keep focus when consuming new information. I'm a habitual learner and as mindful as I am when it comes to learning I still sometimes stray out of focus or take on too many learning tasks at once. The below techniques help me try to stay on track.
Consume Information with a Focus in Mind
Try to learn to an objective e.g. to pass an exam, to create a product, pass an interview or to answer a specific question. The feedback gained from this will help keep us motivated as well as keeping clear of the black hole that is reading for reading's sake.
Apply the 80/20 Rule
Find the 20% of a technology that will yield the greatest results and learn that first. If 80/20 is not familiar read up on the Pareto principle. It may be that we want to learn a new language to create a web application and if there are specific web frameworks designed to make the 80/20 tasks simple, use the framework first. Example: I want to learn Ruby, check out Ruby on Rails first.
To read new information with Gladiatorial success consider using the SQ3R technique. The acronym is broken down as follows:
- Scan - scan the table of contents and main headings of the book.
- Question - list any questions you may have about the content. Try turning the section headings into questions.
- Read - read the book from start to finish.
- Recite - think about how you could explain what you've just read to somebody else. Perhaps blog about it.
- Review - rinse and repeat this process.
If you read blogs, books, listen to podcasts and follow other developers via Twitter then like me, you too are probably deluged with interesting information, ideas and new concepts that would be great to learn. This never ending stream of information can have disastrous consequences when it comes to keeping focus. It's difficult to ignore this information as we run the risk of missing some programming pearl or some amazing tool that's going to be life changing.
The concept of triage is borrowed from the medical profession where the never ending influx of patients are graded based on their condition and how quickly they need to be seen. The concept varies by Country but generally there are four categories, in order of priority:
- Immediate: life threatening injury
- Delayed: Serious, non life threatening
- Minor: Walking Wounded
- Morgue/Dead: pulseless/non-breathing
Try to break out the information into a similar structure and consume the most important, high value information that will stop us from commercially dying as a matter of priority. Ideally we never want anything to become immediate e.g. if I we do not know technology x our career is in jeopardy.
I use Instapaper to put aside blog posts, articles and books I might like as I go and triage at a later time, typically during my commute to and from the office.
Set SMART Goals
SMART is an acronym for:
- Specific: A specific goal e.g. write a Hello World iOS application.
- Measurable: Can we measure when the task is done? E.g. finishing a book, writing a blog post.
- Attainable: Making a billion dollars in two weeks is not attainable for most. Learning a book about algorithms is a little more attainable.
- Relevant: Is this something we want to learn or think we should? If we can't see a specific real world application for the material then consider something else. Triage!
- Time-boxed: Be careful not to interpret this as a deadline. It's more a rough timeframe that will help validate if the goal is realistic. I try to keep tasks within 8 hours and break them up into smaller tasks if this number is exceeded.
Know your Learning Style
There are studies that break down learning styles into the following categories:
- Active and Reflective Learners: Active learners like to jump in and thrive in group scenarios. Relfective learners like to sit back and think first, usually alone before they jump in.
- Sensing and Intuitive Learners: Sensing learners like facts and solving problems using established methods. Intuitive learners dislike repetition and prefer discovering possibilities.
- Visual and Verbal Learners: Visual learners learn best by seeing pictures, diagrams etc. Verbal learners learn best with spoken or written words.
- Sequential and Global Learners: Sequential learners like step by step structure. Global learners can learn in clumps without having to connect the dots before they can move on.
Take a quiz to determine which style of learning will be most effective for you and do more of it! Think 80/20!
Understand what you don't know
The Dreyfus model of skill acquisition defines five stages of assessing skill level. The five stages are:
- Advanced Beginner
Several years ago I read The Seven Habits of Highly Effective People, one of the things I took from the book and still use to date is to plan weekly. Create a plan of what you would like to learn for the week. A few weeks of doing this will give us an idea of how much we can realistically get through in a week and adjust our future plans accordingly.
Be Aware of the Four Quadrants
Another concept borrowed from The Seven Habits. This is similar to triage but instead we reflect on our time spent daily (usually in 15 minute units) and grade it into the following four categories, or quadrants. These are:
- Urgent and Important
- Not Urgent but Important
- Urgent but not Important
- Not Urgent and Not Important
Quadrant 2 is highlighted as this is a coveted, hard to stay place. This is the centre of 80/20 and where the real work gets done. The problem we face is that the rest of the world is trying to pull us out of Quadrant 2. Think about this concept in the context of Twitter. There is a very fine line from using Twitter to build relationships and seek out new opportunities to it becoming a time sink or a distraction from some other important task. All the information we need is out there waiting for us and we can use it for our progression or to our peril.
Do it in Public
This may not always be possible but doing things in the public domain helps us to pay greater attention to detail. Want to learn Ruby? Write an application that we can either host as a service or in a way that we reveal our source code efforts via a public repository such as Github. Writing a blog post or article about something new we have learned encourages us to cover more depth, to be aware of grey areas of our understanding and to make sure we are correct! Creating a real world application that deviates from the Hello World examples covered in the material we are learning from will add more depth to our learning experience and help us to stay afloat in the deep end!
It's important to give ourselves permission to relax. Self discipline is a powerful asset but so is knowing when to disengage and switch off. Giving our brains some time off is just as important as all the previous techniques!
For further reading you may be interested in this book. The book is titled Pragmatic Thinking and Learning: Refactor Your Wetware. A key aspect of the book is learning about learning. Some of the concepts in this post have been inspired by this book.