How to Learn to Code

“Learning to code” is a vague phrase that covers a huge variety of skills beyond just programming. It spans many topics that are each open ended and take a long time to master. Web frameworks? Algorithms? Linux?? It is hard as a beginner to know what's out there, what matters and where you should focus your effort.

You don’t have to commit to becoming a professional software developer to dabble in programming, but if that is your goal, this guide is for you. It is a broad strokes study plan for your first few years:

Set your expectations

First of all, you need to set your expectations and gain some context. Get a sense of what you need to learn and how much time and effort it'll take should you choose to do so.

The Atlas is my attempt to summarize what most developers need to know.

Start with websites

If you are a total beginner, the easiest place to start is by learning to make websites. It is both an important foundational skill and is a subject where you can have fun and quickly see success.

Learn to program

From there, learn the fundamentals of programming in javascript. Javascript is a good first language choice simply because it is the most popular. It is mandatory for the internet, and the internet is mandatory for most software projects.

After a few weeks, you’ll have mastered these fundamentals and have a better feeling if you like programming or not. You’ll have your eyes open and have all the information you need to decide if you want to actually pursue it.

Make a plan

If so, now’s the time to start taking your studying seriously. Form a study plan, set goals, and find a coding buddy and mentor to keep you accountable. Decide if going (back?) to school is the best option for you. There’s no fixed set of skills and no fixed timeline, but expect that going from 0 to your first job will take around 500 hours of directed effort.

With the basics covered, you’ll need to choose a specialization to branch out into. Want to be a high-frequency trader? Make video games? Not sure? For various reasons, I recommend working to become a full stack web developer before branching into other topics.

Learn enough web development to get a job

Learn the fundamentals of web development and then switch gears to Computer Science foundations. Learn enough about data structures and algorithms to be able to pass a technical interview.

Keep working on your web development skills and flesh out your portfolio while you hunt for your first job. You can try picking up some freelance work to build your skills and portfolio if the job hunt is harder than you expected.

Your goal should be to get a real job ASAP, even if you don’t feel 100% ready. Getting paid to program for 8 hours a day will give you a much better chance of achieving long term success than relying on the fragile motivation of a self-directed learner.

Survive the first 6 months at your first job

Once you get your first job, you’ll need to hustle to fill in your gaps as quickly as possible. You’ll learn the difference between programming and software development, and get to work on a large scale project. Set goals for how to be successful in your first 3 months, and do your best to keep your head above the water.

Fill in your gaps

Once you are feeling less overwhelmed, make an effort to master the full stack. Gradually fill in the Computer Science fundamentals that you’ve missed out on if you didn’t get a university degree.

Branch out

Pick up weekend projects and attend hackathons to branch your skills out into new areas like mobile apps. Round out your knowledge as you journey to becoming a senior dev.

As soon as you are ready, move on from your low(er) paying junior web developer job and become a full-on software engineer.