Learning skills – understanding new programming languages more efficiently
Keeping your programming skills up-to-date and making yourself appealing to potential employers is a constant struggle. To learn more efficiently, research has shown that you first need to understand yourself.
Chances are that every developer will experience more than one major paradigm shift in their lifetime. And once he or she becomes a graduated programmer, these shifts can be hard to handle while maintaining a full-time job. For many full-time developers, that means finding the most efficient way to get themselves up-to-date.
We could easily list off various vague platitudes that you would as soon forget (be goal oriented, don’t aim too high, blablabla…). But most programmers all over the world would already stop reading. So are there even any non-obvious learning tips for programmers?
There’s one problem here: No two developers learn in the same way. Background, culture, education and individual learning styles all make it difficult to discuss good learning techniques for programmers. Does that mean there are no universally effective methods for learning new languages?
A 2006 study showed that effective learning techniques are, in fact, largely similar across programmers of different cultures. In spite of the differences between Middle Eastern and American programming communities, the study showed a consistent set of learning styles, proving that it can make sense to speak about a globally more efficient way for all kinds of programmers to learn.
Thinkers and doers
To know how to be efficient, a developer must first understand how he or she learns. Much of the debate on efficiently learning programming languages comes from Rich Felder’s research on engineering learning styles. As with all areas of learning, there are active and reflective students. “Ok, enough tutorials – I wanna try this out myself.” (Three guesses which category that one is). Other students prefer to think hard about the processes before trying them out – they listen to experts, theorise about potential scenarios and read perhaps one too many tutorials.
Commenting on a Reddit thread discussing learning styles, one developer explained it as follows:
“For example, a friend of mine has to read and get a firm grasp of a good portion of the language before they write a single line of code.
I on the other hand, just dive in and just start writing some code. There’s usually something I’m excited to learn about the new language, so I try to push that aspect of my learning as much as possible.”
Naturally, the latter reflective kind of learner will often have less experiments that backfire. But trainer Mel Chua believes that programming culture favours active learners. “Think about programming interviews, where you’re given coding problems and asked to solve them on the spot. That’s incredibly biased towards active learners.”
Understand your learning style
Felder and Soloman have outlined four major other styles of technical learning, including the active/reflective style described above. These were designed to help engineers (the other kind) get a sense of what environment they will learn fastest in.
Sequential and global
A programmer that learns in a series of logical, linear steps is described as a sequential learner. In contrast, a ‘global learner’ will take a more scattered approach, picking up random pieces of information and then putting them together in a way that makes sense.
Sensing and intuitive
Sensing learners want to learn facts, solve problems with established methods and don’t like exceptions to rules. They like their tutorials and classes to focus on real-world examples. Intuitive learners on the other hand will discover possibilities and relationships while learning, they don’t like memorising information and will usually work faster.
Visual and verbal
Some programmers also prefer to have a language verbally taught to them by an expert, while others find it easier to remember information that is visually presented to them with diagrams and pictures.
Developers that want to optimise their learning speed are advised to first consider what kind of a learner they are. The best way to find out what kind of a programmer you are is to take the Index of Learning Style’s 44-question test. By answering multiple-choice questions about your visual, social and cognitive approach to learning, you’ll find out exactly what kind of environment you should be learning new programming languages in.
If you find yourself on the upper end of one scale, you’ll need to read through Felder and Solomon’s helpful suggestions for learning styles. For example, once you understand that you’re a sensing learner, you’ll realise why its so important that you get real-world examples. Reflective programmers learning in a class should make sure to think over the material on their own. If you’re a global learner, you’ll need to make sure you have the bigger picture before you begin studying a new language.
In conclusion – know thyself, then know thy code.