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. 🤓
- 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. 😉
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.
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:
- 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.
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.
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.
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 💸.
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.
Some other questions I frequently received over the years.
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:
- Frequent individual feedback + support of a teacher, a learning network and fellow students.
- A structured learning journey which is well researched and thought through.
- 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).
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.
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.
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.
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.
I see more and more people use their smartphones to learn on the go.
- 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).
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.
- Tania Rascia wrote about her public learning journey in a great blog post.
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.
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 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.
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! 🎉🚀🐒
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.↩