Two years ago, Course Hero’s entire engineering department of 79 was full-stack. Our in-house SCSS framework was maintained by designers who would sometimes create static HTML mockups that engineers would turn into PHP templates or React applications. There was no QA department. Engineers, PMs, and designers QA’d their own projects.
Today, we have more than 100 engineers and a growing team of front-end specialists leading changes in React, TypeScript, and other modern tooling in the Course Hero ecosystem. While most of our code still lives in our PHP monolith, we have more code-splitting off into Golang microservices. Server Side Includes are in development to help us break our front-end application into smaller, more manageable pieces, with SEO-critical pages rendered in Server-side React. Teams still do their own testing and QA to promote ownership and quick delivery of features.
Since moving from a full-stack engineering department to hiring specifically for front- end web developers, Course Hero has unlocked plenty of opportunities to develop tools, frameworks, and best practices on our web apps. As one of the first front-end hires, I thought I’d share some of the transformations that have happened during this period, to give front-end engineers an idea of what’s being developed at Course Hero and how our engineers learn and grow. If you’d like to be part of this exciting technical leadership opportunity, please apply.
Also, for full-stack engineering teams that are planning on splitting into back-end and front-end specialties, this will capture a few of the changes that we’ve been through.
Join the Course Hero teamSee job openings
Transformation in front-end architecture and tools
As we launch new products on a regular basis—or convert old AngularJS apps to React—front-end devs have had the opportunity to bring in new tools and best practices. We’ve even been able to design some of our own.
Here are some recent and in-development projects the team has taken on:
- Transitioning from class-based React components to functional components with Hooks and Context
- Working with designers to craft a new design system, with an SCSS framework and documentation, as well as versioning to help manage the rollout of new features
- Creating a library of React components for our Granite design system, using Storybook and Playroom for documentation
- Moving from front-end tests that consist only of Jest snapshots to unit and integration tests of components using React Testing Library
- Experimenting with GraphQL, as a proof of concept, to improve the data flow between our React components and different back-end services (along with the many other advantages that GraphQL brings)
Keeping up with all of these changes
With all of these new projects and tools, and the rapid pace of the ecosystem in general, our front-end engineers at Course Hero have formed the Front-End Working Group.
The Front-End Working Group meets weekly to present new in-house or third-party libraries, share notes from conferences, and discuss best practices as well as challenging or interesting problems we have recently solved. It’s a great way to keep learning and growing without feeling like you’re drinking from a fire hose.
Here are just a few of the topics we’ve touched on, with links to shared docs and decks:
- Best practices for working with React Granite, our React component library for our in-house style framework, Granite
- Notes from a meetup on React Native and GraphQL
- Examining how flexible or rigid our approach to classes should be in shared React components
Apply to Course Hero and become a part of our front-end team
We’re always looking for new front-end developers who are passionate about their craft and would love to use their expertise to help us architect better applications, improve our tooling, introduce new best practices, and share their learning. If you’re looking for a chance to shape the front-end architecture of a rapidly growing company and be part of a supportive, collaborative, and always-learning team, consider applying to work at Course Hero. We would love to hear from you!