Meet Outschool's Summer 2023 Co-ops and Interns

by Summer 2023 Co-ops and Interns

Outschool hires engineering co-op students and interns year round. This summer, we welcomed 6 co-ops and interns in our largest cohort to date. In this blog post, they share their experience and dive into the exciting projects they worked on.

Nicholas: Building features for 1:1 tutoring

I’m on the Supply pod at Outschool, which has been focused on building infrastructure and features for the new 1:1 tutoring format launching in September. One of the features I worked on was suggested tutoring frequency, a highly requested feature from educators.

Outschool has a great process for feature development that ensures engineers are set up for success. It started with a kickoff meeting with the product manager and designer to talk through the problem we were solving, requirements, and product designs. I spent the next few days brainstorming different approaches with my team before writing a tech spec on the design and implementation of my solution. I received great feedback from my mentor, manager, pod, and even engineers from other pods after sharing my tech spec at our weekly engineering design review meeting.

After getting my proposal approved, it was time to implement the feature! This was challenging at first because I was working with tools and technologies that I was unfamiliar with, but I received phenomenal support from my mentor and pod members through pair programming sessions. Outschool has a strong pairing culture that encourages engineers to bring others in purposefully. I learned a lot from pairing with other engineers, especially since everyone had different areas of expertise. When I shipped the suggested tutoring frequency feature, it was truly rewarding to hear how educators enjoyed it.

Abby: Infrastructure as Code Inventory

I’m on the Infrastructure pod at Outschool which is responsible for building and maintaining, well, infrastructure! We support Outschool engineers and products using cloud development tools. I joined the team midway through a shift from using AWS’s Cloud Development Kit (CDK) to using Terraform for infrastructure management. I was able to contribute to this migration in several key areas: rebuilding CDK resources in Terraform, removing CDK stacks and code, and making an inventory of unmanaged parts of the infrastructure to add to Terraform.

Through the rebuilding of CDK resources in Terraform, I was fortunate enough to learn some of both cloud development tools and really deep dive into configuring aws resources in infrastructure as code. It’s also been rewarding to delete old resources and code (with my mentor’s guidance of course).

One of my main contributions was making an infrastructure inventory. There was a goal to have all resources configured in infrastructure as code (IAC) for the sake of documentation, efficiency, and easier maintenance. This inventory has involved going through all of the infrastructure resources managed by Cloudformation and by Terraform, then finding those that were manually configured. Outschool uses about 100 different resource types, so this is a large inventory! This project was valuable as it gave me an overview of all the different resources that go into Outschool’s infrastructure and how they are all connected. After the inventory was complete, I began configuring resources found to not be in IAC in Terraform which has allowed me to learn a lot about the tool.

I feel really lucky that I have had mentors who have invested time and energy into my learning, and that as a result I’ve been able to contribute in a meaningful way.

Matthew: Transitioning to web dev projects from a background in mobile

I’m on the Product Platform pod at Outschool, which builds foundational systems to support Outschool’s product teams (such as our design system component library and translations service) and also maintains core product areas like enrollment management. This is my sixth co-op/internship, but my first co-op as a web developer! Over the last four years, I’ve worked five co-ops as an iOS/macOS developer, primarily building mobile apps. Although I love mobile development, I discovered a passion for writing backend code in Rust while working at 1Password, and wanted to explore web development more before I graduate in April 2024.

Throughout my time here, everyone at Outschool has been extremely supportive of my learning. I’m incredibly grateful to my manager Caley, who thoughtfully assigned me to a variety of different projects to maximize my exposure to the codebase and gain full-stack experience. Over the last four months, I’ve had the opportunity to work on a massive UI refactor of our Enrollments page, a migration of providers to packages for use in our SSR app, and an upcoming UX lift to make payment failures more painless for our users. On every project, I was paired with my mentor who taught me best practices, explained design patterns, and encouraged me to ask questions. It has been wonderfully rewarding to feel my skills and confidence grow as I became more comfortable in a web development environment.

The best part? Many other talented people across the org have had similar experiences where they transitioned into a new role at Outschool and felt supported to succeed. By virtue of being an education platform, Outschool seems to attract engineers and problem-solvers who love teaching. This has the added bonus of making it an amazing place to learn.

Daniel: Adding Grade/Proficiency Level Tags to Database

I worked with Joshua in the Discovery pod on the US grade level and proficiency level class tagging project. The goal of the project was to improve search accuracy by giving Outschool users the ability to filter searches by grade/proficiency level which our educators could edit for their classes. The first step to complete this project was writing a tech spec that laid out the multiple steps we would take to ensure we had an efficient plan of action. Thanks to the support of our pod, we had enough feedback and guidance to feel confident in our tasks.

Since I worked alongside Joshua, we decided to split our work. My responsibilities were the database migrations, backfills, and the scripts that would assign a grade/proficiency level. Although the running migrations and backfill were a new experience, the project’s highlight to me was creating the scripts that parsed through a class’s title and summary to derive and output a grade level range. The script uses pattern matching to capture mentions of grade levels or grade level ranges. I went through a cyclical process where I would develop and evaluate the accuracy of the script and continually improve it to handle more and more cases.

One of my goals this summer was to learn more about databases and backend services, which I achieved thanks to this project. This experience not only bolstered my technical skills but also ingrained in me the importance of collaborative problem-solving. Disco pod’s openness to questions was invaluable in making this a fun project to work on.

Joshua: Adding Grade/Proficiency Level component to Class editing

I worked alongside Daniel, another intern, on the Search/Discovery pod to add US grade level and proficiency level tags to classes. These tags are meant to enable richer searches by providing the ability to filter for these specific tags, as well as make Outschool’s data more structured.

I added sections to the class creation/editing pages to enable teachers to set the appropriate US grade level for a class they are editing. We suggest grade levels based on already set age ranges, and teachers can then modify those if needed. React is used on the frontend at Outschool. I gained a lot of experience with React components and hooks working on this project. I was able to reuse some of our existing components to create something that teachers loved. The grade level section is mostly a dropdown that allows teachers to select grade levels one at a time. However, the selected grade levels have constraints: we wanted to have a maximum of 3 grade levels selected, and they all need to be contiguous. For instance, a valid grade level selection is “Kindergarten”, “1st grade”, “2nd grade”, while an invalid selection could be “1st grade”, “3rd grade”, “4th grade”.

I used a number of typescript constructs to achieve the goals for the component. I initially thought of creating a Class, but we have a small number of possible grade levels so that did not seem necessary. I settled for an enum to store the grade level values, while using custom functions to sort and compare them.

Once the valid grade levels existed, I was able to employ sorting and the React setState function to enforce the constraints above. I also created a custom hook to manage related state variables for ease of reuse.

I also got help from a lot of engineers working on this project. My Outschool buddy helped me figure out the pipeline through which values from class creation are sent to be stored in our databases. This was really fun to work on.

Thenuka: Building for experimentation

I’m on the New Families/Growth pod at Outschool, where our team’s mission is to enable more families to discover and use Outschool to achieve whatever educational goals they may have. Over the term, I’ve learned about ways in which we can analyze and optimize business metrics (lots of Search Engine Optimization data!) in order to increase the number of new buyers. Thus, a big part of my co-op term has been writing code for various experiments with hypotheses that will help improve metrics such as improving bounce rates, conversion rates, session lengths and activity impressions. One of the projects I worked on this term was helping launch a series of experiments, called “One-Hit Wonders”, that have low technical complexity that help unlock new directionality and have an opportunity for high impact. One of these experiments was focused on refining our curated pages according to qualitative design research which involved the reorganization of components, removing and replacing various images, value props and jump pills on both mobile and desktop. To execute this project, I was well supported by the engineers on my team, collaborated with design and was able to continuously receive feedback on my work! When running into interesting technical problems, I was able to make use of Outschool’s amazing pairing culture and improved on a lot of new skills whether that is my React skills or my growing understanding of SEO. I was also able to see my experiment go live and also observe, analyze and confirm the hypotheses that were made which was something I have never been able to learn before and was a super cool learning experience!

Outschool hires engineering co-op students and interns year round. Keep an eye out for postings at your school or on our careers page.

About the Author

Summer 2023 Co-ops and Interns

Abby Flint, Daniel Gonzalez, Joshua Mark, Matthew Kee, Nicholas Tao, Thenuka Siva