Your initial interview will be a phone conversation with technical recruiter where you will have the chance to introduce yourself and ask any specific questions about the company. Before applying, make sure that you did your research about the company's values - the about section of their web site is a great start. It is important to do so because they care also about your personality, not only about your technical expertise.
After the initial interview, you will be given a task which you have to solve it in 3 days. It is ok to extend this period (as I did) but I recommend you to give your feedback, why this is necessarily. If you have been mainly a business software developer, the task may seem to you rather unusual. Most probably, you will need to make an extensive research on how to solve the problem in the most efficient way. You will be evaluated mainly based on the design, so you really need to get it right.
If your solution is approved, you will be taken to the next level where you will have a phone conversation with tech people, working in the company. The questions are mostly related to your technical experience and how you solve particular issues that might arise during your work day. You will be asked about team organisation and agile practices in general.
If everything went well, you will be invited to an "all-day" interview with some other candidates. You might be invited to their office in Barcelona or do it remotely. You will meet many Thoughtworkers during the day from different "departments" - HR, managers, developers. This is the kind of a meeting interview where you will really experience that the company is different - in a good way. In one of my conversations, I've been asked about many sensitive topics and social issues - solidarity over charity, gender equality and many others. It is a rare thing that you will have a talk about these topics from a technical company and kudos for that! I enjoyed this conversation from start to finish.
Notice, how I say conversation because the intention here is to be two-way interview process where both sides can get to know each other. This will be critical for you next interview from the same day, where you will need to add a feature to your (already sent) solution. You will need to pair with other developers from the company, and make sure you are familiar with these practices. This is not you being "the main star of the show", so make sure you interact with your potential co-workers and align any decision you might take during the interview. I, personally, got stuck and I failed totally - it was the first time doing pair-programming in this rather formal way, and I didn't know how to react.
In that same day, you will meet to a lovely person from the management where you will have kind of an informal conversation about your work habits, your past experience, and even your hobbies.
Your final part from that same day is two logic tests which have to be completed in timed manner. The first one is relatively easy with some general arithmetic/vocabulary questions, and second one with many logical questions where your task would be to find emerging patterns in order to solve them (rather going "brute-force").