How To Learn Programming From Zero To Hero And Not Lose Your Sanity (Web Development, Javascript, Golang, Flutter/Dart/Android, iOS)

Nikolay Nikonov
P-Society
Published in
6 min readMay 5, 2020

Important: this article is intended for raw newbies. If you’re an experienced developer, this is not for you.

Probably, you want to learn to program to expand your skills/interests, or you are curious about how computers work in general.

Or you were laid off and looking for a career change to work from home, maybe going freelance, and future-proof yourself from recessions to come.

Though I’m against going all in and start to program without knowing the fundamentals (and, yes, there are lots of so-called “copy-paste” developers out there whom I won’t trust to create or fix critical systems), I admit that the best way to learn to code is by doing (maybe even the only way). You learn by doing from your early childhood, don’t you? Learning to walk, learning to speak. At first, you wobble or mumble, but with deliberate practice and cheering from your parents, you finally walking and talking. You don’t think: “Well, walking is hard, maybe I can crawl for the rest of my life. It’s not that bad.” You just try and try, and with enough time, you master the skills.

So, we have a question here: “Are there any resources/courses that perfectly balance action and theory and won’t bore you to death?”

The answer is yes, and I will provide links/references in this post later.

Now let’s talk about courses/books out there

The majority of them reminds me of this cartoonists’ joke:

programming is easy
fun and easy way to learn: draw two circles, then add the details

You started a course and teacher pumped you up with some motivational speeches (this is wonderful and necessary in most cases, but continue reading), you completed a first part of whatever material you learn from, and then…

… “so we talked about variables — that little boxes with stuff, now let’s learn another easy-peasy topic of using dependency injection in our app…”

Yikes.

It’s evident to the teacher, but you can’t understand it for now. So you lose your interest after a few failed attempts to wrap your mind around a concept.

Now, you may have two thoughts:

  1. I’m stupid and can’t learn such simple things (other smarter people understand all of this, right?)
  2. This course/book is bad, I’ll find another one.

The second thought is almost right. Almost, because even a good teacher lives in his/her own “echo chamber” and may assume that you know a topic already enough to proceed. And yes, if you’ll learn enough, you may find that the material is excellent and indispensable.

So, you look for other courses/books and stumble on the same old obstacle and get more frustrated and lost.

Let’s dig in worthy courses to start with

Side Note: I’m not a full-time developer (however, I’m creating Flutter apps for clients as a freelancer). I’m a polyglot fixer that can fix almost anything from a simple PHP script to an annoying problem in a Ruby on Rails app or an old iOS app written in Objective-C. I have a lot of time on my hands, so I watch tons of courses and read tons of books about programming languages, frameworks, etc. During this info-feast, I found a dozen of truly excellent courses to teach my son programming and CS in general. That’s why I think I can judge fairly if the material is okay for complete beginners or not.

First, we will talk about web development

The most comprehensive and newbie-friendly course I can whole-heartily recommend is Angela Yu’s “The Complete 2020 Web Development Bootcamp”.

She sometimes uses the old JS concepts such as var variables (instead of let and const), but she’s truly a great teacher. You’ll learn bit by bit, not taxing your brain with more advanced stuff in the beginning. You’ll learn by doing and create projects that you can see/feel.

After her course, you can actually “get” more advanced courses. You have to work through the material, of course. But you will get it for sure.

The next course is for you if you prefer less hand-holding and more tinkering on your own.

“The Complete Web Developer in 2020: Zero to Mastery” by Andrei Neagoie

The author obviously has a teaching talent and provides a full-blown stack of real, modern web projects to complete. Oh, and the projects are beautiful (by design and by code).

But, he is asking you to find answers yourself from time to time (although the course has a lively and helpful community on Discord). This trait of finding answers yourself is a must-have for any future programmer/developer. Many people don’t like it, but you can’t be a programmer if you need constant hand-holding. Sorry.

Second, let’s talk about Golang and backend/web programming

Maybe I’m a biased one, but in my opinion (it’s okay to disagree with me, and yeah, I watched CS50) the best basic programming course covering all bases (how computers work, what are bits/bytes, how to read documentation, etc.) is the Todd McLeod’s “Learn How To Code: Google’s Go (golang) Programming Language” course on Udemy.

The guy is lovable, witty, humble, and has the talent to explain hard concepts in layman’s terms.

This course and his next one (“Web Development w/ Google’s Go (golang) Programming Language”) are perfect candidates for a complete beginner not knowing where to start. The first one explains the fundamentals in-depth and gets you busy with fun exercises. Learn by doing, don’t forget. The course comes in two versions (old one — recorded five years ago or so, and the new one, completely re-recorded and updated from time to time), so you get two courses for the price of one. Having said that, I admit that the course doesn’t have any real-world projects to work on. But the fundamentals are there. And with that foundation, your further learning will be 1000x easier.

Third and final — mobile development

Well, I sound like a broken record, but again, I recommend Angela Yu’s “The Complete 2020 Flutter Development Bootcamp with Dart” and “iOS 13 & Swift 5 — The Complete iOS App Development Bootcamp”.

Which platform to choose? iOS or Android?

Generally, if you want a higher salary — go iOS.

The iOS course takes you from absolute zero and makes you a junior iOS developer able to complete easy-to-medium difficulty projects.

The Flutter course basically the same stuff, but obviously using Google’s Flutter framework. So you can create Android, iOS, and possibly Google Fuchsia apps in the future. This is the cross-platform framework, and it’s actually more suitable for beginners than native development. By the way, you can get the free shorter version of the course here by July 8, 2020:

(look at the top blue banner, if Google recommends her course probably she’s doing something right)

Why learn iOS stuff then if you can do it all with Flutter?

You know, it’s complicated. Many companies create only native apps, and someone should support it. And there are more jobs for native programmers out there.

I honestly can’t recommend any course on Android mobile development. Things are turbulent in the Android world, and it’s hard to find a good course when everything changes rapidly.

Gosh, you may think I’m Angela’s fanboy. Well, I think her courses are a “gold standard” of teaching beginners to code. No less.

Conclusion

If you don’t know where to start, think about what do you want to create? If it’s a mobile app — go with the free Flutter course. A beautiful website — go with Angela’s “The Complete 2020 Web Development Bootcamp” course. Want to learn the fundamentals and understand programming on a deeper level? — go with Todd’s “Learn How To Code: Google’s Go (golang) Programming Language” course.

Like any discipline — computer programming is hard. I won’t sugarcoat this fact. Nevertheless, if other people are doing it, you probably can give it a shot. Even if you flunked math in high school.

Yes, pros get more money and attention. So in every other discipline. Don’t despair. They started at zero, too.

You can’t know if you like it if you never tried. Tip: don’t give up on the first try. Try again, at least one more time. It gets easier.

Affiliate earnings disclosure:
If you click on almost any link in this article and buy a course or several courses, I get a small cut from every sale.

--

--

Nikolay Nikonov
P-Society

iOS consultant (frameworks, libraries/frameworks, costs prediction, saving your stalled project), developer, and engineer (Objective-C, Swift)