Javashit and Ruby on Fails — My Coding Bootcamp Experience, Part 9

Christian Chavarro
11 min readJul 25, 2016

This is the ninth post of my journey through Ironhack’s coding bootcamp. If you haven’t already, check out the first post to get up to speed.

A quick preface before the actual post begins. Feel free to skip over this portion if you’re only here to laugh at my suffering at the hands of Ironhack.

I originally intended for these posts to be published on a weekly basis, and the initial pace of the course made this a pretty sustainable practice. Then we got to Javascript, and my choo choo train of progress hit an abnormally large squirrel that brought it to a grinding halt. Just as I was about to dust myself off and start back up, a group of bandits robbed the passengers on the train and murdered our conductor before their blind leader decided to man the helm, only to send us careening into a nearby lake.

ALL ABOARD THE FUCK YOU EXPRESS

The point I’m trying to make here is that if you’ve read other blogs of people chronicling their journey through a coding bootcamp, their posts tend to be consistent and positive up to a certain point. In reality, we all know that the difficulty will eventually and suddenly ramp up exponentially, eviscerating all of our confidence, but none of us are actually able to prepare for it or see it coming in advance. Things go from I love the constant progress I think I’m really cut out for this coding stuff to All I know in life is darkness and despair and if you hand me a baby right now I promise you I’ll use it to set a record for the longest field goal kick in an instant.

As a result, I’ve changed my stance on a consistent posting schedule by doing away with it altogether. Instead of writing weekly, I’ll publish posts based on larger chunks of progress throughout the program. This allows me more time to focus on the wealth of new code I’ve got to learn and gives me the ability to go into the subjects I decide to cover in greater depth. If you originally tuned in for quick bursts of reading on what a bootcamp is like, I’m afraid I must bid you farewell, because that’s no longer the name of the game. For everyone else, let’s get started.

Javascript

I’ve learned how to redefine the definition of hatred. I thought I hated Ruby because of the pain and suffering it put me through for two months. This was Billy being the kid who sat in the back of the class and shot spitballs at the girl with the rolling backpack. Ultimately, he ended up being the misunderstood child prodigy who grew up in a separated household with his adopted pet lizard Snarf. In other words, I really like Ruby now.

That revelation has allowed me to focus my efforts into saying that I hate something with 100% conviction, and that something is Javascript. We were fortunate enough to only spend a single week with the language for now, but that’s all the time it needed to carve out a pit of disdain in the depths of my heart. It took Josh two weeks to get to the same level.

You’re a lame one, Mr. Josh.

The week had started off so well, too. After hearing Josh say that he never had Trader Joe’s Cookie Butter before, I decided to get him a jar of each variety. You have to understand that this wasn’t done out of kindness. I was trying to get him on the first step towards a crippling addiction to hard drugs, because Cookie Butter is the second cousin of heroin. As I saw his pupils dilate after the first bite, I knew that my plan had worked. It was around this time that he told me he was colorblind, to which I replied “I’d say that news has me feeling blue, but you don’t know what that is.”

Javascript was introduced to us as a language that had much in common with Ruby, so I felt like I’d be right at home immediately. The main difference is that Ruby is the introverted server side language that only runs on a computer, while Javascript is the alpha bro-dawg that can run in any environment, which explains the near-universal presence of the latter on the web. We then delved into Node.js and were told that if we were asked whether it was a framework we were to say no. If I had a nickel for every time someone asked me that, I wouldn’t be any closer to paying my tuition off. Compared to Ruby, the Node community is a lot less mature, which told me this is exactly where I belonged.

The language has lots of new terms that I wasn’t really familiar with, but could take accurate guesses as to what they represented. When asked what var meant, for example, I proudly declared that it was an abbreviation of the great state of Varginia. To demonstrate the prevalence of Javascript, Josh pulled up Twitter and edited one of Donald ‘Moldy Sock Puppet’ Trump’s tweets using Chrome’s built-in console, which garnered a few ‘wow’s from the class. My eyes, however, darted instead to his follower count of 19 people, 18 of which were likely bots and the other one being me, and I had no choice but to bring attention to it, causing everyone to laugh at Josh.

Guess his pet bird should have taught him what tweeting is all about.

The timeline for our single week with Javascript was as follows: the first day was spent introducing us to the syntax and walking us through example problems. It was the coding equivalent of receiving a warm hug from someone you just met but knew you’d be close friends with in time. The next class, all rhyme and reason was abandoned, and in its place stood three hours of programs we were asked to write with very little context or practice. This was the moment at which I realized shit was going to hit the fan, and that the person I was receiving the warm hug from actually had a knife strapped to the back of their head and I was none the wiser because why would I ask someone to turn around before giving me a hug. And then came Saturday.

Let me tell you what my Saturday morning routine consists of.

I wake up at 7:30 AM, bright-eyed and ready to learn. I brush my teeth, get dressed, and walk out the door with my laptop and a single frozen waffle in tow, because the weather is such that it’ll be golden brown by the time I get to my destination. I happily coast along the 836, bopping my head to uplifting tunes from the likes of Travis Scott and Future, eventually arriving at the Building parking lot. Sometimes the security guard remembers to open it, sometimes he doesn’t, but it’s okay because variety is the spice of life, and I have coding lessons and a dirty waffle that fell off of my dash at least 7 times to look forward to. I walk through the front door of Building, head up to the third floor, take my seat, set up my laptop, and then proceed to drive an ice pick squarely through the middle of my fucking forehead.

Anything there sound out of the ordinary to you? It seems like an accurate representation of that Saturday to me. If you’ve read my previous posts, you know my feelings towards two-dimensional arrays and the chess validator exercise. If you haven’t, let me put it like this: I’d rather scream at a whimpering newborn puppy than go through that experience again. This is why I was about ready to implode when Josh explained that the entirety of this class session would be spent on an exercise called the Mars rover, built with a two-dimensional array and many of the same practices as the chess validator, except three times worse. I won’t go into detail about the silent bouts of rage that consumed my soul in those 8 hours, just know that grinding through this exercise was one of my personal lows during my time in the Ironhack program.

I was not, and am still not a fan of how Javascript was introduced to us. We were making terrific process working through the ins and outs of Ruby, and I felt confident in my growing ability to build actual web applications. All of a sudden, gears shifted without explanation to hastily introduce us to a new language in 6 hours and ask us to create a program similar to one that we had already completed before moving on to another subject entirely. It was the educational equivalent of a drive-by shooting, except I was still alive to deal with the wounds that had been inflicted.

I am both watermelons.

Ruby on Rails

If you’ve ever so much as taken a cursory glance at a coding bootcamp before, the name Ruby on Rails should resonate with you. It’s a web application framework based on the Ruby programming language that works in tandem with HTML, CSS, and Javascript, and serves as the basis for a large number of applications on the web today. As a result, many bootcamps spend a great deal of time focusing on getting students as familiar with it as possible. The final projects from Ironhack students, for example, are built using Ruby on Rails. I knew this is where I’d get the most value out of the program, so I braced myself to fully absorb everything that would be covered throughout the following weeks.

We were introduced to Leo, our guest lecturer, who would be teaching us the ins and outs of the framework. For the first week, things actually went pretty well. He taught us about the Model-View-Controller architecture that Rails is based on, which made a surprising amount of sense to me. The slides that accompanied the lectures helped to reinforce my comfort with the subject. The model manages the data, logic, and rules of the web application, the view is what the user actually sees, and the controller is what receives input and converts it into a series of instructions for the model or view to execute. The main aspect that made things easy to understand was the explicit set of differences between the three components. Views, for example, should only contain code that displays data to the user, which means that we automatically know to not put a great deal of logic into it, leaving that for the models instead. Finally, I thought, things were looking up! To hell with Javascript, my choo choo train of progress had started back up, and this time it was on RAILS!

I should let you know that up until this point, everything was hunky-dory in terms of what we were learning through the lectures. It wasn’t until the second week that we actually got around to writing code in Sublime, and this is when I realized that I had forgotten to purchase coal for my train. The past week was essentially skimming through a book and saying “Yup, those are words alright. Shucks, I even know some of them!” Now we were expected to read the words out loud and even write a few of our own, and the despair that crept into my soul made me realize that Josh is the one person any plague would intentionally avoid because he would be capable of inflicting pain in much greater orders of magnitude as a coding instructor.

The next few weeks were nothing short of me barely keeping my head above turbulent waters while Faraz, from thousands of miles away, taunted me for not knowing how to fly. I went through the motions of the daily exercises and lectures as the layers of confidence that once surrounded me like armor began to slough off. I was understanding the code that Leo produced on the screen, but lacked the fundamental understanding as to why it worked and what code belonged where. You see, one critical difference between Ruby and Ruby on Rails is that you can create a new Ruby project simply by creating a new file appended with ‘.rb’ and nothing more. With Rails, new projects are generated through the command ‘rails new ProjectName’ in the terminal, which creates dozens of files and folders that serve as the underlying framework. My biggest challenge was navigating the maze of directories and subdirectories, determining how to point new routes to their accompanying controllers and models, to say nothing of creating databases. Essentially, I was a manager in IKEA who was proficient at managing one department at a time, but when tasked with handling them all concurrently would immediately scurry to the back room to drown my sorrows away in stale meatballs.

Welcome to Hell, I’ll be your guide.

To make things worse, there were multiple occasions where Leo would be going through an exercise outlined in the slides, only to look at the code offered as the solution and say “That isn’t right, don’t copy that.” Excuse me, the content that many of us relied on as a resource outside of class time was inaccurate? One mistake is an innocent typo. Two mistakes is the creator of the slides sneezing in the middle of typing and not realizing an extra apostrophe was added. Anything more than that is gross negligence, especially when some of the most difficult and time-consuming errors in code are attributed to these simple mistakes. I provided my feedback to the Ironhack staff when they surveyed us a few weeks ago and decided to approach any code within the slides with caution moving forward.

Honestly, I’m grateful for those mistakes, because they got me thinking about other resources I could use to wrap my head around the inner workings of Rails. Leo would occasionally talk about a book or website that he suggests students read as they progress throughout the bootcamp, so I figured it was a good time to actually look into some of them for a change. I decided to go with the Ruby on Rails Tutorial per the suggestion of both Leo and Josh and spent the entirety of my 4th of July weekend poring over the first seven chapters and the accompanying projects. This was probably one of the best decisions I’ve made since starting the program. The structure of Rails made more sense with every paragraph I read, and by the time we class rolled back around on Tuesday, I was finally in lockstep with what we were supposed to know.

We built an auction site where users could create product listings that could be bid on by other users, with minimum bid amounts and the ability to set deadlines for further bids being placed. We also created a concert site that showed users a list of concerts with the artist, location, price and date, and allowed them to search for concerts by price and view the top ten most popular concerts sorted by number of comments made by other users. I was building real applications that I could show other people without letting them first know that “It’s not exactly finished yet, but…”

I had finally begun to get a taste of the superpowers that I was after when I first decided to learn how to code. I learned to love Ruby on Rails.

And then we switched gears a second time.

Stay tuned for Javascript Round Two: Fuck Your Hopes and Dreams.

Posts about my Ironhack journey thus far:

Ironhack-ing Away — The Prelude

Why Ironhack?

Ruby Tuesday, Thursday, AND Saturday

My Ugly Dark Twisted Code

Test Driven Delight

Rubye-bye-bye

No More Views

Father Stretch My Patience Pt. 1

--

--