In my previous post, I mentioned that I used free resources on the internet to learn and prepare myself for the internship interview. I want to elaborate more on that here, describe those resources and suggest a learning path that worked for me.
The key takeaway of this post is that everything you need to know to land an internship or even a junior level job, is available on the internet. There is plenty of information, tutorials, videos, courses etc. for learning to build apps. You just have to find them, and start learning.
The very first line of code I've ever written was on Codecademy in 2013. I stumbled upon it while googling and immediately started learning. At that point, I knew nothing. I haven't even heard of most of the stuff they teach there.
The reason why I liked it is that they provided interactive environment for you to type your code. No need to set up anything on your own machine. Each lesson is self-contained, explained in detail. They provide exercises that you need to pass to continue forward. This cycle of learning and practicing small bits is valuable. Each lesson starts slow and easy and introduces new and harder concepts. It is very satisfactory to see yourself progressing through the course, one lesson at a time.
But the crucial thing is that you have to write the code yourself. The only way to learn coding is to write a lot of code yourself. If you don't write it, you don't learn it. Muscle memory plays a huge role here. Once you do an exercise a couple of times, it transfers to muscle memory. Then it becomes easy because you don't have to think about it as much as before. It becomes automatic. No need to memorize anything by heart.
For the learning path, do it in this order:
This will give you a strong foundation for building web sites and applications. If you choose to dive deeper into frontend, you can learn
React. It's a very popular
Then pick a language that will be your first real programming language. You will use this to build server side of your web app, or a desktop app. If you are more into web,
PHP is a great choice.
Python is beginner-friendly general purpose language. Very powerful, used in many areas of software engineering. In case you are more into mobile apps, learn
Kotlin to build
Android apps. For
Swift are the way to go.
Some devs would suggest learning
C++ first, but I disagree. They are very old, low level languages which compile to machine code. These low level concepts would only confuse already overwhelmed students. You are already learning so much. Learning about pointers and memory management will only make your head explode. Unless you are into drivers and operating systems, then suit yourself.
SQL. It's language that we use to communicate with the database. This is especially important because almost every app we build today uses a database. Otherwise, all the data we have would be gone every time we stop our apps. So we keep the data and use 1 to read it and manipulate. You will most of the time use it in conjunction with other languages.
This is a kind of online code-school very similar to Codecademy. Interactive code editor and bite-sized lessons are also present here. The curriculum is geared towards frontend development, although their newest content includes backend, databases, testing, security, job interview preparation and more.
What freeCodeCamp does better is that their curriculum is very practical and project oriented. You not only have to complete each exercise, but you will also have to do a project at the end of each course.
This is very important, because what this does for you is basically prepare you for getting a job in web development. You not only learn the syntax of various programming languages, you also learn how to use them in practice. Syntax on it's own doesn't do much. Using it to create something of value is where the real learning takes place.
There is no lesson that teaches you how to do these project. Instead, it requires you to spend some time to try and build them yourself. This teaches you another important skill: researching. Chances are, you won't be able to do the entire project on your own. And you don't have to. That's why you will use the internet to look for answers. Every problem you run into, so did a lot of people before you. For every question you might ask, someone else already did and got an answer. You just have to find it.
Once you complete all projects in the course, you will get a certificate of completion. Don't be afraid to show it off. You spent a lot of time and effort to earn it and you should be proud of your progress.
The curriculum is very well designed and you should do it in the order presented. This will take you from a beginner to a full stack developer. You will learn everything from building websites, web app, server side render apps, testing, databases etc. This is already more than enough skills for not only an internship, but an entry level job as well. A lot of people got their first jobs before even finishing the entire curriculum!
Take you time, this will be a tough ride. It's going to take a lot of effort and time to finish the entire curriculum. I'm speaking about the timeframe of 6 to 12 months of daily learning. Be regular and consistent and you are good to go. You don't even have to finish the entire curriculum before starting to apply for jobs. Let alone internship. A lot of people haven't, including myself. The more finished projects you got under your belt, the more chances you stand.
Which one to choose
Choose both. Do them both interchangeably. The reason for this is they have slightly different way of teaching. Codecademy teaches languages more thoroughly, their syntaxes and concepts. On the other hand, freeCodeCamp is more practical, letting you use the languages you know to build something practical.
I wish you luck in your learning quests and internship hunt!