Engineer Internships at Wheelhouse – Na Hyung Choi
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.
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.
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.
Here are a few of the lessons I learned along the way:
- Type checking is useful (but has tradeoffs).
- 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.