I had a friend refer me to Root's recruiter for engineering. He scheduled a phone call with me (15 mins) to talk about my experience as a software engineer. After that I got a coding sample assignment to design some basic components in the language of my choice. It was not a very difficult assignment, but I'd caution future applicants to use more abstraction than less when doing the assignment; it came back to bite me later that I didn't use specific classes to house some of the data during processing. After I sent that in, I got the OK that I was moving on to do a phone screen w/ two engineers (which I did, and am surprised they decided to move forward) and after that to an onsite interview. The onsite consists of an architecture interview and a pairing interview where they basically watch you code by adding features to your coding sample. Be warned that if you haven't done an interview like this before, it is much more heavily weighted than your architecture interview. I would definitely interview with them in the future; it's one of the few times I feel like I've been in a productive environment where people actually seem invested in the work they do.