Monday, February 13, 2006

Este 'e um post antigo que meu colega do RH revisou e sugerir uma serie de melhorias.  Acho que fico tao mais claro deste jeito que decidi publicar novamente.

 

Meu parecer sobre o processo de seleção da Microsoft

Em função das perguntas de entrevista da Microsoft que eu publiquei aqui, varias pessoas já me perguntaram como fazer para entrar no processo de seleção da Microsoft. Vou tentar descrever alguns passos que eu acredito que ajudam os candidatos a chegarem lá. Antes de mais nada, o que será descrito 'e única e exclusivamente a minha opinião e não tenho autorização ou responsabilidade para falar pela Microsoft.

Alguns passos do processo

 1. Estudar muito! O primeiro passo para quem quer se candidatar para uma vaga nos times de desenvolvimento de produtos na Microsoft 'e estudar muito. Estude aqueles tópicos da faculdade que você achava que jamais usaria. Fundamentos da computação, arquitetura de sistemas operacionais, desenho de um compilador, estrutura de dados (pilhas, arvores binárias, heaps), gerenciamento de memória, transações em banco de dados, e outros tópicos básicos que certamente foram vistos na faculdade. Você vai ver que alguns dos problemas que eu publiquei são relacionados com o que você aprendeu ate no colegial, por exemplo, o problema da abelha 'e um simples problema de velocidade.

2. Encaminhar seu CV! Agora vamos assumir que você esta preparado para entrevista, já estudou tudo que tinha para estudar e o próximo passo 'e mandar o seu currículo para http://www.microsoft.com/jobs (no Brasil http://www.microsoft.com/brasil/carreiras).  Não se esqueça de adicionar suas experiências passadas, tecnologias que você trabalhou ou pesquisou durante a faculdade, e principalmente tente customizar o seu currículo para o time que você esta se candidatando.

 3. Pesquise o Mercado! Pesquise sobre o mercado, as tecnologias e os competidores do produto que você quer trabalhar, e utilize esta informação durante o interview Lupo. Mostre que você esta interessado e não fique com vergonha de mostrar que você pesquisou sobre o time. Se você tiver uma daquelas perguntas difíceis ou uma critica construtiva melhor ainda. Só não cometa o erro de criticar algum aspecto do produto sem ter uma sugestão de como melhorá-lo.

4. Conheça as oportunidades! Os times de desenvolvimento oferecem três tipos de oportunidade: tester, developers e program managers (PM).  

 Testers

 Como tester você será responsável por escrever o código que ira testar o produto. Geralmente se escreve duas a três vezes mais linhas de código de teste do que de produto. Uma das razoes 'e que o código de teste não precisa da qualidade que o produto exige. Não fique pensando que os testers da Microsoft ficam brincando com o mouse e o teclado o dia inteiro e não fazem nada de excitante. Trabalhar como tester significa que você ira escrever muito código, vai investigar muitos bugs, vai apreender muito como não escrever software, quais os principais erros que os developers fazem, tudo isso com tempo de sobra para você fazer suas pesquisas adicionais em tecnologias que aparecem por ai. O outro lado da moeda, entretanto 'e que você não 'e reconhecido publicamente tanto quanto os developers no desenvolvimento do produto, principalmente no mercado brasileiro. Muita gente ainda tem a opinião de que os tester não possuem um papel importante no desenvolvimento de um produto. Na minha opinião a qualidade de um software esta diretamente ligada à qualidade do time de testers. Qualquer developer sem nenhuma qualificacao escreve 100.000 linhas de código em duas semanas, mas fazer com que aqueles milhares de linhas se transformem em algo útil no nível de qualidade desejado, vai depender fundamentalmente do time de teste.  

Program Manager (PM)

O outro cargo que muita gente não conhece 'e o de program manager (PM). Apesar de ter manager no titulo, este cargo não gerencia ninguém inicialmente. Os PM são responsáveis 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 discussões entre testers e developers, escrevem bastante especificações funcionais e tem contato direto com os clientes do produto. Dependendo do produto e do PM, às vezes são adicionadas tarefas mais técnicas nesta lista tais como desenhar APIs, descrever protocolos de comunicação, especificar funcionalidades de linguagens de programação, entre outras. Para você se candidatar a um cargo de PM, você terá que ter uma fluência em inglês um pouco acima da necessária para os cargos de tester e developer. Muitos testers e developers possuem habilidades básicas de comunicação, e geralmente isso 'e suficiente para começar a trabalhar na Microsoft. Já os PM precisam de uma fluência melhor, pois 90% do tempo deles será gasto em discussões e em reuniões com o time todo.

Developer

Finalmente a posição de developer 'e aquela em que a maioria de vocês conhece como programadores. Os developers escrevem os produtos e são responsáveis pelo como e quando uma funcionalidade 'e adicionada. Só para se ter uma idéia das atividades de um developer, a gente vai às reuniões para 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 serão implementados, escrevê-los, escrever os testes iniciais para a feature, disponibilizar uma versão do produto com a feature adicionada para o time de teste, realizar uma revisão do código escrito, pesquisar novos rumos para o produto, responder os e-mails 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 rápido e não dá tempo de acabar tudo que você gostaria de realizar num dia.

2/13/2006 9:08:59 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback

Eu espero que este post seja o inicio de uma nova fase para a comunidade brasileira de desenvolvedores.  Estou pessoalmente envolvido neste projeto e aguarde mais informacoes dentro em breve.  Por enquanto a informacao disponivel se encontra nos job descriptions abaixo.

Lembre-se, mande o seu curriculo em ingles para bdccv@microsoft.com ou entre no site da Microsoft do Brasil, estude as perguntas de entrevista deste site e boa sorte.

WHATEVER YOU DO, DO IT AT MICROSOFT

 The reason so many people from various disciplines come to Microsoft is because we provide the most exciting challenges in the industry. Since our inception in 1975, Microsoft’s mission has been to create software for the personal computer that empowers and enriches people in the workplace, at school and at home. Microsoft’s early vision of a computer on every desk and in every home is coupled today with a strong commitment to Internet -related technologies that expand the power and reach of the PC and its users. You can help shape the industry in nearly countless ways, all while gaining invaluable experience. Our casual environment lends itself to freer thinking and therefore, creative problem-solving. However, the coolest part of all is the diversity of jobs. You’re guaranteed not to be bored.

 

 

Microsoft Business Solutions – Dynamics Ax

Dynamics Ax from Microsoft Business Solutions is a modern ERP system aimed at businesses in the middle and upper market. Dynamics Ax is already an establish brand and we are constantly striving to deliver the latest technology and best business processes to help our partners and customers realize their full potential. The Dynamics Ax customer base is growing rapidly at the moment and we need more application developers and testers to add new and exiting features to the product and improving the quality of existing features.

 

The Global Development Localization team (GDL) within the MBS Dynamics Ax product group extends and adjusts Dynamics Ax’s functionality within local legal and competitive features for more than 30 countries across the globe. GDL development has development centers based in Western Europe (Barneveld, Vedbæk and Madrid), Eastern Europe (Moscow), AsiaPac  (Singapore) and North America (Atlanta).

 

Software Development Engineer

We are looking for skilled developers with

  • solid C#, Java or X++ experience
  • a passion about technology, desiring to make products with high quality
  • strong coding and problem solving skills
  • strong debugging skills and the proven ability to quickly understand other developers' code
  • demonstrated ability to meet tight deadlines, follow development standards, and to work independently
  • strong analytical skills
  • commitment to team play
  • clear and effective communication skills
  • a good command of written and spoken English
  • education or working experience on bachelors/masters level

Preference will be given to candidates with

  • Dynamics Ax development experience, or another ERP system such as Navision or SAP, with the ability to plan, design, develop and document software
  • a background or business knowledge within Finance or Supply Chain Management

 

Job description:

Writes product code and solves complex problems

 

As a Software Development Engineer in the application domain of the Microsoft Business Solutions-Dynamics Ax product group you will be responsible to plan, design, implement, document and stabilize new features. The role will also demand that you will maintain and improve already existing code. All of the above will be done in close coordination with other team members and remote teams.

 

 

Software Development Engineer in Test

 

We are looking for people with

  • at least 3 years experience within software development
  • a passion for quality and continuous improvement of processes and software
  • an organized and structured approach
  • relentless attention to detail
  • experience with test automation
  • strong analytical skills
  • commitment to team play
  • clear and effective communication skills
  • a good command of written and spoken English
  • education or working experience on bachelors/masters level

Preference will be given to candidates with

  • Dynamics Ax development experience, or another ERP system such as Navision or SAP, with the ability to plan, design, develop and document software
  • a background or business knowledge within Finance or Supply Chain Management

 

Job description:

 

Writes test code, creates test tools and improve product quality.

 

As a Software Development Engineer in Test in the application domain of the Microsoft Business Solutions-Dynamics Ax product group you will be responsible for setting up test plans, develop and execute tests for business logic, as well as automate these test efforts. Furthermore you will be responsible for the User Assistance and functional knowledge transfer of the features developed within the team. All of the above will be done in close coordination with other team members and teams.

 

2/13/2006 8:52:11 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Wednesday, February 08, 2006

Eu sempre me culpo por nao atualizar o meu blog com mais frequencia.  Minha desculpa 'e sempre falta de tempo.  Fico imaginando quanto tempo este camarada demorou para escrever este

post:http://www.notes.co.il/benbasat/10991.asp

 

2/8/2006 10:35:21 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Wednesday, February 01, 2006

Por agora voce ja esta cansado de saber o que vem por ai no C#3.0.  Se nao sabe, da uma olhada aqui.  E que tal C# 4.0?  Ainda 'e muito cedo para se preocupar?  Talvez seja mas a minha aposta de tecnologia para C#4.0 'e algo sendo desenvolvido pela Microsoft Research.  SpecSharp ou Spec# 'e uma extensao para C# que permite o desenvolvedor especificar contratos para uma classe.

Vale a pena checar esta ferramenta.  Como os contratos ficam em comentarios especiais, voce pode anotar qualquer codigo fonte.

http://research.microsoft.com/specsharp/

 

2/1/2006 3:47:00 AM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Tuesday, January 31, 2006

Em uma semana la li pelo menos dois artigos apontando a mesma coisa.  Os salarios na India estao subindo muito, talvez ate demais.  Que bom seria ter este tipo de problema no Brasil.

http://www.computerworld.com/managementtopics/outsourcing/story/0,10801,108180,00.html?source=NLT_PM&nid=108180

http://cwflyris.computerworld.com/t/273175/264483/7707/0/

 

1/31/2006 11:07:11 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback

Nao sei voce, mas eu concordo em genero, numero e grau com este post.

Top 10 things I hate about SQL Server

1/31/2006 11:04:23 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Thursday, January 12, 2006

Se voce nao sabe aqui esta um artigo para ficar por dentro do problema que LINQ se propoe a resolver.  Muito bom artigo.

http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/linqcomparisons.asp

.NET | C#
1/12/2006 7:02:02 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback

Li um artigo muito bem escrito sobre engenharia de software que gostaria de recomendar e fazer umas observacoes.  O artigo foi escrito por Andre Furtado e entitulado: Pontas de Iceberg do Caos de Desenvolvimento de Software.  eis o link:

http://www.microsoft.com/brasil/msdn/Tecnologias/Carreira/DesenvolvimentoSoftware.mspx

Espero que o Andre continue com a serie de artigos direcionados a este assunto.

O autor identifica um serie de aspectos num projeto de desenvolvimento de software que geramente contribuem para o fracasso de proejtos.  O que me chamou mais atencao foi a ausencia de um item que na minha opiniao 'e o mais importante de todos em qualquer projeto de desenvolvimento de software: a qualidade da materia prima, sendo menos abstrato, o talento dos membros da equipe.  Na verdade a falta de atencao ao material humano e' generalizada aqui no Brasil.  Cada conversa que tenho com colegas da industria ou da area academica me da' mais certeza de quao ignorado 'e o valor do recrutamento e selecao de profissionais de alta qualidade.

Tenho achado varias analogias entre times de futebol e equipes de desenvolvimento de software.  Neste contexto 'e como se os diretores dos clubes de futebol estivessem preocupados somente em contratar os melhores profissionais da comissao tecnica (treinador, treinador de goleiros, massagista, preparador fisico, etc), desprezando o impacto da qualidade dos jogadores que compoe a equipe.

Finalizo com este pensamento.  Considere o investimento feito pelos grandes lideres da industria de software no recrutamento e selecao de seus profissionais nas posicoes de missao critica.  Ao inves de selecionar diminuir as exigencias e contratar localmente, eles mantem o nivel tecnico o mais alto possivel e contratam mundialmente, tendo um custo no minimo 10 vezes maior.

1/12/2006 1:51:56 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Thursday, December 08, 2005

Da uma olhada nesta noticia.  Quando sera que teremos a agradavel surpresa de ver a Microsoft investindo no Brasil?  Alguma opiniao?

http://www.eweek.com/article2/0,1895,1897184,00.asp

 

12/8/2005 11:10:12 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Thursday, October 27, 2005

Depois de um longo ciclo de desenvolvimento o Visual Studio 2005, Whidbey, esta pronto. 

http://blogs.msdn.com/jasonz/archive/2005/10/27/485922.aspx

Agora 'e esperar um pouquinho ate esta versao estar disponivel para download e aproveitar as grandes melhorias em produtividade para voce desenvolvedor.

10/27/2005 10:51:53 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Wednesday, October 26, 2005

Se voce perdeu o PDC 2005, nao fique triste. Eis aqui todas as apresentacoes, tanto os slides quanto o video, para voce fazer download e assistir quando quiser.

http://microsoft.sitestream.com/PDC05/

Minha opiniao 'e as apresentacoes sobre LINQ, DLINQ e ADO.NET V.Next sao imperdiveis.  Muita coisa interessante sobre Workflow, Windows Vista e Avalon.

10/26/2005 1:53:47 AM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback
 Monday, October 17, 2005

Estou em San Diego participando da conference OOPSLA 2005.  OOPSLA significa pelo menos duas coisas: uma cidade na Noruega e tambem Object Oriented Programming, Systems, Languages, and Applications.  OOPSLA e' organizada e/ou patrocinada pela ACM SIGPLAN.

A conferencia comecou domingo, dia 16 de Outubro, com uma serie de tutoriais que os participantes podem se registrar.  Existe tambem a opcao de comprar o material apresentado em qualquer tutorial.  Os tutoriais que estou participando sao:

-Generative Programming Language
-Hands on labs in AspectJ
-Fundamentals in OO Languages
-Domain-Driven Design

Ate agora estou gostando muito dos tutoriais, aprendi uma serie de coisas novas.  Como funcionario da Microsoft a gente fica muito limitado aos produtos e tecnologias que a Microsoft decide desenvolver, e acaba perdendo muito do conhecimento das inumeras tecnologias em desenvolvimento que ainda nao foram adotadas por algum time na Microsoft.  OOSPLA 'e uma conferencia muito boa para se atualizar nas diferentes areas em pesquisa nas universidade e departamentos de R&D de grandes empresas.

Terca, 18 de Outubro, 'e quando as principais palestras comecam e os keynotes se apresentam.  Vamos ver se desta vez eu consigo fazer um resumo da conferencia e apresentar um material interessante para voce.  Esta era a minha intencao quando comecei a blogar sobre o PDC 2005, mas no meio do caminho acabei nao tendo tempo para escrever.  Desta vez nao tenho muito gente para conversar por aqui, entao devo blogar mais sobre os tutoriais e as palestras.

10/17/2005 9:16:30 PM (E. South America Daylight Time, UTC-02:00)  #    Disclaimer  |   |  Trackback