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
Top comments (13)
Another good alternative is Scrimba. Although you pay a monthly subscription, the video tutorials are all interactive, you can pause and edit the code from the video. The best thing is the discord community: they're very supportive, offer opportunities to talk to recruiters live and do CV/portfolio reviews, weekly challenges and weekly video calls with the Scrimba team (to discuss any problems you're having).
As a heads up, The Odin Project's curriculum isn't quite like FCC. Students do everything locally and get a dev environment set up as opposed to staying in an online IDE/sandbox (though the curriculum does reference FCC very early on!).
One of the things I liked the best about Coursera was that most classes had assignments that you submit to an automatic grader that you have to pass to get marked complete. In my experience, this wasn’t available when auditing a course (ie the free part). But to me the Coursera Plus option (like $400 a year for unlimited courses) was well worth it. YMMV
Good point! I generally use Coursera to audit, but I'll add this to the article
You forgot StackOverflow and GitHub
Mind explaining what you mean? I've used a few curated GitHub repos, but not so much Stack Overflow
Just ask and answer questions, it's some kind of learning and practice. At the same time, excellent questions and answers will get upvotes, and you will get the reputation. This kind of motivation makes you feel good. Then, repeat a few years.
My friend! Thanks for the special mention in this article. Now that explains why where new subscribers are coming from. 👍🙏 Thank you very much. Here is my channel if you want to save time finding it on the article - youtube.com/channel/UCFIwa5Eqf4kN1...
I see how vast is your experience by reading this article as I can relate to everything. I tried both Udemy and Pluralsight and love them both. I resort now to free vids on youtube carefully selecting what to watch as some vids are outdated or obsolete.
Keep the videos coming! I'm glad you found some things to take away from the article :)
👏👏👏 So much great information here as a self-taught programmer! I got to check out pluralsight, but Udemy was a great start for me. I especially got to network more and try meetups.
me too! I have so many unused Udemy courses that helped me realized what I didn't want to learn cough python cough
Share your Anki cards!
When I've shared them in the past, it hasn't been as helpful. I think part of the learning process is making your own cards, in the same way that writing out your own class notes is useful. But here is the video I first used when trying to figure out how to get the most from the Anki method.