Experiências

Thoughtworks Brasil e outras histórias

Com a chegada da Thoughtworks no Brasil e o crescimento rápido da empresa, reparei que muita gente se pergunta como funciona o processo seletivo deles, se é igual ao processo nos E.U.A e na Europa, se é diferente, enfim, as dúvidas são muitas. Consultando o google, consegui encontrar alguns blogs que contam as experiências de alguns profissionais que passaram pelo processo seletivo da TW. Essas experiências ajudam bastante a outros que estão percorrendo esse caminho. Por outro lado, não encontrei nenhum blog em português falando sobre o assunto. Ou ainda, nenhum brasileiro contando a experiência de participar do processo seletivo da Thoughtworks aqui no Brasil. Pois bem, eis me aqui. O assunto desse post é basicamente as lembranças que tenho de ter participado no processo da TW e o que senti\guardei sobre a empresa.

Thoughtworks

Thoughtworks

Primeira Entrevista – Telefone


3 dias após enviar meu Curriculum em inglês para o email citado no site, recebi um email da recruiter me agradecendo o interesse na vaga e pedindo para eu me informar sobre a história, cultura e organização da empresa, pois dentro de alguns dias ela iria me contatar por telefone. Poucos dias depois, recebi uma ligação da recruiter da TW. Nesse primeiro contato, a recruiter estava interessada em saber como eu obtive conhecimento da vaga, o que eu sabia sobre a empresa, os valores da empresa que me chamavam atenção e etc. No email tinha sido pedido para estudar um pouco sobre a empresa, seus valores, objetivos e coisas do tipo, e eu aconselho que você realmente o faça para entender melhor como eles pensam software. Caso contrário, você pode parecer meio bobo nessa primeira entrevista. Ela também confirmou alguns dados que eu passei no CV (ferramentas, linguagens que conhecia, inglês fluente – que é essencial) e perguntou mais a fundo sobre a minha área de atuação. A última pergunta (e a mais interessante) foi: “Por que você quer trabalhar na Thoughtworks ?” Essa é uma pergunta tão previsível que chega a ser clichê em entrevistas de emprego. Mas essa foi interessante, porque nesse caso, trabalhar na TW é completamente diferente de trabalhar em qualquer empresa. E justamente por isso, sua resposta deve se basear nos valores da empresa. Por isso que eles ressaltam a importância de pesquisar mais sobre os valores e princípios da TW. Para checar se seus valores estão mais ou menos alinhados com a da empresa.

A recruiter foi bem gentil (como todo mundo que eu conheci lá) e claramente tinha a intenção de deixar a entrevista bem aberta. Muito mais uma conversa informal sobre meus interesses e habilidades do que uma entrevista formal de emprego. A impressão deixada após essa primeira entrevista é de que eles não estão brincando quando dizem que procuram “apenas os melhores e mais apaixonados por programação”. E caso você transpareça insegurança, falta de sinceridade ou falta de paixão/motivação, é pouco provável que eles entrem em contato novamente.

Desafios práticos


Assim que a entrevista terminou, a recruiter enviou por email 2 desafios de programação muito interessantes:

O primeiro deles era o problema conhecido como “Mars Rovers” e não é nem um pouco difícil de se entender. A questão aí não é se você é capaz de resolver. Mas como você vai resolver. O problema é bem simples e você não deve implementar uma solução de outro mundo, utilizando vários Design Patterns, sob a pena de perder pontos diante do avaliador. De qualquer forma, se sua solução for simples o suficiente, futuramente se eles pedirem pra você modificar ou adicionar features ao projeto, você vai conseguir fazer isso com um pé nas costas. Se você resolve querer impressionar logo de cara e implementar uma solução complexa, você pode se complicar na hora de modificar o projeto. É realmente uma questão de K.I.S.S – Keep it simple, stupid. Não vou divulgar o problema aqui (no google você encontra fácil), nem tampouco a minha solução. Acredito que se você sabe programar e é bom nisso, não precisa conhecer a solução de outros para fazer a sua própria. Além do mais, isso fugiria completamente do propósito do post.

O segundo problema é “Trains” e é bem mais complexo do que o primeiro. Enquanto o primeiro problema, por ser mais simples, dá mais liberdade para você utilizar várias abordagens de design diferentes, o segundo gira em torno de encontrar rotas existentes entre cidades num dado mapa. Basicamente, consiste de navegar através dos vértices de um grafo, encontrar o caminho mais curto entre dois vértices  e encontrar caminho mais curto passando obrigatoriamente por um subgrafo. Muito divertido de se fazer, porém mais difícil. É necessário um bom conhecimento de recursão e do algoritmo de menor caminho de Dijsktra para resolver todas as proposições do problema.

Escolhi o “Mars Rovers” por ser mais simples e, logo, mais fácil de modelar (coisa que eu adoro fazer). É possível você usar uma abordagem, depois desmanchar e usar outra, mesclar mais de uma abordagem, voltar atrás, mudar tudo… o escambal! É muito importante você ter um motivo sólido para escolher seu problema. E depois que escolher, dedique-se a solução! Pessoas que gostam de dizer coisas do tipo “eu fiz de última hora”,  “não tive muito tempo pra fazer” ou “se eu tivesse mais tempo, faria melhor” não são levadas a sério. Obviamente são meras desculpas (e são fáceis de detectar) usadas como válvula de escape caso o avaliador ache algum problema ou erro na solução. Pessoas assim revelam que são de fato inseguras e que não são motivadas o suficiente. Essa etapa é uma das mais importantes de todo o processo e você deve levá-la a sério pois eles levam a sério.

Após o envio do email com o enunciado dos problemas (em inglês), tive 3 dias para resolvê-los e enviá-los para a TW. Se você acha que não conseguirá enviar a solução em 3 dias, você pode enviar um email para a pessoa em contato (no meu caso, a própria recruiter) pedindo um tempinho extra. Eles são flexíveis quanto a isso, desde que você avise de antemão. São flexíveis também em relação a qual linguagem você prefere. Se você prefere Java, faça em Java, se prefere Ruby, faça em Ruby, se prefere Haskell, faça em Haskell. Mas lembre-se: não utilize uma linguagem que você não conhece bem só para impressionar os avaliadores. Os caras lá são muito bons e vão perceber se você não conhece bem a linguagem e quer apenas causar impressão. Mais uma vez você vai ficar com cara de bobo.

Assessments – and bring your brains


Algumas semanas depois de enviar meu problema, a Thoughtworks promoveu um evento chamado “Café Ágil” em Recife. Neste evento, palestraram Paulo Caroli, coach da equipe deles em Porto Alegre, e Jim Webber, consultor da TW em Londres (se não me engano). O objetivo era também chamar a atenção de mais candidatos as vagas abertas em POA. Enfim, nesse dia, à tarde, a TW organizou uma bateria de testes com os candidatos as vagas. Essa bateria é o que eles chamam de assessments e no meu caso foi realizada num hotel em Recife. Onde eles explicaram um pouco sobre a história da empresa, apresentaram a visão, o ideal e o ambiente da TW. De fato, todos que trabalham lá estão muito orgulhosos por estarem onde estão, num ambiente onde a criatividade impera. As pessoas que eles contratam são realmente muito boas no que fazem e, de quebra, muito gente fina. Sim, eles procuram esse traço nos candidatos. Nas palavras de um dos avaliadores: “We don´t hire jerks”.

Tá bom, agora sobre o assessment. Eu cheguei no hotel às 14h e logo começou a apresentação que eu mencionei acima. Às 14:30h estava começando a série de provas:

– A primeira prova é o conhecido Wonderlic. Esse teste é usado pela NFL (Liga profissional de futebol americano) para testar se os jogadores possuem uma pontuação razoável para jogar futebol profissionalmente (futebol americano é um jogo complexo e é preciso ser inteligente pra jogar – na maioria das posições). O teste consiste de 50 questões, que vão crescendo em complexidade de acordo com o número da questão (a questão 50 é a mais difícil), e é dado um total de 12 minutos para responder o máximo que você conseguir. As questões variam de assunto, podendo ser matemática básica, interpretação de texto, geometria básica, lógica e língua inglesa. Detalhe: o Wonderlic é em inglês assim como todos os testes no assessment são em inglês.  Você pode encontrar simulados do wonderlic aqui.  Segundo o wikipedia, existe uma média de acertos para cada profissão. Químicos tem uma média de 31 acertos. Programadores 29. Acho que é bom ficar dessa média pra cima.

– A segunda prova tem 7 questões de puro raciocínio lógico. Chega a lembrar uma máquina de Turing. Mas não é estudando Máquina de Turing e seus conceitos que você vai ser mestre nessa prova. Não, não. É lógica mesmo. Trata-se de um sistema de fluxo de controle, onde são dadas instruções e um fluxo para você sair seguindo de acordo com as instruções dadas e os resultados encontrados no fluxo. No fluxo existem estruturas de repetição, condicionais, “goto” e etc.  No fim do problema é encontrado um resultado, que você deve assinalar na prova. São 7 questões e você tem 1 hora para fazer o máximo que conseguir. A chave para essa etapa é CONCENTRAÇÃO. Depois vem velocidade. Digo isso porque tentei ser cauteloso na minha prova, examinando e reexaminando após cada questão para verificar o resultado. No fim, só fiz 5 questões. Acho que acertei todas porque passei dessa etapa. Mas mesmo assim, seria melhor me concentrar 100% e fazer as questões rapidamente sem checagem e talvez desse um tempo de checá-las no final. Mais uma vez – a chave é velocidade.

– A terceira prova é o Wonderlic denovo. Mas dessa vez não houve limite de tempo. Você tenta acertar o máximo possível, olhando as questões com calma e tudo mais. Inclusive você pode corrigir alguma questão que você porventura ache que errou no primeiro teste. Mas a pontuação feita na primeira prova já foi computada e suas correções só valem para essa outra avaliação.

As provas são extremamente cansativas (principalmente se você tá dando seu máximo), esgotantes, mas também muito divertidas pra quem gosta de desafios. Após as provas fui chamado para uma conversa em inglês com os palestrantes do Café Ágil. Nessa conversa, eles fizeram perguntas sobre… resumindo – “o que significa ser ágil de fato?” e pediram meu ponto de vista. Acredito que nessa fase eles analisam seu inglês, sua personalidade (tipo, se você tá só puxando saco e coisa e tal, obviamente isso vai ser notado), sua visão de equipe, ética e, por último , seu conhecimento em metodologias ágeis. A conversa se delongou por mais ou menos 1 hora de tão legal que tava. Nisso, já eram 21:30h e todo mundo só queria ir pra casa.


Entrevista técnica por telefone


O problema que eu enviei do “Mars Rovers” foi examinado por um desenvolvedor da TW por algumas semanas e a recruiter entrou em contato novamente para marcarmos uma data para fazer uma entrevista técnica por telefone. Na data marcada, eu tinha acabado de chegar do trabalho e me ligaram. De imediato deu pra notar que não era uma entrevista comum. O cara, que por sinal era muito bom e tinha sido a primeira contratação deles no Brasil, usou um tom bem descontraído e jamais nem sequer tentou dominar a conversa, como é comum acontecer nesses casos. Pelo contrário, eu falei bastante sobre o que eu achava e pensava sobre um monte de tendências da área de TI. Porém, algumas perguntas bem técnicas foram feitas, tipo:

– Sobre o que era o projeto no qual eu estava trabalhando? E o anterior ? O que você sugere/sugeriu como melhora para ele?

– Já foi commiter de algum projeto open source?

– Quais frameworks/APIs/ferramentas você usa ou já usou? Pediu para eu explicar algumas delas.

– Qual sua linguagem favorita? Se você fosse mudar algo nela, o que seria?

– Você trabalha num ambiente ágil? Qual sua metodologia/técnica ágil favorita?

As perguntas não foram feitas em sequência e o entrevistador não esperava respostas 100% consistentes com definições. Na verdade, em algumas perguntas, após eu responder, ele também dava a opinião dele. Muito divertido, foi tipo uma conversa de amantes do desenvolvimento de Software. Algumas perguntas pessoais foram feitas também, tipo, livros que eu mais gosto (tanto da área quanto fora), o que eu achava de mudar pra Porto Alegre e etc. Essa conversa demorou cerca de 20 minutos e daí passamos a falar da minha solução do problema enviado. Decisões de design que eu tomei, por que eu as tomei e se eu faria diferente depois. Essa parte não demorou muito, foi mais pra sentir o meu conhecimento sobre o código escrito e pra sentir a minha mentalidade frente a um problema de programação simples. Não tenho certeza disso, mas acho que caras que respondem coisas do tipo: “eu não mudaria nada”, “essa solução é completa” ou  “meu jeito é melhor”  devem perder pontos na sua avaliação. No total a conversa demorou uns 30 minutos, mas passou voando!

Super Saturday em Porto Alegre


Após a fase de entrevista técnica, recebi um email me convidando para comparecer ao “Super Saturday” em Porto Alegre. O Super Saturday é um evento promovido pela Thoughtworks para os candidatos conhecerem melhor as pessoas da empresa e vice-versa. Nesse evento, o candidato é submetido a mais algumas análises, dessa vez por vários membros da TW. É uma grande oportunidade, talvez a maior, de mostrar seu potencial e conhecer o deles. Então a TW paga sua passagem e sua hospedagem em Porto Alegre. Basicamente, foram realizados 3 testes:  análise de código, entrevista sobre cultura e ética e pair-programming, não necessariamente nessa ordem.

– Análise de código: Essa parte é bem interessante. Me foi entregue uma página com um enunciado de uma questão de programação a ser implementada e uma implementação. Como se alguém tivesse implementado a questão proposta. O problema é que o código escrito é propositalmente cheio de erros e gambiarras. Erros sintáticos, erros semânticos, más práticas de programação, modelagem tosca, enfim… tudo aquilo que bons programadores têm pesadelos à noite. Não é difícil encontrar os erros . Eles tão bem na cara, mas visto que são muitos, você pode deixar algum passar. Fique atento a isso. Desmascare todos os erros possíveis e imagináveis.

– Entrevista ética e cultural: Muito boa também. Alguns membros da equipe irão conversar descontraidamente com você sobre situações que podem ocorrer no dia-a-dia de um Thoughtworker. De vez em quando vão bolar algumas situações extremamente constrangedoras e perguntar “o que você faria?”. As situações são hipotéticas e algumas perguntas são capciosas, mas se você não é um “jerk”, deve ficar tranquilo e responder do fundo do seu coração, sem esconder o que realmente pensa. Afinal, esse é o objetivo dessa fase. Saber um pouco sobre que valores você preza e se seus valores e pensamentos estão de acordo com os da empresa. Simplificando: Be nice.

– Pair-programming: Lembra do desafio de programação que você deve implementar? Pois é, ele volta. E com mais funcionalidades. Você deve estar preparado para colocar mais funcionalidades no seu projeto e fazer isso da forma mais simples possível. Nessa fase eles verificam se você sabe programar em par (coisas que eles fazem quase 100% das vezes lá) e se você se comporta bem trabalhando com alguém do seu lado. É observado se você é uma pessoa que aceita sugestões, é amigável, sabe trocar idéias e é eficaz ao bolar um plano rápido de implementação. Recomendável ter prática com TDD também.

Voltando de Porto Alegre, aguardei algumas semanas até a TW entrar em contato novamente comigo. O que aconteceu foi que no Super Saturday eu não estava muito bem. Acordei no sábado com uma febre moderada, mas consegui segurar a onda. Logo após o almoço foi a minha entrevista de Pair programming. Falei que não estava me sentindo muito bem mas dava pra continuar com a entrevista. Resultado: fui muito mal. Não consegui me concentrar muito bem e, no final de uma hora, tinha desenvolvido pouquissima coisa. Achei que estava eliminado, mas acho que eles levaram em conta que eu consegui bolar a solução pro problema, apesar de não ter conseguido implementar a solução no tempo. Me deram mais uma chance e me colocaram pra fazer pair programming online com o consultor líder deles, um desenvolvedor superstar aqui no Brasil. Enfim, não fui tão mal. Dessa vez, consegui junto com ele colocar boa parte da solução em prática.

Outras histórias


Bem, fui aprovado na seleção da TW, mas infelizmente, ao analisar a proposta feita, cheguei a conclusão que o custo-benefício não compensava pra mim. É muito bom saber que uma das maiores empresas de Software do mundo, que só contrata os melhores e mais apaixonados pela profissão, me notaram positivamente. Mas no fim do dia, o que conta é o que você mesmo acha que vale a pena para a sua vida. Na minha forma de ver as coisas, uma mudança grande dessas, exigiria um benefício maior por parte da TW. Não se pode apenas confiar que, porque a empresa é “super cool” e tem muitos desenvolvedores top notch, um pensamento diferenciado da maioria no ramo de TI, qualquer coisa vai valer a pena para entrar lá. Obviamente, eu morando em POA seria completamente diferente mas enfim… Essa é apenas a minha opinião. Nem todos pensam assim. Tenho certeza que muitos aprovados decidiram se mudar pra lá e não se arrependeram disso. Mas cada caso é um caso e no meu caso, não senti a confiança necessária pra aceitar a proposta.

De qualquer forma, adorei a forma como eles tratam os candidatos – como potenciais colegas de trabalho. Todos com quem conversei são educados e super gente fina. Sem dúvida as pessoas são o maior bem que eles possuem e isso fica evidente desde o primeiro contato. Creio que essa mentalidade deve ser exercitada por mais empresas no Brasil. Da mesma forma, como profissionais devemos sempre nos aperfeiçoar esperando esse tipo de oportunidade. Ou criá-las.

Padrão

15 comentários sobre “Thoughtworks Brasil e outras histórias

  1. Dayvid disse:

    Tiago, achei muito interessante o seu post. Realmente não encontrei nenhum outro post sobre entrevista da TW aqui no brasil.

    Apenas por curiosidade, quais os motivos que levaram vc a recusar a proposta de trabalho lá? foi algo pessoal ou A EMPRESA em si tem alguma politica com a qual você não concorda?

    • Oi Dayvid, obrigado por ler =D.
      Então, no post eu menciono que os benefícios não eram compatíveis com as minhas necessidades. E por benefícios eu digo literalmente, saca? Tipo, a oferta oferecida pra mim não compensaria a minha saída de Recife para POA. Aí é q tah… eu posso ter errado, não sei como seria o futuro se eu aceitasse, mas cada um deve fazer sua própria decisão na vida.
      []s.

  2. Breno Oliveira disse:

    Fiquei curioso. O que foi pedido como mais funcionalidades no projeto? Algo de esotérico?

    E realmente ouvi dizer que eles pagam mal mesmo. Atitude típica de consultorias americanas. Querem reduzir custos, com projetos off-shore, em países com mão-de-obra barata e especializada, como China, Índia e Brasil.

  3. Angelo disse:

    Realmente o problema da ThoughtWorks sao os salarios baixos. Eles querem profissionais excelentes pagando um preco abaixo do mercado. Tenho amigos que trabalham la e me confirmaram que e uma pratica da empresa pagar salarios 25% do valor do mercado.

  4. Denise disse:

    Tiago
    Parabéns pelo post, bem detalhado. Gostaria muito de participar da seleçao TW, mas ainda nao tenho muita facilidade para desenvolver, fico muito tempo batendo cabeça na soluçao. Para entrar na TW e melhora esse panorama o que devo fazer ?

    • Olá Denise,

      programar não é fácil. Não mesmo. Com exceção de algumas pouquíssimas pessoas que realmente nascem com o dom de programar, tem uma mente nativamente matemática e tal, todos nós precisamos praticar. E praticar muito. Isso é chave!
      1 – Leia muito código alheio e resolva muitos problemas também. Onde você pode ler código? Pra começar, se você está na faculdade, você pode ajudar outras pessoas com seus exercícios. Caso esteja no trabalho, ajude outros no trabalho. Ensinando se aprende muito! Uma outra opção são os fóruns: leia dúvidas alheias, tente ajudar, quebre a cabeça junto com a galera e rapidamente você vai estar com a mente voando!

      2 – Escreva muito código. Como assim? Eu pessoalmente acho mais legal tentar codificar problemas que eu mesmo penso. Ou criar um site com uma ideia que você tenha, uma solução desktop mesmo e etc. Caso você queira algo pra deixar sua mente mais calejada com assuntos “algorítmicos”, veja esse link: http://www.dtsato.com/blog/2008/10/21/source-of-problems-for-your-coding-dojo/
      Comece com os mais fáceis e vá subindo de nível. =)

  5. Ótimo post, Tiago. Pelo visto, esses testes que você fez não foi aquele para programadores mais novatos na área. Você conhece alguém que realizou esses teste e, se sim, sabe dizer como funcionou dando um overview? Obrigado!

  6. Rivelino disse:

    Ótimo post,
    Particei do processo seletivo da TW aqui em BH, infelizmente não fui aprovado, me falaram que minhas experiências não se alinhavam com o perfil da vaga ofertada. Gostaria de saber se tenho chances de participar novamente de outros processos da TW.

  7. Jarbas disse:

    Olá Thiago, fui convidado para fazer a entrevista pelo telefone dentro de alguns dias e achei excelente seu post, ajudou bastante. Fiquei com dúvida em 3 itens. O primeiro você disse que escolheu o problema “Mars Rovers”, você quis dizer que teve que resolver os dois de qualquer forma mas escolheu este para ser melhorado na próxima etapa do processo? O segundo é relacionado a linguagem de resolução destes problemas, trabalho há anos com C#, linguagem de programação nunca é impeditivo para um bom programador, só ficaria mais confortável em resolver nesta linguagem, tem essa opção? O terceiro e último é relacionado ao inglês, estudei muitos anos mas não me considero fluente devido ter passado somente 20 dias no exterior praticando, em relação leitura e escrita é bem tranquilo, mas conversação tem sempre aquela “travinha” devido a falta de prática, você acha que isso seria impeditivo? Faço estas perguntas porque percebi que o processo é bem grande e cansativo, e, ter que ficar me ausentando muitas vezes da empresa onde trabalho não seria uma boa escolha uma vez que eu já perceba de antemão que não terei muito futuro neste processo.
    Mais uma vez obrigado pelo post e pela ajuda!

    • Olá Jarbas,

      1 – Eu escolhi um para apresentar a eles e futuramente esse mesmo será aperfeiçoado mais a frente. Não era necessário resolver os 2 problemas.
      2 – Você pode escolher a linguagem de programação que mais domina e que seja utilizada no mercado.
      3 – Eles não exigem fluência. Você tem que conseguir se comunicar de forma eficiente. Mesmo com “travadinhas”, eu diria pra vc tentar (se essa for a tua única dúvida).

      Abraço!

  8. Ótimo post Tiago. Obrigado por compartilhar a sua experiência para a vaga na TW. No meu caso em particular, penso em um futuro não muito distante tentar uma vaga para QA na TW, no entanto, pelo que venho pesquisando, ainda não atendo aos requisitos necessários para a vaga, mas de qualquer forma, o aprendizado aqui obtido ficará guardado.A abordagem que você colocou sobre a visão e valores da empresa são bem claras e acredito que serão bem úteis.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s