Table of contents
Intro
To learn to code and to enter into this programming world is something very exciting that attracts a lot of people. The popularity of this sector and the good financial situation that it brings, motivate many people to try it out and sometimes to change life. There are many ways to reach this goal (University degree, Bootcamp, self-taught...). In this article, I'll talk about the self-taught part as it's the path I've chosen. It depends a lot on the personal situation of each one. I will point out the difficulties that I've faced and that I'm still facing, because you have to know, IT IS NOT EASY. I'll end this article with some recommendations, and the satisfaction reached that this world will bring you.
The most challenging parts
Where to start?
It's obvious but just before starting you're already challenged. Where do I go? Which sector (web development, data analysis, software development, gaming development...)? For some people, it can be hard to answer this question because they don't really know what they want to do.
Which programming language?
Once you've decided on your programming orientation, now you have to decide which language to choose. This is a very tricky part because nowadays you have a huge amount of languages, frameworks, and tools, that just make the decision very hard to take.
Which Youtuber to follow? Which book to buy...?
Depending on your choice of how to learn (following tutorials, reading books or blog articles), here again, the amount of resources is incredibly huge and you'll find different opinions or different ways to teach that will make you lost.
Tutorials hell!
Starting learning with tutorials can be a good option. Things are well explained (not always), and you follow building (the app, the game, the website...) on your computer ending up with a finished project, thinking that you understand everything. You can end up following tons of tutorials and have the impression to grow, but when it comes to being alone in front of your computer wanted to build something by yourself, you realize that you don't know anything and you don't even know where to get some help or to find answers.
Get into the community!
An important part that you'll hear or read, is to get into the community via social networks (Discord, Twitter, LinkedIn...). But you've just started, who's gonna follow you? Who's gonna answer you? You're a newbie and think that you have nothing to bring to the community.
Impostor syndrome
This is also something you will hear or read a lot. This is the fact that you don't feel good enough to answer someone who needs help, apply for a job or simply build a project. I think that every developer has been through it.
Failure, bugs, errors...
Maybe it's hard to believe at the beginning, but most coding is to fail. Don't imagine that engineers or experienced developers just write everything on the first try and it works perfectly. The purpose of programming is to solve issues or problems. You have to accept that most of the part will be to face errors and as a good developer, you'll have to solve them.
My personal experience
I feel comfortable talking about that because I've been through all the situations above and for some parts, still in it. I did all the possible mistakes that a beginner can make. I've learned different languages at the same time(php, python, swift), not finishing a course and jumping to another one, and stopped coding to go into the web design world. Of course with already 2 children and a third one on the way, you don't have a lot of time and you get lost and overwhelmed very quickly.
Then I decided that I only wanted to code. I thought I knew JavaScript enough to try React. Following tutorials you feel professional and you impress people around you. But one day I said “Now I’m gonna build something by myself”, and you guess it was a disaster. So I started learning a bit deeper JavaScript because that's what React is all about. Then I get some confidence but was still jumping too quickly into something else(too much passion, and a will to learn everything). So finally a few months ago I took the best decision of my life, to learn the principles of programming by taking the Harvard cs50 course (link down below). I’m finishing the course and doing my final project. You learn very low-level programming principles and languages such as C and you jump into Python and SQL. You can’t imagine the benefits I got doing that, even if I was learning new languages, it helps a lot to understand more JavaScript or React, state management, databases…
Now, I feel so comfortable when I re-use JavaScript, few days ago I’ve just refactored my website applying the data structure I’ve learned. In my final project, I’m still facing issues, but I can solve them by myself because I understand where they may come from and what I have to achieve to solve them.
Recommendations
Of course, there are a lot of things to learn. My first advice, no matter the language you choose or the support you use, learn the fundamentals first. This is something hard to assimilate when you start because you have the feeling that what you're learning is gonna be useless for what you want to do. But not!!! To learn the fundamentals and understand what programming is all about, is the best start. For web development, as was my case, learn HTML and CSS (if you want to do web development you must know them) or as I did very late, learn first a little bit of computer science, algorithms and data structure. Build some little projects and get confident using them. Then learn a programming language, Javascript or Python, at the beginning, are very solid choices. At this point knowing the fundamentals make it much easier to learn any programming language.
Here are my best choices for free:
Harvard cs50 course to learn the principles of programming from the most prestigious University in the world. I'm finishing this course. I wish I started with it. Very difficult and challenging course, but it gives you a strong understanding before jumping into something more concrete.
Free Code Camp for almost anything (Html, Css, Javascript, Database, Data Analysis and so much more). A way to learn while doing on your own, and get final certification.
The Odin Project gives you very deep explanations of the concepts of web development, and multiple projects, that will fill your portfolio.
And a paid one:
Udemy where you can learn anything that you want.
Then, don't make the same mistake as I did to jump directly into tutorials that just give you the impression to understand and to be able to build something. Go to learn by doing. Doing that you just forget the tutorials hell. I don't say that you can't use tutorials, but follow them and make your own project alongside, with your own data and your own UI. Or choose ones that are beginners course with explanations. On YouTube, I recommend Traversy Media and Dave Gray.
Regarding social networks and the community in general, this is the best community I've ever known. You'll always find someone ready to help you, to encourage you, to promote you. I've used Twitter, selected my topics and started following what I was interested in. Share your experience day after day (what you're learning, what is your next step, what are the difficulties you're facing...) and you'll see that you'll be part of the community without any effort. Don't expect thousands of followers, go little by little. Discord is a good place also to find the topics that you want and you can chat with the community where you'll find help, advice and knowledge.
This is what you have to do in general, one step at a time, learn one thing at a time, and make little wins that will push you to continue. If your expectations are too big (at the beginning) and you're impatient, you're gonna fail.
The best advice I can give you is to not be ashamed of your skills and don't be afraid to ask when you don't know, no one is gonna judge you as a beginner. Believe in yourself, and show your projects, your determination, and your points of view. The best way to grow and learn is to build, share and teach(I say teach because it's the best way to be sure that you know something, explaining or teaching to someone). And this redirects me to the wonderful community I've met, following James Q Quick and his Discord server LearnBuildTeach. Without this community, I would have probably quit, but they give me inspiration, motivation and also a goal to achieve. That’s also why I’ve created this blog, to share my experience and maybe I can help someone find his way as a developer. It’s all about learning learning learning, building building building and teaching teaching teaching.
Don’t lose your passion and your motivation, we’re and we’ve all been in the same situation. But the rewards and the personal satisfaction are priceless.
Wish you the best in your process, let’s connect together and make this community bigger and stronger.