Como entrei no ThoughtWorks ou em uma entrevista exemplar

imagem

Não lhe parece estranho que, quando você mudar de local de trabalho e precisar passar por uma entrevista, primeiro pense que "você precisa se preparar para a entrevista". Resolva os problemas no HackerRank, leia Crack the entrevista de codificação, memorize como o ArrayList funciona e como ele difere do LinkedList. Ah, sim, eles ainda podem solicitar classificações, e obviamente não será profissional dizer que a classificação rápida provavelmente será a melhor escolha.
Mas espere, você programa 8 horas por dia, resolve tarefas interessantes e não triviais e, no novo local de trabalho, fará o mais ou menos o mesmo. No entanto, para passar na entrevista, é necessário, de alguma forma, preparar-se, nem mesmo para aprimorar suas habilidades diárias, mas para aprender o que você não precisava no seu emprego atual, ou é improvável que seja necessário no próximo. Para suas objeções de que a ciência da computação está em nosso sangue e nos acorda no meio da noite, somos obrigados a escrever com os olhos fechados em uma fronha e caminhar ao redor de uma árvore sem sequer recuperar a consciência; responderei que, se me instalar em um circo, e meu principal esse é o truque - talvez sim, eu concordo. Você precisa verificar essa habilidade.

Mas por que testar habilidades irrelevantes para o seu trabalho atual? Só porque se tornou moda? Porque o Google está fazendo isso? Ou porque seu futuro líder de equipe teve que aprender todos os métodos de classificação antes de passar por uma entrevista e agora ele acredita que "todo bom programador deve saber de cor a implementação de encontrar um palíndromo em uma linha".

Duck, você não é o Google. O que o Google pode pagar, as empresas comuns não podem. O Google, analisando os dados de seus funcionários, chegou à conclusão de que é especificamente com ele, especificamente com suas tarefas, que engenheiros com um passado olímpico são capazes de lidar. Além disso, ao desenvolver o processo de seleção, eles podem se arriscar a não contratar vários bons engenheiros, devido ao fato de não saberem como resolver problemas de matemática com tanta facilidade. Mas para eles isso não importa, há muitas pessoas que querem trabalhar no Google, a posição será fechada.
Agora, vamos olhar pela janela e, se ainda houver mais campistas na frente do seu escritório que não querem trabalhar para você, e é mais provável que seus desenvolvedores pesquisem no stackoverflow a próxima anotação do Spring, em vez das sutilezas dos algoritmos de classificação, provavelmente, Você deve pensar em copiar o Google.

Bem, se desta vez o Google falhou e não deu uma resposta, o que devo fazer? Verifique exatamente o que o desenvolvedor fará no trabalho. O que você valoriza nos desenvolvedores?
Faça critérios para quem você deseja contratar e desenvolva testes que testem essas habilidades específicas.

Obras de pensamento


O que o ThoughtWorks tem a ver com isso? Foi aqui que encontrei um exemplo de uma entrevista modelo para mim. Quem são os ThoughtWorks? Em suma, esta é uma empresa de consultoria de ponta com escritórios em todo o mundo, da China, Cingapura às Américas, que assessora no desenvolvimento de cerca de 25 anos, possui sua própria divisão de ciências, chefiada por Martin Fowler. Se você procurar uma lista de 10 livros que devem ser lidos para Engenheiro de Software, talvez 2-3 deles sejam escritos por funcionários da ThoughtWorks, como Refactoring por Martin Fowler e Building Microservices: Designing Fine-Grained Systems por Sam Newman ou Building Arquiteturas Evolucionárias
por Patrick Kua, Rebecca Parsons, Neal Ford.

Os negócios da empresa baseiam-se na prestação de serviços bastante caros, mas o cliente paga pela qualidade fenomenal, que consiste em especialização, padrões internos e, é claro, pessoas. Portanto, é de vital importância contratar as pessoas certas.
Que tipo de pessoas estão certas? Claro, para cada um deles. A ThoughtWorks determinou que, para seu modelo de negócios para desenvolvedores, os critérios mais importantes são:

  • Capacidade de parear desenvolvimento. É habilidade, não experiência ou habilidade. Ninguém espera que as pessoas que praticam a programação de pares nos próximos cinco anos, mas seja receptivo às opiniões dos outros, seja capaz de ouvir é uma habilidade necessária.
  • Capacidade de escrever testes e, idealmente, praticar TDD
  • Entenda o SOLID e o OOP e possa aplicá-los.
  • Apresente sua opinião. O consultor precisa trabalhar com os desenvolvedores do cliente, com outros consultores, e não há muito benefício se a pessoa souber fazer algo bem, mas não puder transmitir isso ao resto da equipe.

Agora é importante avaliar com precisão essas habilidades do candidato. E aqui quero falar sobre a minha experiência de entrevistar na ThoughtWorks. Direi imediatamente que fui para Cingapura e passei, mas o processo de recrutamento é unificado e não difere muito de país para país.

Estágio 0. HR


Como costuma acontecer, uma entrevista de 20 minutos com o RH. Não vou insistir nisso, só posso dizer que nunca conheci RH que pudesse falar sobre a cultura de desenvolvimento da empresa por 15 minutos, por que eles usam TDD, por que programar em pares. Geralmente, os RH falam sobre essa pergunta e dizem que eles têm um processo normal: desenvolvedores desenvolvem, testadores testam, gerentes dirigem.

Estágio 1. Você é bom em OOP, TDD?


1,5 horas antes da entrevista, eles me enviaram uma tarefa para fazer um simulador de Mars Rover.

Quest Mars rover
Um esquadrão de robôs robóticos deve ser desembarcado pela NASA em um platô em Marte. Esse platô, que é curiosamente retangular, deve ser navegado pelos veículos móveis, para que suas câmeras de bordo possam ter uma visão completa do terreno circundante e enviá-lo de volta à Terra. A posição e a localização de um veículo espacial são representadas por uma combinação de coordenadas xey e uma letra representando um dos quatro pontos cardeais da bússola. O platô é dividido em uma grade para simplificar a navegação. Uma posição de exemplo pode ser 0, 0, N, o que significa que o rover está no canto inferior esquerdo e está voltado para o norte. Para controlar um veículo espacial, a NASA envia uma simples sequência de letras. As letras possíveis são 'L', 'R' e 'M'. 'L' e 'R' fazem o rover girar 90 graus para a esquerda ou direita, respectivamente, sem se mover do local atual. 'M' significa avançar um ponto da grade e manter o mesmo cabeçalho.
Suponha que o quadrado diretamente ao norte de (x, y) seja (x, y + 1).
ENTRADA:
A primeira linha de entrada são as coordenadas superior direita do platô, e as coordenadas inferior esquerda são 0,0.
O restante da entrada são informações pertencentes aos rovers que foram implementados. Cada rover possui duas linhas de entrada. A primeira linha indica a posição do rover, e a segunda linha é uma série de instruções que dizem ao rover como explorar o platô. A posição é composta por dois números inteiros e uma letra separada por espaços, correspondendo às coordenadas xey e à orientação do rover.
Cada rover será finalizado sequencialmente, o que significa que o segundo rover não começará a se mover até que o primeiro termine de se mover.
SAÍDA:
A saída para cada rover deve ser suas coordenadas finais e rumo.
NOTAS:
Basta implementar os requisitos acima e provar que um aspirador de pó funciona escrevendo testes de unidade para ele.
Criar qualquer forma de interface do usuário está fora do escopo.
A solução do problema seguindo uma abordagem TDD (Test Driven Development) será preferida.
No curto espaço de tempo disponível, estamos mais preocupados com a qualidade do que com a integridade.
* Não consigo postar a tarefa que foi enviada para mim; esta é uma tarefa antiga que foi dada há vários anos. Mas acredite, basicamente tudo continua o mesmo.

Separadamente, quero prestar atenção aos critérios de avaliação. Quantas vezes você já se deparou com uma situação em que coisas importantes para o candidato são completamente irrelevantes ao verificar e vice-versa. Nem todo mundo pensa da mesma maneira que você, mas muitos podem aceitar seus valores e segui-los se claramente indicado. Assim, a partir do critério de avaliação, fica imediatamente claro que as habilidades mais importantes nesta fase são

  • TDD
  • Capacidade de usar OOP e escrever código suportado;
  • habilidades de programação em pares

Então, fui avisado para passar essas 1,5 horas pensando em como eu iria realizar a tarefa, em vez de escrever código. Escreveremos o código juntos.

Quando ligamos, os caras disseram brevemente quem eram e o que estavam fazendo e se ofereceram para iniciar o desenvolvimento.

Durante toda a duração da entrevista, nunca tive a sensação de estar em uma entrevista. Há um sentimento de que você está desenvolvendo código em uma equipe. Se você ficar preso em algum lugar - eles ajudam, aconselham, discutem e até discutem entre si a melhor maneira de fazê-lo. Na entrevista, esqueci como, no JUnit 5, verifique se o método gera uma exceção - eles sugeriram continuar escrevendo o teste, enquanto um deles pesquisou como fazer isso.

Apenas algumas horas após a entrevista, recebi um feedback construtivo - do que gostei e do que não. No meu caso, elogiado por usar as classes Sealed como uma alternativa ao objeto \ null; porque escrevi pseudo-código antes de escrever código, como se quisesse controlar o rover e, assim, fiz um esboço das classes, pelo menos aquelas que estão envolvidas na API do robô.

Etapa 2. Diga-nos


Uma semana antes da entrevista, fui convidado a preparar uma apresentação sobre qualquer tópico que me interessasse. O formato é simples e familiar: 15 minutos de apresentação, 15 minutos de respostas às perguntas.
Eu escolhi Arquitetura Limpa do tio Bob. E novamente algumas pessoas me entrevistaram. Esta foi a minha primeira experiência de apresentação em inglês e, talvez, se estivesse em uma situação estressante, não teria conseguido. Mas, novamente, nunca tive a sensação de estar em uma entrevista. Tudo está como sempre - digo, eles estão ouvindo atentamente. Mesmo a sessão tradicional de perguntas e respostas não foi como uma entrevista, ficou claro que as perguntas foram feitas para não "afundar", mas aquelas que realmente me interessaram na minha apresentação.

Algumas horas após a entrevista, recebi um feedback - a apresentação foi muito útil e eles realmente gostaram de ouvir.

Etapa 3. Código de Qualidade da Produção


Depois de avisar que esse é o último estágio das entrevistas técnicas, fui solicitado a trazer o código para o estado pronto para produção em casa, depois enviá-lo para uma revisão e agendar entrevistas nas quais os requisitos da tarefa serão alterados e o código precisará ser modificado. Olhando para o futuro, posso dizer que a revisão do código é realizada às cegas, os revisores não sabem a posição em que o candidato está se candidatando, não veem o currículo, nem mesmo o nome.

Telefonou, e novamente alguns caras do outro lado do monitor. Tudo é como na primeira entrevista: o principal é não esquecer o TDD, dizer o que você está fazendo e por quê. Se você não praticou TDD antes, recomendo que você comece imediatamente, não porque seja necessário nas empresas, mas porque simplifica bastante sua vida, reduz o estresse, se você quiser. Lembra como você teve que procurar freneticamente com um depurador um erro que é reproduzido apenas pelo navegador, mas não é possível reproduzi-lo com testes? Agora imagine que você tenha que pegar esse erro durante a entrevista - um par de cabelos grisalhos é fornecido a você. O que nos é fornecido com o TDD? Alteramos o código e percebemos inesperadamente que os testes agora estão vermelhos, mas qual é o erro que não pode ser entendido na primeira vez? Ok, dizemos “Ops” para os entrevistadores, pressione Ctrl-Z e comece a andar em pequenos passos à frente. E sim, a capacidade de desenvolver usando TDD, você precisa desenvolver em si mesmo, a capacidade de atingir a meta, para que seus testes fiquem permanentemente verdes e não vermelhos por meio dia, porque "você tem muita refatoração". Essa é exatamente a mesma habilidade que a capacidade de escrever código suportado ou código produtivo.

Portanto, o quão bem o seu código pode mudar depende do design que você criou originalmente, de como é simples e da qualidade dos seus testes.

Após a entrevista, recebi um feedback em algumas horas. Nesse estágio, percebi que havia praticamente passado e havia muito pouco até “encontrar Fowler”.

Etapa 4. Final. Perguntas técnicas suficientes. Queremos saber quem você é!


Honestamente, fiquei um pouco intrigado com essa formulação da questão. Como posso entender que tipo de pessoa eu sou em uma hora de conversa? E ainda mais, como posso entender isso quando falo uma língua que não é nativa para mim e, francamente, muito ruim e com a língua presa. Nas entrevistas anteriores, era mais fácil para mim falar pessoalmente do que responder perguntas, e a ênfase era a culpa. Pelo menos um dos entrevistadores era asiático - e sua ênfase, digamos, é um pouco específica para o ouvido europeu. Por isso, decidi adotar uma abordagem proativa - preparar uma apresentação sobre mim e, no início da entrevista, oferecer a mim mesmo essa apresentação. Se eles concordarem, pelo menos haverá menos perguntas para mim, se recusarem a oferta - bem, 3 horas da minha vida na apresentação não são um preço tão alto. Mas o que escrever na apresentação? Biografia - Ele nasceu lá, então, foi para a escola, se formou na universidade - mas quem se importa?

Se você pesquisar um pouco sobre a cultura Thoughtworks, poderá encontrar um artigo de Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], que descreve três pilares: negócios sustentáveis, excelência em software e justiça social.

Suponha que eu já tenha verificado a Excelência de software. Resta mostrar Negócios Sustentáveis ​​e Justiça Social.

Além disso, decidi me concentrar no último.

Para começar, eu disse a você por que a ThoughtWorks - enquanto ainda estava no instituto, leia o blog de Martin Fowler, daí o amor pelo código Clean.

Os projetos também podem ser apresentados sob diferentes ângulos. Ele também desenvolveu um software para medicina que tornou a vida mais fácil para os pacientes e até rumores de ter salvado uma vida. Ele também desenvolveu software para bancos, também uma espécie de simplificação da vida dos cidadãos. Especialmente se 70% da população do país usa este banco. Não se trata do Sberbank e nem da Rússia.

Quer saber de mim? Ok Meu hobby é fotografar, de uma forma ou de outra, tenho segurado a câmera nas mãos há cerca de 10 anos, há fotos que não são muito embaraçosas para mostrar. Além disso, ao mesmo tempo, ajudei um abrigo para gatos: fotografei gatos que precisam de um lar permanente. E com boas fotos, é muito mais fácil anexar um gato. Provavelmente filmado com uma centena de gatos :)

Por fim, 80% da apresentação que fiz foi preenchida com gatos.

Imediatamente após a apresentação, o RH me escreveu que ainda não sabia os resultados da entrevista, mas todo o escritório já estava impressionado com os gatos.

No final, esperei um feedback - satisfazi a todos como pessoa.

Mas o RH na conversa final disse com tato que a Justiça Social é muito boa e necessária, mas nem todos os projetos são assim. E perguntou se isso me assusta. Em geral, fui longe demais com a Justiça Social, isso acontece :)

Sumário


Como resultado, estou trabalhando em Cingapura na Thoughtworks há vários meses, vejo que aqui muitas empresas adotam as “melhores práticas de entrevistas” do Google, usando folhetos e quadro branco para codificação, apesar do conhecimento ser maior que o Spring, Symfony, RubyOnRails ( sublinhado) não é obrigatório no trabalho. Os engenheiros tiram uma semana de folga antes da entrevista para "se prepararem".

No Thoughtworks, além dos requisitos adequados para um candidato, os seguintes princípios são colocados em primeiro plano:
Alegria de entrevistar. Além disso, para ambos os lados. De fato, se você deseja obter a melhor equipe (e quem não quer?), A entrevista não é um mercado onde os escravos são escolhidos, mas os noivos, onde o empregador e o candidato se avaliam. E se um candidato associar emoções agradáveis ​​a uma empresa, é provável que ele escolha essa empresa.

Vários entrevistadores para atenuar o viés. No Thoughtworks, a programação em pares é o padrão de fato. E se essa prática puder ser aplicada em outras áreas, a TW está tentando fazê-lo. Em cada estágio, duas pessoas conduzem uma entrevista. Assim, pelo menos 8 pessoas avaliam cada pessoa, e o TW tenta selecionar entrevistadores com antecedentes diferentes, direções diferentes (não apenas técnicos) e gênero.

Por fim, uma decisão sobre a contratação será tomada com base na opinião de pelo menos 8 pessoas, e ninguém tem voto de qualidade.

Contratação baseada em atributos Em vez de tomar decisões com base nos gostos / desgostos do candidato, um formulário foi desenvolvido para cada função e para cada estágio, incluindo os atributos que estão sendo avaliados. Ao mesmo tempo, ao avaliar, é muito recomendável avaliar não a experiência em uma habilidade específica, mas a capacidade de aplicá-la. Assim, se o candidato não foi capaz de aplicar nenhuma habilidade como o TDD, mas, mesmo assim, tenta aplicá-la, ouve dicas de uso adequado - ele tem todas as chances de obter uma entrevista.

Certificados de educação não necessários A TW não exige que os candidatos obtenham certificados obrigatórios ou formação em Ciência da Computação. Somente habilidades são avaliadas.

Esta é a primeira entrevista daqueles que eu fui a empresas estrangeiras para as quais não precisava me preparar. Depois de cada estágio, não me senti espremido como um limão, mas, pelo contrário, fiquei feliz por poder aplicar as melhores práticas, pelas pessoas do outro lado do monitor que gostarem disso e também por todos os dias.

Depois de alguns meses, posso dizer que as expectativas foram totalmente atendidas. Qual é a diferença entre a ThoughtWorks e uma empresa comum? Em uma empresa comum, você pode encontrar bons desenvolvedores e pessoas legais, mas no TW sua concentração diminui.

Se você deseja participar do ThoughtWorks, os trabalhos abertos podem ser visualizados aqui.
Sugiro também prestar atenção a vagas interessantes:
Engenheiro de software principal: Alemanha , Londres , Madri , Cingapura
Engenheiro de software sênior: Sydney , Alemanha , Manchester , Bangkok
Engenheiro de software: Sydney , Barcelona , Milão
Engenheiro de dados sênior: Milão
Analista de qualidade: Alemanha China
Infraestrutura: Alemanha , Londres , Chile
(Quero honestamente avisar que o link é de referência, se você for para a TW, receberei um bom bônus). Escolha um escritório ao seu gosto, não é necessário limitar-se apenas à Europa; afinal, a cada 2 anos a TW terá prazer em transportá-lo para outro país, porque faz parte da política da ThoughtWorks, então a cultura se espalha e calcula a média.

Sinta-se livre para fazer perguntas nos comentários ou me pedir para recomendar você.
Se o tópico pareceu interessante, escreverei sobre como ele funciona no ThoughtWorks e como ele vive em Cingapura.

Source: https://habr.com/ru/post/pt479874/


All Articles