Em funcao das perguntas de entrevista da Microsoft que eu publiquei aqui, varias pessoas ja me perguntaram como fazer para entrar no processo de selecao da Microsoft. Vou tentar descrever alguns passos que eu acredito que ajudam os candidatos a chegarem la. Antes de mais nada, o que sera descrito 'e unica e exclusivamente a minha opiniao e nao tenho autorizacao ou responsabilidade para falar pela Microsoft.
O primeiro passo para quem quer se candidatar para uma vaga nos times de desenvolvimento de produtos na Microsoft 'e estudar muito. Estude aqueles topicos da faculdade que voce achava que jamais usaria. Fundamentos da computacao, arquitetura de sistemas operacionais, desenho de um compilador, estrutura de dados (pilhas, arvores binarias, heaps), gerenciamento de memoria, transacoes em banco de dados, e outros topicos basicos que certamente foram vistos na faculdade. Voce vai ver que alguns dos problemas que eu publiquei sao relacionados com o que voce aprendeu ate no colegial, por exemplo o problema da abelha 'e um simples problema de velocidade.
Agora vamos assumir que voce esta preparado para entrevista, ja estudou tudo que tinha para estudar e o proximo passo 'e mandar o seu curriculum para http://www.microsoft.com/jobs. Os times de desenvolvimento oferecem tres tipos de oportunidade: tester, developers e program managers(PM). Como tester voce sera responsavel por escrever o codigo que ira testar o produto. Geralmente se escreve duas a tres vezes mais linhas de codigo de teste do que de produto. Uma das razoes 'e que o codigo de teste nao precisa da qualidade que o produto exige. Nao fique pensando que os testers da Microsoft ficam brincando com o mouse e o teclado o dia inteiro e nao fazem nada de excitante. Trabalhar como tester significa que voce ira escrever muito codigo, vai investigar muitos bugs, vai apreender muito como nao escrever software, quais os principais erros que os idiotas dos developers fazem, tudo isso com tempo de sobra para voce fazer suas pesquisas adicionais em tecnologias que aparecem por ai. O outro lado da moeda entretanto 'e que voce nao 'e reconhecido publicamente tanto quanto os developers no desenvolvimento do produto, principalmente no mercado brasileiro. Muita gente ainda tem a opiniao de que os tester nao possuem um papel importante no desenvolvimento de um produto. Na minha opiniao a qualidade de um software esta diretamente ligada a qualidade do time de testers. Qualquer developer estupido escreve 100.000 linhas de codigo em duas semanas, mas fazer com que aquelas milhares de linhas se transformem em algo util no nivel de qualidade desejado, vai depender fundamentalmente do time de teste.
O outro cargo que muita gente nao conhece 'e o de program manager (PM). Apesar de ter manager no titulo, este cargo nao gerencia ninguem inicialmente. Os PM sao responsaveis por gerenciar o processo de desenvolvimento. Dependendo do time, isso significa tarefas diferentes mas em geral os PM controlam os cronogramas, atuam como juizes nas discussoes entre testers e developers, escrevem bastante especificacoes funcionais e tem contato direto com os clientes do produto. Dependendo do produto e do PM, as vezes sao adicionadas tarefas mais tecnicas nesta lista tais como desenhar APIs, descrever protocolos de comunicacao, especificar funcionalidades de linguagens de programacao, entre outras. Para voce se candidatar a um cargo de PM, voce tera que ter uma fluencia em ingles um pouco acima da necessaria para os cargos de tester e developer. Muitos testers e developers possuem habilidades basicas de comunicacao, e geralmente isso 'e suficiente para comecar a trabalhar na Microsoft. Ja os PM precisam de um fluencia melhor pois 90% do tempo deles sera gasto em discussoes e em reunioes com o time todo.
Finalmente a posicao de developer 'e aquela em qua a maioria de voces conhecem como programadores. Os developers escrevem os produtos e sao responsaveis pelo como e quando um funcionalidade 'e adicionada. So para se ter uma ideia das atividades de um developer, a gente vai em reunioes par discutir features do produto, muitas vezes definir ou entender o que o PM esta querendo dizer sobre o comportamento de uma feature, projetar os componentes que serao implementados, escreve-los, escrever os testes iniciais para a feature, disponibilizar uma versao do produto com a feature adicionada para o time de teste, realizar uma revisao do codigo escrito, pesquisar novos rumos para o produto, responder os emails dos clientes nas listas de suporte, resolver os bugs que a gente mesmo colocou no produto, e outras coisas mais. Em resumo, o dia passa muito rapido e nao da tempo de acabar tudo que voce gostaria de realizar num dia.
Voltando ao item curriculum, nao se esqueca de adicionar suas experiencias passadas, tecnologias que voce trabalhou ou pesquisou durante a faculdade, e principalmente tente customizar o seu curriculum para o time que voce esta se candidatando. Pesquise sobre o mercado, as tecnologias e os competidores do produto que voce quer trabalhar, e utilize esta informacao durante o interview loop. Mostre que voce esta interessado e nao fique com vergonha de mostrar que voce pesquisou sobre o time. Se voce tiver uma daquelas perguntas dificeis ou uma critica construtiva melhor ainda. So nao cometa o erro de criticar algum aspecto do produto sem ter uma sugestao de como melhora-lo.
Bem , vou parando por aqui, mas se voce tiver alguma pergunta sobre o que escreve, ou ainda sobre o que nao escrevi, nao se envergonhe e me mande um email ou deixe o seu comentario aqui.
Boa sorte.