Desenvolvimento - C#

Sendo bem-sucedido em processos de seleção na área de TI: você faz a coisa certa? (Parte II)

Dicas preciosas baseadas na experiência prática para transformar sua entrevista de emprego em sucesso.

por Andre Furtado



Dicas preciosas baseadas na experiência prática para transformar sua entrevista de emprego em sucesso.

Esta é a segunda parte do artigo "Sendo bem-sucedido em processos de seleção na área de TI: você faz a coisa certa?". Na primeira parte (http://www.linhadecodigo.com.br/Artigo.aspx?id=1346), discuti como preparar o espírito para o processo e que cuidados (alguns não tão óbvios) tomar com o seu curriculum vitae (CV).

Antes de qualquer coisa, gostaria de enfatizar algo que já havia citado no primeiro artigo: são grandes as chances de a empresa estar mais interessada em você do que você nela. Reportagem recente do Jornal do Commercio de Pernambuco, por exemplo, revela que 5 mil vagas surgem por ano em TI, mas apenas mil novos profissionais são formados no mesmo período.

Em geral, o déficit de profissionais em TI no Brasil é de 17 mil, o que irá aumentar para 213 mil em apenas cinco anos. O restante do mundo vive em situação parecida: a Índia, por exemplo, apresentará mais do dobro desse déficit no mesmo período.

Então o que fazer para aproveitar esse momento favorável e não desperdiçar a chance de se posicionar bem no mercado de TI? Se você foi bem-sucedido na avaliação do seu CV (seja por máquinas ou seres humanos, como discutimos antes), é chegado o momento das famigeradas entrevistas.

A primeira recomendação é que você esteja preparado para uma maratona, não para uma corrida de 100 metros. Empresas como Microsoft e Google possuem baterias de entrevistas, que vão ficando cada vez mais críticas: por e-mail, por telefone e, por fim, presenciais (essas últimas levando cerca de 5 horas ininterruptas de sabatina).

Empresas como a British Telecom ou a própria Microsoft podem estar interessadas em transportar você para fazer a entrevista em suas sedes (Londres ou Redmond, por exemplo), processo que também leva tempo. Por fim, já passei por uma bateria de oito (!) entrevistas, por Skype, para uma empresa na Austrália. Em resumo: esteja ciente de que o processo é longo e desgastante.

Entrevistas por e-mail

As entrevistas por e-mail funcionam mais como uma triagem para as empresas. São constituídas por perguntas simples, diretas, porém algumas até mais filosóficas. Esteja preparado para responder questões como:

  • Quando você se interessou por Ciência da Computação pela primeira vez?
  • O que você faz de melhor, relacionado a computadores?
  • Descreva o emprego ideal.
Como se trata de uma entrevista por e-mail, tome o seu tempo com calma para responder tais questões. Pesquise, converse com amigos, peça para alguém revisar, tudo é valido nesse momento. Cuidado em especial com erros básicos de inglês e para não passar uma visão muito inflexível de suas idéias.

Por exemplo, uma resposta interessante para a última das perguntas acima ("Descreva o emprego ideal") pode envolver elementos como um bom ambiente de trabalho (confiança, companheirismo, etc.), que valorize idéias dos colaboradores, em que talentos e habilidades são reconhecidos, etc. Citar alguns valores dos ambientes ágeis de trabalho também é uma boa saída. Entretanto, seja você mesmo e não queira passar uma impressão de algo que você não é ou em que você não crê.

Por fim, algumas perguntas por e-mail podem ser mais técnicas, como:

  • Como você testaria um programa que recebe inteiros de 1 a 1000 e tem como output o fatorial desses números?
  • Em que linguagem de programação você se considera mais forte?

Nesse momento, é importante transmitir não apenas a resposta certa como também sua capacidade de montar e apresentar um raciocínio lógico. Aproveite também oportunidades para mostrar proficiência em conhecimentos específicos. Por exemplo, citar que você procuraria automatizar alguns testes para que pudesse, em um momento futuro, aplicar testes de regressão, pode contar pontos positivos na resposta da primeira das perguntas acima, mostrando que você possui um mínimo conhecimento sobre processos de testes de software. Cuidado, porém, para não "encher lingüiça" com comentários desnecessários que possam tornar sua resposta pouco objetiva.

Entrevistas por telefone

A entrevista por telefone é o primeiro momento em que você terá um contato direto com seu recrutador. Acredite no ditado de que a primeira impressão é a que fica e se esforce para transmitir uma imagem de "candidato com as qualificações apropriadas para o emprego".

Antes de mais nada, cheque e confirme com antecedência o horário da entrevista. Em especial, atenção para diferenças de fuso horário, horário de verão e outras armadilhas. Por exemplo, entrevistas para a Microsoft são agendadas em horário PST (Pacific Standard Time, hora de Redmond). Uma dica é converter a hora informada para a hora de sua zona através do World Time Server (http://www.worldtimeserver.com/).

Se ligarem para você no horário errado (isso já me aconteceu uma vez), não tenha vergonha em informar que você não estava esperando a ligação e que ela não havia sido agendada para aquele horário. Não vale a pena topar essa entrevista-surpresa, que lhe pegou despreparado, apenas para agradar a empresa. Solicite cordialmente um re-agendamento. Obviamente, tenha certeza de que o horário estava mesmo errado.

Por fim, um cuidado adicional é informar a todos de sua casa sobre a entrevista. Solicite que ninguém use o telefone nesse momento e fique esperando ao lado do telefone para que você mesmo atenda a ligação, facilitando a vida do recrutador.

A preparação para uma entrevista telefônica, contudo, começa bem antes. Em primeiro lugar, é essencial uma boa noite de sono, para manter a mente fresca no dia seguinte. Também acho interessante fazer um "aquecimento" meia hora antes do entrevistador ligar, falando sozinho e fazendo/respondendo perguntas a si mesmo. Isso é bem útil especialmente por dois motivos: evita o nervosismo (quando o entrevistador ligar você vai ter a sensação de que estará apenas continuando uma conversa já iniciada antes) e ajuda a aquecer o cérebro no caso da entrevista ser feita em uma língua estrangeira.

Ao contrário da entrevista por e-mail, a entrevista por telefone demanda habilidades real-time. Porém, existem algumas dicas que podem ajudar e muito o processo. Antes do dia da ligação, prepare um documento com algumas possíveis perguntas e suas respostas, deixando-o aberto em um computador à sua frente. Se o entrevistador perguntar algo que você já havia "registrado", recorra à seção do documento contendo a resposta. O ideal é que essas seções contenham apenas os tópicos principais que você irá argumentar, e não um texto a ser lido por completo (o risco da leitura soar falsa é enorme).

Da mesma forma, deixe o documento do seu CV aberto antes da ligação. É quase certa a chance de seu entrevistador fazer perguntas sobre pontos do seu CV, portanto tenha ele sempre à mão no decorrer da entrevista. Ler ele alguns minutos antes da ligação também é interessante para refrescar um pouco a memória sobre os detalhes de sua trajetória profissional até então.

Na hora da entrevista, procure se manter calmo, falando da maneira mais clara e pausada possível. Imagine que o entrevistador, na verdade, é um amigo se passando por um entrevistador, apenas para lhe testar. Isso lhe ajudará a se manter calmo. Pode ser interessante fazer um exercício de respiração, devagar e profundamente, momentos antes da ligação (pois acredite, na empolgação da conversa pode faltar ar!).

O Inglês, obviamente, é um desafio a mais na entrevista, porém não hesite em pedir cordialmente para o entrevistador falar mais devagar ou mais alto caso você não entenda alguma coisa. Em entrevistas telefônicas da Microsoft, é solicitado que você entre em uma sessão do Live Meeting, onde seu entrevistador escreverá alguns problemas para você resolver. Use isso a seu favor: se você não entender algo que ele falou, peça para ele escrever no Live Meeting para "você poder ter certeza que entendeu o que ele perguntou".

No caso do Google, esse ponto é um pouco menos preocupante. Como a empresa possui um escritório de desenvolvimento aqui mesmo no Brasil, os próprios funcionários locais são encarregados de realizar o processo de recrutamento. Portanto, as chances de ser entrevistado por um brasileiro no bom e velho Português são bem altas.

Outro ponto importante na entrevista telefônica é nunca interromper o entrevistador, iniciando sua resposta apenas quando tiver certeza de que ele encerrou a pergunta. Embora falar por cima das pessoas seja até mais tolerável na cultura brasileira, isso é algo extremamente desagradável lá fora.

Outra questão cultural diz respeito a como o raciocínio da argumentação é construído para responder a uma pergunta. Em nossa cultura, não é incomum darmos respostas bottom-up, ou seja, iniciarmos falando sobre elementos a princípio menos relacionados a um pergunta, mas que no fim vão ser combinados para formar a resposta.

Entretanto, no caso de perguntas objetivas, isso não é bom, podendo ser encarado como falta de objetividade ou até mesmo "enrolação", comprometendo seu desempenho mesmo que você saiba a resposta correta.

Considero, nos casos das perguntas objetivas, a abordagem top-down mais interessante. Primeiro, responda à pergunta que foi feita sem rodeios. Depois, justifique-se, apresente seus argumentos. Seguindo a filosofia de um velho ditado, ninguém mostra o pau primeiro para matar a cobra só depois!

Um exemplo simples que ilustra isso muito bem no dia-a-dia está no comércio. Imagine que você perguntou a um vendedor quanto custa uma bolsa, e ele começa a lhe responder falando da origem, do material e do processo de produção da bolsa, sem informar o preço a priori. No mínimo, você imaginaria que ele está maquiando a resposta para dizer algo que não é bom. No caso do entrevistador, ele pode imaginar que você está maquiando a resposta para tentar dizer algo que, na verdade, não sabe.

Se a pergunta não for objetiva ou demandar uma linha de raciocínio, como as perguntas técnicas e charadas (puzzles), a história é outra. Sinta-se à vontade para construir sua argumentação aos poucos até chegar à resposta final.

Recomenda-se, inclusive, que você "pense alto" em suas respostas, falando cada passo que está acontecendo na sua cabeça para o entrevistador. Isso permite que o entrevistador interfira, dando dicas e lhe ajudando quando necessário, além de ser uma oportunidade para mostrar sua capacidade de organizar e expor seu processo de pensamento lógico.

Por fim, nunca responda algo com um puro e seco "não sei!". Existem maneiras bem mais elegantes de sair de uma situação (pergunta) para a qual você não sabe a resposta. Uma possível é dizer que "embora eu não esteja 100% certo quanto a isso, acredito que talvez <insira o que você vislumbra como possível resposta aqui>, pois <insira sua argumentação aqui>". Em muitas situações, inclusive, o entrevistador não está interessado em saber a resposta correta, mas em como você constrói sua lógica de argumentação.

Uma entrevista telefônica geralmente não dura mais do que 45 minutos. É bem provável que seu entrevistador possua outros compromissos, como outras entrevistas, logo após a sua. Portanto, se ele informar que o tempo acabou, não fique querendo prender o entrevistador até você conseguir resolver aquela questão que ele passou.

Entrevistas telefônicas geralmente possuem três partes. Na primeira, perguntas clássicas de RH (recursos humanos) são feitas a você. Exemplos de perguntas nessa parte incluem:

  • Como você descreveria <seu nome aqui> na visão de <seu nome aqui de novo>? (Nesse momento, é importante ter o CV em mãos para listar pontos altos de sua trajetória profissional. Elementos que quebrem um gelo também são bem-vindos, por exemplo: "André era um menino que gostava de videogames e pensou que isso e computação era a mesma coisa")
  • Por que você quer trabalhar na <empresa>?
  • Por que você está aplicando para <posição de emprego>?
  • Onde você se vê daqui a <dois/cinco/dez> anos?
  • Diga algo que você teria feito de maneira diferente hoje.
  • Cite uma lição aprendida e como você a usou depois.
  • Qual foi sua pior experiência em grupo?
  • Cite um momento em que você demonstrou <liderança/criatividade/competência técnica>.
  • Fale-me sobre seu projeto mais difícil.
  • Fale-me sobre o projeto de que você mais gostou.
  • Fale-me sobre uma situação em que você teve um problema difícil e conseguiu resolvê-lo.
  • Fale-me sobre alguma situação em que você precisou trabalhar em um deadline restrito, mas não havia tempo hábil para fazer a tarefa.
  • Qual sua principal virtude?
  • Qual seu principal defeito?
  • O que você faz no tempo livre?
  • Qual o último livro que você leu?
  • Como você se mantém atualizado?
  • Se você fosse contratado, em quanto tempo você estaria pronto para <deixar sua cidade/deixar seu país>?
  • De 0 a 100%, o quanto você quer fazer parte da <empresa>?
  • Por que devemos lhe contratar?

Aos poucos, as perguntas podem abordar conhecimentos gerais e ficar mais técnicas, como:

  • Como você explicaria o que é o Excel para sua avó?
  • Se a Microsoft lhe desse 5 milhões de dólares para investir em um negócio, em que negócio você investiria?
  • Quantas linhas de código você programou no ano passado?
  • O que é um "código perfeito" para você?
  • Compare C# com C++.
  • Você conhece padrões de projeto? Quais você usa normalmente?
  • Como funciona o garbage collector?
  • Qual a diferença entre o heap e a pilha (stack)?
  • Você tem experiência com processos/metodologias ágeis?

Algumas perguntas são mesmo traiçoeiras. Por exemplo, o que é um código perfeito? De fato, depende... pode ser um código correto, bem documentado, eficiente (em termos de memória e processamento), etc. Mas nem sempre é possível unir o melhor dos dois mundos! Um código eficiente pode ser um que "escova bits" e conseqüentemente tenha uma baixa legibilidade. Talvez a melhor resposta para essa pergunta demande uma outra pergunta: o código precisa ser perfeito para quem? Para atender a que? Em resumo: mantenha sua cabeça o mais aberta possível.

Em uma entrevista telefônica (ou melhor, via Skype) de que participei, o entrevistador propôs o seguinte cenário: "Suponha que você já está trabalhando para nós. Um de nossos clientes, para o qual fizemos alguns softwares, solicitou que seus contatos pudessem ter múltiplos e-mails cadastrados, e não apenas um, como é hoje. Isso terá impacto no banco de dados, lógica de negócio e interface de algumas aplicações desse nosso cliente. Crie um Plano de Projeto para essa tarefa".

Essa era uma entrevista mais atípica, de algumas horas (e não minutos), e eu teria duas horas para fazer o tal Plano antes de falar novamente com o entrevistador. Esse Plano, entre outras coisas, deveria incluir uma estimativa do esforço, em horas, assim como um custo final. Estimei o esforço, vamos supor, em 100 horas. Ao final, disse que o custo total do projeto seria "100 multiplicado pelo valor/hora médio dos desenvolvedores de nossa empresa".

O entrevistador, então, reclamou, dizendo que eu não havia entregue um custo real, e sim um custo "parametrizado". Eu disse que não sabia o valor/hora médio dos desenvolvedores da empresa. Até que ele perguntou: "você já foi ver no nosso site?". E, de fato, tal valor constava lá! Não custa repetir: pensar sempre out of the box nunca é demais!

Na segunda parte de entrevistas telefônicas mais típicas (Microsoft, Google, etc.), o entrevistador pode lhe propor uma ou duas questões bem mais técnicas, que demandam de 10 a 15 minutos para serem respondidas. Por exemplo: "Implemente um programa que remove as vogais de uma dada string como input".

Isso pode parecer simples a princípio, mas não é, pois o entrevistador estará focado em como você resolve essas questões otimizando performance e espaço. Pode até ser fácil resolver questões desse tipo utilizando algoritmos cuja complexidade de tempo/espaço é muito alta (quadrática ou mais), mas não tenha dúvidas de que o entrevistador não vai estar satisfeito com essa resposta.

Mais uma vez, a dica aqui é "pensar alto", construindo com calma o raciocínio. No caso de dúvidas, pergunte! Interaja ao máximo que você puder com o entrevistador, mostrando que você se preocupa em clarificar as necessidades do "cliente" que propõe a questão (no caso, o próprio entrevistador) antes de resolver o problema. Antes de escrever qualquer coisa, exponha verbalmente sua proposta de solução, seu raciocínio. Faça pseudo-código antes, nunca o código diretamente (às vezes nem precisa).

No âmbito mais técnico, propor uma primeira resposta baseada em algoritmos mais lentos, como os recursivos, mais fáceis de conceber na hora, pode ser um caminho interessante, desde que você deixe claro para o entrevistador que aquilo não é a solução ótima. Explique nesses casos que há perda de tempo com a mudança de contexto nas chamadas recursivas, empilhamento e desempilhamento de parâmetros e valores de retorno, etc. Depois, pense em algoritmos mais eficientes. O uso de estruturas auxiliares, como arrays e hash tables, podem ser úteis.

Outros exemplos de questões técnicas seguem abaixo:

  • Dadas duas listas encadeadas com inteiros, implemente um algoritmo para fazer um merge ordenado nas listas.
  • Inverta as posições pares com as ímpares em uma lista encadeada de inteiros.
  • Faça um algoritmo para detectar se uma string é um palíndromo.
  • Escreva uma função para encontrar a maior e a menor palavra de uma string.

Uma grande dica para se acostumar a questões desse tipo é ler livros preparatórios para entrevistas, que contém várias dessas questões e suas respostas. Recomendo dois: "Como Mover o Monte Fuji" e "Programming Interviews Exposed". Além disso, procure na web por "<Google/Microsoft/etc.> interview questions". Isso irá trazer resultados bem interessantes e você irá se surpreender com a cultura de entrevistas de emprego de TI que já existe consolidada por aí.

Por fim, na terceira e última parte, o entrevistador fará o encerramento formal da entrevista, eventualmente abrindo espaço para você fazer alguma pergunta. É importante aproveitar esse momento, não apenas para mostrar interesse ao entrevistador, mas para de fato sanar alguma dúvida que você possua em relação à empresa, à posição de emprego aplicada ou ao processo de recrutamento.

Por exemplo, como eu me interesso pelo Visual Studio Team System, perguntei na minha entrevista para a Microsoft o quanto as equipes o utilizam internamente e se eu teria a oportunidade de trabalhar com ele no meu dia-a-dia. Em geral, também gosto de perguntar se as empresas possuem programas para atualizar/reciclar seus funcionários em novas tecnologias, e se elas dão incentivo também à pesquisa.

Conclusões

Este artigo discutiu uma série de sugestões e dicas a serem realizados em entrevistas de emprego em TI, contemplando tanto entrevistas por e-mail como por telefone. Uma vez encerrada a entrevista telefônica, é hora de ficar de olho nos e-mails para saber se você passou para a fase seguinte (e final): a entrevista presencial. Sobre ela, falaremos na terceira e última parte desta série de artigos.

Andre Furtado

Andre Furtado - Engenheiro de software e consultor do projeto Partec-MyTV, doutorando, mestre e bacharel em Ciência da Computação pela UFPE, Microsoft Student Partner, Certified MSF Practitioner, MCP, Certified IBM-DB2 Specialist, SCJP 1.4, um dos líderes do grupo de usuários Sharp Shooters .NET e campeão mundial das competições Imagine Cup 2005 e 2007.