The Odin Project Foundations Course

The Odin Project Foundations Course

My Personal Experience and Review

Introduction

Having recently completed The Odin Project Foundations course, I wanted to share my experience to provide an insight to anyone interested in learning more about the course and to help them decide if it is suitable for their needs, or if in fact, it is even worth doing.

Truth be told, I’m also writing this for myself. I saw this as an opportunity to collect my thoughts on where I was at the time of completion. A marker in the road, on my journey to becoming a full-stack web developer.

First, let’s cover some questions you may have. I know I certainly did before I started.

What is the Odin Project?

The Odin Project (referred to hereafter as TOP) is a free, open-source curriculum. Established in 2013, its objective is to provide a structured self-paced learning system for people wishing to learn full-stack web development.

It is a project-based course, meaning you will learn through building your own programs, apps and responsive web pages as the course progresses. It aims to introduce you to some of the real-world challenges and tools that you will encounter as a web developer. Utilising a wide selection of up-to-date study materials including videos, articles and documentation from across the internet to provide a varied pool of learning resources on the topics covered.

The course is broken up into sections. “Foundations” is the starting point, and forms the basis of the entire curriculum. Its purpose is to teach you the fundamentals of modern web development.

What will you learn?

The Foundations section starts with the assumption that you have little to no experience of web development, or even how the internet works in general. As a result, it begins by teaching you the basics from the ground up. The aim, Odin says, is “take you from zero to a full-stack developer”. Starting with essential baseline knowledge by providing an overview of how the internet works, what servers and clients are, and how they are connected and interact with each other on the web.

As you progress you'll dive deeper into the core technologies used in web development; HTML, CSS, and JavaScript, as well as how to use tools such as Git, VS Code, Chrome Devtools as well as setting up your own developer environment (IDE).

The course also teaches you how to approach problems like a programmer, by breaking them down into manageable, more solvable components.

Additionally, you will learn how to plan and structure your solutions by writing pseudo-code, which will sharpen your problem-solving abilities and equip you with the necessary skills to tackle complex coding tasks in real-world scenarios.

Did I have any prior experience before starting?

Yes. Before embarking on TOP I had just completed a JavaScript fundamentals course by FreeCodeCamp. I also have some experience with website development and maintenance, as I used to run a record label which had its own website, which I project managed through the development phase and went on to maintain myself.

What does it cost?

Financially speaking if you have access to a computer the course is completely free. The real “cost” is the investment of your time.

How long did it take?

In total, it took me 11 weeks to finish the Foundations section. I didn’t religiously track the total hours, but as a guide, I worked on it 5 days a week for between 1-6 hours per day.

I’ve read about people who have completed it in less than a month, and some taking 10+ months to complete. It is self-paced, so bear in mind everyone will be different here, with different commitments and varying levels of experience before starting the course.

My advice is to not waste your energy comparing yourself to others. Focus on yourself and be consistent with putting in the work each day. There are no prizes for finishing quickly so don’t rush the process. It will take as long as it takes.

What I liked

The program's structure. Learning web development is hard. Learning it on your own is even harder. A structure, in my opinion, is crucial to success. That’s what TOP provides. It builds on the topics steadily and logically, increasing the difficulty as it progresses to help you level up.

This isn’t a hand-holding, code-along tutorial. TOP gives you examples and resources which you have to understand and at the end of each section, you are tasked with a project to create on your own based on the material taught.

The course equips you with most of the tools required to complete these projects, but it doesn't always explicitly cover everything you’ll need to solve the challenges. This is by design, as it encourages you to research and figure out some of the pain points of the projects independently.

As a result, you'll gain real-world problem-solving skills that involve more authentic experimentation through research and trial and error. Time to level up those Googling skills!

The curation of varied learning resources. I felt it helped to offer different perspectives and explanations of the topics. This means you aren’t stuck with one narrative style or teacher, which helps open up new avenues towards understanding and keeps the material more engaging.

100% flexibility. There are no time-scheduled classes you must attend as everything is online and ready to go when you are. This allows you to incorporate the program into your schedule. Perfect if you are also working full time while studying, as I am.

What I disliked

Get your reading glasses ready, because you're in for a lot of it. One aspect I found challenging is that some of the reading sections provided are pretty dense. MDN documentation for example, while regarded as the go-to resource for many of the topics covered, can be difficult to navigate at times.

I quickly discovered that reading documentation is a cornerstone of a web developer's career, as it provides the most accurate and up-to-date information. TOP heavily emphasizes this aspect of learning. However, transitioning from video tutorials to documentation can be challenging. I also faced this hurdle initially, but it's a skill that needs to be cultivated, it just requires time and practice.

The course isn’t focused on mobile-first development. I understand that web development is a complex and layered subject to learn and to make the content more approachable the initial projects are primarily built for desktop devices. In a world where mobile is ever increasing in popularity, it does feel like this aspect is treated as an afterthought. I do not doubt that this will be addressed later in the curriculum and I'm certain this omission is by design to avoid overwhelming learners, but for me, it was a slight negative not to be learning these techniques early on.

Would I recommend it?

Definitely. With the knowledge I have gained, I feel more confident to take on more advanced topics as I continue my studies in web development. While learning is a continuous process, the course has provided me with a solid foundation that I can use to build upon and further develop my skills.

Tips

To avoid disappearing down a rabbit hole of information I’ll briefly touch on some techniques I applied to help me navigate and digest the content of TOP:

Time management. If you’re new to self-studying, start by setting yourself a schedule. This course will need to be integrated into your life if you want to finish it. Prioritise your time with a realistic schedule and give it the attention it deserves.

Consistency. This is the Achilles heel for many. You have to find a method that will keep you coming back to this course day after day, week after week. Something to look into, to help keep you accountable if you struggle with consistency would be the #100DaysOfCode initiative.

Effective studying. Once you’ve got your structure in place I’d follow that by looking into another free course before actually embarking on TOP. There is a (free) course called Learning How To Learn, which teaches you techniques and methods of how to learn more effectively and actually retain what you have learnt.

The Pomodoro technique. This was a concept taken from the aforementioned Learning How To Learn course. In a nutshell, you break up your study time into 25 min chunks with 5-minute breaks. This technique allows you to pace your learning, avoid burn-out and helps you to better absorb the material you’re reading. I found this very effective and it was the method I returned to time and time again when given a dense MDN section to read. Here's the web-based timer I use to get you started: pomofocus.io.

Repetition is the Mother of all learning. If you want to retain any of the information you are studying you need to incorporate regular revision into your schedule. Little and often is the key here, a few 5-10 minute sessions spread throughout the day.

Digital flashcards are a perfect solution for this. I've used them to help teach myself German in the past (I used Memorize at the time) however a more suitable flashcard-based tool for coding revision is Anki as it allows you to format code snippets in the cards so it looks like real code and makes it easier to read. Anki automatically organizes your flashcards to optimize your study sessions, preventing you from wasting time re-learning material you have already mastered.

Ask bad questions. Expect bad answers. Or, you'll simply get no answer at all. Learn to ask questions effectively. Pasting your code into Discord and just saying it's not working won't get you the answer you're looking for. People are out there who are willing to take time out of their day to assist you. Help them to help you by giving detailed information on what your issue is, what you’ve tried to resolve it and what you want the outcome to be. Include code snippets where appropriate. Asking a good question does take time. It’s a skill in itself. The faster you can learn that skill the faster you can get yourself unstuck.

Use Discord and Twitter. There are active TOP communities on both of these platforms. Use them to connect with other learners, it can help with motivation to meet other people who are facing the same challenges as you. Some people will be ahead of where you are and may be able to offer advice, other people may be seeking advice that you can assist with. Both are equally important. If you can teach someone what you know, it serves as a true indication that you have understood the concept of a topic.

Get comfortable with feeling uncomfortable. Web development is hard. You’ll hit walls, often. You’ll feel stupid and frustrated, often. It’s a sign you are pushing your boundaries of understanding and knowledge. Take breaks when you need to and come back again with a clear head. Keep going and remember: It's all learnable.

Use ChatGPT, with caution. Discipline is needed when utilising such a tool, especially as a beginner. The answers can be convincing, but it can be difficult to determine their correctness, as we simply don't have the knowledge at this stage of our learning to accurately assess what ChatGPT is telling us.

I found it's most effective to use as a way to help simplify complex concepts you are struggling with and to help catch minor syntax errors. This is particularly useful when you've been staring at your code for 20 minutes and just can't spot that elusive missing semi-colon!

Visualise your code. When first learning JavaScript, it can be challenging to comprehend what's happening in your code. One helpful tool to aid your understanding is this JavaScript Visualiser tool. It allows you to paste in your code snippet and it breaks down each step to show you what's happening visually.

Don't skip the additional resources. TOP provides supplemental articles in a section called "Additional Resources." While not essential reading, I found these can be helpful to provide alternative perspectives on those hard-to-digest topics that are difficult to comprehend.

Listen to noise. Obviously I don't mean those guys drilling the road outside your apartment. They're not going to help you here. I mean white noise, this is something that worked well for me when studying. I find music too distracting to listen to while working, but blocking out audible environmental distractions helps me maintain deeper levels of concentration. I realise this isn't for everyone but if you find yourself easily distracted by the sounds around you, try creating your own head-space by blocking out the world with some headphones and playing a white (or brown) noise soundtrack to help focus the mind.

Alternatives to The Odin Project

If you’re unsure whether TOP is for you there are other alternative (free) high-quality courses to consider. FreeCodeCamp is one I can vouch for personally having completed their JavaScript Algorithms and Data Structures course. It's more approachable for complete beginners in my opinion as they use a built-in code editor which allows you to jump right in and start coding in the browser. TOP on the other hand starts you off setting up your own IDE and even a Linux system if you're coming from a Windows operating system. More realistic and useful in the real world certainly, but could be overwhelming for a complete novice.

Other alternatives I've seen positive feedback for are; 100Devs and Full Stack Open.

What’s next?

The foundation's course is just the first phase of what is a much more extensive curriculum. After completing the foundations portion you can choose the direction you wish to take. The options available are JavaScript or Ruby on Rails.

I’ve opted for the JavaScript path as having researched the opportunities in my area, it is simply a more in-demand technology. At the time of writing, I’m just about to start the last project from the Intermediate HTML and CSS section of the JavaScript path. For an idea of what I'm currently working on far feel free to check out my GitHub profile. All my TOP projects can be found there.

I'd like to finish by saying I am enjoying the course immensely and I am happy with the depth of knowledge I’ve accumulated since starting. I'm looking forward to delving deeper into the course as it moves further into more advanced JavaScript topics and exploring NodeJS, Express and MongoDB.

If you’re interested to see how the course develops you can find me on Twitter where I post my #100DaysOfCode updates.

I hope this overview of The Odin Project Foundations has helped you make a more informed decision about whether the course is right for you and has answered some of the questions you may have had.

At the end of the day, it's a free course, so you've got nothing to lose in trying it out to see if it works for you. The most important thing is to get started and stick with it, whichever course you choose.

If there’s anything else you’d like to know about the curriculum that I’ve not covered feel free to drop a comment below and I’ll reply there. Thanks for reading!