This post mainly outlines how I remember the experience of Hack Reactor. I'm not sure how much value this brings to the reader, but I imagine you can learn some number of lessons from it.
Note: I'm doing this strictly from memory, I have no notes or anything. If things seem a little out of order, it's because I remember things in chunks/events; not necessarily chronologically.
Note2: Because this was so long, I wrote it during different times in the week. So if the thoughts seem kind of disconnected, sorry.
I barely remember precourse. It really just flew by. I remember learning a bunch about jQuery and asking some engineering friends what recursion was. Thinking back at it now, it wasn't nearly as difficult as I thought it was. But I guess that's how learning works.
Hack Reactor, Junior Half
My first day of Hack Reactor was rough. I didn't get enough sleep. I wasn't accustomed to the amount of sleep I was getting. I wasn't in the habit of waking up at 7 in the morning. We had a number of lectures on the first day and I almost fell asleep during each one. I was just drained. I barely socialized or anything, I just wasn't feeling it. I remember that day being so incredibly difficult that I genuinely didn't know if I could finish the course. In hindsight, I'm glad I stuck around.
But my first impressions of Hack Reactor was amazing. We all gathered on the 7th floor to take pictures. The person greeting was Tara, the 6th floor counselor. She was really warm, happy inviting. It was really cool. And despite how tired I was, I was really taken aback on how much Hack Reactor genuinely impressed me.
After a few more tiring days of learning, the first week was over. It felt like things were starting to get better. I was getting accustomed to the sleeping schedule. I got used to how things were and they way things were going to be.
I found out the second week forward was different than the first. The first week was jam-packed filled with lectures morning, afternoon, and evening. I learned later that it was only going to be lectures every other day now. Which is cool because we started learning about working autonomously.
Then I got sick. That was in the middle of the algorithms sprint. It was bad; I've never gotten sick before. I had to miss a day to recover. And even when I got the day after, it was still really bad. The recovery process wasn't quick either. I was better, just the cough stuck around for a really long time.
The next 3 weeks were a blur. I remember getting used to the sleep schedule I had. I remember feeling better about being sick. I remember being the most confused I've ever been about coding. The next 3 weeks of Hack Reactor, I barely even remember because it flew by so quickly. Looking back at it at the end of week 5, I specifically remember thinking that I haven't learned anything at Hack Reactor and thought I was going to fail Summary Assessment.
So here's a brief outline of the first 5 weeks of HR:
Week 1: Beginning: Tired, End: Good
Week 2: Beginning: Good, End: MISERABLE
Week 3: Beginning: Slightly better, End: Thoroughly confused (backbone... lol)
Week 4: Beginning: "I have no idea what I'm doing", End: ".............."
Week 5: Beginning: "I still have no idea what I'm doing", End: "lol I'm getting kicked out soon"
Week 6 was the beginning of the Project phase. We started with the MVP, which we worked on by ourselves. Something that I've always wanted to be able to do since the study project from when I was trying to get into Hack Reactor was to build an actual web application for that Loan Amortization Calculator I made. So I used Angular to do that. This is when I first realized that I was actually learning stuff at Hack Reactor. When they through me to the wolves and I had to work by myself, I could actually get stuff done. It was actually happening.
After MVP was Greenfield. It was cool, our group decided to do something to do with video games, and we created a social media site, called Social Gaming Network (SGN), that combined different platforms and APIs and connect all through one application. That was the goal at least. In the end, we only got the Steam API to work. It's okay. Everyone overshoots their goal. We used Angular for SGN and I realized then my foundation for Angular was actually getting better. A few days of working on Greenfield later, it was Summary Assessment.
I truly commend HR for their beautifully designed class structure. Really, it's incredible. They give you the Greenfield project to work on the few days before Summary Assessment so you don't have time to be nervous. You don't have time to actually sit there and study. It's incredible. I remember being nervous for it at first, a little. But by the time Summary Assessment came, I didn't really care too much for it. I was still pretty tired at that point. (I took like a 45 min nap during the assessment). But it was okay, when I finished at 530, it was time for the graduation party for the seniors. And then it was onto Solo Week and the end of the junior half of Hack Reactor.
Not much to report for Solo Week. Worked on Greenfield, caught up on sleep. Drank lots of milk tea.
Hack Reactor, Senior Half
The first day back, things were different. Knowledge-wise nothing really changed. But we were seniors now. We had a duty, a responsibility to help the juniors the same way our seniors helped us. I remember meeting the first couple of juniors and it was interesting. It made me look back on the first day I was there. How nervous I was, how shy I was, how intimidated I was by everything. That was the second time I knew I had actually learned.
After Greenfield, we moved onto Legacy. We picked up the Crunchy Tunes code base and we began to brainstorm. We wanted to use the same APIs that Crunchy Tuens did but to make playlists out of it and share the playlists. One of our team members had high expectations on what to do. Another team member said, "Remember... we only have three days. MVP." Which was good. Unfortunately, that same team member had high ambitions for himself. Trying to write the database using Python and running the server using Node. I remember him saying that he couldn't even find help online on Stack Overflow because... "well who tries to run a Python database off a Node server."
Eventually, we created Simon Sings (not sure who came up with the name, but meh). React was confusing, but eventually I got the hang of it. The API call to SoundCloud was nuts, too. We tried to call to Soundcloud to get the music, take that link and shove it into an HTML5 audio player. The function chain went something like this:
When a song was clicked on:
1. Calls local server to call Soundcloud API
2. Server calls Soundcloud API
3. Parse the data, go deep into that request body, find a song ID
4. Take the song ID, call a different Soundcloud API endpoint
5. Parse the data, go deep into that request body, to find the actual song link (which expires at some point)
6. Return to that song link to the front-end
7. Front-end shoves that music link into HTML5 player
8. Re-render the HTML5 player component
When I finally got the music to start playing from that HTML5 player, I had never felt so accomplished ever before in my life. I guess that's what the software engineering field is all about. Those golden moments of achievement, of pure success, is what we strive for. Anyways, we finished that project. Polished a little bit and presented. And onto thesis.
Thesis was probably my biggest growth period at Hack Reactor. The three weeks of working together with the particular thesis group I had genuinely shaped me into a "better person."
Our group took our time brainstorming on what we wanted to do. We had multiple brainstorming sessions and we all individually came up with ideas on what we wanted to do. The main ideas that we narrowed down to were:
- Facebook for Hackers
- Mood Music
- Gym finder
- Job finder
I wanted to do Mood Music because the idea felt innovative. It felt like something new, like something that hadn't been done before. The idea didn't feel like "Tinder for dogs." It wasn't just a rip off of an already successful idea. We argued/discussed which final project we wanted to build for a little while. Everyone had arguments on why they wanted to do the thing they wanted to do. I was able to convince everyone to jump on board with Mood Music.
In hindsight, I was pretty stubborn about this idea. But honestly, their arguments weren't very convincing.
- "Instead of working on an innovative idea, we should focus on clean code"
- "Why can't we focus on clean code ON an innovative idea"
- "Mood music is too simple. We can't add too many things onto it."
- "We have three weeks, how much of Facebook can we really build in three weeks. Isn't it better to create a smaller application that focuses on clean code and is extremely polished?"
Eventually, after "arguing"/debating about it for a few days, we settled on Mood Music.
In terms of coding, I mastered RESTful API calls and how to handle them. I figured out routing. I learned how React components worked and how properties get passed down and events bubbled up. I understood how to change the state of React components to make everything work. I learned that instead of changing the state like I did, I could use Redux and it would've made my life INFINITELY easier. I learned how to make state-based routing work on Moodly. I discovered React-Router and realized that state-based routing was too much work and how React-Router would've made my life INFINITELY easier.
Aside from the tech stuff, thesis taught me patience, compassion, and communication.
Patience: I worked at a different pace than most of my group. I understood and grasped concepts really quickly and flew through the stuff I was supposed to do. After finishing, I was wondering why they "barely had anything done". It's arguable whether I'm fast or they're slow, I guess. At first, I was getting frustrated at the pace they were working at. I felt like I needed to do more, just to get things at the right speed/tempo. And that was true, I did have to do more. But instead of working fast and completing other things, I worked with them and taught them. I guided them and pair programmed with them so they learned (and in turn, I learned too). Instead of speeding through the features I was good at, I taught them how to do RESTful APIs, React Components, and how state worked.
Compassion: My lack of patience previously had me say things that were pretty abrasive/harsh/brutally honest. It didn't hit me until I talked to my class coordinator about how frustrated I was about how slow they were that she told me. "What if they're feeling like absolute crap because they can't do it. And you have this expectation of them to be able to, but they just can't and it's like a negative cycle." That's when I knew I needed to be patient. I needed to be "nicer". Don't get me wrong, I legitimately think I'm a good person. My words are just very straightforward, to the point where they cut others. I changed my tone from "Do you need help?" to "Let us work on this together."
Communication: I guess all three of these are fairly connected. After changing my tone, we started working quicker. Things started to move faster and things were starting to get completed. Features were pumped out, everyone was talking and no one was hurt. Whenever we had a problem or a concern, we brought it up and things were better.
The Last Week
The last week at HR was basically just how to job search, apply for jobs, how to negotiate, networking, etc. Then graduation happened.
I was exhausted. Hack Reactor was incredibly draining, I was so tired that I was glad it was over. But after it ended, I didn't really know what to do. My life was so structured and planned out for the last 3 months, that going back to the "real world" was scary.
But it was great. Despite how draining, how tiring, how bad I felt during certain times, things were great. I made a group of close friends that I can hit up at anytime. Friends and connections that I never thought would even be possible without Hack Reactor.
Key Takeaways from Hack Reactor:
- How to think like an engineer
- Don't be an asshole
- Better to be nice than right