What You Need to Know Before You Start Learning Code
Tags: webdev, beginners, programming, codenewbie
Published: 2021-05-20 00:38:11

---
title: What You Need to Know Before You Start Learning Code
published: true
description: A guide to efficiently approaching learning code
tags: webdev, beginners, programming, codenewbie
series: [Minimum Effective Development]
//cover_image: https://direct_url_to_image.jpg
---

Welcome to the first entry in Minimum Effective Development, a blog series focused on sorting out signal from noise when it comes to learning front-end software development. There's a LOT to potentially learn out there, and I'm going to guide you towards what you really need to know when you're getting started! 

Taking the self-directed path to learning code is difficult for a lot of reasons, not the least of which are [unknown unknowns](https://en.wikipedia.org/wiki/There_are_known_knowns). You can spend a lot of time unnecessarily spinning your wheels getting good at software development: hours, days, weeks, or you can start learning with a framework to be organized and efficient. To help you do just that, I've put together this guide to prepare you to learn to code the right way!

# Learn How to Learn Efficiently

Learning efficiently is a great skill to have regardless of your field of study, but the wide array of knowledge and fluid nature of web development makes the most efficient approach to learning much more of a must than a nice-to-have. 

![Cover image of Learning to Learn course](https://dev-to-uploads.s3.amazonaws.com/i/nsiakzkb3x4ft1p0v95g.png)
 
My recommendation here is to go through Andrei Neagoies's Learning to Learn course (available on both [Udemy](https://www.udemy.com/course/learning-to-learn-efficient-learning-zero-to-mastery/) and his [Zero To Mastery platform](https://zerotomastery.io/). Here, Andrei breaks down techniques and mindsets that will enable you to learn as efficiently as possible while wasting the least amount of time. Andrei is very good about referencing where he got certain tactics from, so there's a large and helpful bibliography that comes with this.

# Build Effective Habits

Coding can (and should be fun), but it is work, and it takes effort to engage in certain types of practice or practicing at all when you'd rather be doing something else. If I could only recommend one book to the brand-new coder, it would be James Clear's indispensable [_Atomic Habits_](https://jamesclear.com/atomic-habits).

![Cover of Atomic Habits](https://dev-to-uploads.s3.amazonaws.com/i/4au4usz906h4phxy3znm.png)

The long and short of it is that you want to make good habits automatic and easy to perform, and bad habits more difficult. I was good about practicing code before I read this, but I got a lot better at the right kind of practice and got WAY more consistent with exercise, which really helped weather a lot of pandemic stress. Absolutely, positively, do not begin learning to code without reading this.

# Map It Out

Part of effective learning is understanding the scope of the knowledge area you're learning, and for learning to code, there are various [developer roadmaps](https://roadmap.sh/). These roadmaps have been created to illustrate what goes into these technologies and provide some guidance into what methodologies/libraries/etc to prefer when you have a choice between several of them. I'll be making heavy use of these roadmaps (particularly the front-end roadmap) in future blog entries. 

# Set Your Goals and Track Your Progress

Learning to code can be complicated and overwhelming at first, especially on the front-end. One way you can help yourself stay focused on effective action is to use [SMART criteria](https://en.wikipedia.org/wiki/SMART_criteria) to outline what you're working on at any particular moment. 

When it comes to tracking that progress, you'll want to avail yourself of [Trello](https://trello.com/en-US) or [some other type of kanban board](https://dev.to/aellon/agile-scrum-kanban-oh-my-116d). I don't know what it is about this, but there was a shocking "before" and "after" in my consistency and productivity after making regular use of Trello in my day-to-day.

# Write It Down

Studies have shown that physically taking notes with pen/pencil and paper leads to better retention, so strongly consider doing just that. Additionally, recording what you're learning gives you the opportunity to rephrase it in your own words, forcing you to think critically about the topic.

What I personally do is maintain a folder of Markdown files on my desktop that I use to takes notes on a variety of topics, which I save to [Github](https://github.com/dylanesque/Cheatsheets). I make this tradeoff because it's easier for me to organize, update, and use as a reference for blog posts.

# Understand That It Won't Happen Immediately...

There's a game I like to play with articles that have titles like "I Learned to Code and Got A Job in 6 Months!!!" I call "find the caveat", where I look for the part where they were previously a lawyer or stockbroker or some other high-paying job, or that their spouse supported them while they did nothing but code for months on end. I mention this because while these stories can be inspiring, they're not very realistic or reflective of the norm. The simple truth that web development has gotten a lot more complicated since that time, and an effective early career dev now has to have a much more varied toolkit now than they did 5+ years ago, when knowing HTML, CSS, and some basic JavaScript was enough. Because of this, I want you to...

# ...Be Patient With Yourself

Everybody is different and has different strengths, weaknesses, and constraints. You might have work or family obligations. You might be recovering from an injury or illness, or living with a disability of some kind. You shouldn't compare yourself or your progress to others because everybody's circumstances are so different. As countless others have said before me, this is a marathon, not a sprint, and you need to embrace that mindset and be good to yourself while you're working towards your goals.

# Learning How and Where to Ask For Help

This can be tricky to get a feel for at first, but there is a time and a place for struggling in learning. Some struggle IS essential for truly understanding new concepts, but too much frustration isn't a good thing. This is something I learned via trial and error in my first production job, and the way I approach it is something like this:

- Is this struggle helping me understand the thing I'm struggling with better? This is good struggle.

- Am I banging my head against the wall and have circled back to solutions that I've already tried and didn't work, or have I spent more than 30 minutes on a problem with no forward motion whatsoever? This is bad struggle and you need to get a second pair of eyes on the issue ASAP.

When it comes to where to look for help, this can vary a lot from technology to technology: When I do blog entries on specific technologies, I'll go into recommended sources, but I will note that you'll generally want to favor sources that are active and real-time based, over forums and message boards. If there's an official Slack or Discord channel for the technology in question, you'll want to be on there.

# In Conclusion

I hope this advice helps you: My goal with a lot of my blog entries to help people avoid some of the mistakes that I made when I was first learning to code, and I'll be going into more detail regarding how to approach specific technologies in the future, and I hope to see you there!