I’ve heard this question a lot, so I decided to write the , . If you’re an experienced software developer already, feel free to save yourself the time and do something else. Otherwise, read on :). “How do I become a developer?” — best guide I can using only free resources “The journey of a thousand miles begins with one step” — Lao Tzu Introduction Before you get started, I need to warn you: Unfortunately, , at least not if you want to stand out. programming is not for everyone It requires immense dedication. I mean, forever. I am a software developer for 11 years now and my “learning list” keeps getting bigger instead of the opposite. You are either willing to be a forever student, or you should be considering something else. It requires passion. Of course you don’t have to feel passionate right now, you’re just getting started, but it has to happen somewhere down the road. Otherwise you’re going to be mercilessly left behind by those who are. It’s challenging and a lot of people get burned out. Oftentimes you’ll be dealing with long hours of “mentally taxing” work, impossible deadlines, legacy unmaintainable code, inconsistent/ambiguous requirements and sub-optimal office environments. It requires analytical thinking, good decision making, patience and curiosity, lots of curiosity. It requires you to be . Yes, you can learn the theory from the books, but when your code breaks, nobody is going to hold your hand. self-taught With that in mind, since you’re still reading this, . 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 . 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 :). I think you should really try it builder 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 How to become a developer 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 Where it all begins CS50x 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 is a free course from Harvard provided by . 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. CS50x Edx Getting your hands dirty 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 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 . 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: using your favorite programming language and progressively becomes more difficult as you solve more problems. It starts from the easy level You can pick problems from a variety of “tracks”, depending on your interests. Examples: SQL, Python, Artificial Intelligence, Functional Programming, Security… It has “tutorial tracks” that actually include lessons. For instance, I highly recommend , where gives a great introduction on data structures and algorithms. . Cracking the Code Interview Gayle McDowell I find this track a great follow up for CS50x Most of the jobs you will apply for, will require passing some sort of coding challenge. That’s how they assess your problem solving skills. This process often starts through an automated tool like or , before going to a real whiteboard. Having solved lots of Hackerrank problems will definitely help you landing your first job. Codility Hackerrank 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. CodinGame 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. FreeCodeCamp Asking for help 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 , but be sure to read their beforehand. After you get some confidence and experience, will be your best friend. Stackoverflow /r/learnprogramming “Asking Questions FAQ” Stackoverflow Getting to the next level OSSU 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 . From their website: OSSU 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. The final frontier Google Interview University One day, a guy named got obsessed about working at Google and made the world a favor by compiling . Apparently (or not), this is what it takes to work for Google. From his website: Josh Washam a ginormous list with very useful resources about computer science 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. , 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. I didn’t get an interview at Google As you can see, unfurtunately he didn’t get hired :(, but will sure help many others. his work Where to go from here There’s an overwhelming amount of resources online about learning how to code, but I think the best you can possibly find is this: . Amazing Subreddit. Amazing list. You’ll learn everything from Web Development, to Data Science with Python, to Mobile development. The top posts ever on /r/learnprogramming I handpicked some of the best for you: I’ve taught 30,000 students how to code. Now I’m offering my course for free, forever. I made 47 free C++ tutorials on YouTube and wanted to share them with you guys Here’s a SANITIZED list of 530+ free online programming/CS courses (MOOCs) with feedback(i.e. exams/homeworks/assignments) that you can start this month (December 2016) 40 Key Computer Science Concepts Explained In Layman’s Terms (x-post from r/interestingas****) Also, be sure to read these 2 articles of mine: How I stay up-to-date as a Developer . The best way to learn new technologies is by doing. Here’s some inspiration I hope you enjoyed it. Happy hacking! About the Author I’m , I like writing and building stuff. Recently I built: , a remote job aggregator for developers, check it out! 💗 André Pena https://remoted.io