You've decided you want to learn how to code. Maybe you want to learn a new skill, create the app you've been thinking about for years, or perhaps want to switch careers. These are all great reasons to dive in the world of code. But where do you start? There are so many different programming languages, concepts, schools, learning platforms, tutorials, etc. If you are struggling with knowing where to start, I've put together this guide to provide a few different routes/resources you can take to learn how to code, and how to achieve your goals.
Before we begin, there are widely varying opinions on the best programming learning path. This guide includes information and learning resources, with links if you would like to explore more. There is no "correct" path to take when learning programming, but hopefully these resources will help you get started on your coding journey. At the end of the day, it's your responsibility to pick the path that you feel is best suited for yourself.
Both of these courses(taken online) provided by Harvard and MIT are freely available to anyone who wants learn the basics of computer science, and is a great start to learn the fundamentals of programming.
- "CS50 is Harvard University's introduction to the intellectual enterprises of computer science and the art of programming. Anyone may take CS50, even if not a student at Harvard."
MIT: Intro to CS and Programming in Python
- "Introduction to Computer Science and Programming in Python is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals."
- "Python is relatively simple, so it's easy to learn since it requires a unique syntax that focuses on readability. Developers can read and translate Python code much easier than other languages. In turn, this reduces the cost of program maintenance and development because it allows teams to work collaboratively without significant language and experience barriers."
- "Many Ruby developers find it fun to work with Ruby, and fun is a great motivator when learning to code. Ruby is a very high level language, which means Ruby abstracts away (i.e. handles for you) most of the complex details of the machine. Thus, you can quickly build something from scratch with less lines of code. Ruby was made popular by the Ruby on Rails framework, a full-stack web framework that makes prototyping a breeze, making it a web framework of choice for many startups and coding beginners alike."
One thing most programmers will agree on is the value of projects, especially personal projects that YOU want to build. I can say with confidence that the majority of my learning and understanding can be attributed to the projects I've built. Not only are projects fun and stimulating, in the end they are much more effective than books and tutorials. User books, tutorials, and videos to learn the basics...and then transition to project mode when you feel you have enough of a foundation to create something. Even when you start a new project, you will not know everything you need to know in order to finish, but having that foundation and utilizing online resources (section on that below) will likely get you started off on the right foot.
If you're struggling to think of beginner projects, check out this list that includes five small projects in Python.
- "FreeCodeCamp is a non-profit organization that consists of an interactive learning web platform, an online community forum, chat rooms, Medium publications and local organizations that intend to make learning web development accessible to anyone."
- "Treehouse believes in the democratization of technical education in order to overcome economic and psychological barriers. Our students learn at their own pace and become job ready within months at a fraction of the cost. We are committed to making education accessible to students of all races, genders, sexual orientations, and socio-economic backgrounds."
- "The Odin Project is one of those "What I wish I had when I was learning" resources. Not everyone has access to a computer science education or the funds to attend an intensive coding school and neither of those is right for everyone anyway. This project is designed to fill in the gap for people who are trying to hack it on their own but still want a high quality education."
At the time of writing this post, I am currently a software engineering student at the Flatiron School in Seattle, WA. If you're unfamiliar with bootcamps, they are defined as
...technical training programs that teach programming skills employers are looking for. They enable students with little coding proficiency to focus on the most important aspects of coding and immediately apply their new coding skills to solve real-world problems.
There are varying opinions on coding bootcamps, as most of the material taught at coding bootcamps can be learned on your own for free. Bootcamps tend to cost anywhere from $5,000-$15,000, depending on the school and location. For me, this was a great option to immerse myself in the programming world, and to accelerate my learning. You may find bootcamps are a great fit for you or you might prefer to learn on your own, both can be great options. My advice for bootcamps is to focus on narrowing down schools that have a great history of job placement success, and include a dedicated career services to help you find that dream job upon completion.
The three coding bootcamps below all have free prep courses (which I've linked to) that you can take online, and can are all amazing learning platforms. I highly recommend utilizing these free courses to start your learning. Flatiron School's free prep course even includes instant chat access to real instructors that are able to help you while working.
If you're learning code in order to switch careers or enter the job market for the first time, you will likely need to practice interview style questions, and learn to talk about your thought process and code. Below are some of the top resources to prepare for interviewing.
- Cracking the coding interview is arguably the most popular resource for interview prep. "Cracking the Coding Interview gives you the interview preparation you need to get the top software developer jobs. This is a deeply technical book and focuses on the software engineering skills to ace your interview. The book is over 500 pages and includes 150 programming interview questions and answers, as well as other advice."
- A curated list technical interview questions, broken down by category/language
- "The purpose of LeetCode is to provide you hands-on training on real coding interview questions. The Online Judge gives you immediate feedback on the correctness and efficiency of your algorithm which facilitates a great learning experience."
- "HackerRank is a technology hiring platform that is the standard for assessing developer skills for over 1,000 companies around the world. By enabling tech recruiters and hiring managers to objectively evaluate talent at every stage of the recruiting process, HackerRank helps companies hire skilled developers and innovate faster."
- 'Founded in 2008, Stack Overflow is the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.' Stack overflow has been a staple in my own coding journey. Nearly every question you have has likely been a topic of discussion on Stack Overflow. It will be your best friend while learning code.
- Repl.it is a neat site where you can choose a programming language, write some code, and it will instantly show you the output of that code on the right hand side. This was my favorite tool when starting out, as I could test code without have to save/open files on my computer.
- CSS Tools
- Test regular expression in your browser
Text Editors(where you write code)
Thanks for reading! I will continue to update this list as I find more resources to share with everyone.