Engineer Internships at Wheelhouse – Na Hyung Choi

Na Hyung / 16th December 2019 / Comments: 1 / Engineering

Last April, I put in my two-week notice at work and told my coworkers that I was going to enroll in a coding boot camp. “What?! What does that even entail?” they said.

Na Hyung Choi

Until last April, I romped all over the Pacific Northwest working as a consulting geologist, investigating and mitigating landslides and seismic hazards. In addition to running slope stability models, writing reports, and calculating budgets, I worked outside with hurried construction managers and tired equipment operators. I hiked up and down steep hillsides in rain, shine, and snow. I learned to communicate effectively with people from diverse industries and backgrounds, adapt and improvise during field work, and work on multiple projects at a time. 

 

Although I found working as a geologist deeply gratifying on many fronts, a couple years in I began to feel that I was letting my job consume my life. I came across the book Refuse to Choose! by Barbara Sher, which taught me — among other things — to acknowledge and nurture all my different interests. As a result I put together an online photography portfolio and started a local women’s accountability group. I also started teaching myself JavaScript in my free time, thinking maybe someday I could learn to build an app that I could use. This new hobby reminded me of how much fun I had teaching myself MATLAB and using it for research during graduate school. Naturally, when I learned about the existence of coding boot camps, it piqued my interest. When I found out that a local boot camp called Epicodus had a new cohort starting soon, I decided that I was ready to turn a new leaf. 

 

A big factor that drew me to Epicodus out of a myriad of boot camps available in the Seattle area was the internship component. After 5 months of learning to code and building apps all day, every day, it was finally time to interview and get matched with a company for a 5-week internship. Although I interviewed with multiple impressive companies, Wheelhouse won my heart as I talked with Product Engineer Dallas Slaughter and HR Director Victor Anderson-Villalobos about the available project and the company culture. I was elated to be matched as an intern here, along with two of my Epicodus classmates.

 

At Wheelhouse, I contributed to a business intelligence product in development called Mozaic, which helps business-to-business companies identify new prospects. The product runs on AWS, and the parts of the application that I touched involved AWS Lambda, API Gateway, and DocumentDB, a MongoDB-compatible NoSQL database. As I got to know the code base and built out a new map component for Mozaic, I not only deepened my existing knowledge of general JavaScript, React, node.js, and AWS, but also learned technologies brand new to me, such as TypeScript and Mapbox.

 

Here are a few of the lessons I learned along the way:

 

  • Type checking is useful (but has tradeoffs).
    Although I had experience with a statically typed language before (C#), converting an existing AWS Lambda handler from JavaScript to TypeScript opened my eyes to what explicit, static typing can do to make code less error prone and easier to follow. On the flip side, I experienced how much slower it is to initially build something while creating, looking for, and importing interfaces to make sure everything is typed. I now have a better idea of the tradeoffs involved in using a statically typed language vs. a dynamic one.

 

  • 90% of programming is accounting for errors.
    When I wrote a new Lambda handler and harness that batch-geocode addresses, I added a bunch of if-else statements to account for empty API responses, and said, “Phew, now I’m done with error handling!” Boy was I wrong. I soon found out that some of the addresses weren’t getting geocoded because they weren’t sanitized properly. After handling that issue, I learned that I needed to add try-catch blocks to prevent unhandled exceptions. In the end the vast majority of my time was spent thinking of all the scenarios where things go wrong, and my mentors assured me that this was normal.

 

  • Infrastructure as Code, wow!
    On our very first day, we learned that Mozaic is configured and managed through Terraform, and my mind was blown. I had used AWS, Azure, and Firebase before, but had always used the Web UIs to set up databases, Lambdas, etc. Although I did not get as much exposure to Terraform and CI/CD tools as I would have liked to (too many fun things to learn!), a reproducible configuration tool for microservices just makes sense and I look forward to experimenting with it in the future.

 

  • Real projects are complicated.
    After working with a real SaaS product in the making, I have a completely new perspective on my personal projects: They are so simple in comparison!  I did appreciate the fact that Mozaic is built with microservices, which I think made it easier for us interns to quickly learn, experiment with, and modify specific parts of the code base. Documentation in the form of both comments and readme files also helped me as I was navigating numerous repositories, and I want to mirror that practice in my personal projects so that good documentation becomes second nature to me.

 

Although I dipped my hands in just a tiny portion of everything that makes Mozaic work, I’m proud to know that I’ve contributed something real and beneficial to the product. I can’t wait to hear about how Mozaic grows and evolves from here on out. 

 

I am so grateful for Wheelhouse for taking me and a couple of my classmates under their wing and teaching us not only about software engineering but about mentorship, collaboration, and a happy work environment. I feel that I have learned just as much from watching the Wheelhouse folks interact with each other as I did from interacting with them.

 

As my internship and my boot camp journey draw to a close, I am excited and hopeful for what might come next. I enjoy both back-end and front-end development, and I am drawn to spatial thinking, e.g., maps. Check out my latest projects at nahyungchoi.com and on GitHub, and connect with me on LinkedIn here.

By Na Hyung