Aujourd’hui pas de recette de cuisine (remplacé par un barbecue + rosé bien frais demain), mais une question qui m’est venue à la lecture des commentaires de cette news :

http://linuxfr.org/news/de-tout-de-rien-des-bookmarks-du-bla-bla-29

Qu’est ce qui est demandé à un développeur aujourd’hui : maitriser un langage et son API sur le bout des doigts ; ou bien maitriser ce qu’il y a autour du code ?

Lorsque j’étais jeune développeur, j’ai eu des entretiens où on me posait des questions (y compris au tableau !) sur comment coder telle ou telle chose, écrivez une méthode qui fait ci ou ça, etc…

Sur le moment, j’y répondais en me disant que ça n’avait aucun intérêt. J’en suis encore plus persuadé aujourd’hui. Ainsi j’ai établi une liste de choses plus importantes à savoir qu’optimiser une fonction de tri :

Les choses plus importantes

Savoir utiliser quotidiennement un outil de gestion de version, et tout le vocabulaire qui va avec, savoir pourquoi c’est important d’avoir une branche stable et une branche évol (à minima)



Savoir lire une spec/un besoin, poser les bonnes questions fonctionnelles



Savoir écrire et exécuter un Test unitaire (cas passant ET non passant), avec le jeu de données requis



Savoir écrire et exécuter un test d’intégration

Connaitre les critères d’acceptation d’une fiche d’anomalie, ainsi que le processus de traitement (quand est ce que je livre ? à qui sur quel environnement ?)

Savoir évaluer la charge Dev+TU d’une fonctionnalité, au besoin en posant des hypothèses, et donc savoir quand est ce qu’on aura (raisonnablement) fini



et bien sur savoir travailler en équipe



Pour moi tout cela est primordial sur la maitrise d’un langage en particulier ou même d’algorithmes génériques (mais cela ne l’empêche en rien).

Il m’est arrivé d’avoir à faire passer des entretiens (de recrutement ou à l’entrée d’un nouveau dev sur un projet). Il ne m’est jamais venu à l’idée de lui faire coder au tableau un algo de tri pour savoir s’il maitrisait dans le détail le langage/l'algo. Ça ce sont des questions qui il me semble doivent être réservées aux experts techniques / développeurs seniors (appelez les comme vous voulez).

Au développeur sortant d’études, je lui demanderai s’il sait ce qu’est que la gestion de version, quels outils il a utilisés (IDE, VCS, base de données), ce qu’il a codé, s’il sait me parler de l’importance des TU.

A un développeur plus expérimenté, connaitre la gestion des anomalies, savoir évaluer une charge de dev+TU, et savoir ce qu’est une campagne de TI ou une PIC.

Pour les développeurs seniors et experts techniques, là ok, on peut rentrer dans de l’optimisation, de l’archi : « quels sont les pb de perfs que vous avez rencontrés et qu’avez-vous fait pour y remédier ? », « dans une appli web, à quelles couches rencontrez vous habituellement des pbs de perf ? ». Je tacherai de lui demander comment il fait pour gérer ou diminuer la dépendance aux libs externes.

D’ailleurs en passant j’ai rencontré incomparablement plus de problèmes de perfs dus à un mauvais schéma de base de données qu’à un algo de tri en Java. Au final, il vaut mieux connaitre SQL que savoir la notation O :)

Et vous qu'en pensez vous ?

Si vous faites passez des entretiens, que demandez vous aux personnes en face de vous ?

Et pour ceux ayant passé des entretiens récemment, quelles questions avez vous eues ?

PS : au passage, dans les commentaires de la news deux articles qui m'ont paru intéressants :

http://techcrunch.com/2013/06/22/the-technical-interview-is-dead/

http://techcrunch.com/2011/05/07/why-the-new-guy-cant-code/