Since switching careers from politics to software engineering, some people have asked me how I learnt to code. At some point I noticed that I just kept repeating myself, so I've decided to write it all down.
- Khan Academy - I went over the AP/College Computer Science Principles section to learn more about the foundations of computer science and programming.
Whilst these were the main resources I've used to get started and returned to throughout, there are many more websites that I found very helpful.
- Flexbox Froggy - A game for learning Flexbox
- Grid Garden - A game for learning CSS Grid
- CSS Tricks - A great resource for more in-depth information and helpful tricks
- MDN Dev Docs - CSS - Also a great reference, but not as visual as CSS Tricks
- Frontend Mentor - Website for frontend challenges. They provide you with the requirements and images if needed and you try to code the project as best as you can. Once you submit your solution, the community can provide you with feedback. You can also comment on other people's solutions. I used one of the free challenges to practice my CSS skills.
- Traversy Media - YouTube channel with lots of great intros
- Dev Ed - Another great YouTube channel
- Web Dev Simplified - Aaand another one (on YouTube)
For Coding Challenges
For Computer Science
- Harvard's CS50 Intro to Computer Science - I started with this one, but never finished it. The lecturer is great though, and there are several specialisation courses you can take afterwards if you're more of a university-style learner.
- The Missing Semester of Your CS Education - I did the first six sections or so with a particular focus on the command line (don't worry if this doesn't tell you anything right now, but if you want to find out more, you can read about it here). This is also where I learnt what I currently know about vim (including how to exit it :D). Vim is a code editor that you can navigate using your keyboard only. Some people love it, some hate it, because it's not necessarily very intuitive for everyone... that's why there are jokes about not being able to exit vim :P
- BashCrawl - A game to learn how to use the command line. Not technically a Computer Science course, but can be used in conjunction with the previous course to practice your command line skills. You need to know how to clone a repository for this one, which you can learn as part of The Odin Project.
For entire curricula, you can take a look at Open Source Society University (mostly online courses) or Teach Yourself Computer Science (mostly books). I haven't gone through them yet, but I think they serve as a nice reference.
Technically, not all of the below are resources I've used, but since some people have asked me about being self-taught vs. going to a bootcamp, I thought I'd list some free bootcamps I know. While App Academy for example is technically a paid bootcamp, their curriculum is freely available online and can give you a sense of whether you'd like to attend a bootcamp or not.
- Full Stack Open - A fullstack course by the University of Helsinki. The content is the same as the one taught at their Department of Computer Science. If you follow the timeline and complete the course, including exercises, you can earn a certificate. Finnish participants are also guaranteed interviews with the programme's corporate partners.
- App Academy Open - Uses the same resources as the paid content, but with less support (without live lectures, graded assessments, etc.)
- Rithm School - Free courses by a paid bootcamp.
- Front-End Foxes - For women, by women.
- Class Central - Free, online and open to all. Structured around freeCodeCamp's web development certification.
- Codebar - Not technically a bootcamp, but the community holds regular workshops and also has an active Slack channel and Discord server.
- Founders & Coders - Non-profit in London. You need to do quite some pre-work to apply, but I've only heard good things about it so far. I went to some of their open sessions to do some of the pre-work with others. During the pandemic, their cohort was online. I think they're back to in-person cohorts but I thought I'd list them anyways.
- Open Classrooms - Distance learning platform registered with the Board of Education in Paris. They offer a lot of free courses in English and French as well as paid training programmes in web development.
For more resources
That's it. I hope this list is helpful for at least some of you. If you're completely new to coding, I would suggest focusing on one resource first and consulting others as you try to learn more. Jumping between websites can actually be quite distracting, or at least it was for me.
Also remember that you don't need to know it all. As someone who's now working as a developer, I can tell you that there's a lot I learnt during my self-studies that I don't actively use at work, and a lot that I only learnt on the job. So the best strategy in my eyes is still to get the fundamentals right, build some projects, and then apply for jobs, so you can start learning by doing as soon as possible. That way, you'll find out sooner what you want to focus on, as there is simply too much for one person to know it all.
So happy learning! You can do it! 💪🏼