“How do I become a developer?” — I’ve heard this question a lot, so I decided to write the best guide I can, using only free resources. If you’re an experienced software developer already, feel free to save yourself the time and do something else. Otherwise, read on :).
“The journey of a thousand miles begins with one step” — Lao Tzu
Before you get started, I need to warn you: Unfortunately, programming is not for everyone, at least not if you want to stand out.
With that in mind, since you’re still reading this, I think you should really try it. Try it and see how it goes, and don’t feel frustrated if after some time you don’t feel like it’s for you. I, for one, really enjoy being a developer. I’m natural builder. Few things are more appealing to me than creating and automating stuff. I find it extremely beautiful and rewarding, and hopefully you will feel that way too :).
Also, the job market is definitely not bad and I don’t see it changing in the foreseeable future. Radio, cable TV, education, brick-and-mortar stores and the movie/music industries are examples of markets that will certainly be transformed, if not completely defaced, by software in the next 20 years. The future looks bright.
“You are either a software company, or being disrupted by one” — Scott Farquhar
This is the list of free resources that will turn you into a software developer. This is not going to be a walk in the park. This will be tough, there will be no teacher holding your hand, you’ll probably regret it sometimes, but think twice before giving up. Believe me.
“Self-education is, I firmly believe, the only kind of education there is” — Isaac Asimov
I know you’re excited and you can’t wait to see that brilliant idea in action but please, hold on. The fundamentals are the most important part. Programming languages and especially frameworks and libraries will come and go, but the fundamentals will remain.
“As to methods there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble” — Harrington Emerson
CS50x is a free course from Harvard provided by Edx. It will teach you the basics of how computers, programming languages, algorithms and data-structures work and pave the way for the rest of your journey. You can take this course for free and optionally get a certification for $90. After you complete this one, you’ll be ready to move on.
Once you’ve learned the principles with CS50x, now it’s time to put them in practice.
“For the things we have to learn before we can do them, we learn by doing them” ― Aristotle
Hackerrank is a free online service that will provide you with hundreds of algorithm problems and a platform on which you can implement solutions online using your favorite programming language. And the best part: It’s able to check whether or not your solution is correct automatically. Here’s why Hackerrank is an amazing tool:
CodinGame is a platform similar to Hackerrank, but you actually train your coding by “automating” video-games. The main difference is that you get instant visual feedback from the code you are writing. CodinGame may feel more exciting and appealing, while Hackerrank is still better for actually learning the specific kinds of algorithms that companies look for in interviews. Both are fantastic tools, nonetheless.
FreeCodeCamp is an open-source community where you learn how to code, especially web development, by completing a series of self-paced challenges. It’s also possible to engage in real world projects for non-profits. Also, the other “campers” seem to be very helpful along the way.
Stackoverflow is the biggest Q&A community about software development, but there’re not known for being very receptive to beginners. The best place to ask beginner’s questions is probably on /r/learnprogramming, but be sure to read their “Asking Questions FAQ” beforehand. After you get some confidence and experience, Stackoverflow will be your best friend.
After you got yourself introduced to coding and trained a little, you may find it interesting to delve into more advanced Computer Science topics like Databases, Cryptography, Parallel Computing and so forth. Fortunately, there’s OSSU. From their website:
This is a solid path for those of you who want to complete a Computer Science course on your own time, for free, with courses from the best universities in the World.
You should definitely give it a try.
One day, a guy named Josh Washam got obsessed about working at Google and made the world a favor by compiling a ginormous list with very useful resources about computer science. Apparently (or not), this is what it takes to work for Google. From his website:
I originally created this as a short to-do list of study topics, but it grew to the large list you see today. Working at Google was the original motivator, hence the name. I didn’t get an interview at Google, but the repo name lives on, and it would mess up a lot of folks to change it now. The items listed here will prepare you for a career at just about any software company, including the giants: Amazon, Microsoft, Google, and Facebook.
As you can see, unfurtunately he didn’t get hired :(, but his work will sure help many others.
There’s an overwhelming amount of resources online about learning how to code, but I think the best you can possibly find is this: The top posts ever on /r/learnprogramming. Amazing Subreddit. Amazing list. You’ll learn everything from Web Development, to Data Science with Python, to Mobile development.
I handpicked some of the best for you:
Also, be sure to read these 2 articles of mine:
I hope you enjoyed it. Happy hacking!
I’m André Pena, I like writing and building stuff. Recently I built: https://remoted.io, a remote job aggregator for developers, check it out! 💗