Thanks Firehose!

Ten intense months very well spent.

A few days ago I received my certificate of completion from The Firehose Project — a full-stack software engineering bootcamp that is entirely remote.

Having a family and a full-time job with a brutal commute meant that I had to enroll in the part-time course (18–25 hours of coding a week, more or less depending on how much time you spend on each topic), which is just under a year long. I went into the program having already taken a few prep-courses from various other bootcamps and online schools, but I still had no idea what to expect.

The amount of information that is forced into your brain in that amount of time is incredible.

TFP requires you to pass some technical tests to gain entry to their program that are fairly easy — think FizzBuzz and Fahrenheit to Celsius temperature conversion, but that’s were the ease ends.

Without getting too specific, here’s what the first month looked like:

  • Set up a development environment with Vagrant.
  • Learn basic Git commands.
  • Create a two page application that generates random quotes from start to finish. This includes database set up, CSS styling, simple CSS animations, and deployment on Heroku.

That’s month one! From there the applications become more complex, and they throw in various challenges throughout — essentially saying: with what we’ve taught you, do something slightly more difficult with little to no direction.

Here are the challenges that stood out the most to me:

  • Implement and reverse a linked list. See code here.
  • Develop a blur algorithm — create a 2d array and “blur” the surrounding indexes by adding an element to them (example below). See code here.
  • Install and run various gems (Bootstrap, Devise, Carrierwave) by following their github documentation.
  • Longest Collatz Sequence — develop a method to find the number between 1 and 1,000,000 with the longest Collatz Sequence. Description and example below. See code here.
The Collatz conjecture is a conjecture in mathematics that concerns a sequence defined as follows: start with any positive integer n. Then each term is obtained from the previous term as follows: if the previous term is even, the next term is one half the previous term. If the previous term is odd, the next term is 3 times the previous term plus 1. The conjecture is that no matter what value of n, the sequence will always reach 1.
The number 837799 produced the longest sequence with a length of 525.

I do enjoy Ruby, but I was particularly excited when we jumped into the JavaScript lessons (as JS is primarily what I had studied in the year prior). Our Todo application was built mostly with JavaScript, and later my mentor and I worked together to implement a delete option. I also added some CSS transitions to make the application more interactive. See the finished product here.

Throughout this whole process, we’re given a mentor to assist us whenever we get stuck. For the first half of the program I made very little use of my mentor sessions, but halfway through I was teamed up with Sam Auciello. Sam is an actual wizard, and near the end of my time with the program she was hired by Google. Sam made it a point to never give me the answer. To anything. Instead, she pushed me to use the tools that I’ve been introduced to (Chrome DevTools, MDN, StackOverflow, any and all official documentation) to solve the problem by myself.

We had one mentor session where Sam introduced me to partials in Rails and gave me some documentation on the asset pipeline. I was so excited that I ended our session early to dive in and start building something.

Last but not least — the agile team project and job prep. In my case, these two sections were roughly 10 weeks long, and they go into great detail.

For the job prep portion you are given 52 lessons that cover everything from interviewing to optimizing your applications to best practices to whiteboarding to design etc., with an additional 17 lessons on technical prep (sorting algorithms, data structures, big O notation etc.).

For the agile team project you are given a team leader and a team of 4 people (in our case 3, as one member dropped out early) to work with on a chess application. From my understanding, their goal is not necessarily to get you to complete the project, but to get you used to working with a team in an agile environment. Although we didn’t complete the project before the graduation date, my team members and I are still working together to deliver a fully interactive program.

All together, this part of the course was the best. It exposed any holes in my understanding of GitHub and forced me to sort them out. It also showed me the benefits of working with a team where everyone’s strengths are different.

To wrap it up — I thoroughly enjoyed my time in this course and can’t wait for the next step. Huge thanks to Ken, Marco, and Sam for everything.