Julien Dollon | Ma vie de développeur chez Microsoft

A goal without a plan is just a wish

My blog in english is here.

Je m’appelle Julien, j'ai 27 ans et je suis un ingénieur logiciel. Je concois les produits et services de demain. J'ai entre autre participé au developpement de Windows, XBOX, Office, Surface chez Microsoft (Redmond) et je suis maintenant chez Amazon AWS (Seattle) pour Marketplace/EC2/Workspace.

Je travaille dur pour un jour avoir un grand impact sur ce monde.

Mais comme il n’y a pas de titans à combattre, que les monstres n’existent pas, je fais du dev sur des produits, qui je l’espère, vous apporteront de la joie.

Plus d'infos sur moi ici.

 

View Julien  Dollon's profile on LinkedIn

Tous les posts de ce blog ne reflètent que mon opinion et pas celui de mes employeurs et clients.

 

Service d'evaluation de competences et de creation de site webs sur cahors.

Ma vie de développeur chez Microsoft

J’imagine bien que ca doit pas intéresser grand monde, mais je trouve ca sympa d’avoir un aperçu de comment on fait du logiciel/hardware chez Microsoft.

(avec un titre d’article aussi pourave j’étais oblige de mettre cette image).

Le principal problème c’est que cet article va être… vide…

Le premier jet de celui-ci faisait bien 4 pages, mais suite à la visite de notre lawyer, il se trouve que je ne peux pas parler de grand choses…

Ca peut se comprendre, je ne suis pas un évangéliste, je ne doit pas communiquer sur un produit ou un process interne au risque de mettre à mal la campagne marketing.

Pour re-situer pour ceux qui ne me connaisse pas, je suis développeur chez Microsoft Redmond (le headquarter) dans le studio qui est en charge du hardware chez Microsoft (des souris, en passant par Pixel Sense, à l’époque Kinect et désormais Surface).

Mon travail consiste à développer en C++/C#/JavaScript avec une importante part d’UX.

WP_000218

Le Career Model

La première chose intéressante, c’est de comprendre la hiérarchie chez Microsoft.

Ca a vraiment été dur pour moi, car il y a beaucoup de layers entre Ballmer et moi, et beaucoup de titre différent.

Beaucoup de titre avec le mot “Manager”, ou encore “Director”.

Tout d’abord il faut savoir que tout le monde est noté par rapport à un ranking, qui va de 57 environ à 100(?, je crois).

Cette note, cumulée à votre secteur (marketing, ingénierie…) vous donne un titre.

Par exemple, prenons le cas d’un développeur, 15 ans d’expérience, qui manage 5 personnes mais continue de développer:

  • Imaginons que ses 15 ans d’expérience lui ait permis de monter au niveau 64, il est donc senior
  • Comme il est développeur, on appelle ca SDE: Software Development Engineer
  • Comme il est également manager d’une petite equipe, il est lead.

Son titre est donc: Senior Software Development Engineer Lead.

Vous voyez le bordel à comprendre?? Et ca dans tous les sens, il m’a bien fallut 3 mois pour comprendre le poste de tout le monde.

Et encore, faut il comprendre comment on donne les niveaux! Prenons l’exemple d’un tout nouveau développeur SDE I (niveau 57-60). Imaginons que au bout d’un an, ce SDE à SUPER bien travaillé, voila ce qui peut arriver:

  • Il est classé par rapport à tout les employés de son équipe qui ont le même titre que lui. Le classement va de 1 à 5, 1 étant la meilleure note. Tout le monde ne peux pas avoir un 1, seulement 5% d’entre eux. Il ne faut donc pas qu’il est bien travaillé pour avoir un 1, mais qu’il ait mieux travaillé que les autres.
    • Si il reçoit une bonne note (3, 2 ou 1), il recevra un bonus en cash (vraiment un gros pactole).
  • Mais, indépendamment de son classement, Microsoft peut vous faire évoluer de niveau. Cela dépend certes de votre note mais aussi du nombre de personne qui attendent de changer de titre (si tout se passe bien, 1 level = 3 ans) mais aussi par rapport aux besoins business (Microsoft a t’il besoin que ce jeune SDE soit considéré SDE II pour être mis sur des projets plus sensibles?)

Une fois que vous avez compris ca, c’est pas fini !! Ahah. Je vais vous parlez de ma situation, qui au passage me convient parfaitement:

Je suis SDE, j’ai donc un manager qui est Senior Software Development Engineer Lead.

Mon manager à également un manager qui est aussi un Senior Software Development Engineer Lead, et qui est d’office mon co-manager (chacun me “managent” autant l’un que l’autre).

J’ai un mentor, SDE II, qui est la pour me guider au sein de Microsoft la première année.

J’ai aussi un responsable technique, qui valide tout ce que je fais/crée au sein de Microsoft qui est Senior SDE.

Sans compter le project manager de mon projet.

Bref, vous voyez tout ca pour être un beau bordel mais finalement marche à merveille pour plusieurs raisons:

  • Les rôles sont parfaitement isolé, personne n’empiète sur les autres
  • Personnes ne se prends pour ton chef, mais plus comme un conseillé

Je suis donc extrêmement bien encadré et aux anges.

WP_000370

Pour conclure, en développement on a:

  • SDE I et II: dans ma team il y a que mon mentor et moi à ce niveau
  • Senior SDE et Senior SDE Lead: le reste de ma team
  • Principal SDE: a ce niveau c’est clairement très haut, je connais personnellement que deux personnes a ce level. Dont la personne qui m’a pris “sous son aile” avec qui je travaille tous les jours et qui est entrain de faire de moi une machine de guerre
  • Partner SDE, Distinguished Engineer, Technical Fellow, Coportate VP: Bon a ce niveau la, on est un des big boss de Microsoft

Le projet

Je ne pourrais pas parler de ce que je fais (du moins pas encore), mais la chose top, c’est qu’avec tout cet encadrement, bah du coup on vous fait “confiance”.

C’est a dire qu’on me met sur un projet, extrêmement sensible/critique/prioritaire/révolutionnaire à moi tout seul. Je fais des choix d’UX et d’architectures en standalone.

J’ai l’impression de faire tout de A a Z, mais en fait tout cela est possible car j’évolue dans un environnement clos prêt à m’aider à me guider/conseiller à chaque moment de la journée.

Soit dit en passant, j’ai remarqué une chose à Microsoft. Il y a énormément de monde (testeurs, designers, marketing and co), mais au final, ceux qui crée les fonctionnalité les plus ENORMES comme kernel windows, office engine ou encore Surface… ces gens se comptent sur les doigts d’une main.

D’ailleurs, dans ma division (Windows), je ne croise pas des équipes de 200 personnes, le max que j’ai vu c’est 4 personnes sur une fonctionnalité. Beaucoup pensent que c’est avec une petite équipe qu’on fait de grandes choses.

C’est à double tranchant, car du coup vous êtes clairement fier de faire quelque chose à vous tout seul, d’un autre cote il ne faut pas compter les heures.

WP_000354

Le matériel et bureau

Je suis juste hyper chanceux. Quoi de mieux que d’être dans la division Windows / Equipe Hardware / Sous Equipe Surface???

J’ai accès a tous les secrets Windows, avec le matériel a GOGO (souris, clavier, speakers, ordinateurs, table PixelSense), et je suis sur Surface.

J’ai vraiment eu de la chance sur ce coup là.

Alors, a quoi ressemble mon bureau?

Déjà il se trouve dans un Studio en face des commons, c’est a dire un magnifique bâtiment avec des terrains de sport, des restos et j’en passe.

WP_000291

Il se trouve dans un volt super sécurisé, ce qui est très rare chez Microsoft, mais comme je vous dis, on bosse sur des choses sensibles.

 

WP_000402

J’ai un PC lenovo portable ultra légé pour les réunions et facebook (ahah), deux ecrans pour developper, un ecran multitouch 40 points et des produits dont je ne peux pas parler:

WP_000242

WP_000384

J’évolue dans un open space de 5 personnes avec une grande fenêtre Tire la langue.

Ca aussi j’ai eu du mal à comprendre, mais suivant la hiérarchie on a le droit à un bureau ou non, bref je n’en parlerai pas ici.

 

Les récompenses

Au delà de l’aspect prime financière, il y a des récompenses qui sont, pour moi, extrêmement motivante.

Par exemple, quand vous réalisez un produit, vous le recevez avec votre nom gravé “I made this product, Julien Dollon”.

Ensuite, vous recevez un tableau “Ship IT’ qui récapitule tout ce que vous avez shipped dans votre carrière:

Rien que dans ma team, il y a du Ship It sur du Windows 3.11 et WPF, marrant Sourire.

Il y a également les patents, qui vous sont attribuez quand vous faites quelques choses d’innovants:

 

Bref, plein de choses que je veux gagner d’ici peu!.

 

Le process de dev

Je ne suis pas autorisé à parler du process de dev, ni des outils que l’ont utilise.

Je peux juste dire que nous avons beaucoup de testeurs, c’est assez marquant. Nos créations sont testés, triturées dans TOUS les sens.

Nous sommes plus ou moins agile, nous travaillons en petit groupe sur des périodes courtes.

Nous n’utilisons QUE des produits Microsoft, (tout ce qui n’est pas MS dans votre Visual Studio type plugins and co, vous oubliez!).

Nous avons des guidelines de code, architecture and co qui sont pas forcement compliqué mais déroutante la première fois.

On est extrêmement loin des pratiques que je voyais dans les autres entreprises.

Mon équipe utilise beaucoup le pair-re-viewing (oui je viens de l’inventer celui la, en gros avant chaque check in votre collègue triture votre code devant vous).

La très grande différence d’un point de vue macroscopique est la façon de penser le lifecycle du logiciel.

Dans mes précédentes entreprises, si je devais créer un logiciel qui gère des clients par exemple, j’aurai créé d’abord le module d’authentification, puis le module de créations de clients, puis celui de lecture etc…

Chez Microsoft, on crée TOUT en même temps, quitte à avoir au début une version vraiment pas fini (genre si on créé un client, on peux rentrer que le nom), et on incrémente à chaque fois de mieux en mieux. Chaque version est testée comme si c’était une version finale et présentée au big boss.

Ce qui nous permet d’avoir des beta de produit, ou des RCs.

 

Emploi du temps

Pour finir, un petit points sur mon emploi du temps, voila ce que ca donne:

  • 10H: arrivé au boulot, direction le stand up pour parler avec la team et dire ou on en est
  • 10H30: fin du stand sup, direction le café
  • 11H00: sport pendant une heure avec l’équipe
  • 12H00: repas du midi
  • 13H00: réunion parfois, avec l’UX ou le tester pour se mettre d’accord
  • 14H00: développement
  • vers 22H: retour à la maison

Une fois par semaine, une réunion de 1h avec ton manager (One-on-One) pour discuter.

Bon après l’emploi du temps est diffèrent suivant les teams (on est les seuls à finir tard) et cela dépend aussi des personnes (je suis celui qui arrive le plus tard et qui fini le plus tard).

Parfois je reviens quelques heures le week end entre deux petit moment de wakeboarding!

J’espère que tout ca vous a plu!

Posté le: Sep 02 2012, 23:03 | Commentaires
Catégorie(s): Privé | Général

blog comments powered by Disqus
Anciens commentaires (archive):