I joined ThoughtWorks Spain on the 7th of January as a Senior Consultant. For those who don’t know the company, ThoughtWorks is a 25 years old international consultancy known for the high-quality software they deliver following good practices such as TDD or Pair Programming (and because of Martin Fowler, of course). After 8 months working in two different clients and three projects, I thought it would be great to write some lines around what the expectations I had about this company were and how they have been satisfied or not.

Full Stack Development

One of the reasons why I joined ThoughtWorks was to expand my technical breadth. To me, this means learning more programming languages and technologies, working with different architectures and setting up different applications. As a software engineer, I felt that the more tech breadth you have as a developer, the more tools you will have available in order to solve a problem. Moreover, as an Agile practitioner, I wanted to be part of a real Cross-functional team to be able to develop a feature from the beginning until the end (frontend, backend and infrastructure).

During my 9 months, I have been working with different types of applications (serverless, monoliths and microservices), multiple frontend technologies such as Flow, Typescript, React and Redux, a variety of backend languages like Go, Scala and C# and finally a couple of Infrastructure as Code programming languages, Terraform and CloudFromation. Probably, being involved with so many things in less than a year is not a common pattern at ThoughtWorks because when you are assigned to a client, they expect you to be there around one year, but - what is true is that they expect you to be able to deliver value regardless of the programming language.

Agile Mindset

In most of my previous companies, I’ve been working in an “agile” way but, as usually happens, you don’t know if you are doing it in the right way or not. When I joined ThoughtWorks I expected to see the perfect way of doing Scrum, Kanban or XP since Martin Fowler, the Chief Scientist Office, was one of the creators of the Agile Manifesto.

The main thing I have learnt at ThoughtWorks is that Agile is not about Scrum or Kanban, it is about being moving quickly towards goal getting feedback constantly. That being said, I have worked with both Scrum and Kanban at ThoughtWorks but none of them was implemented by the book, instead, we have followed a custom approach adapted to the team I was working in.

Software Excellence

ThoughtWorks is well known for aiming to put good practises in place like TDD, CI/CD, Pair Programming among others. Therefore I expected to see all those things fully implemented in every client they work with.

Surprisingly, all the projects I’ve worked with had all those things set up by default so there was no need to convince the client about the value of those practices. When ThoughtWorks starts a relationship with a client, these are the things which are well defined and understood by the client because in the end this is how ThoughtWorks delivers high quality.

People

My expectations here were not clear, to be honest. On the one side, ThoughtWorks is a consultancy with a lot of people working on it, but on the other side, they just moved to Barcelona so a “startup” mood would also be possible. And sincerely, People here are amazing! As I said I have been working on three different projects and everybody from ThoughtWorks is always willing to help you, open-minded and open to get feedback at any point in time to improve personally and professionally. Since “Social and Economic Justice” is our third pillar, ThoughtWorks has the most inclusive culture I have ever seen which means we treat everybody equally regardless of gender, age or race.

Conclusion

It has already been 8 months at ThoughtWorks and I can say that the change I made in my career has been fruitful. I moved from being a Lead in my previous company to become Senior Developer again so that I could reinforce my tech skills. So far, I have worked at ThoughtWorks with many different programming languages, I have improved my knowledge in Agile, I have practised some of the best practises that help you to develop high-quality code and I have met amazing people. So far so good!