Hello! We’re the engineering team at Root. We’ve put tremendous care into defining who we are and how we work, and we want to share it openly. Job postings often contain only a fraction of the information that thoughtful and deliberate people want to know when choosing a place to work.
Given the lack of detail, it’s not surprising that many people end up working somewhere through a connection to the company rather than applying for a position directly. A friend can easily tell you what it’s like to work at a company. A job description typically includes a series of bullet points which barely tell you anything. While the length of this content may take some time to read through, we’d love for you to gain a preliminary understanding of who we are and how we work. Maybe it’ll be a match for the kind of place you want to spend your time — or maybe it won’t. But hey, at least you can figure that out before you go through a few rounds of interviews. If Root sounds like a place where you’d like to spend your time, please get in touch with Chris Evans at email@example.com. We’d love to hear from you.
What is Root?
Root is a car insurance carrier, like GEICO and Progressive. We use data science and technology to identify and insure good drivers, reducing insurance premiums for good drivers as a result. Car insurance is a compulsory product — it’s literally illegal to drive without it. Unfortunately, people are paying significantly more than they should be because their car insurance carrier only looks at their demographics and not how they drive. We’re fixing that.
Root was started in 2015 with backing from Drive Capital. Although creating an insurance carrier from scratch was an audacious undertaking, we realized we needed to own everything end-to-end to build an exceptional insurance experience. With schlep blindness in full effect, we made it happen. Most insurance carriers were started a century ago and are running on an amalgamation of technology that is decades old. Root is the manifestation of “software is eating the world” in insurance. Our core expertise is responding to trends in technology by incorporating new sources of data into insurance pricing and building great products and user experiences on top of it.
In March 2018 we raised a $51M Series C — one of the largest rounds ever raised by an Ohio tech startup.
In addition to demonstrating the leverage that can be achieved by building an insurance carrier on top of modern technology, we’re also proving what can be accomplished by small teams of exceptional people.
Although we’ve grown beyond the first ten, we operate in small teams that are given ownership over projects and results. Root is where it is today due to the hard work, ingenuity, and exceptional performance of the people here. The idea behind Root is simple and well-known. Insurance companies have known for a long time that how people drive is more predictive of their likelihood of getting into an accident than their demographics. However, actually executing on this idea is challenging. We’ve been fortunate to build an incredibly talented team that has brought this idea to life.
We build software using an agile methodology, working in cross-functional teams comprised of software engineers, product managers, data scientists, and designers. We work in one-week iterations. We kick off iterations by gathering together as a team to review story cards for the week. We have a daily standup to share progress from the previous day, plans for the current day, and any issues or blockers. At the end of each iteration, we have a company-wide showcase to share our results and celebrate our progress. The showcase also creates accountability and ensures we’re consistently delivering working software.
Periodically, teams gather for a retrospective. We discuss what’s going well and what’s not going well, and we identify action items we want to take. Reflecting on how to become more effective as a team is a critical component of our process. The entire engineering organization at Root does a retrospective each quarter.
Our product team sets roadmaps and objectives on a quarterly basis. As we wrap up one quarter and plan to start work on the next, we set aside three days for Hack Days. It’s an opportunity for the engineering team to hone skills, explore new technologies, and work on problems entirely of their choosing.
For our mobile apps, we release weekly. We cut release branches every Tuesday morning, at the end of the iteration. If a feature isn’t quite ready, we wait to ship it until the next release. We value the consistency and predictability of the weekly “train schedule” release strategy. For our backend, we release daily.
We primarily work individually, but we also periodically do pair programming. We have pairing stations set up to be comfortable and conducive to collaboration: two monitors (mirrored), two keyboards, and two mice hooked up to a single computer. While our pull request process can help engineers learn and grow, there are many aspects of software development that can’t be taught via pull requests. PRs only contain the end-result of writing code; they don’t capture the process of getting there. Tools, techniques, and thought processes can all be improved via pairing.
We share Etsy’s value of choosing boring technology. As engineers, we pay attention to trends and love exploring new tools. When we make decisions for how we want to build software, we do so judiciously and deliberately. We currently leverage many new tools across our projects, such as React Native, Buildkite, and Amazon’s Elastic Container Service. We also rely on the tried and true solutions: Rails, Postgres, and Redis.
We’ve listed the technologies that we work with last, because we believe that people care more about what they’ll be building and who they’ll be building it with than the exact tools they’ll be using.
We’ve built Root using technologies that allow us to maximize the value we’re able to create for our customers. Our goal is to deliver software at the optimal intersection of quality and speed, recognizing that our needs will be rapidly evolving in the early stages of the company.
We’ve built our backend in Rails. It’s mostly an API for our mobile clients, but we have some web views for our internal admin dashboard. Ever since DHH published that video of building a blog in 15 minutes back in 2005, it’s been apparent that Rails is a framework designed to make developers happy and productive.
Our mobile apps are written in React Native, along with some functionality built in native code on each platform. The cross-platform reuse of React Native is beneficial, but even within a single mobile platform, we’ve found our development velocity to be higher than it is with native code. With features like hot reloading and better testability, the feedback loop in the development process is significantly faster. We released an open source library that we built to enable better unit testing of React Native components.
We deploy to Amazon ECS. While we enjoy devops work, we keep our production infrastructure as simple as possible. Many engineering teams seem to spend a disproportionate amount of time on infrastructure wizardry: orchestrating containers, configuring service discovery, distributed request tracing, and the like. We’ve positioned ourselves to spend the majority of our time on creating direct value for our customers in building our products. So far, we haven’t received a single email from our customers asking about our tech stack or deployment strategies.
We run Continuous Integration through Buildkite. When our backend builds are successful, we push a container to Amazon’s Container Registry. Our client builds can then pull down the latest backend container to run the integration test suite.
Opportunities for Improvement
While it’s tempting to be entirely self-promotional and only convey the good things about working at Root, we also want to share areas that we’re working on improving. We have a retrospective every quarter to identify opportunities for improvement. Here are a few things from our last retro:
- Strategy for upgrading React Native
- Upgrading in general (iOS 11, Android Studio, gradle)
- Documenting our coding standards
- Build failure between midnight UTC and midnight Eastern
Our Interview Process
We’ve designed our interview process to allow us to make hiring decisions confidently, while also being efficient with candidates’ time.
We ask everybody interviewing with us to write a little bit of code. Formally, this is known as a work-sample test. Of course, it can be difficult to ascertain true engineering ability from a small bit of code, but we’ve found this exercise to be a representative indicator of ability.
Following the coding exercise, we schedule a one-hour phone interview with two engineers at Root. We cover a variety of questions to try to asses breadth and depth of expertise, as well as engineering philosophy. We’ve shaped our topics to reflect the actual work that we do at Root and the skills we’d require for the position.
Finally, we bring people in for an on-site interview.
We love being part of the larger communities around engineering, startups, and insurance, participating whenever we can. Look out for us at events around town, or contact us if you’d like to chat about doing something together.
Planning an event? Let’s chat.