A recruiter connected me with the company. The HR manager contacted me afterwards through a phone call where we had a conversation on my background and an overview of my technical skills. He also provided some information on the company. After that he connected me with the team lead and sent a set of code challenges for me to solve. I was given the choice to solve one out of three code challenges. After I completed and sent my solution back an on-site interview was arranged. I met with the HR manager for a while, followed by a 1-hour technical interview with the team lead and one developer. Finally I another hour of more general (but still technical) conversation followed with the director of engineering.