Foundations

Choose Your Path Forward

Foundations Course

Introduction

That was quite a journey. Take a second and reflect on the fact that you’ve just learned the basics of at least three different languages and, if you had to, you could probably hack together a web page on your own already.

You should be fairly comfortable typing commands into your computer’s command line and you should understand what happens when you enter a web address into your browser and it returns a functioning page. You should be able to create a basic web page and make it do some basic things with JavaScript. Finally, you should have a clear understanding of how all this fits together in your future as a builder of web applications.

With what you know already you could start putting together some basic websites, but we’re here to help you get a lot further than that. We want to bring you to the point where you can confidently build a full-featured and scalable web application, either on your own, or working as a developer in a top-tier tech company.

You’ve come a long way up the learning curve but there is so much more cool stuff that you’ll learn to do, and now is the time to decide which path you want to take. Either Ruby with Ruby on Rails or JavaScript with Node/Express. Both paths will guide you in building skills, building up a portfolio of projects, and becoming a great developer. There is no right answer here on what is the best path. Learning multiple languages can help you become a well-rounded developer, but sticking with one could make you more of an expert in a particular language. Both paths will help you become a great developer. The important thing is to not switch halfway through; this will only set you back.

Learning how to program is much more than just learning a language. It’s about learning how to research and solve difficult problems, building an engineering mindset, working on complex problems and codebases, communicating effectively with other developers, and much more. Luckily, all these skills are transferable to other languages and domains of software and because most languages are similar in concept and structure, moving into a different language will be much easier than learning your first.

Arguments about learning the languages used in your area may sound convincing, but because a good developer can transfer skills easily, what you learn isn’t going to massively change outcomes of getting a job. Though, if you cannot shake that fear, do whatever you need – even if that includes researching your area to see what jobs are available locally (don’t forget about remote jobs, though). A good course is far more important than the language you learn first.

To help you make a decision, here are some perks of each technology:

Ruby and Ruby on Rails

  • Opinionated
    • You don’t have to make decisions on the structure of your projects. This helps when moving into projects built by others.
    • You will learn things “The Ruby Way”, which can help you write clean code in other languages as well.
  • Elegant
    • Brings a lot of tools to help you develop things in a way that makes your code easy to read.
    • Oftentimes solutions in Ruby are much more concise than in other languages.
  • Rapid development
    • Rails helps you build applications very quickly. This means you can make a greater number of interesting projects than others in the same time frame.
  • Single paradigm
    • Object-oriented programming (OOP) is the Ruby way; many other languages are primarily OOP-based.

JavaScript - Node & Express

  • Un-opinionated
    • There is no standard way of doing things. You are going to have to decide the structure of projects yourself, for better or worse.
  • Very fast
    • Because JavaScript utilises JIT (Just-In-Time) compilation, it can do calculations very quickly.
  • Verbose
    • There is no magic involved with these technologies. You will have to understand everything to make sense of it.
    • Helps you get closer to how the computer is actually reading your code.
  • Same language on both front end and back end
    • Keeping the language consistent can help with writing consistent code across your entire application.
    • Allows you to do some cool things, like writing code that runs on both the browser and the server for optimization purposes.

In the end, it doesn’t matter which path you take. It’s only important that you stick with it, and continue to hold onto the learner’s mindset throughout your career. Not convinced? Click here.

Still can’t decide? Let the spinner settle your fate!

Feel free to share the results in chat!

Get ready, because this is only the beginning. Now it’s time to delve deeper into the areas covered by Foundations. There are some fantastic projects in the courses that follow which will challenge you to the limit, but you’ll come out the other side ready to go and make your mark in the programming world.

The journey has just begun!

Additional resources

This section contains helpful links to related content. It isn’t required, so consider it supplemental.

Support us!

The Odin Project is funded by the community. Join us in empowering learners around the globe by supporting The Odin Project!