INTERVIEW 
 
Jean-Christophe Arnulfo
Fondateur
Vertigo Engineering
Jean-Christophe Arnulfo (Vertigo Engineering)
"L'essentiel pour un bon développeur tient en deux mots : rigueur et humilité"
Dans son livre "Métier Développeur", le dirigeant cherche à aider les débutants à faire le pas vers la programmation professionnelle. Rappelant l'essentiel de la technique et de la méthodologie, il base ses exemples sur C++.
11/09/2006
 
JDN Développeurs. Pouvez-vous nous décrire l'origine de votre projet de de livre sur le métier de développeur ?
  En savoir plus
Dossier Gérer ses projets informatiques
  Le site
Vertigo Engineering
Livre "Métier Développeur"
Jean-Christophe Arnulfo. L'idée de faire un livre sur le métier de développeur est née en travaillant sur le projet WinDev de PC Soft. À l'époque, nous formions beaucoup de jeunes développeurs issus de différentes filières, et nous nous sommes rendu compte qu'il fallait répéter les mêmes conseils quasiment à tout le monde. Les mêmes erreurs étaient commises, les mêmes lacunes étaient constatées.

Un document avait donc été rédigé pour regrouper tous ces conseils. Ensuite, je suis parti travailler aux États-Unis, et j'ai découvert d'autres développeurs de formations différentes, indiens, chinois, russes notamment. J'ai constaté exactement les mêmes problèmes. En revenant des États-Unis, je me suis dit que j'avais assez d'idées et d'expérience sur le sujet pour en faire un livre.

Quels sont les principaux problèmes rencontrés ?

Quelle que soit leur formation, les développeurs qui débutent dans la production de logiciel à but commercial ont tous les mêmes défauts. Ils ont souvent abordé tout ce qu'il fallait au niveau théorique, mais sans jamais vraiment pousser à fond et avec très peu d'expérience pratique réelle.

Quand on se retrouve ensuite dans une équipe où les gars font du C++ depuis 10 ans, sur des projets qui en sont à leur 10e version, avec la Qualité, le Marketing, le Support Technique et la Documentation sur le dos, l'adaptation peut être compliquée.

Que pensez-vous leur apporter avec votre "kit de survie" ?
Au niveau efficacité et productivité, "Métier Développeur" se borne à rappeler l'essentiel de ce qu'il faut maîtriser au niveau technique et méthodologique, un peu comme une piqûre de rappel, si la formation a été bonne.

Mais il y a plus important : l'état d'esprit. C'est le côté "je développe des produits" plutôt que "j'écris des programmes". Cet aspect-là est très peu abordé à l'école, et c'est là-dessus que livre insiste, même dans tous les chapitres consacrés à l'écriture du code. L'objectif est vraiment de distiller cet état d'esprit à chaque page : programmer propre, défensif, évolutif, programmer pour les autres, pour le client et non pour soi.

Les jeunes développeurs font souvent les mêmes erreurs."
Pourquoi avoir utilisé C++ pour vos exemples de code et vos conseils pratiques ?
Pour deux raisons : c'est le langage que j'utilise depuis 15 ans ; c'est de loin le langage le plus utilisé dans tous les projets un peu système, surtout sous Windows et Unix. La cible du livre étant justement ce monde du développement, il était naturel d'utiliser C++ pour les exemples.

Quels sont les langages qui ont votre faveur à long terme ?
Pour le développement système, il n'y a pas à hésiter, c'est C++. Cela fait 13 ans que je développe des applications système et, où que je sois allé, les projets étaient toujours à base de C/C++. Je n'ai eu qu'un projet qui mélangeait du C++ et du C#. Rien en Java. Quand on maîtrise C++, ensuite c'est facile de passer à C# ou Java.

Pour le développement Web, je n'ai pas d'expérience dans le domaine, donc je passe sur ce sujet. Pour ce qui concerne les applications de gestion, il existe aujourd'hui une foule de langage de quatrième génération qui permettent d'aller beaucoup plus vite qu'avec n'importe quel L3G.

Vous ne semblez présenter ni l'Extreme Programming, ni les langages fonctionnels, par exemple. Qu'est-ce qui a motivé vos choix en matière de thèmes abordés ?
L'objectif du livre était d'aller à l'essentiel, et ce, pour un public jeune et inexpérimenté. Que faut-il absolument savoir avant de commencer son premier développement commercial ? Est-ce que connaître Extreme Programming va faire la différence ? Ou bien vaut-il mieux rappeler qu'une gestion rigoureuse des new/delete est fondamentale si on veut un produit stable à la fin ? Personnellement, je préfère de loin un développeur qui me fait une gestion mémoire impeccable. Ensuite, le développeur pourra lire un livre sur Extreme Programming si ça l'intéresse. Vous allez me dire, oui, mais new/delete, c'est la base, et on doit bien apprendre ça à l'école ? Il faut croire que non, en particulier si les étudiants ont surtout utilisé Java par exemple.

L'idéal quand on commence est de maîtriser suffisamment un langage de programmation."
Que doit maîtriser aujourd'hui un développeur pour s'assurer la qualité de son travail, et la pérennité de son emploi ?
Au niveau technique, l'idéal quand on commence est de maîtriser suffisamment un langage de programmation, maîtriser l'algorithmique de base, maîtriser les structures de données élémentaires et si possible d'être à l'aise avec au moins un environnement de développement, quel qu'il soit, pour connaître les concepts. Pour tout le reste, les outils, les frameworks, les techniques particulières, cela vient en développant des projets, en étant curieux, en lisant des livres, en téléchargeant du code sur Internet et bien sûr en apprenant des autres membres de l'équipe - sachant qu'il faut s'intéresser à des techniques qui servent le produit et l'équipe et pas simplement un intérêt personnel.

Au niveau méthode, il y a beaucoup de choses à assimiler, et c'est pour ça que "Métier Développeur" a été écrit. Mais l'essentiel, à mon avis, tient en deux mots : rigueur, humilité. Quand vous être rigoureux et humble à tous les niveaux du développement, le résultat n'est jamais mauvais et en plus vous progressez. Quand un développeur fait progresser le produit et qu'il progresse lui-même, comme on dirait en football, il devient un titulaire indiscutable.

Au contraire, quel est selon vous l'exemple même, ou les syndromes notables, du développeur médiocre ?
Le développeur médiocre est facile à reconnaître, c'est celui qui pose plus de problèmes qu'il n'apporte de solutions. Les problèmes sont toujours les mêmes : le produit n'est pas stable ou bien cela prend un temps démesuré pour le rendre stable ; le produit est mal fini, les fonctionnalités sont bancales, difficiles à utiliser ou mal documentées ; le produit n'est pas assez évolutif...

Souvent tout cela se constate très rapidement au niveau du simple module (exécutable ou DLL) voire même d'une bête classe C++ qui est sensée implémenter une fonctionnalité au service d'un autre module. La classe est instable, les méthodes sont mal ficelées, le .h est en bazar, etc.

À l'origine de ces problèmes, on retrouve toujours les trois mêmes facteurs : soit l'incompétence, soit le manque de rigueur, soit le manque d'humilité. Soit tout à la fois bien évidemment, loi de Murphy oblige.

Comment comparez votre livre à "Code Complete" ("Tout sur le code") de Steve McConnell ?
"Code Complete" est un livre fantastique, mais c'est un bon millier de pages. Je dirais que c'est le genre de livre qu'il faut commencer à lire quand on a un peu plus de bouteille, quand on maîtrise bien son langage, son environnement de développement, qu'on a un peu mis les mains dans le cambouis sur quelques projets. "Métier Développeur" c'est plus un guide pour une première traversée, plus dans l'esprit du "Writing Solid Code" de Steve Maguire.

  En savoir plus
Dossier Gérer ses projets informatiques
  Le site
Vertigo Engineering
Livre "Métier Développeur"
Quels sont les langages, outils et méthodes que vous utilisez au quotidien ?
Comme langage et framework : C++, Win32 et MFC. Mes outils quotidiens sont Visual Studio, Perforce, Visio et Word. Quant aux méthodes, toutes celles dites "pragmatiques", comme je les décrits dans "Métier Développeur".

 
Propos recueillis par Xavier Borderie, JDN Développeurs

PARCOURS
 
 
Jean-Christophe Arnulfo, 35 ans, dirige la société de développement, Vertifo Engineering, société qu'il a créée.

2002 Création de Vertigo Engineering.
1999 Chef de projet et développeur chez Envoii (US).
1997 Développeur chez InVision Tech (US).
1993 Développeur puis responsable développement chez PC Soft.

Et aussi auteur de "Métier Développeur" chez Dunod.