lixo.org

Baking Teams

I have a friend whose wife loves baking, and he was tasked with helping her out one of these evenings. He was keen to cut corners and get it over with as soon as possible, so he could go back to his code, videogame or whatever it was that caught his fancy at the time.

Instead of working fast in small batches – or slowly in big ones – he mixed all the eggs, flour and milk together. Too fast, while stirring too little. It formed clumps, and eventually a whole bowl of terrible-looking dough had to be thrown away.

It turns out, the secret is to mix wet and dry ingredients really carefully: if you know you’re going to add more than the mixture will take, you better sift the dry stuff first, hope for the best and then whisk and stir like mad. It’s a delicate balance if you’re dealing with a new recipe or unfamiliar tools. In fact, a change in altitude or air humidity could be enough to tip the odds in favour of mediocre cake.

As my friend told me this story, I suddenly realized the same thing works for teams, too: add too many people at once and, unless there’s room for everybody to absorb and share their points of view, you’re going to get knowledge and culture “clumps” that are really hard to dissolve. New domains, technologies and processes: more variables, making it really hard to predict whether you’ll get it right or not, and they all tip the scales towards mediocre outcomes.

But what if you had to? Or, instead: what if you decided that, given other constraints, it’d be desirable to add lots of people to a team in a very short time span? What would you do to keep it from “clumping”?

Assando Times [pt_BR]

[This is a translation of the previous post into Brazilian Portuguese.]

Tenho um amigo cuja esposa adora cozinhar, e ele foi incumbido de ajudá-la numa noite dessas.

Ele estava sem muita paciência, e resolveu pegar uns atalhos para acabar com a tarefa o mais rápido possível e voltar ao seu código, videogame, ou seja lá o for que lhe chamava a atenção no momento.

Em vez de trabalhar rápido e em pequenos lotes - ou lentamente, mas em grandes lotes - ele jogou todos os ovos, farinha e leite juntos de uma vez só. Misturou tudo muito rápido, enquanto mexia muito pouco. Formaram-se pelotas e, eventualmente, uma bacia inteira de massa com uma aparência terrível tinha que ser jogada fora.

O segredo, aparentemente, é misturar os ingredientes secos e molhados com muito cuidado: se você sabe que vai adicionar mais do que a mistura vai aguentar, é melhor peneirar os ingredientes secos antes, cruzar os dedos e, em seguida, misturar e mexer tudo como louco: quanto mais desequilibrada a proporção de seco vs. molhado, maior o esforço necessário para manter tudo homogêneo.

É um equilíbrio delicado, se você está lidando com uma nova receita ou utensílios desconhecidos. Na verdade, uma mudança de altitude ou a umidade do ar pode ser suficiente para mudar as probabilidades em favor de bolos medíocres.

Enquanto meu amigo me contava essa história, de repente eu percebi que a mesma coisa funciona para equipes, também: ao adicionar muitas pessoas ao mesmo tempo sem que que haja espaço para que todos absorvam e compartilhem seus pontos de vista, você está caminhando para a formação de pelotas de conhecimento e cultura, que são realmente difíceis de dissolver. Novos domínios, tecnologias e processos são variáveis a mais, tornando-se muito difícil prever se você vai acertar ou não, e que jogam as probablilidades em favor de resultados medíocres.

Mas e se você tivesse que fazê-lo? Ou, em vez disso: se você decidisse que, dadas limitações atuais, a coisa mais sensata e desejável a se fazer seria acrescentar um monte de gente numa equipe em um período de tempo muito curto? O que você faria para mantê-la livre de “pelotas”?

ThoughtWorks Brazil: The Dinner Table

In the next few weeks, I’ll be putting together a few posts that tell a little bit about the stories behind the scenes of opening the ThoughtWorks Brazil office. They’re entirely from my point of view, might contain an embarrassing moment or two and are absolutely not to be taken as the official voice of ThoughtWorks on any of these matters. I’m not a PR person ;)

Right before starting the efforts to go set up the physical space of the new ThoughtWorks Brazil office, we hit a snag: the new building where we would be located wasn’t ready yet, so we got to borrow some space from the University temporarily.

When we got there, the sign near the door said “Open Source Labs”. I never found out what happened to the lab once we took their space, but I hope they’re alive and kicking somewhere else in the building. ThoughtWorks contributes a fair deal to OSS projects, and I felt bad for taking over some of that space, even if symbolically.

Overnight, the facilities management at PUCRS cleared the rooms and gave us the OK to put whatever furniture we wanted there.

- Hey Sid…
- Yeah, Carlos?
- The furniture guys just called. We are not going to have it until the middle of next month!
- It’s been delayed again!?
- Yeah… What do we do?
- Can we talk to someone from PUCRS and see if we can borrow some in the meantime?

So we did, and they gracefully gave us access to a storage room right next to ours, full of used chairs and desks. They told us to pick whatever we needed. Most likely, this was where they stored furniture that needed repairs, as most of it was broken, scratched, wobbly or otherwise in need of repair. It took us about an hour to measure everything and pick the items we needed and that were in usable conditions.

The facilities guys didn’t let us help in the move from that point on, which was sort of disappointing. Sid and I came prepared to handle all of the grunt work ourselves that morning – I even wore shoes!

Fast forward about a month, we were ready, settled and cracking on with our first two projects already, even though at this point, our “real” furniture hadn’t arrived yet. The steady growth of the office had us rubbing elbows and bumping into each other, making us push our luck with PUCRS to get another room. They gave us that storage room next door and cleared it out, but it needed a bit of work done. Builders were hired, and after fitting it with AC, ceiling tiles and a few other bits, we moved in.

Meanwhile, the office was still growing like crazy, and we needed another desk for workstations in the new room. Unfortunately, PUCRS didn’t have any we could borrow, but one of our developers did: Lipe Sabella had just moved from São Paulo to Porto Alegre and all his stuff was still in boxes at my apartment while he looked for a place. Frankly, his dinner table propped against a wall wasn’t doing my living room much service, so we arranged to get it delivered to the office, and now we had room for another 6 people!

- We’re going to have to protect it somehow. I’ve managed not to scratch it all these years!
- Some plastic, maybe?

Picture: Luiza, Rubem and Andrea tape down the most horrifying plastic cover we could find at the neaby mall.

ThoughtWorks Brazil: Oink

In the next few weeks, I’ll be putting together a few posts that tell a little bit about the stories behind the scenes of opening the ThoughtWorks Brazil office. They’re entirely from my point of view, might contain an embarrassing moment or two and are absolutely not to be taken as the official voice of ThoughtWorks on any of these matters. I’m not a PR person ;)

- Hi Carlos!
- Hi Suzi! (Edwards, head of recruiting recruiters and big fan of otters)
- How many emails to the ThoughtWorks Brazil info address did we get so far?
- Too many! I’m swamped at the moment, but looks like we have some good candidates!
- Cool! What do we do now?
- For now, sit tight and wait for me there - I’ll be in Porto Alegre in a couple of weeks.
- Good old short notice, short term travel?
- Exciting, isn’t it? I’ll be over for a month.
- Yay!

Two weeks went by in a blink, and I find myself sitting in the lobby of a hotel in Porto Alegre giving Suzi a big hug for being such a trooper; YYC to POA is not an easy flight, but she didn’t care. The weather lost that minus sign next to the centigrades and really, that’s all she wanted to know. Calgary was hovering around -30 C, and summer in Porto Alegre had just started to kick in, with 28-32 C at lunch time, big tropical showers in the afternoon.

She got to work as soon as the jet leg went away, and soon enough we had invited enough people to join us for a day of breakfast, some presentations about ThoughtWorks and interviews. Honestly, I don’t know how that happened: Suzi landed on a foreign country, didn’t speak a word of Portuguese and yet, a few days later, we had an event with 80 people keen to hear about us.

I was flying back and forth from São Paulo, working at the client during the weekdays and helping out with recruiting and some of the random things that can get thrown at a company trying to establish an office in Brazil. And taking Suzi to the dentist to replace a filling… but that’s another story. I became more and more familiar with the recruiting process, still a good part of the secret sauce of ThoughtWorks. I did so many code reviews I can now recite the Mars Rovers code review problem statement with my eyes closed.

We decided on the first few hires and Suzi asked me to review their offer letters, just in case there was something culturally weird.

- Well, offer letters themselves are culturally weird. It’s usually just a phone call and a “when can you start?” kinda thing.
- Oh, that I’m not doing. I want letters, printed and signed… culturally weird as that might be!
- There’s one more thing about them that’s really weird, too.
- Uh oh…
- We are called ThoughtWorks Brasil Software Ltda, Formerly Known As Oink Participações Ltda!?
- The lawyers had me put that in there. Apparently, we have to use the full name of the company. Which we’re going to change, of course… but that hasn’t been fully approved yet.
- So all the offer letters we’re sending out to this first batch of hires are going to come from ThoughtWorks, Formerly Oink?
- Yes.

Histerical laughter ensued. Fast forward a couple of weeks.

Suzi and I are talking about how exciting having the new hires start all at once and how we’d put a big ribbon in the office door for them to cut, or something silly like that. I remembered this really cool photo set she did with the folks in Calgary, and thought it’d be great to do something like that here, too.

Maybe not with the bear hats, though.
Photo: Suzi stares at a chart, for no reason

ThoughtWorks Brazil: Going to Porto Alegre

In the next few weeks, I’ll be putting together a few posts that tell a little bit about the stories behind the scenes of opening the ThoughtWorks Brazil office. They’re entirely from my point of view, might contain an embarrassing moment or two and are absolutely not to be taken as the official voice of ThoughtWorks on any of these matters. I’m not a PR person ;)

Since the 2nd Brazilian joined the company there has been a discussion going on at a ThoughtWorks office, somewhere in the world: should we build an office in Brazil? When, where?

Choosing Porto Alegre as the town to build our first office was something unexpected to me. Until the beginning of September last year, I had heard lots of good things about the city, but had never visited it. It came up every now and again as a good IT spot in Brazil and as a generally nice place to live.

Sid, Roy (Singham, founder of ThoughtWorks) and a few others scheduled a visit to Brazil, in October last year, for a quick tour and meetings with a few more potential clients and friends.

I was living in Santo André, my hometown, about 25km away from the client, where I was doing some coaching and whipping a few legacy systems into shape. I took a little break from the client work and joined them in the tour where we were supposed to decide on a few things like incorporation, payment and benefits packages and most importantly, location.

Being from São Paulo (well, Santo André… but if you’ve been there, you know it’s all the same urban sprawl), I’ve backed it quite strongly. For me, it’d be extremely convenient — friends, family, etc. For ThoughtWorks, it wouldn’t be so bad either: it’s not hard to find excellent talent in a city with over 25 million people, especially one where the majority of the IT market is.

Paulo wasn’t so sure. (Paulo Caroli, the second Brazilian to join… or maybe third, I can’t remember). Being from Rio de Janeiro and having a bit of a thing against São Paulo, as all Cariocas jokingly do, he argued the picture wasn’t that clear: alternatives to the high taxes, heavy competition and the cost of living in São Paulo were worth thinking about.

At this point, choosing the place to open the office was becoming more and more of a big deal. The more we did the maths, the less São Paulo looked like a good place to start, even if it seemed like the obvious choice at first. High taxes and cost of living would drive our cost base up quite significantly, nearly killing our chances of competitively offering near-shore projects to our existing clients in North America and Europe. If we wanted to start from São Paulo, we’d have to find enough local work to keep us going (and growing), but the highly competitive market would drive our prices down enough to kill any margins and we would sink. D’oh!

The crew had visited a few cities around Brazil at this point: São Paulo, Rio de Janeiro, Campinas, Salvador, but there was maybe another dozen cities in Brazil where a TW office could thrive. After a lot of digging around and looking up statistics from all sorts of sources, we narrowed down the list of potential cities to two or three, and Porto Alegre was the next one to try out.

We got there and had a couple of meetings with the directors of PUCRS, the Pontifical Catholic University of Rio Grande do Sul… and wow. They have a technology park, TECNOPUC, taking up a good quarter of the (rather large) campus. Companies like HP, Dell, Microsoft and Accenture have a big presence. It looked nothing like I imagined, though: instead of a soul-crushing sea of cubicles in high-rises full of tired people in suits crammed in a corner of the University, I found a really vibrant, open area with a few short buildings scattered between huge leafy trees. It’s the sort of place I’d like to work at; others promptly agreed.

Talks with the directors went really well, and we partnered. ThoughtWorks joined the TECNOPUC community and we started talking about how much office space we’d need, and how much they had available at the time. Meanwhile, Francisco Trindade (developer and lean dude, born in Porto Alegre, based in London at the time) showed us around town. Again, I was impressed with the quiet, nicely kept streets, parks and facilities. There are trees everywhere, a decent public transport system, a good number of restaurants and things to do.

That evening, we flew to Florianópolis to attend Ágiles 2009, where Roy had the closing keynote. We spent most of the time at the conference still trying to figure out tax codes and benefits while Roy worked on the slides.

At the end of the usual politically charged and motivating keynote, Roy announced: ThoughtWorks Brazil is ready to roll, and we’re hiring!

Picture: Roy announcing the opening of ThoughtWorks Brazil at Ágiles 2009