So you want to be a software engineer? (Part 2 of 4)

Learning how to learn: how developing good study habits is the key to success

Launch School
Launch School
7 min readJul 2, 2018

--

This is the second of a four-part series of articles looking at what it takes to become a professional software engineer. If you haven’t read the first part yet, do that first before continuing with this part. You can find it here:

That first part looked at the importance of having a clear goal and mapping a well-defined path to it. Once you’re on that path you need to make the most of it. The way you do that is by developing excellent study habits.

Learning how to learn

Developing good study habits is possibly the single most important thing you can do for your career. Top employers don’t just want software engineers who have existing knowledge, but those who have the ability to acquire new knowledge.

The flip-side of this is that poor study habits can really hurt you. In fact they can make it almost impossible to progress along the learning path you’ve set out. The good news is that study habits are something you can work on and develop and this article will show you how.

Commit to learning

It may sound obvious, but if you’re going to learn something well then you really have to want to learn. Learning is hard. Learning complex topics to real depth is even harder. You can’t be ambivalent about it. You need to commit.

Don’t treat your learning as something you can just ‘fit in’ around the rest of your life. Make it a priority.

Here’s how you commit to your learning journey:

  • Treat studying as you would do a job. Be serious and professional. Most importantly, have a schedule to study.
  • Allow sufficient time for study (for our program we recommend at least 15–20 hours per week).
  • Make sacrifices. This might mean cutting back on social activities or spending less time on hobbies.

Choose habits over enthusiasm

New students often tell us how excited they are to start learning. Excitement and enthusiasm about learning are great, as long as you don’t rely on them. It’s impossible to keep your enthusiasm levels up for months or years at a time.

Turn learning into a habit, this will keep you going when your enthusiasm levels drop.

Sticking to a regular schedule is probably the single best driver for forming habits. Block out chunks of time in your calendar dedicated to uninterrupted study. Once you’ve set the schedule, stick to it. Sit down at your desk at the scheduled time and focus on study, whether you feel like it or not.

Develop an effective note-taking system

Just reading about a topic or watching a bunch of videos isn’t sufficient to absorb a new concept. You might follow along at the time, but then struggle to recall specific details later on.

Always take notes when studying a new topic. This massively improves your ability to recall the details of that topic.

As well as improving recall, notes can act as a quick reference when you need to revisit a topic weeks or months down the line.

Developing an effective note-taking system takes time. You need to strike the right balance between capturing sufficient detail and focusing on the key points. If you’re not sure where to start, there’s plenty of note-taking techniques out there to explore, such as outlining, mind-mapping, or the Cornell Method. The important thing is to find an approach that works for you.

Use proven tools, techniques, and strategies

There are plenty of proven behaviors and techniques you can use to develop your study habits. People have different learning styles, so certain things might work better for some than others.

Explore different techniques and strategies to see which ones work for you, then make using them habitual.

Here’s some things you can try:

  • Use a time tracking app to measure your effective study time
  • Set time-based goals instead of task-based; e.g. rather than saying “this week I will learn thing x” say “this week I will spend y hours on learning thing x”
  • Use the Pomodoro technique to maximize your focus
  • Use flash cards to help memorize specific facts
  • Schedule regular review sessions to solidify your understanding

There are also courses available that focus specifically on study techniques, like Coursera’s Learning How to Learn. This course is so good that it’s a pre-requisite for Launch School students.

Calibrate against the best

You might think that your study habits are fine, but how do you know for sure? Seek out the really good students and compare with what they’re doing.

Use the learning behaviors of the best students to set a bench-mark for yourself

Other students are ultimately your competitors for jobs, and the best students tend to get the best jobs. One thing to bear in mind is to try and calibrate against students with similar goals to yours.

Another thing to think about is different learning styles. The techniques that a certain student is using might not necessarily work for you. Even if you end up using a different approach, seeing the work that top students are putting in will give you an idea of the level required.

Prefer mental models to memorization

Mental models are an important tool that helps us make sense of the world. Programmers need to have clear and precise models of how the world of computing and programming works.

Develop clear mental models of how things work, then you only have to remember a few principles and not a thousand specific rules.

Mental models build your conceptual understanding in a way that pure memorization can’t. Memorization is still useful, but there’s no point remembering every single method or function of a programming language if your understanding of key programming concepts isn’t clear.

Something worth remembering is that a mental model is not a fixed entity. Early mental models tend to be simplified and incomplete. As you gain more knowledge, make sure that you update your model. Whenever you encounter something that violates your current mental model, investigate the cause of that violation and make the necessary adjustments.

Put conceptual knowledge into practice

A clear understanding of core programming concepts is key to your learning, but learning at a purely theoretical or conceptual level is difficult.

Solidify your understanding of a concept by repeated practical application of that concept

Use appropriate exercises and practice problems to really drill your understanding. A good method here is:

  1. Study a new concept
  2. Build a mental model for that concept
  3. Solve practice problems for that concept using your mental model
  4. Revisit your mental model and adjust if necessary
  5. Solve more practice problems

Study concepts to depth

Many programming concepts have particular subtleties or facets that aren’t immediately apparent. Studying a concept without exploring those subtleties can lead to a false sense of understanding.

Study programming concepts to depth by testing their edges and boundaries

You can explore a concept more deeply when solving practice problems involving that concept. Take the following approach:

  • Come up with a few different solutions to the problem
  • Compare the solutions and understand what makes them different
  • Assess the trade-offs between the different solutions
  • Analyze whether your solutions cover all edge-cases
  • Explore why some solutions won’t work as a result of aspects of that concept

This approach is a much more valuable learning experience than quickly coming up with a working solution to the problem and moving on to the next one.

Summing it Up

In this article we’ve explained how important good study habits are, not only in becoming a software engineer but for the remainder of your career. We’ve also outlined some practical ways that you can improve your study habits. Let’s recap:

  • Commit to your learning path and make it a priority
  • Make studying habitual rather than relying on enthusiasm
  • Take notes when studying new topics to improve your understanding and recall
  • Try out different tools, techniques, and strategies for learning
  • Compare yourself with the best students and use them as a bench-mark
  • Focus on building strong mental models for core concepts rather than memorizing lots of functions and commands
  • Solidify your conceptual understanding by solving practice problems
  • Study programming concepts to more depth by exploring their underlying subtleties

In the next part of this series we’ll look at another skill that’s vital to software engineering: communication. You can read Part 3 here:

So you want to be a software engineer? (Part 3 of 4)

--

--

Launch School
Launch School

The slow path for studious beginners to a career in software development.