Intern Spotlight- Innovating at AuditBoard

AuditBoard Engineering
10 min readDec 6, 2024

--

Contributors:
Morgan Nelson
Zaki Machfj

Life as an Intern at AuditBoard

The experience of a technical internship provides aspiring developers with valuable opportunities for learning and growth. For a few months, you get to tackle industry-level technical problems and grow your network and skillset outside of school. Over the course of this summer, out of 2,000 applicants, we were two of the four interns who were given the amazing opportunity to work at AuditBoard as Software Engineer Interns. In this post, we’ll recount our experiences and learned lessons during our incredible time there.

The four Summer Software Engineer Interns and Haibei (Happy) Wang, the Chief Technology Officer at AuditBoard’s headquarters in Cerritos, California. Pictured from left to right are Abhishek Jain, Zaki Machfj, Happy Wang, Yumei Shi, and Morgan Nelson.

About Morgan and Zaki

At the time of this internship, we were both college students, pursuing degrees in Computer Science. Morgan was a graduate student at the University of Wisconsin-Madison. Before AuditBoard, she had not worked at a software company, so this was her first time immersed in an agile environment with numerous software engineering teams. Zaki was an undergraduate student at the University of Waterloo. Despite having a couple of internships before, this was his first experience working primarily on cloud infrastructure and computing on a dedicated infrastructure team.

Interviewing for a Technical Internship

Interviews

To be hired as interns, we completed multiple interviews with a variety of representatives and engineers from AuditBoard who evaluated our individual skills, values, and goals. After completing two interviews with a recruiting representative, we were given an online, asynchronous assessment to evaluate our coding skills. These skills were verified in a live coding interview conducted by a software engineer. It was emphasized that the live coding interview was not designed to evaluate the speed and perfection of our thinking. Rather, its goal was to measure our coding skills, thought processes, communication abilities, and problem solving capabilities as a whole. Finally, one more interview was conducted with our prospective mentor to allow us to understand each other’s personalities, backgrounds, and objectives for this internship. Each intern would be assigned a mentor who would assist and guide them throughout the duration of the internship.

Choosing AuditBoard

During the interviews, we both noticed AuditBoard’s excitement and commitment to the development of young engineers. All representatives of AuditBoard spoke about the company’s inclusive and uplifting culture, and they emphasized the company’s upheld beliefs of winning together, personal improvement, customer obsession, and gritty resilience. Moreover, we both wanted to experience hands-on work on a high impact product that is truly making a difference in people’s lives. AuditBoard’s successes and future objectives displayed this category of impact. With our alignment to the company’s core values and objectives, we were certain that AuditBoard would be an enjoyable place to work with great potential for learning and growth.

Diving into Development at AuditBoard

During the internship, Morgan was placed on the Third-Party Risk Management (TPRM) team, and Zaki was placed onto the Cloud Infrastructure team. We were each assigned a project to pursue for the duration of our internship. This provided us with the opportunity to obtain hands-on experience in the development process and to produce functionality that would be visible and impactful to both customers and engineers. This structure was very beneficial to our learning as it allowed us to work within an isolated portion of AuditBoard’s large codebase and architecture. Our internship projects will be discussed in detail below.

Morgan’s Project: Automated Assessments Completion

TPRM enables customers to measure and evaluate their risks of working with third-party vendors. This evaluation involves sending questionnaires to vendors which vendors are required to complete. In many cases, vendors respond to the same questionnaire and/or questions on a recurring basis. Thus, my internship project aimed to improve the speed and feasibility of filling out questionnaires by providing users with response suggestions. These suggestions were based on responses to previously answered questions, with the objective of displaying multiple suggestions on every applicable question of a given questionnaire.

For this project, I worked closely with my internship mentor, Brent Yokota, who is a Staff Engineer on the TPRM team. This mentorship was extremely valuable for the completion of the project and my growth as an engineer. I felt very grateful to have Brent as my mentor as he consistently offered knowledge, guidance, and support for my learning and growth. This internship project allowed me to be involved in the development of a new feature in a large codebase from start to finish, including its design creation, code implementation, and product demonstration.

Project Steps

To start this project, my mentor and I created multiple mock up designs of how this feature could appear within TPRM. This allowed me to be creative and openly weigh the benefits of different designs with my mentor. We selected two mock up designs to present to the TPRM team to obtain valuable feedback and produce a final design. This process demonstrated how designs evolve in iterations and the importance of obtaining design feedback from others as each individual offered different preferences, ideas, and knowledge about user experience and maintaining visual cohesion across the codebase.

Once the design was established, we conducted research to understand how previous responses could be obtained from the database and displayed to a user. Going into this research, there was a theoretical method of how to obtain all relevant previous responses on submitted questionnaires based only on the information stored on the open questionnaire; however, by analyzing how data was stored in the database and discussing its structure, we uncovered that this method was invalid. We then created a new method for how previous responses would be retrieved based on our findings. This process emphasized the importance of formulating and verifying an implementation plan prior to the actual implementation of a feature to avoid significant rework and avoidable roadblocks.

We implemented this feature within TPRM by creating a new user interface component and endpoints in both the frontend and backend of the codebase. The implementation phase was my favorite portion of the project because I was able to see all of our previous efforts materialize into a physical feature. This made me feel really successful and proud of all the work that was completed throughout the project. It felt incredible to view the finished feature within TPRM and to know that I was highly involved in the creation of a feature that was truly meaningful and useful.

Zaki’s Project: Galaxy Infrastructure Migration

My project was an initiative of the Cloud Infrastructure team, with the goal of modernizing our stack to drive increased cost efficiency, better observability, and performance. I was given the opportunity to migrate our existing legacy cloud infrastructure to a new customer stack on AWS EKS using Terraform and ArgoCD. To provide context, I want to share some history of cloud infrastructure at AuditBoard as well as give some context to our internal orchestration tools.

Cloud Infrastructure at AuditBoard

Back in 2016, AuditBoard adopted Kubernetes as an ongoing cloud initiative to dynamically scale our infrastructure and meet increased customer demand. Despite Kubernetes being super early in its maturity cycle at the time, AuditBoard recognized its potential to scale and meet the company’s infrastructure automation needs, an awesome example of taking a calculated risk on an emerging technology and having it pay off in spades.

Fast forward to 2024: our infrastructure teams have grown considerably with an increased focus on scalability in the cloud. We even built our own platform-as-a-service tool called Galaxy, to orchestrate deployments of instances of our application into our Kubernetes clusters. We also use Terraform at AuditBoard to define infrastructure as code, and AWS Elastic Kubernetes Service (EKS) to run containerized applications at scale on Kubernetes clusters.

AuditBoard’s Adoption of IaC and GitOps

IaC, or infrastructure as Code, is the ability to define your cloud infrastructure using code, instead of manually provisioning and managing resources. It automates the provisioning of infrastructure through well-defined processes so that developers can focus on what’s important; building consistent, standard, and easily-deployed applications for the client.

At AuditBoard, we use Terragrunt, a thin wrapper over Terraform with the goal of keeping our Terraform code DRY, and seamlessly support multiple cloud environments. We also use ArgoCD, a continuous delivery tool for Kubernetes that automates the deployment of our applications. We leverage ArgoCD to streamline the deployment process and encourage GitOps as a practice.

Migrating Galaxy onto EKS

My goal for this semester was to learn as much as possible about cloud infrastructure while simultaneously making a meaningful contribution to the company. With the support of my amazing mentor Juan Beltran and the rest of the DevOps team, we were able to migrate our Galaxy cluster to our new customer infrastructure stack hosted on AWS EKS in both development and production environments.

Galaxy is a critical part of AuditBoard’s key processes; developers use it to deploy QA instances and to test their PR changes on a live fork of the app, while sales teams use it to create sandboxes for prospective clients and to demo different features within the app. Most importantly, Galaxy acts as our central production control system; responsible for managing production releases and orchestrating upgrades of the AuditBoard application. Being trusted and given the opportunity to work on something so critical to service delivery was the highlight of my internship.

A high level outline of the steps taken include:

  1. Defining the cluster metadata in the Terraform repository. This included setting up the environment, defining cluster node groups, Kubernetes add-ons and regional/account-level variables. To provision the cloud resources, these changes were then applied into workspaces on Terraform Cloud.
  2. Creating the ArgoCD cluster. First we defined the cluster configuration in our main ArgoCD Github repository with the cluster’s desired state. Then we linked cluster and application-specific secrets with AWS Secrets Manager and installed some applications using Kubernetes Helm Charts. Some of these include an Ingress NGINX load balancer, Teleport for cluster authentication, and Grafana Cloud for trace monitoring.
  3. Moving the Galaxy application onto the new cluster. For the actual cluster migration, Ben Lewis — Staff Cloud Engineer, and I created a rollback plan and scheduled downtime to ensure no developers or sales teams would be affected. We terminated the Celery and Cron pods on the old cluster, ran the pods in the new cluster, and pointed the Route53 DNS record to the new load balancer created in EC2.

Travel to Cerritos, California (TWICE!)

Intern On-site

During the final weeks of our internships, we were invited to AuditBoard’s headquarters in Cerritos to meet our mentors and company leaders in person! We were so grateful to have the opportunity to collaborate with and learn from our mentors in person.

During the on-site we attended several workshops related to engineering best practices. Some of the topics covered included quality assurance, app development, and cloud infrastructure. The workshops not only allowed us to meet and collaborate with leaders and engineers outside of our own teams, they also increased our understanding of the various roles and responsibilities that people have at AuditBoard. At the end of each day, we had an activity where we were able to spend time with all of our coworkers outside of work. An especially fun night included bowling and playing arcade games!

At this on-site, we presented our internship projects to the company’s leadership team where we showcased the culmination of our efforts and accomplishments. In fact, after this presentation, we were invited to the company on-site a few weeks later to present our internship projects to the entire product, engineering, and design teams! Both on-sites were filled with so much appreciation, learning, and networking.

The interns and some of their mentors after presenting the internship projects at the PED on-site.

Insight for Future Intern Seekers

To those striving for a technical internship in the future, we offer our top three pieces of advice gained from our experiences at AuditBoard.

Have a Learning Mindset

AuditBoard is full of brilliant engineers with diverse backgrounds and perspectives. Regardless of your role, all of us at AuditBoard are continuously learning and growing every day. Therefore, we encourage each of you to be willing to learn and challenge your previously established beliefs or practices towards development in order to achieve sustainable growth.

Be Vocal and Do Not Be Afraid of Being Wrong

Due to the remote nature of working at AuditBoard, it is extremely important to be vocal and active in discussions. You must be willing to openly share your ideas and concerns, a motto that AuditBoard advocates for. With this sharing of ideas we learn the important quality of not being afraid to be wrong. One of the most important aspects of learning is sharing ideas and getting feedback from others. Everyone is willing to help and offer support, and no one judges those who are trying to learn, understand, and grow.

You Do Not Have to Be an Expert in Auditing

Prior to starting our internships, the process of auditing was foreign to both of us. In fact, this is a common scenario for many engineers looking to work on products in an unfamiliar industry. Constant effort to learn and be immersed with AuditBoard’s products, as well as a smooth and informative onboarding process, set us up for success in the unfamiliar world of auditing.

Our New Roles at AuditBoard

Overall, we found our internship experiences at AuditBoard to be extremely beneficial and unique. We are appreciative of the AuditBoard community for giving us the opportunity to work and grow with such a great and impactful organization. After our internships ended, both of us took on new roles at AuditBoard. Morgan is currently working as a Software Engineer on one of AuditBoard’s auditing teams, while Zaki is completing a second internship on the AI team. Both of us are honored to be given another role at AuditBoard, and we have no doubt that we will continue to learn and grow as developers in our new roles.

--

--

AuditBoard Engineering
AuditBoard Engineering

Written by AuditBoard Engineering

AuditBoard Engineering and Career Blog. Does our work and culture resonate with you? Come see if you’re a fit — https://www.auditboard.com/careers/

No responses yet