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 thousands of programmers from 196 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.
When you don’t know what you need to learn (and in what order), it’s easy to read an article from one or two people online and decide:
*“Ah yes! I need to learn PHP, cPanel, and also I need to make 30 projects, put them on my portfolio, and then also learn Python and Machine Learning. I heard that is hot right now.
I’ll just study everything from everyone. Then I will do Blockchain stuff too.
Let me just youtube some videos.”*
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 and the other instructors here at Zero To Mastery). 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:
Is the instructor active on Github? Do they have a history of working with what they are teaching you or are they just good at marketing?
When was the content updated last? Is the instructor involved in updating the course?
Do they have past students who have succeeded (not just fake testimonials)? Can you get in touch with these students and ask them about their experiences?
Have they worked in the field in the role that they are teaching (you can use LinkedIn profiles to check this). What are they currently doing to keep their skills sharp? Or are they just lifelong content creators that haven’t been in the field for a very long time?
Do they teach you to build silly projects or do they teach you to build projects that would impress employers? (no, a dog dating app, calculator, or a to-do list app are not impressive and won't get you hired)
Do they have a blog? What are some of their technical writing skills and videos like? Do they have credibility beyond the content they are providing?
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. 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 and 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, 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 which are constantly changing vs. learning 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 don't have any work experience, stick with one language, and work with that language. Get good enough to get hired. Start working in teams that are building in 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. Just pick one of these 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.
To help people stay focused and have a clear step-by-step path, we recently created ZTM Career Paths. If you're having trouble staying focused, these could be a huge help for you.
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.
Why is that good?
If you cannot explain that to your friends, then you should learn it first before you just jump on the bandwagon.
There is never a perfect solution.
So how do you select the right tool when you are just starting out and you don’t know what to learn?
You can also take our free Tech Career Path Quiz to get a personalized roadmap.
Also, remember that most libraries evolve and change over time. Nothing is constant, so focus on learning the fundamentals.
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 videos (or finishing X course), 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 specific reason to learn something other than because it is “trendy”, it’s time you pause and reflect.
You will never get things 100% right. Just build stuff. The code will suck. It doesn’t matter. It's the process of building where you learn the most, not the result.
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: The only reason you learn these tools and topics 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 that get built, 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. They want to see you DO IT!
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 main benefits they give you are:
Part of my focus with ZTM is creating an experience that is just as good, if not better than any in-person coding bootcamp and provides these same benefits.
Trust me, doing a bootcamp is not a sure ticket to success. You still need hard work and discipline. And once the bootcamp is done... then what?
That's why ~25% of ZTM students are Bootcamp grads or CS students. They want to keep leveling-up their skills. They need help getting more interviews. They want a community they can grow with over time, not just for 8-12 weeks.
Anything in life that is worth having, or a skill that pays well, requires hard work. If it was too easy, everyone who do it and then it wouldn't be valuable anymore.
Sure, in the beginning it seems like there is no way 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 evolving your knowledge, and building real things that matter, then welcome... you're in the right place.
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.
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 earlier, do your own research and figure out things on your own. Find a 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.
Good luck on your journey. Enjoy it!
__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. __