First round was a brief phone interview with an HR representative. Following the phone interview, I was given a coding challenge to solve and send back. After they checked my solution, I was invited for a 5-hour on-site interview at their Watertown headquarters. Everyone I met with was very friendly, and the office seemed like a fun place to be. My on-site interview started with a one-hour lunch in their cafeteria with a software developer. This interview was fairly casual and more conversational than a typical interview. The interviewer asked me about past projects I had worked on and told me about his job and athenahealth. Following lunch, I was given a brief tour of the office. There was a room of people playing Go (it was still lunch time, and employee-initiated clubs are a thing). They also have a stash of board games for fun. :)
The next interview was a 90-minute technical interview during which I was to design and implement a game and an algorithm to solve the game. After that, I had an hour-long interview during which I was asked again about past projects I had worked on. Following that was another 90-minute technical interview which was similar in nature to the previous one. During the technicals, I was free to ask clarifying questions, and my interviewers sometimes helped me by pointing out syntax errors.
I'm a bit slow, so time was a problem for me. For one of my technicals, I was still debugging when my time was up. I don't think the problems were difficult, but for me, thinking under pressure and trying to implement fully-functioning code in the allotted time was a challenge. The best way to prepare for the technical interviews is probably to practice designing, implementing, and debugging algorithms frequently so that you can learn to do it faster. I would recommend trying Project Euler problems, but any non-trivial problem(s) should do.
Again, the people were really nice, and their culture is casual and start-up-ish. Lots of young people.