Student Interview: Julia Hazer on Company Projects

At Rithm, we believe that one of the best ways to prepare students for jobs as web developers is by giving them opportunities to work on real-world projects. Working on personal projects can be fun, but working in a team or on an existing code base gives students insights into the day-to-day challenges of a developer that they might not otherwise learn. Towards the end of these projects, we spoke with student Julia Hazer to get her perspective on the experience.

Describe yourself in a few sentences (where you’re from, what you did before bootcamp, something unique about you).

I’ve lived in SF for over a decade but am originally from Indianapolis, IN. I’ve previously worked as an evaluator/researcher for education and technology projects, as well as taught. Prior to joining Rithm, I traveled with my partner for 7 months in Southeast Asia and learned to scuba dive, surf, and ride a motorbike. In my spare time, I like to spend time with family, be in nature, bike, and play the piano, as well as play soccer and tennis.

How would you describe the experience of working on these company projects? Can you tell us a little about the projects you’ve been working on?

Working on the company projects has been rewarding, challenging, and very valuable. I learned a lot about working collaboratively on a code base in production as well as how to tackle coding problems. I gained more hands-on coding experience, solidifying prior learning and picking up new skills. I also really enjoyed working as a team to help create or improve upon tools that would have an impact and be used by others.

Over the past month, I’ve worked on two company projects:

  1. Tunelark — using React and Redux to create an interactive music game where users learn the notes of a guitar by identifying them on a guitar fretboard.
  2. Course Report — adding functionality and improving performance for a Rails site that serves as an online resource for prospective coding bootcamp students by providing thousands of alumni reviews, as well as other bootcamp data including tips and interviews.

How large is your team? What have you learned by working together?

For each project, I worked on a team with a total of 2–4 students. One or more of the Rithm instructors helped to oversee each team and provide code reviews. We also worked closely with developers at each of the companies. This was my first time working so collaboratively on a code base in production.

I learned a great deal about and gained confidence using developer collaboration tools, such as Git and GitHub. Having previously used Git mainly for personal projects, the company projects gave me hands-on experience with various techniques and issues more specific to collaboration, such as merging, resolving merge conflicts, rebasing, handling pull requests, and branching.

I also gained a great deal by working so closely with other students, the Rithm instructors, and the company developers. This learning varied from picking up new keyboard shortcuts, seeing new ways to approach a problem, and tips and best practices for writing clean, maintainable code.

Each team member brought his or her unique talents to the group, and it was awesome to feel the synergy and progress made through the collaborative work over the course of the past month.

What are some things you have accomplished while working on these projects?

For the Tunelark project, we created a prototype for the new guitar fretboard game using React and Redux. Specifically, we wrote code to display questions and interactive answer choices, highlight frets on the fretboard, and display/update a user’s points based on interaction with the game. Since the other games on the site were built using CoffeeScript, we first installed React as well as translated the pre-existing navbar into JSX. We then decided on and created the various game components using Redux and Redux-Thunk to manage and store state.

We also set up Enzyme for testing, wrote some initial tests for the game to make sure everything was working, and created an intro animation for the game. Lastly, we ensured the correct, exact positioning of a CSS-built fretboard over a guitar image at any screen size.

For the Course Report project, we drastically improved the speed and page load time across the site by fixing N+1 Query problems. Additionally, we ensured the accuracy of the site (e.g., writing controller tests, removing duplicate results) all while learning more about Ruby, Rails, and RSpec. We adjusted the database schema and created a brand new site page which enables users to immediately see the bootcamps which are most aligned with their interests based on a form they complete, as opposed to solely receiving an email with the results. We are currently working on implementing an “infinite scroll” feature using AJAX to further reduce page load times for pages with a large amount of data.

What was the most challenging thing about working on your project?

The most challenging aspect of the projects was deciphering Course Report’s large code base with a complex database schema. It was great that we were able to work together as a team to do so. We also were able to tap into the knowledge of the previous group of Rithm students who worked on the project, as well as the company developers who wrote the code base. Our team took the first few days to go over and make sense of the code by mapping out the database structure (literally on the whiteboard). This upfront investment paid off; having a more solid understanding of the code enabled us to more efficiently make fixes and enhancements to the site, as opposed to taking stabs in the dark.

As a developer, what have you learned as a result of working on production code?

Recognizing the importance of persistence when tackling coding problems. One big learning point that I gained by working with other developers on production code is that even experienced developers frequently encounter roadblocks or bugs. By pair programming, I learned a great deal about how they tackle these hard issues. As opposed to immediately getting frustrated or throwing in the towel, the qualities that shone through were patience, persistence, and perseverance, as well as a can-do attitude (in addition to good Googling skills).

You really do use algorithmic types of problem-solving, as well as concepts that at times may seem somewhat esoteric, in real-world code. We’ve been training for technical interviews at Rithm by doing timed problem-solving exercises, as well as learning lots of JavaScript concepts and newer features to the language. It was exciting to see how these various techniques are applicable, and in fact can be extremely useful, in real-world code. For example, we created object lookups to help eliminate N+1 database queries and in turn speed up site load times, by utilizing a more efficient data structure.

It is super motivating and fun to work on code and features that will be used by many people. Our enhancements to the Course Report site are already live!