I want to learn how to code - Where should I start?

🤷‍♀️Other
learning

Table of contents

André, I want to start programming. Where should I start?

I get asked this question a lot! This article is my (elaborate) reply. 🤓

How to succeed?

  • Before I dive into what I recommend, I will quickly talk about why I recommend it.
  • Jump to the what right away if you want to. 😉

The best approach

Whatever I talk about next, the best approach is the one which ensures that you consistently take time to learn and that you stay motivated to do so.

motivation + time = success

  • Motivation: Without personal intrinsic motivation you’ll give up soon. This will help you to tolerate frustrations which you’ll inevitably face when learning to code!
  • Time1: You will have to gradually invest more and more time into this learning journey in case you really want to learn it properly.

This is a very general idea! To reach your fitness goals 👟 you need the same two ingredients! Therefore, my recommended approach considers the factors motivation and time.

Start with web development

Another question I often get asked:

What kind of programming should I learn first?

Web Development, Cyber Security, Algorithms, Data Science, AI - There are so many interesting areas in tech!

Here’s my recommendation:

  • Motivation: To create things you can share with others is hugely motivating! - A website or an app is such a thing. That’s why I recommend to start with web development.
  • Time: As compared to other technologies, the learning curve is less steep. You’ll see first nice results soon.

I now present different online courses around the topic of web development which I recommend in the given order:

The learning journey I recommend

  • Now I describe four steps I generally recommend as a learning journey when learning solo.
  • Note: For you an in-person class might be the better option. Please see the [Q&A section below]((#in-personlive-courses-vs-online-courses) about whether to learn solo or in an in-person class (like a coding bootcamp)
  • I chose the four steps in a way that they gradually increase in complexity and necessary time commitment.

1. Start with “How the Internet works”

The Digital Literacy track of TeamTreehouse is the perfect way to start for complete beginners who want to get a smooth introduction into the world of technology and the internet.

A charming lady will use very simple language to teach you about:

  • Computer Basics
  • How the internet works
  • How the web works
  • Basics of HTML and CSS - the main languages of the world wide web.

You have to create an account but it’s free for 7 days. Try it for 7 days here.

2. Continue with simple code completions

CodeCademy is a good start of a learning journey. You might call it the Duolingo of tech education.

  • Pro: It’s a good start, because you usually just type out what’s given. This increases motivation!
  • Con: But you generally only learn how to mechanically insert commands - which doesn’t stick in long term memory.

Check out their JavaScript courses like Intro to JavaScript course.

3. The complete web developer course

If you are serious about learning web development, I clearly recommend the Complete Web Developer Course https://www.udemy.com/course/the-complete-web-developer-course-2/ by Rob Percival.

  • This course turned me into a software developer. The special thing about the course is that it’s “real-life”. You don’t just program in a fake browser environment. Instead you are taught where to buy web space and how to push your own homepage into the internet - step by step.
  • I’ve worked on the first version of the course. The above link is for the second version.

Tip: Udemy often offers deals where you can buy the course for around 10 or 20 euros (I payed around 35 Euro 😬). You don’t have to buy the course for the full price - rather wait a few days to receive a discount 💸.

4. Online course to learn about your first framework

After mastering the fundamentals, move to online courses for particular technologies

  • Nowadays, web applications are not coded in the pure form of programming languages, but involve frameworks. Frameworks are special ways in which you use a certain programming language. To land a job in tech, you should learn about one framework.
  • TeamTreehouse and PluralSight offer structured courses.

    • At TeamTreehouse you always see the explanation why something is the way it is and so you understand all the concepts better, feel more confident and can remember it more easily. As mentioned above, it has a one-week trial.
    • PluralSight offer a 10-day trial. It is similar to TeamTreehouse.

Learn to code Q&A

Some other questions I frequently received over the years.

In-person class (bootcamp) vs. online courses

Question: As a person with foundational web-dev knowledge, do you think it’s worth doing a full-time course as next steps on my journey to become a software developer?

Answer: In my view, anyone who is a) highly motivated and ready to tolerate some frustration and b) has or can take the time necessary to code, code and code even more 😅 can become a great developer. No need for any paid course.

From my experience there are three big things you don’t receive when learning all by yourself (with tutorials, YouTube Videos and free or paid online courses), but you do receive with a structured course or bootcamp:

  1. Frequent individual feedback + support of a teacher, a learning network and fellow students.
  2. A structured learning journey which is well researched and thought through.
  3. An environment with homework and deliverables which keeps you committed to your goal.

These three points make it much more likely to start 🚀 and to pull through 🏃‍♀️ a sometimes hard and frustrating but ultimately very rewarding journey.

Some further comments:

  • Programs like the Udacity’s nano degrees offer good learning journeys and personal support but not in a way a live-class would. However, such online formats are way cheaper than live-classes or bootcamps.
  • In the beginning of any ambitous learning journey you will face a lot of obstacles and moments where you just feel stuck. In such moments, a support network of fellow students, the teacher and teaching assistants, can help you to accelerate your learning and prevent you from delaying your endeavor or even giving up when you just can’t move on (I unfortunately saw this happening quite a few times).

Are HTML, CSS & JS foundations enough to get a frontend web dev job?

HTML, CSS & JS (JavaScript) foundations are the bread and butter of web development. This knowledge helps you get a sense and first working knowledge of what web development is about.

With such knowledge you will be able to write small websites and web applications. So you will have the right foundation to begin your journey of becoming a web developer.

To land a frontend job, I’d say some exposure to a JavaScript library/framework to write user interfaces and a small example app you wrote (which you showcase in GitHub) and practice to demonstrate your skills in a coding interview can land you a job.

Such frontend frameworks would be React.js, Vue.js, Angular or Svelte for example.

Are frameworks like React JS something you should learn after you’ve mastered JS, or can you learn it now?

You can easily get lost in fundamentals and it can be demotivating not to work with the frameworks which are used to build modern real-world applications.

That being said, don’t wait until you feel you “truely mastered” JavaScript until you learn your first framework.

Most programmers never feel they have “fully mastered” a skill (imposter syndrome can be quite prevalent among developers) and there’s always room to understand a programming language in an even deeper way. Also, what does “mastered” actually mean? - I think, everyone will have a different conception of it.

I, for my part, know that there are other developers out there who have a deeper understanding of many parts of JavaScript than I’ll ever have. However, I am able to call myself an expert of React and React Native - both of which are JavaScript frameworks. Some praise of clients I got over the years gave me the confidence to write such a statement ;-)

Other concepts/ways to learn coding

Next to the mentioned tools the following might also be interesting for some of you although I don’t have a lot of personal experience with them.

Mobile Apps to learn programming

I see more and more people use their smartphones to learn on the go.

Examples: Apps like Mimo or SoloLearn

  • It’s a nice opportunity to learn some coding whenever you get some free time - when sitting on the couch or in the subway after work.
  • It can also serve as a segway to more thorough courses.

This trend fits the concept of bifurcating attention which I recently came across. People are either consuming enticing short content (YouTube Shorts, TikTok) or engaging long-term content (long-form blog posts, binge-watching Netflix series).

Learn in public

It may seem daunting, but if you need to push yourself to actually start to learn a new ambitious skill (like programming truely is) forcing yourself to publicly document your learning journey might really help.

Certifications

If you want to get an official certification of course completion (to e.g. add it to your LinkedIn profile), there are some programs which offer that. I’ll mention two of them here.

Nanodegree

Udacity offers quite ambitious courses (called nano-degrees) with mentor support. Course videos are kept short (only 2 to 5 minutes) so you can learn in small bites. Also, the certificates are well recognized in the IT scene.

  • Udacity also has a range of free courses (which don’t earn you a certificate), for example a course about the version control system git.
  • Downside: Some courses of rapidly changing technologies (like Frontend development) are outdated. Hence, I wouldn’t for example recommend their React Nanodegree.

Edube

Edube offers python certifications. You can use their courses to practice for these certifications for free. To get a certification, you have to pay to be able to take an exam.

My experience in education

Who am I to write about this topic?

  • Having taught programming in various forms to hundreds of advanced professionals, beginners, students and kids, I often get asked where to start.
  • I myself learned the basics of web development via an online course and am learning more about programming every single day I code.

I hope this guide helps you to start your programming learning journey! 🎉🚀🐒


  1. Of course, available time comes with some priviledge. But often it’s also a lack of motivation which causes a lack of time. If you really want to become a developer, you might be able to take the necessary time even if you think you don’t have it.

Discuss on TwitterImprove this article: Edit on GitHub

Discussion


Explain Programming

André Kovac builds products, creates software, teaches coding, communicates science and speaks at events.