Bem, resolvi fazer este blog após participar do processo seletivo da ThoughtWorks em Porto Alegre (e infelizmente não ter passado), o qual me deixou surpreso em como pode ser legal trabalhar em uma empresa que se preocupa tanto em seguir a metodologia ágil. Eles são loucos por testes, por parear e se importam muito com a qualidade de vida dos funcionários. Acredite, eu moraria dentro do escritório deles em POA! Hahaha!!!

Bem, vou descrever brevemente como foi o tal processo seletivo; você chega cedo no escritório e é recebido pela talent scout da empresa (no caso foram a Camila e a Carol), de cara você já se sente muito a vontade pois é um lugar que lembra muito uma casa, exatamente, uma casa! Tem uma sala com sofás e puffs, onde no meio há um XBOX ligado num projetor, além de um violão e também tinha uma arminha que disparava balas de isopor, e atrás uma cozinha, com geladeira e todos aqueles outros apetrechos. A galera vai chegando e você já vai socializando, trocando idéia e descobrindo qual dos candidatos você tem mais afinidade. Quando todo mundo chega ou já deu o horário previsto para o inicio então acontece uma introdução, apresentação da empresa e tudo mais, onde fica bem claro que o Martin Fowler NÃO é o dono da empresa (hahaha) e sim o cientista chefe (ou algum cargo semelhante), obviamente, são explicados vários detalhes, e coisas que te deixam empolgadissimo como por exemplo o programa de intercâmbio entre os escritórios da empresa (são vários no mundo, tem no Canadá, EUA, Brasil, Reino Unido, Alemanha, India, China e Australia, se nao me esqueço de nenhum outro…) e como é a maneira que eles trabalham, além do cunho ativista da empresa, em relação a cuidar do meio ambiente e das pessoas. Por exemplo, eles contaram que já negaram trabalhar para um cliente que polui demais o meio ambiente e que nas horas vagas eles disponilizam alguns desenvolvedores para trabalhar em um software utilizado pela ONU (nao me lembro exatamente se é a ONU ou UNICEF agora) para ajudar crianças perdidas ou abandonadas a localizar seus pais!

Depois de toda essa introdução, que pessoalmente me deixou muito empolgado eles nos levam para onde a galera trabalha mesmo, que é uma área aberta, super bem humorada, nas paredes tem desenhos do jogo Mario Bros e do PacMan, feitos com os post-its utilizados para o scrum e também caricaturas dos funcionários, dentre vários monitores grandes que se não me engano eles usam para video conferencia entre os escritórios. Lá você senta numa mesa e é passada a primeira explicação do teste prático, era para desenvolver uma aplicação que basicamente controlasse “sondas em marte”, ou seja, era dada uma área retangular de qualquer tamanho arbitrario e entao entrava-se com duas linhas de comando, uma para definir a localização inicial da sonda e outra para definir quais movimentos seriam feitos, ou seja, RETO RETO VIRA VIRA RETO VIRA RETO, e depois a sonda deveria, como output dar a localização final dela (passo que eu esqueci de fazer, argh!). Para esta prova nos deram 4 horas. Fácil? Trivial? Então, na minha cabeça vieram esses pensamentos, mas como eu já estava super empolgado e ainda considerei o problema a ser resolvido como fácil, fiquei feliz pois utilizaria todas as melhores práticas e vários padrões de projeto além de fazer uma interface console bem bacana, o que mais tarde descobri que foi considerado por eles como over-engineering para um problema simples demais.

Comecei fazendo testes, mas acho que estava tão ansioso que fui fazendo menos testes do que deveria (ou seja, talvez tenha subestimado a importância que eles dão para o TDD) e fui logo aplicando o Strategy para tratar eventos como colisão entre sondas (sim, após uma sonda se deslocar poderiam ser inseridas quantas outras sondas o usuário quisesse), ou quando a sonda chegasse nos limites da área delimitada, ou seja, ficaria a critério e fácil para o implementador decidir e alterar futuramente qual comportamento quando alguns desses eventos acontecessem, por exemplo, no primeiro caso implementei a estratégia em que as duas sondas eram destruidas e eliminados do plateau (nome dado na especificação para a área em que as sondas se locomoviam). Também implementei o pattern Observer para a sonda notificar quem tivesse interesse no fato dela ter se locomovido, passando a nova posição. Também usei o Observer para notificação de eventos como colisão entre sondas e por ai vai. Na minha implementacao a interface se inscrevia para ser notificada de tudo isso e se atualizar da maneira adequada. A propósito disponibilizei o meu projeto para download em um link abaixo. Ah sim, tudo acontece em inglês, ou seja, a especificação vem em inglês, e seu código (creio eu) deve ser escrito em inglês dado o caráter multi nacional da empresa.

Ao fim do teste eles trazem um almoço para você e te liberam para esfriar a mente um pouco!!!

Você volta depois de aproximadamente uns quarenta minutos, e faz um teste de lógica em inglês. Ainda bem que inglês não é um problema para mim, e aliais, não pode ser um problema para ninguém que almeja trabalhar numa multi nacional, ou seja, se você tem algum problema com o inglês e deseja entrar lá ou em qualquer outra empresa passe a ler livros em inglês, assistir filmes em inglês, baixar podcasts em inglês e estudar bastante, ganhar bastante vocabulário, afinal, quem vai para a segunda fase faz entrevistas em inglês (eu não cheguei a ir, mas se não me engano perguntei isso para Camila e ela me confirmou). Voltando ao assunto, a prova de lógica é bem tranquila, você tem alguns minutos para fazela e não necessáriamente há tempo para concluir todas as questões, essa prova eu considerei fácil. Neste ponto você pode perceber quão ansioso eu já estava pois estava crendo que tinha ido super bem no teste técnico e melhor ainda neste segundo teste!

Após esta prova vem outra, na qual você tem uma hora para resolver algumas questões que fazem você literalmente DEBUGAR MENTALMENTE um fluxograma, que obviamente representa um algoritmo, ou seja, existe um array desenhado com um índice acima de cada caixinha e na caixinha o valor armazenado no indíce, entao voce vai seguindo as instrucoes, por exemplo “pegue o valor da caixa 4 e multiplique pelo valor da caixa cujo numero esta na caixa 1, coloque o resultado na caixa 9″, depois “o valor da caixa 9 é maior do que o valor da caixa 2? se sim va para instrucao 4, senão vá para instrução 6″, no fim “Qual o valor na caixa 3?”. Então, você literalmente “debuga” a coisa toda!!! Isso para mim que estava mentalmente cansado a esse ponto foi muito difícil, pois exige muita atenção (pequeno detalhe para o fato deu ter virado 4 noites trabalhando na semana anterior), se você erra um pequeno passo, já era, erra tudo! Eu acabei deixando as ultimas 4 em branco, pois preferi revisar as primeiras no final e garantir alguns pontos. Bem, o que tenho a dizer a respeito dessa prova é que isso é treino e concentração. Se você ficar nervoso pode realmente te atrapalhar!!! Quem estuda muito algoritmos seguramente vai ir bem, pois você acaba fazendo muito isso para entender alguns algoritmos de ordenação ou de árvores, por exemplo.

Após este teste, no meu caso, minha cabeça estava fervendo haha tinha gente dizendo que estava se sentindo anestesiado haha!!! Então eles pegam a primeira prova de lógica e deixam você resolver sem limite de tempo, ai a prova fica mais fácil ainda e você pode caprichar. Depois disso, acaba! Você espera na sala (onde tinha um XBOX e as outras coisas legais) pelo seu feedback, para saber se você será convocado para o segundo dia da entrevista. Acredite, eu fui o primeiro a chegar lá para a prova e o último a ter o feedback, que no meu caso foi a reprovação. Ou seja, passei o dia todo lá, das 8 da manhã as 8 da noite.

O feedback foi muito bacana dizendo que minha atitude de ter saído de Brasília até Porto Alegre (1.600Km) foi muito relevante e que eu sou um cara que de fato se mostra apaixonado pelo que faz (verdade!) e que era uma pena eu ter tido um desempenho fraco no teste de lógica (o segundo, de debugar o fluxograma) e que embora conste no meu curriculo o TDD ele não foi verificado no meu código, o que de fato aconteceu pois como disse acabei cobrindo uma parte muito pequena da aplicacao com os testes), e que por isso infelizmente não seria chamado para a segunda fase. De qualquer maneira me recomendaram a Caelum para fazer treinamentos e a SEA, empresa aqui em Brasília que parece valorizar muito as boas práticas e promover DOJOS (informação a verificar!).

Bem, recebi um não! Mas foi um “não” muito motivador porque eu sei que é isso que eu quero, entrar em uma empresa com esse tanto de características legais, e que agora isso é uma meta para mim, ou seja, saí de lá chateado porém MUITO motivado, eu digo que o valor investido na viagem (passagem + hotel + alimentação + táxi) foi sim muito bem investido pois não existe nenhum lugar que se venda toda a motivação que eu ganhei para me melhorar profissionalmente e pessoalmente. Este blog é fruto deste processo todo. Decidi que vou voltar a estudar algoritmos para desenvolver alguns aspectos muito importantes como, além da atenção e a habilidade de debugar as coisas por aí e ganhar o conhecimento propriamente dito, me tornar um programador poliglota, que pelo que percebi é algo muito importante para a TW.

Existe um projeto com um amigo meu, o @Geraldo_Ferraz (um cara [d]escolado no Java) e eu (raízes no .NET) onde vamos trabalhar todo o conteúdo de um dos livros texto do MIT para introdução de algoritmos (que inclusive tem as aulas filmadas do curso inteiro no iTunesUniversity, de graça!), cada algoritmo em uma linguagem diferente, e obviamente, tudo isso vai aparecer aqui no blog e ser disponibilizado no GitHub. Caso você tenha interesse de participar desta jornada mande um email ou deixe um comentário!

LINK RELACIONADO: http://blog.felipel.com/2011/07/thoughtworks-6-meses-depois/ => Descrição de como funciona o dia a dia dos ThoughtWorkers!

Grande abraço!

contato@renatogama.com

© 2013 Renato Gama Suffusion theme by Sayontan Sinha