I started dabbling with The Odin Project in late 2023. At the time I was pretty busy with college work, which itself was on top of my full-time flying job. So it took me a little over a year to go through the foundation track.
For context, I have gone through and completed many beginner courses:
- Hack Reactor's live prep,
- Scrimba's entire front end career path (except for advanced React),
- Launch School's free prep course and their first paid course,
- Harvard's CS50
- And many more random explorations.
As you can imagine, my learning-to-code journey has been ongoing for years. As such, there were very few totally new concepts in Odin's foundation track. Nevertheless, I made it a challenge to go through the whole thing, step by step, without skipping. This was not a waste of time, as you'll learn in this article.
Why I Love The Odin Project
It’s a curriculum.
It may not be the best for everyone, but it beats picking your own path and stitching together tutorials from here and there. Following a tested path keeps you on track, and hopefully, motivated, as you won't end up wasting time searching the net for quality material.
It offers a nice balance between hand-holding and independent work.
For example, you get to set up a local development environment from the get-go, so you would learn how the pieces come together. You also start using Git and deploy live products right away. This is especially valuable if you’re not an absolute beginner, for which sources like freeCodeCamp may feel too easy or slow.
It gives you the sources to study, and lets you pick your own depth.
You can elect to just skim the assigned article, follow along with the coding examples, or dig deeper. You decide how much time to put on each topic based on your current skills and/or preferences.
There is also an optional additional resources section at the end of each lesson which I quite like. I gravitate towards them when I find the required assignments to be too easy. In other cases, I bookmark them for review a few days later. This way I get to repeat the learned material as well as gain a fresh perspective without reviewing the same sources (which is not much fun!)
It encourages you to consume material from reputable sources and documentation.
This is again especially valuable to post-beginner learners. It opens up your eyes to details that are normally abstracted away when following a YouTube tutorial or reading a Medium article. I have seen negative comments regarding this aspect of The Odin Project, but remember, reading documentation will be a major part of your software development career, so you might as well get used to it now.
Odin’s assigned material often includes a variety of sources.
It includes MDN, JavaScript.info, YouTube videos from various creators, and sometimes quite old articles that have aged very well. I found this variety to be incredibly useful. For one, you get introduced to concepts from various perspectives, helping them get cemented in your memory. Second, it prevents you from getting bored, as you constantly switch contexts and teaching styles. Also, I feel like Odin’s authors have picked the most optimal sources for each concept, as some sources explain a concept better than others.
The curriculum interleaves major topics.
You start with HTML/CSS, move to JavaScript, come back to HTML/CSS, go back to JavaScript, and so on. I found this approach to be quite effective. For one, it offers an automatic spaced repetition, which helps concepts stick for longer periods. Second, it prevents boredom, since switching contexts every now and then reignites your brain and delays burnout.
Lastly, it enables you to build tangible and shareable products in the shortest possible time. You will be amazed to see how much you can do with a little bit of HTML, CSS, and JavaScript. Is this the best way to learn? Well, it’s debatable. But the joy of building something you could share is invaluable to keeping you motivated, and that’s enough reason to support this approach.
There is a decent amount of solo projects at significant milestones.
These projects provide very little hand-holding and leave you pretty much to start from scratch. You learn to connect the dots and think about the big picture. Although I have been coding for years, I found the first JavaScript + HTML/CSS project to be quite challenging. I knew how to solve each little piece, but putting everything together and thinking about the architecture fried my brain! I needed to plan how I was going to connect the logic to the interface, which led me to realize I needed to work on my organizational patterns and better appreciate the value of frameworks.
How it Can Be Better
I wish there were more hands-on exercises.
This is where sources like freeCodeCamp or Scrimba absolutely shine. With Odin, you read an article and may follow along with examples. But it’s unlikely you develop the muscle memory to implement the concepts on your own. Odin does offer some in-house exercises and often assigns external ones too. Still, I believe it’s not enough. You don’t lift weight only 5 times and say I’ve got this! You keep lifting until that muscle grows and continue lifting to keep it in shape. Similarly, you need to grow your mental muscles (brain neurons?) by doing many, many exercises. So you might want to augment your learning with other sources like Exercism or fCC.
Milestone projects feel a little too spread apart.
This is not really Odin's fault, as it takes time to learn enough new material for each milestone. However, I feel like I am waiting too long between hands-on projects, which makes me somewhat get lost in too much theory. I wish Odin had some mini-projects. Splitting big projects across several mini-millstones can also be a good idea.
In the meantime, I used frontendmentor.io to feed my desire for more projects. Just make sure you don’t go overboard and miss the mark.
There is no way to objectively compare each module’s time-to-completion.
You get a percentage indicator telling you how much of each module you have completed, but it’s not that useful. Some lessons are short, some are long. The short ones may have tons of external resources with varying time-to-completion and effort requirements. I understand that the creators want students to avoid time-boxing themselves and take as much time as necessary to complete each lesson. Nevertheless, having an indicator of one’s progress rate could help prevent unnecessary stretches.
There is no search functionality.
This one is more like a feature request than a criticism. Odin can be a great reference, especially after going through the curriculum. The Odin Project is quite big, with links to many external sources. Something like a CTRL+K you find on documentation sites could help finding information much easier.
Conclusion
Following the foundation track, I finally managed to sit down and study topics I had been avoiding for too long. CSS Flexbox is one example. I used to get by through trial and error. Was it justify-content
or align-items
? Try them all until it works! After going through the assignments, I finally developed a sound mental model. Now I can't forget which one is which, since I truly understand the concept, as opposed to simply memorizing the syntax. This is why I found it worthwhile to wholeheartedly go through the entire thing, even though I had extensive background on the fundamentals.
Having said that, it is not for everyone. I have a friend who has live apps on the iOS app store and Android Play Store, built using React Native and the whole modern shebang! They even generate a non-negligible income. His apps do not win any awards, but they are solving real problems and helping him learn by doing. Meanwhile, my biggest fully independent project has been an Etch-a-Sketch even though I know how low-level memory management works in C 😅. He has different goals. He wants to solve problems and coding happens to be one method to solve them. I, on the other hand, love coding for the sake of it. I really want to dig deep and learn the inner workings of software development. I enjoy sharpening my tools (custom themes, vim, automated workflows, etc). I aim to solve much bigger problems and enjoy doing so using code. If that's you, then The Odin Project is one solid path to achieving that goal.
Top comments (0)