My path to a first programming job
I get asked a lot by friends about the path I took to get my first programming job, usually, I point them to some courses, but I wanted to create a more descriptive post.
I hope this helps someone that doesn’t know where to start, building a handy document to give anyone asking for a route to get their first programming job.
A little background first. I didn’t start from zero to learn programming in the wide sense of the word, before starting to learn programming I wandered over other math-heavy careers like physics degree and chemical engineering, while I didn’t finish any of them, they provided me a lot of abstract thinking that made it a lot easier to learn programming concepts. If you are starting from absolute zero, I encourage you to embrace the challenge, the reward is worth it.
First of all, I took the non-academical path, which means I studied independently at my own pace. While I think this method worked great for me, it may not fit everyone, having a schedule and someone guiding you is a great resource.
Taking this path took me a whole year, dedicating all my time to it, here I won't list all the courses I took, but rather the courses I think were the best and approached me the most to my goals. These are just suggestions, and you might fit each step with whatever you think is the best, but the actual steps are what I think is the important part to get into your first job.
Some advice
Before actually learning to program I advise you to learn English, this is one of the reasons why this article is in English. If you don’t speak English the path will be a lot harder, not only to get the jobs but because the best learning resources are in English.
You don’t actually need to know a lot of maths, but basic Algebra is important, understanding how to manipulate and think with variables is a big part of programming, if you are not comfortable with it, try to learn some, it will make your path easier.
The actual programming language is not important. By following this path you don’t need to focus on a specific programming language, if you get a good basis you will be able to easily jump from one to another. Focus on what you want to do and use the best tools for it.
Learn by doing, never skip a practical exercise, there is where you actually learn, try to create your own things whit all the stuff you learn at each step.
Just google it. It is really normal to get stuck, don’t give up, and google it, the ability to search for solutions and read documentation is as important as actually knowing how to program.
Don’t get burned and enjoy the path, programming is a game, you get a problem and you have to solve the puzzle, getting to solve it is really rewarding, and when the harder the problem, the higher the reward, but not if you burn yourself out of the path.
Getting the bases
This step is usually skipped by all the self-learners I met around, but it will make a huge difference in the long run.
For this step, I always recommend the CS50 course in Edx, it is dictated by the Hardvard university and is one of the classes I appreciated the most, the challenges are quite hard, but I didn’t find any other course better to really understand some concepts like linked lists or how memory works. I personally didn’t finish this course, since, at the moment, I was following a career path that I found somewhere else, but I would have liked to finish it.
The other course I recommend is also in Edx, Introduction to Computer Science and Programming Using Python. This one is a little bit easier to follow. You could do only this one, but I highly recommend doing both.
Object-oriented programming
Once you get the bases, the next step is to master Object-oriented programming (oop).
Here I loved the Java programming MOOC dictated by the University of Helsinki. You will learn all you need to be a programmer, once you get all the concepts from this course you will be ready to build anything (well, almost).
I never found any other course so rich in content as this MOOC for this step, it provides a lot of challenges and really focuses on teaching by doing. If anyone reading this has good options I would like to hear about it.
Learn a framework
At this step is when you get to specialize at something and you have to choose a path, now you have to learn how to actually build something, android apps, webs, games, bots, etc. it's up to you.
You should think of a problem that you’d like to solve, maybe it is a way to sell a product, one conflict you always get with your friends, etc, and think how you would like to solve it.
Here I can only point you to a couple of resources, but you will have to do your own research to get more specific options according to your needs.
If you want to develop android apps, you can try the official google courses.
For web development, there is a full-stack MOOC, also from the University of Helsinki.
Personally, I ended up doing an Udemy course on the Spring framework to build web apps since I already knew Java from the previous MOOC, but I ended up working in a job where I never touched Java or webs again (so far at least).
Solve your problem
Remember the problem I said you should think of? Now it is time to solve it, build the solution, and learn by doing.
This might be the most important step before getting a job, most people I know that get into this path try to get jobs after doing a lot of courses, but without having anything to prove they know all that, anyone can get courses certificates, but actually building something will teach you more than anything and will be evidence that you learned it.
While you are at it, learn Git & Github, create a repository, and share your work there, when you are looking for jobs, share your repository like you share your phone number.
What is next?
By now you should know enough to get an entry-level position, but the route never actually ends.
Get involved in communities, Reddit has a lot of sub-reddits dedicated to each language, when I was in the first steps, reading posts from r/learnprogramming helped me to get motivated by reading about people in similar situations getting advice.
You can check the OSSU CS career, it is a free courses compilation, meant to contain all the knowledge you would get from an actual Computer Science degree, I used this list as a reference at the time and I’m still following some courses from it.