Johannes Thönes

Software-Developer, ThoughtWorker, Permanent Journeyman, Ruby Enthusiast, Java and Devils Advocate.

3 Things I Learned at ThoughtWorks I Did Not Expect to Learn

In May 2014 it will be two years since I joined ThoughtWorks Germany. The time here has been an amazing journey. I have learned many things.


I learned more about agile software development and I worked with interesting technologies. I am also dealing with clients and represent my company at a client site. I did learn of all that - and I don’t expect to stop learning anytime soon.

But there were a few things I learned, which I did not expect to learn at ThoughtWorks. I want to share three of them with you.

1 - It is OK not to know everything

It seems like pretty common sense that we cannot know everything. If you had asked me in April 2012 if I needed to know everything, my response would have been “no”. But it is a difference to know it, or to feel and act upon it.

When I joined, my impression was: “I needed to foresee potential problem which might arise in a project”. So I needed to know all the technology and all the implications, right?

Well, I couldn’t. Nobody can. But I learned that we have a different approach. At ThoughtWorks we tend to deal with problems when they arise. This is the moment you know the most about it. We avoid dealing with problems that might arise at some point.

This is engrained in the company. “I don’t know” is a sentence you’ll often hear. But it is usually accompanied with: “But I’ll find out (when it’s necessary)‘.

2 - Everyone can contribute

Since I heard what pair programming is, I always wanted to try it. I had tried pair programming before - but not as extensive as at ThoughtWorks. Pair programming gives developers the opportunity to contribute to the movement of a project. Starting on day one.

When I joined my first billable project, I didn’t know anything about the project. Nor did I know anything about the client. But I knew Ruby. In fact, I had done more Ruby programming than any other developer on the team.

It was my the first day on the project. I was a grad consultant in a team full of senior developers. And I could suggest improvements in the application while my pair was showing it to me.

This is not limited to pair programming. Everyone - be it a graduated or an experienced developer - has a different experience or point of view. Maybe it is even a stupid but important question. Everything can be valuable input.

3 - The most fun you get is out of people you work with

Before ThoughtWorks, I believed that the most important thing about work is what you do. But it is with whom I work, which has the most influence on my work happiness.

When I joined, I had a 4 week project simulation for training with a simple technology stack. Nothing new, nothing exciting. Before ThoughtWorks, I had been working for almost three years with a similar technology stack. I had even been teaching it to other developers. So technology wise it could not have been a more boring start.

But I was there with a bunch of other graduate consultants. Some of them new to the technology. I learned, how fun it can be to pair and work with people who immediately pick up what you are coaching them. And the next day, they will teach you something!

Can there be more fun than this?