In-Demand software engineers know more than one programming language.

Ruby - Readability and Open Source

The Ruby language was designed with one main principle in mind: developer happiness. It’s a programming language that was designed to be easy to read, fast to learn, and simple for developers to use to solve complex problems. The learning curve to master Ruby is less steep in comparison to other programming languages, and after just a short period, you will be able to write and execute Ruby programs and solve complex algorithm challenges. In addition, mastering Ruby first provides you with an ideal springboard to learn another programming language at an accelerated pace… like JavaScript.

The open source Ruby community is massive, very active, and welcoming to people of all skill levels. When your programming craft is backed by an active, worldwide community, it means you have ample opportunities to find and work on interesting projects with awesome people.

Javascript - Future Proof and In-Demand

Today’s user interfaces depend heavily on JavaScript to create a smooth user experience. JavaScript skills are an essential software engineering skill for today and tomorrow. While JavaScript is a powerful and efficient programming language, it’s notoriously difficult to learn as a first programming language. Instead, it’s perfect for your second language.

In-demand software engineers know multiple programming languages; they’re polyglot programmers. When you have experience with more than one programming language, you enable yourself to choose the right tool for the job rather than use the same tool for every job. Having the ability to draw on this flexibility and experience is exactly what will make you in demand.

Curriculum

Prerequisite | Prep Course
A fundamental coding course, including an HTML/CSS portfolio page, Ruby code, flow control, functions and the perfect preparation for the Firehose Core Program.

Week 1 | Build your first app + Web application overview
Build a database-powered quotes generator with a slick, mobile-first design, built with Ruby on Rails, HTML, CSS3, GitHub, and Heroku. Understand how the different pieces of a web application fit together and dive into MVC architecture, HTTP requests, database migrations, and routing inside your app.

Weeks 2 - 4 | Build a Yelp clone + Object-Oriented Programming
Build a Yelp clone integrated with Google Maps and features like user comments, star ratings, image uploading, user authentication, automated email notification messages, and admin dashboards. Understand object-oriented programming in Ruby, learn how to write your own classes, and prepare for the algorithmic coding challenges.

Weeks 4 - 6 | Coding challenges 
Understand object-oriented programming and master arrays to solve problems including creating arrays, iterating over an array, using 2-Dimensional arrays, and performing a transformation on image data.

Weeks 6 - 7 | Build a marketplace app + OOP with Inheritance
Build a two-sided video streaming marketplace featuring credit card payment capabilities, user role management, advanced UI & UX, and advanced database relationships. Learn how Inheritance fits into object oriented programming, how it is used inside Ruby and how to use it in your code.

Weeks 8 - 10 | JavaScript Intro + Coding Challenges 
Learn how to write and integrate JavaScript into your web applications to build interactive features, and understand how JavaScript is different from Ruby. Solve coding challenges in which you’ll implement data structures by hand and which are designed to bring your coding abilities to their furthest potential.

Weeks 10 - 12 | Learn to use a TDD-first approach + Advanced git and version control
Learn the industry standard. Build automated software tests in Ruby, ensure good test coverage, and release code tested perfectly on a professional developer level. Use git and GitHub in advanced mode and understand how to use branches, pull requests, and merges.

Weeks 11 - 15 | Advanced JavaScript Concepts + Build a single-page application
Start getting comfortable with the advanced concepts that make JavaScript different from other programming languages and work towards mastering the language by solving JavaScript coding challenges in the command line using NodeJS. Build a single-page application that uses AJAX to update the database.

Week 16 | Coding challenges
Determining the value of the Fibonacci sequence for a particular number is one of the classic questions that computer science students solve. You’ll also determine the collatz sequence for a number, implement a tree data structure by hand and use it to look for a specific node, and work with sorting algorithms–  one of the most commonly discussed algorithms in Computer Science.