How I Became a Better Engineer by Becoming a Better Learner

Becoming a better engineer — like most things — requires continuous learning. But how do we get better at learning itself?

--

By David Moeller, Engineer, BCG Digital Ventures

Most people have been taught to think about learning in terms of goals and achievements — exam results, certificates, university degrees. While goals can be motivating, and some skills require shared frameworks to ensure proficiency, my recent experience suggests that another approach might be better.

If you fill a cup up with liquid as quickly as you can, it will overflow. This is how many people learn — it’s how I learned at university. You force the information you need into your mind in order to pass a test, but as soon you’ve achieved your goal it dissipates. You may have reached your goal, but you haven’t actually learned much that you can apply in the long term.

As software engineers, acquiring knowledge to meet specific, fixed goals in the short term isn’t so useful. Holding a piece of paper that says you can do something is far less valuable than acquiring and maintaining smaller, directly useful knowledge over a longer period. Rather than an overflowing cup, learning should be like a fire that you keep adding more wood to when necessary, keeping it burning. This way, knowledge is sustainable, useful and can be constantly updated.

A recent example from my own experience: I was working as a developer on a BCGDV venture where I was required to work on aspects outside of my comfort zone. I was able to learn backend skills and languages I needed while working, but I wasn’t able to acquire the new infrastructure knowledge I needed on the job. In order to get up to speed, I built a learning framework where I spent around an hour every day over a period of one month on infrastructure issues. Once I’d incorporated this learning as a habit into my daily routine, I learnt quickly and was subsequently able to apply these new skills in a practical capacity, filling in for the infrastructure specialist when they were away. By learning how best to learn, I’ve managed to enhance my skill set and take control of my own growth.

Software engineers are knowledge workers. Everything we do is based around what we know. And software itself is constantly being updated, with tweaks and updates being made all the time and new languages and areas being frequently introduced. We need to continue to learn new technologies, with blockchain, IoT and AI, to name just a few, driving the next generation of software projects.

So, what’s the best way to cultivate this approach to learning?

Goal vs. Habit

It might already be clear that I think there are better ways to learn than following rigid courses and working towards fixed qualifications. When I first began taking a more considered approach to learning, I took a few specialist courses on the skills I wanted to learn. One of these was a three-month robotics course, but I found that I couldn’t dig in to the specific aspects that interested me. I had to arbitrarily tick all the boxes to progress, and much of what I did learn quickly dissipated.

Therefore, I find it most effective to build learning habits, continuously learning independent of achieving a fixed goal. I’ll aim for five hours of learning time distributed over a week rather than achieving a particular checkpoint on an online course.

It can also help to add deliberate effort to our habitual learning to give ourselves an extra boost. Much of our learning is shaped passively: many developers start with a specialism, as Java programmers, for example. Through working in a team under a Project Manager they’ll learn Agile development, and therefore become Agile developers. At some point, someone might ask them to learn another Java-related skill, and they’ll add that to their skillset too.

If, alongside this more organic development, a developer decides they want to become an IoT specialist, they’ll have to develop this deliberately. This is where consciously and deliberately shaping your own habits is important. Much of your learning will come through work, but you can also take control of your own path.

Motivation and Mindset

Before I share the specific steps I’ve taken to improve my ability to learn, I want to emphasise the importance of getting two fundamentals right.

In order to be an efficient learner, you need to think about why you’re learning. While learning towards a specific goal isn’t the best approach, it is definitely helpful to identify what motivates you. Maybe you want to progress in your career or become respected in your field. These factors can provide necessary motivation.

Another motivation, which is perhaps more important than more tangible considerations, is curiosity. You should be able to identify some time in your life when learning came easy, because you found what you were learning stimulating or interesting — you were curious. You can channel this motivation and use it to inform your learning mindset.

If you have a curious mindset, learning will feel easy and you can use this mindset to build a learning habit. In the software community, this is sometimes referred to as ‘beginner’s mind’ — openness and eagerness to remove preconceptions before the learning process starts. Be open to repeating the basics from time to time but also move out of your comfort zone. Follow your curiosity and use it as fuel for building learning habits.

Deep Work vs. Shallow Work

When we’re thinking about how to start actually learning, it’s useful to consider how we might enter the state most conducive to knowledge accumulation. The state we’re in when we answer emails and Slack messages, have brief conversations and do quick tasks is different to the state required for diving into tasks that require extended periods of concentration. The first is shallow work, the second is deep work.

Imagine this: you’re ‘in the zone’, your mind fixed on one activity with absolute focus. You’re totally absorbed. This feeling familiar to software developers, as we frequently have to enter this state in order to code, but it can also be applied to other activities — when we’re playing sport, for example, or reading.

This is what Cal Newport calls deep work: a state beyond distraction where cognitively-demanding tasks can be completed. Learning is best done while in this state.

Therefore, we can take steps to get into the right frame of mind before we begin learning. This might mean setting aside an hour where you know you’ll be by yourself, turning your phone off and resolving not to do anything else for that period. You’ll load all the relevant information into your head, begin thinking about the knowledge you need to acquire, and your brain will begin to build the necessary neural connections.

Practical Steps

What practical steps can you take in your daily life to build a deliberate learning routine where you can enter the right mindset and cultivate your knowledge through deep work? Here’s what I’ve found useful.

  • Plan ahead
    I don’t plan my learning sessions in great detail, but it is a good idea to have a general outline to follow. I plan my days, weeks and months to stay on track, and so that I can make sure I don’t miss anything I want to do. On a monthly scale I’ll layout broader topics to follow, while on a weekly scale I’ll follow tasks based on these wider themes. On a daily basis, I try to lay out the tasks to accomplish on the following day.
  • Create habits
    With deep work in particular, it’s good to get into a routine. It helps me to plan my day around certain routines, so that I have predefined, obvious entry points into deep work. Set aside specific times to learn.
  • Drain the shallows
    In 2019, our world is full of continuous distraction. It’s easy to get trapped by shallow work — answering emails and quick requests is work, but this prevents you from entering the state you need to be in to learn or do deeper work. Control your communication channels, turning them off as and when you need.
  • Spaced repetition
    Practice makes perfect, or, as we say in Germany, ‘Übung macht den Meister’. To stay present in your head, anything you learn requires continued practice. The best way to do this is to revisit what you’ve learned at regular — but deliberate — intervals, with longer and longer periods between repetitions. I use the flashcard-based Leitner System.
  • Coding Katas
    If you’re an engineer, you might be familiar with the idea of coding katas. These are quick challenges to test your coding skills. I currently try to use half an hour of my day to practice TDD by the book on simple challenges, for example. This warms me up before I dive into producing code for real deployment.

We’re all natural learners, and we should leverage this to our benefit. By learning deliberately and with purpose, we can cultivate the skills that will serve us in the long term, helping us to be more adaptable and efficient, and become better engineers.

Further Reading

--

--

BCG Digital Ventures - Part of BCG X
BCG Digital Ventures Engineering

BCG Digital Ventures, part of BCG X, builds and scales innovative businesses with the world’s most influential companies.