From Beginner to Builder: My Journey Learning JavaScript with The Odin Project
Originally published at Medium. From beginner to JavaScript developer: My journey with The Odin Project, real-world projects, challenges, and key lessons learned. I started my journey of becoming a programmer a few years back. This is my second time running into The Odin Project. But it was not my first attempt at becoming a programmer. When I was on campus, I couldn’t write loops in C and got supplementary in the second semester of my first year. I even lost hope when two of my laptops were stolen, each at its own time. As I write this article, thanks to The Odin Project, I’m happy to be active in the JavaScript developer community. I’m learning JavaScript to work on my dream projects and hopefully land a role in the top software development companies (Microsoft, Spotify, Pieces for Developers, and others…). I’ll talk about my projects in a future post. Why did I choose The Odin Project? When I started to learn programming, I read the book Python Crash Course by Eric Matthes and built a few projects, including Alien Invasion. Things couldn't add up When I started working with the Django framework. Not that I wasn’t familiar with the syntax, but I couldn’t solve problems. At the same time, I was doing the Odin project after being recommended to it by a stranger on LinkedIn. This was in the late months of 2022 and early 2023. After finishing the Python Crash Course, I started Intro to Python for Computer Science and Data Science. While halfway on it and stuck at the restaurant project, I realized I had learned a lot but couldn’t build meaningful things. So, in August 2023, I resolved to redo The Odin Project with lots of seriousness. I had admired its teaching style. Learning the Fundamentals My learning began with the core concepts: variables, arithmetic(s), data types, string methods, loops, functions, comparisons, objects, array methods, regular expressions, and understanding errors. In the introduction stages, you feel like there’s much to learn even before you can build anything meaningful. Of course, the above concepts come after a strong introduction that puts you in the right mindset and a solid foundation in HTML and CSS concepts. In the closure of the foundation lessons, I learned about the art of writing clean code and problem-solving tactics. Down the rabbit hole further, I went and tackled the Intermediate HTML and CSS course, learned about advanced selectors, CSS Functions, CSS units, text styles, form validation, the Grid, Emmet, tables, positioning, return values, and more CSS properties. By the end of the course, I had built a fantastic dashboard using Gid! I got into the JavaScript course. Wow, all is going nice and well. There was a warning about how we would slow down and take the understanding of foundation lessons to a deeper level. But I didn’t think it would be that heated… We started with how to organize JavaScript code, and I’m terrible at it! Proceeded to objects and object constructors, where leveraging all the preceding knowledge on DOM and other topics would be applied to build a little library project. Next was factory functions and the module pattern, after which I’d create a Tic Tac Toe game. I then learned about classes, refactored my library project to use classes, and committed my changes to GitHub, demonstrating branches in version control systems. After learning about npm and Webpack, I comfortably redid the restaurant project this time. Here’s a link to the repo, where I deployed it from, and a live preview. Only after revisiting Webpack, playing with JSON, and learning object-oriented programming principles I worked on a real-world project, a ToDo List application. Building Real-World Projects The ToDo List project was one of the most hands-on projects I ever did. I’m happy because this is a project I can continuously iterate on, and the biggest benefit it had for me was that it challenged my problem-solving skills. Even though I didn’t work on an attractive UI, I was more concerned with the architecture of the workflow and making things work. I also had the chance to interact with browser APIs like local storage and cache (while doing my freelance writing gigs) in this project. Fast forward, I’m learning about linting; dynamic user interfaces where I made dropdowns and image carousels, and form validation with JavaScript as recommended by the Web Accessibility guidelines (make sure to read about them later). I learned about ES6 Modules, writing asynchronous code using promises, working with APIs, and the async/await pattern. I’d then build a weather application to showcase my newly acquired skills. It was now a chance to get started with computer science topics; that’s where things would get tough to pull through, but it was worth all the toil. I started my exploration with recursion. I have to be honest; I had to reread the available resources so many times before I could bring it all together with a project on recursive programming. Moving forward,

Originally published at Medium.
From beginner to JavaScript developer: My journey with The Odin Project, real-world projects, challenges, and key lessons learned.
I started my journey of becoming a programmer a few years back. This is my second time running into The Odin Project. But it was not my first attempt at becoming a programmer. When I was on campus, I couldn’t write loops in C and got supplementary in the second semester of my first year. I even lost hope when two of my laptops were stolen, each at its own time. As I write this article, thanks to The Odin Project, I’m happy to be active in the JavaScript developer community. I’m learning JavaScript to work on my dream projects and hopefully land a role in the top software development companies (Microsoft, Spotify, Pieces for Developers, and others…). I’ll talk about my projects in a future post.
Why did I choose The Odin Project?
When I started to learn programming, I read the book Python Crash Course by Eric Matthes and built a few projects, including Alien Invasion. Things couldn't add up When I started working with the Django framework. Not that I wasn’t familiar with the syntax, but I couldn’t solve problems. At the same time, I was doing the Odin project after being recommended to it by a stranger on LinkedIn. This was in the late months of 2022 and early 2023. After finishing the Python Crash Course, I started Intro to Python for Computer Science and Data Science. While halfway on it and stuck at the restaurant project, I realized I had learned a lot but couldn’t build meaningful things. So, in August 2023, I resolved to redo The Odin Project with lots of seriousness. I had admired its teaching style.
Learning the Fundamentals
My learning began with the core concepts: variables, arithmetic(s), data types, string methods, loops, functions, comparisons, objects, array methods, regular expressions, and understanding errors. In the introduction stages, you feel like there’s much to learn even before you can build anything meaningful. Of course, the above concepts come after a strong introduction that puts you in the right mindset and a solid foundation in HTML and CSS concepts.
In the closure of the foundation lessons, I learned about the art of writing clean code and problem-solving tactics. Down the rabbit hole further, I went and tackled the Intermediate HTML and CSS course, learned about advanced selectors, CSS Functions, CSS units, text styles, form validation, the Grid, Emmet, tables, positioning, return values, and more CSS properties. By the end of the course, I had built a fantastic dashboard using Gid!
I got into the JavaScript course. Wow, all is going nice and well. There was a warning about how we would slow down and take the understanding of foundation lessons to a deeper level. But I didn’t think it would be that heated… We started with how to organize JavaScript code, and I’m terrible at it! Proceeded to objects and object constructors, where leveraging all the preceding knowledge on DOM and other topics would be applied to build a little library project. Next was factory functions and the module pattern, after which I’d create a Tic Tac Toe game. I then learned about classes, refactored my library project to use classes, and committed my changes to GitHub, demonstrating branches in version control systems.
After learning about npm and Webpack, I comfortably redid the restaurant project this time. Here’s a link to the repo, where I deployed it from, and a live preview. Only after revisiting Webpack, playing with JSON, and learning object-oriented programming principles I worked on a real-world project, a ToDo List application.
Building Real-World Projects
The ToDo List project was one of the most hands-on projects I ever did. I’m happy because this is a project I can continuously iterate on, and the biggest benefit it had for me was that it challenged my problem-solving skills. Even though I didn’t work on an attractive UI, I was more concerned with the architecture of the workflow and making things work. I also had the chance to interact with browser APIs like local storage and cache (while doing my freelance writing gigs) in this project.
Fast forward, I’m learning about linting; dynamic user interfaces where I made dropdowns and image carousels, and form validation with JavaScript as recommended by the Web Accessibility guidelines (make sure to read about them later). I learned about ES6 Modules, writing asynchronous code using promises, working with APIs, and the async/await pattern. I’d then build a weather application to showcase my newly acquired skills.
It was now a chance to get started with computer science topics; that’s where things would get tough to pull through, but it was worth all the toil. I started my exploration with recursion. I have to be honest; I had to reread the available resources so many times before I could bring it all together with a project on recursive programming. Moving forward, I read about time and space complexity, which weren’t easy to grasp, not knowing that data structures and algorithms were quite ahead and ready to strike.
Cranking up my skills, I did a project about linked lists. I played with the HashMap data structure to eventually build a dynamic one that uses linked lists to handle collisions as an extra way to store data beyond growing the HashMap. Then, I’d later build binary search trees, where I had a better feel for recursive programming, and close up with a chess game project, Knight Travails, which I enjoyed, and came up with two solutions. Next in line was a deeper look at git, working with remotes and using git in the real world. I had lots of fun playing with Git, and how I think of Git as a large recursive software—I even had thoughts of building a simple version of it for fun.
At the end of the course, I did unit tests as part of test-driven development (TDD) using Jest. I closed off with the Battleships project, where I did the project using TDD. I have learned the core principles of JavaScript, understand why things work the way they do in the browser, and am ready to venture further in my path to becoming a full-stack software developer. So, what key lessons did I learn?
Key Lessons Learned
I cannot stress that learning the fundamentals and being patient while at it has been the core reason for where I am and how I am moving. At first, it didn't feel easy, but things have started feeling a little more natural as I continue to write more applications, see this slot machine I’m building. Among the key concepts I have discovered to be crucial are closures, promises, “this” in object-oriented programming, writing clean code, error handling, and debugging.
I have also learned that project-based learning solidifies your understanding of programming. Through projects, you use your freedom and knowledge about the tools you have learned and how creative and appropriate you should use them to build meaningful software. Here at The Odin Project, this is the route that I have followed (in a very supportive community), and I have been able to build problem-solving skills.
In my perspective, the part that makes you a programmer isn’t knowing the syntax but how well you understand the rules to build functional systems. This means using the right tools for the right task, which requires understanding what was created and why and, more so, how it should help you solve your problems.
Besides, you must also be good at research and open to reading other people’s code in StackOverflow. I was very impressed when I used maps and sets in my Knight travails while I only learned a little about them. I have also learned to break down a large problem into small pieces that work together as a unit when stitched together. Debugging skills are also another rock I have sedimented along the way. All in all, the most important skill I have picked is resilience, as this course has taken me nearly a whole year to complete. I’m happy about all the efforts put into bringing together such a helpful resource. Next are my thoughts about The Odin Project.
Reviewing The Odin Project
Many programming resources out there will get straight into teaching you all the syntax out there. And while you realize it, you’ll have lots of it stacked up in your mind, but with very poor problem-solving skills, if you’re lucky to acquire any. The Odin Project takes a strategic approach to teaching programming. First, the curriculum is self-paced, and you’re your only watcher. In my introduction, I started with a brush-up on how computers operate, how the web works, and how learning programming gives you an edge in leveraging technology. Second, the project ensures you build a strong mindset that will push you through from the beginning to the end. You’re probably wondering what worked so well for me…
If you head straight to any lesson in The Odin Project, it consists of lessons written by a large community of developers (experts and others learning like myself). In each lesson, you’ll have an overview of what topics you’re learning and their importance before diving into the technical stuff. Once you read through a lesson in Odin, there’s a section on assignments where you’re tasked with an exercise, linked to other resourceful articles, directed to video explanations, enticed with inspiration threads On X (formally Twitter), or a combination of all the aforementioned.
You’ve probably heard that software development is a beautiful mess. This can be attributed to the challenges you’ll face along the way. You’ll probably encounter difficult concepts or complicated bugs that won’t be easy to fix along the way, perhaps because you haven’t picked up all the skills needed to be good at them. In this case, The Odin Project has a vibrant community on Discord where you can ask questions, link your project repos for quick assistance, and even get tips on approaching a problem. Also, Odin does an excellent job teaching you where to find answers to whatever hurdles you encounter. Additionally, there are tons of projects from other learners to look at after completing your projects to expand your scope on how a single problem can be solved in many ways.
To touch on the areas that could be improved, I’d suggest that the maintainers make some additional efforts (if they see fit) to enhance the learning of topics like Webpack, writing asynchronous code, and recursion. As I say, we can’t rule out that these topics are probably a little challenging if you’re starting a programming journey, and the learning curve is always steep in knowledge acquisition no matter the domain you’re working on. Else, I was probably the one who struggled to put things together with them. All the same, there are plenty of projects ahead for you to work on, and that allows you to leverage these topics enough to become a guru at them. It doesn’t mean I’m the very best at them.
Would I recommend The Odin Project to others? Yes, yes, and time and again, it’s yes. On keenly walking through this curriculum, I have gained significant knowledge so far that I can probably build any UI that a designer hands me. I always wondered how my classmates wired up these pieces to make applications that I admired, and now, I can see myself building my future projects in the coming months. All projects you take on here will leverage all the preceding topics, with the chance to go ahead if you need to get something working. I’d crown The Odin Project as a number one resource for anybody seeking to learn how to write code. In fact, the knowledge about technology I have learned so far exceeds, and by far, all that I got out of an electrical and electronics degree on campus. If you have time, please give it a shot, and let me know how it goes!
What’s Next?
As of this writing, I just completed my JavaScript course yesterday and have a long learning path ahead. Well, I have to say that my GitHub profile is taking a nice shape with each new project I take on (so are my skills), and I also have a private repo that is my note-taking system since you only learn better by practice. I will continue with the curriculum now that I see the fruits of my efforts. As someone who started writing before programming, I can now write about more technical topics like APIs, security, and more. I always wanted to write content for software engineers (I’ve done it with so much research put in), and now things feel more intuitive as I have issues with learning complex topics.
In my heart lies my undying will to become a great software engineer and technical writer. Once I’m done with The Odin Project, I plan to get hands-on with interesting and more challenging computation roles in Platform Engineering and blockchain technology. I’m also hopeful that by the end, I can land myself a role in a leading software development company where I can sharpen my skills further before I branch off to build my dream projects. I may also start building my dream projects as part of my portfolio to land roles in the companies I’d love to work at. Whatever comes my way first, I’m happy to embrace my journey. I also want to contribute to open-source projects. As a writer, I’ll also be well-equipped to get my hands dirty with interesting stuff like API and SDK documentation.
Bringing it All Together
This post reflects my growth as a programmer and is meant to give insights to anyone who wants to become a computer scientist like me and does not have or feels no need to spend money getting a degree on campus. In fact, I’d have opted to take on The Odin Project instead of getting a degree. Nevertheless, I appreciate all my experiences, which have led me to where I am today. Up to now, I have created a portfolio in technical writing, covering topics around software development, cybersecurity, and blockchain technology. I’ll continue to uncover the goldmine that lies underneath these areas. I thank The Odin Project for being such a wonderful programming daddy.
As I put the pen down, I’d like to invite you to walk with me on my programming journey. If you’re starting out and need my help, I’m happy to offer it, having received it from strangers in plenty. If you are way ahead of me in the software development and technical writing fields, I’d appreciate it if we could link up and see how you can help me get a little better at what I do. If you’re right where I am, let’s join hands and explore the goldmine together.
I’d be happy if you could review my GitHub and let me know what areas I should improve on. If you like what you see and would like to collaborate on a project, shoot me a DM on X (where I share daily learnings, ideas, and discoveries), or drop me an email. If you’d like to learn more about my past work in Tech, here’s my LinkedIn wall. To continue reading from me, follow me on Medium. I love to write about what I learn.
Originally published at Medium.