My Summer as a Software Engineering Intern at Justworks

Posted September 7, 2018 by Ashley Chen in Engineering
What’s it like to join Justworks’ internship program and work on the engineering team? One engineering intern shares the projects she tackled, what she learned, and what’s next.

This summer, I had the opportunity to intern as a software engineer at Justworks in New York City. It was my first time writing code in the tech industry, and I was very excited to work on a product that empowers entrepreneurs and their workplaces. I had some ideas of what I wanted to accomplish, but I also had some insecurities.

Doubts popped up in my mind: What if I forget how to write code? I barely know web development. I think they meant to hire someone else.

But over my time in the Justworks internship program, I was able to learn a lot and grow my confidence as an engineer alongside the team.

Interviewing for the Internship Program

I heard about Justworks from a friend who was previously part of the Justworks internship program. As an intern candidate, I went through the same interview process as a full-time engineer, which included a phone screen, a coding and architecture exercise, and an interview with a senior manager. This gave me more time to gauge the work done by different engineers and tell them about my interests and career goals.

It was also at this stage when I realized that Justworks has a quirky and inclusive culture. I had interviewers who came from different backgrounds and cultures, and to that effect, I had meaningful conversations and some fun throughout the coding and architecture exercise. When Justworks sent an offer letter, I was thrilled to join the company as an engineering intern.

Working as an Engineering Intern

I joined the Enrollment and Onboarding team working on full-stack projects using Ruby on Rails. At first, I was unsure how quickly I would be able to pick up the web stack, but as I gradually worked through small tickets, I started to familiarize myself with different parts of the codebase and the team’s coding style. After this initial onboarding, I got started on my very own project, which was to build a tool that applies secure electronic signatures to Professional Employer Organization (PEO) documents.

It was the first time I got to discuss my code with other engineers and have meaningful conversations around testing, readability, and scalability.

For the Justworks operation team, returning a customer’s PEO document with Justworks’ signature is a manual process. Not only would the operations team need to scan the customers’ PEO document and upload it to their document center, but they also have to obtain the signatures needed from our risk management team. Imagine repeating this process for hundreds of companies. My project’s goal was to automate and streamline this entire process without breaking any existing flow.

I initially scoped out the project to only take a couple of weeks. However, the more I familiarized myself with the codebase, I realized that the API being used didn't even have a way to add signatures to PDF documents. The project soon went from writing a couple lines to pushing over 60 commits. Because of the large code change, I attended architecture and testing meetings. It was the first time I got to discuss my code with other engineers and have meaningful conversations around testing, readability, and scalability.

In order to make sure we can sign documents instantaneously, I wrote an asynchronous job that would be executed every time the server receives a signed PEO document. Because we receive documents through a webhook, I had to constantly test the user flow end to end. I then learned how to use Sidekiq’s inline testing, which executes jobs synchronously and is compatible with my debugger.

There were times when I was uncertain of my logic and coding style, but my team members patiently answered my questions and supported me.

Once the signed documents were created, I had to figure out a way to make it possible for our operations team to share it with the customer. No documents were ever streamlined this way, so I had to run a database migration in our deployment process that created a new relationship between our internal and external document models. By then, I had become the team’s expert on PEO documents, so I was tasked to look at how frequent errors were handled by this part of the codebase.

Looking at these reports taught me a lot about whether to process incoming errors as displayed messages or as incident reports. From looking at 502 Bad Gateway errors to runtime errors, my team members taught me some best practices in writing Ruby on Rails and what it’s like to use "Rails Magic".

While the project didn't involve writing graph traversal or sorting algorithms, it did challenged my self-confidence in reading and writing code. Can other engineers read this easily? How much time would it take to make any future changes to the code? Will I be able to write unit tests for this method? Asking these questions to myself made me feel more prepared to deploy my code. There were times when I was uncertain of my logic and coding style, but my team members patiently answered my questions and supported me with positive PR comments. All of this made me feel more confident with my approach to building projects.

What I Learned

Not only is it important to always ask questions, but it’s critical to build the courage to follow up on them. During engineering meetings, I listened to how senior engineers would answer questions in ways that newer engineers and designers could understand.

My manager also followed up with questions I had in our one-to-one meetings. In the beginning of my internship, I had briefly mentioned how I was interested in product management. In the following week, she invited me to weekly meetings with other teams to learn about their work process and the role of one of our senior product managers.

Outside of Work

Justworks held various events throughout the summer, which included walking in the Pride March and the annual product-engineering hack day. I got to build an automatic banana peeler as my hack project, which was received with positive reviews. Going to these events was a great way to learn about the playful and energetic culture at Justworks.

banana-Hack Day-2

Justin and I demonstrating our arduino-powered banana peeler. Photo courtesy of Tom Takigayama.

There were only four other summer engineering interns in the program, which made it easy for us to explore the city together. We ended up buying skateboards together and practicing our Mandarin Chinese over lunch break.

Beginning the Next Chapter at Justworks

Even though summer is coming to a close, I will be staying with the Justworks family as a part-time engineering intern throughout the school year. Special thanks to the Enrollment and Onboarding team for helping me grow as an engineer, and every single Justworks employee for making my summer as incredible as it was!

Interested in opportunities on our engineering team, or one of our other teams? Check out our Careers page for job openings.