Note: Now that I've started working full time, I created a new post schedule that offers more time to write research-heavy posts. The goal is to publish articles to a series every 3 weeks. But in between those posts, I'll write shorter articles (about work, programming, tech, etc) every Sunday.
This may change according to my work (and sleep) schedule but for now, that feels doable. I'm also going to start publishing on YouTube! Instead of launching yet another dev YouTube channel, I plan to use YouTube to answer specific questions directly.
Initially, this article was a list of the resources I've personally used to get up to speed on different programming things- concepts, syntax, best practices, etc. But as the list got longer, I realized it wasn't as much a list of random things, but a pattern and habits I've developed over the past year.
Overall, I've gotten good at learning the things I don't know. That is I've learned how to identify what I don't know and then how to learn them.
So instead of continuing down my original path for this article, I completely started over. To make it easier for you to apply, I'll instead be sharing the patterns and habits that worked for me and others. Keep an eye out for the FREE alternatives in each option.
Udemy. Since Udemy has frequent sales, you can usually find them at $9-$12 per course. The low price makes it a great way to try a few different things before deciding on a path. Many courses on Udemy are also geared towards beginners coming in with zero to little knowledge of programming. Don't be intimidated and just dive right in!
Pluralsight. I recently gained access to Pluralsight through work and I am loving it. Not only does it have beginner courses like Udemy, but it has a number of courses geared towards intermediate and advanced devs as well. @codefinity mentioned that some Udemy creators actually steal their content. At $29 per month or $299 for annual, it is a little pricey. However, if the thought of potentially shady Udemy practices makes you uncomfortable, Pluralsight may be a great alternative.
Coursera and Edx. Learn from top institutions at your own pace FOR FREE. These websites offer a great way to build a strong CS background by letting you audit classes from CS globally. Classes are generally free (without a certificate). Even if you decide to get a certificate, there are scholarships available for those who qualify. This mitigates the financial and time pressures of getting a good education.
- Another thing to note (thanks to @cswalker21 for mentioning this in the comments) is that with Coursera Plus (currently $59 / month) many classes have auto-graded assignments. This means you can complete class assignments that are automatically graded. Once you pass, that gets marked complete. A great way to be more engaged with the course.
2) Programming roadmaps. One of the hardest things for new developers is figuring out where to start. I know I wrestled with this for weeks after graduating from my bootcamp. Even a year into learning how to code, this remains a constant challenge for me. But there are excellent roadmaps that offer some guidance on where to focus.
Open Source Society University. @ozone72 shared this in the last article. But I wish I had known of this earlier. The name is pretty self-explanatory. OSSU enables you to build a core foundation in programming, math, tools, systems, theory, applications, and security. The syllabus might seem intimidating for anyone who dislikes math. But even then, I would recommend getting through what you can. Especially considering that the roadmap itself is FREE.
FreeCodeCamp. FCC is ubiquitous with self-learning. And as the name says, it's FREE. I actually never clicked with the actual FCC lessons/exercises format. But I found the structure useful for learning. The FCC YouTube channel is also amaaazing. It seems to have a video tutorial for everything. Not to mention the community is very active on Facebook.
The Odin Project. Similar to FreeCodeCamp, The Odin Project offers structured paths for building your CS knowledge. The platform offers FREE resources and the curriculum includes tons of projects for you to get your hands dirty. There's also an active community for you to ask questions or just connect with others who have transitioned into a software engineering role without completing a CS degree.
3) Tutorials. I already wrote an article listing my favorite YouTube channels. So with I'm not going to list that here. Instead, let's talk about how to to get the most from YouTube tutorials. But as you learn, you will find YouTube videos and tutorials extremely helpful for a few things.
- Concept bites. When I learn of a new term, my first step is getting a quick explanation on that thing. Starting with 5 minutes or less. @angelomiranda has a great channel for this. Switch to longer videos once you understand the basic premise. Once you're ready to learn how something is implemented, check out some tutorials.
- Code alongs. The best way to learn how to code is to write code, right? The next best is to read code. Coding along with a tutorial provides the best of those two worlds. I learned a ton by watching others code and seeing how they approach a problem. Just make sure you type out the code. It's tempting to copy and paste from the project repo. But you would be doing yourself such a disservice. Try to actually code along. Take notes. And write down your questions along the way.
- Code best practices. This naturally happens as a result of points 1 and 2. While job hunting, many people will tell you to keep building projects. But that's only effective if you're building good projects or building projects well. You can learn a lot about writing good code, implementing best practices, and avoiding pitfalls by watching tutorials where an experienced developer walks you through their project.
4) Community and accountability. Lastly, I wanted to touch on accountability and keeping a steady learning pace. The best thing bootcamps offer is structure. From 9 am to 6 pm, you're ushered from one lecture to another, you're tackling projects and asking questions. The impact of a structured learning environment cannot be downplayed. That is why I think it's critical that you create some structure for your days and weeks.
- Meetup. This is less available in person because of Coronavirus, but more available remotely! After graduating from FS, I made a point of going to 3 Meetups every week. One regular, weekday meetup was geared towards learning; one weekend Meetup spanned a few hours for getting hands-on support with a project or a lesson; the last one varied based on interesting events in the city.
With so many meetups operating remotely, you have the chance to find Meetups that work with your schedule nationally. Try not to go overboard with joining a million Meetups. Find 1-2 to start, and as you expand your knowledge, you can find additional ones.
Slack and Discord. The same is true for Slack workspaces and Discord servers. Don't just join every community you come across. Instead, find 2-3 with an active community around the thing you're trying to learn. From my own communities, I've been able to get feedback on my resume, introductions to companies, and, more importantly, comradery. Learning to code is a tough journey with lots of pitfalls, frustrations, and moments where you wonder if it's worth the hassle. Don't try to go at it alone when you don't have to.
Anki. Anyone who knows me IRL knows I'm a huge fan of Anki cards! Anki is a spaced repetition tool that helps you remember facts. The less you remember, the more it reminds you and vice versa. I first came across them while looking for ways to build my CS vocabulary and to transform what I read into long-term memory. Commit 30 minutes everything morning to reviewing your Anki cards and you will be surprised at how much you retain in the long run.
Chingu. An amazing community and program. The great thing about bootcamps is they offer a lot of projects to work on. The not-so-great thing is that you're working on the same projects as every other student. Chingu changes that completely. It's a program that lets you work in a team of developers at your level to create real-world apps. Chingu also mimics the on-the-job experience of doing sprints on a team with scheduled deliverables.
A technical blog. Lastly, blog your progress. I originally started this blog to track my own learning, while at my bootcamp. My goal was to summarize concepts I learned that day in as few words as possible. Keeping each post to 2 minutes forced me to review that concept and made sure I understood it well enough to explain it to someone else. While many people consider blogging a resume builder, I think it's also a great resource for interview prep. Because I wrote the articles and kept them short, my blogs have been a great resource for reviewing ahead of an interview.
Wow, I haven't written such a long blog in a minute! I typically shy away from them because they can be overwhelming. Was it too much at once? This post is at least 5 posts in 1. Each time I thought I was done, something else came to mind to add. Let me know if you prefer the shorter 1-2min reads.
Conversely, I'm happy to offer additional details into any one of these resources. There are even more FREE resources and strategies like these to facilitate your learning if you know where to start.
I uploaded my first YouTube video here. Just to give you an idea of what the channel will look like. The quality is a little rough, but it will get better 😂😂
Next in this series (in no particular order):
- Signs of a great bootcamp
- Bootcamps you can attend for free
- How to spend $17k more effectively
- My favorite communities for self-taught devs
- Crafting your own bootcamp
Photo by RF._.studio from Pexels