March 10th, 2019 · 16 min read
If I could go back in time, I would save myself from countless hours, days, and months working on the wrong things. Knowing what I know now, there are a lot of things that I would do differently when learning to code. Hopefully this article will help you save time and avoid the mistakes that a lot of beginners make. Keep in mind that everybody’s experience is different and this is a point of view from one person (me). However, being a self-taught programmer and having had a fairly successful career up to this point, hopefully you identify with some of the topics below.
Please share your own experiences on Twitter (@zerotomasteryio) and remember how overwhelmed you were when you first started trying to climb this intimidating mountain. You may help those that are just getting started.
If you care, then read on. Otherwise, just skip to the next section. I am a self taught programmer. Things have worked out quite well for me as I have gotten to work for some big tech companies. In 2018, I changed things up and started teaching programming as well. I now teach about thousands of programmers from 194 countries modern programming skills and many of them have gone on to work for large tech firms like Google, Facebook and Tesla, just to name a few. I have also seen countless friends go through expensive coding bootcamps and still not have a job long after graduating (which I have to admit has made me very frustrated at some of the claims and lies that some tutorials and bootcamps make). I am by no means the best programmer, but at least I have seen moderate success being self taught. Enough about me, let’s have a look at some of the lessons that I think may help you in your journey…
Compared to when I started learning many years ago, the number of resources online for learning to code has seen exponential growth. There is some really good quality content out there. However, now you have the paradox of choice: It’s impossible to study everything. Who do you trust, and what resources do you use? There are countless Youtube videos, books, coding bootcamps, online programs, Udemy courses, freeCodeCamp lessons, etc… What is up to date? Who is actually a good instructor and who is out there just to sell you and make money?
When you don’t know what you need to learn, it’s easy to read an article from one or two people online and decide:
This is the wrong mentality.
Not all content is created equal. Technology is always evolving and selecting who you learn from is one of the most important criteria in you succeeding. If you decide to follow an instructor, read a book, or do a course, make sure you know the background of that person teaching that material.
There is a big market right now for programmers, and there are a lot of “teachers” (yes, including myself). Everybody is trying to grab your attention and tell you “this is the right way of doing it”. However, how are you able to verify this if you don’t know what you need to know? Here is a simple checklist:
Select the right teacher. A little research on your part can prevent you from investing your valuable time in the wrong place.
(In my opinion this is the best instructor out there and all instructors should strive for David J. Malan level quality. Also, something like frontendmasters does a good job by only selecting top notch instructors and this something that we also pride ourselves in here at Zero To Mastery. Compare this to a marketplace like Udemy or Skillshare where it’s very easy to be an instructor so you'll have to do more due diligence.)
Here are 2 ways of teaching:— Andrei Neagoie (@AndreiNeagoie) January 3, 2019
1. Teaching students and holding their hand so they will always come to you for answers.
2. Teaching students so they outgrow you and are able to find answers on their own.
#1 is a salesperson. #2 is a real teacher.
Finally, there is no single instructor that can teach you everything. Have multiple instructors to learn from so that you consider different points of view and expertise.
Similar to the above point, there are no shortages of resources and material online for you to learn from. Everybody is trying to grab your attention. But here is the problem: which course should you use, which material should you learn? Every resource is different, and when you are at the very beginning it’s hard to decide who is telling the truth and which course is outdated and which course is relevant. Before diving into a course, make sure that this is the type of work you are interested in (i.e. Web Development, Mobile Development), and this is the modern or the right way to do things in that type of work. When was the course updated last? Is it 3 years old? The tech industry is constantly changing so a course that is even 1 year old should probably be updated. This doesn’t mean it isn’t a good resource, but it should be something you consider (this is even more true when you are learning libraries like React instead of computer science fundamentals that don’t change as much).
There is never one resource that solves all your problems and will get you hired, just like in school you don’t have just one course on “success”. Use different resources to create your knowledge tree, but do your due diligence and make sure you’re studying the right things. Here is a nice checklist:
No course is perfect, but your time is valuable so make sure you are spending it on the right things. A popular resource may be popular because of the marketing done on it and not actually on the quality of the content.
Don’t get me wrong, it’s good to understand different topics across the technology spectrum. It’s also good to be curious and want to learn as many things as possible. However, if you decide that you want to master 3 programming languages…
You’re doing it wrong. Just ask our very own Cindy Lin.
If you do not have any work experience, stick with one language, and work with that language. Get good enough to get hired. Start working in teams with that language. That’s when the real learning starts: when you start working on real projects.
Only start learning other languages, tools, or frameworks because there is a clear benefit in learning it and there is a need in the market. Learn to do one thing really well first (or at least well enough to get hired).
Are you trying to learn React and Angular and Vue and you don’t have any job experience? Congratulations you just learned 3 frontend libraries/frameworks that at the end of the day do the same thing, and you didn’t have time to learn why you should use indexes in your databases. Pick one and stick with it.
Be focused! Learn one language/tool that does a specific thing and try to get hired so you start getting real life experience.
There is no perfect programmer. Everybody makes mistakes. Everybody has flaws. We all write buggy software. There is no perfect code. So don’t be intimidated. Your project will never be a masterpiece. In 2-3 years it will most likely be outdated anyway. Just build things that work even if the code isn’t clean. Mistakes are ok and are encouraged, they are the best way to learn. As a matter of fact, even the people you learn to code from are not perfect and write bad code.
Remember, when you climb that mountain and you get to the top, you realize that everybody here is just a child trapped in an adult’s body. We are all trying to navigate our way through code doing the best we can do. Some people just hide it better than others.
So, yes, you should probably stop waiting for perfection and go start applying to jobs, ship that project, or get started on that project you were thinking of. The people that do things and ship code will always win out over people that wait.
You start to learn about programming and you read that you need to learn React, GraphQL, Node.js, MongoDB, Storybook, React Hooks, AWS, etc… you start learning libraries without understanding what they do or why they are popular. The worst thing you can do is jumping on any trend without understanding what problem it solves.
React Hooks YEY! We don’t need to use class components anymore in React and everything is a function. I’m converting everything to functional components now!
Nope. Try again.
There is never a perfect solution.
Don’t just watch people code and try to finish every single tutorial on youtube or Udemy or any other platform. Start building your own projects. The best learning you can do is to be working on real projects and in teams. If you’re watching youtube videos saying to yourself…
As soon as I finish watching these 5 courses, THEN I will start applying to jobs!
You are doing it wrong.
Build stuff on your own… expand it. It’s always good to learn, but if you are doing tutorial after tutorial and you don’t have a job yet, or a reason to learn something other than because it is “trendy”, it’s time you pause and reflect. You will never get things right. Just build stuff. The code will suck. It doesn’t matter.
Watching 100 youtube videos isn’t impressive to anybody. Anybody can do that. You need to build things which is what most people don’t do.
Remember: You learn these tools to build things. At the end of the day, programming gives you access to tools for you to build real things that real people use. People care about these things not the tools that you know. It’s like watching all the videos in the world on soccer but not actually practicing. You show up to soccer tryouts and you tell the coach you have watched more soccer videos than any player. Nobody cares.
Start building your own projects that take longer than a day to complete. You will immediately stand out from 90% of people learning to code right there.
99% of the time, the answer is no. If you have the money to spend, and you have checked that the bootcamp has successful graduates that you have spoken to and can trust, then do a bootcamp (yes, there are some good ones out there). However, keep in mind that what bootcamps offer are the same as what you can find online. You can read more about it here, but just like with everything in this day and age, there are good bootcamps and bad bootcamps. If you are spending $10,000+ on something, you better make sure it’s going to get you were you want to be. Most of the time though, you can find your own resources online and you do not need these expensive bootcamps. The nature of how bootcamps work actually make them less flexible to adapt and update their content compared to online resources and online bootcamps. The one benefit they give is a clear structure (and stakes because you just paid so much to enroll) and classmates (which with the right online course and community online can be achieved without bootcamps).
Trust me, doing a bootcamp is not a sure ticket to success. You still need hard work and discipline. Anything in life that is worth having, or a skill that pays well, requires hard work because by definition it is hard to acquire and hard to find talent for.
Sure, it seems like there is no chance that you will ever know all the things you need to become a great developer. Good, you won’t. Nobody does. There is no such thing as a perfect programmer that knows everything and can answer all coding questions. Technology is always evolving. It’s a path for people that want to constantly learn. If you feel like you have so much to learn and you don’t have enough time in your life to learn everything, then good. Welcome to the club and enjoy your ride. Even small steps each day to learn have compounding effects in 10 years. If you’re looking to master everything in a month, make 7 figure salary and retire in 3 years, you’re probably in the wrong field.
If you want to focus on mastery, constantly evolve your knowledge, and build real things that matter, then welcome.
If you don’t know something, ask. Don’t pretend like you know what something means just because you think the person next to you knows it and you will sound dumb for asking the question. You are in this for the long run. This isn’t an instagram post where you’re perfect and you are sitting on the side of an infinity pool looking at the mountains with a cup of matcha tea and you talk about how you have your life figured out. This is your career. It’s ok to ask questions and show that you don’t have everything figured out.
One last thing… don’t blindly take an online course or tutorial. Any time that you invest your own time into something, you are giving up the opportunity to do something else. Not all learning is created equal, so spend a bit of time doing some research deciding what you should put your time and efforts into. It’s not about cramming the most amount of work to become better. Those who succeed are those that can learn efficiently. This is a skill that goes beyond just learning to code.
At the end of the day though, don’t take my word for it. Just like I mentioned in this article, do your own research and figure out things on your own and find few mentors you can trust. Eventually you will get there. Once you get over the hurdle, and once you climb that mountain that most people give up and turn around on, that’s when you start seeing the gains, realizing that the mountain was simply the obstacle that rewarded those who climb it and made your skill truly valuable.
If you enjoyed this post and want to get more like it in the future, subscribe below. By joining the ZTM community of over 200,000 developers you’ll receive Web Developer Monthly (the fastest growing monthly newsletter for developers) and other exclusive ZTM posts, opportunities and offers.
By the way, my full time job is to teach people to code in the most efficient way possible as the Lead Instructor of Zero To Mastery Academy. You can see a few of my courses below or see all of my courses by visiting the courses page.