La R&D : pour ne pas confondre développement et veille techno

Il y a quelques temps, je vous ai parlé de la veille technologique. Je vous ai expliqué en quoi c’est un élément important de nos vies professionnelles.

Je voudrais cette fois-ci vous mettre en garde contre une dérive finalement assez commune chez les jeunes développeurs, qui est d’utiliser les projets professionnels comme un terrain de jeu pour réaliser leurs expérimentations. Ensuite nous réfléchirons aux moyens de canaliser la fougue qui conduit à ces dérapages.

Les expérimentations au boulot

Il y a quelques années, alors que j’étais chef de projet, un de mes développeurs – un prestataire externe, en fait – avait demandé une demi-journée de congé pour assister à une conférence organisée par Google France. J’étais content de voir qu’il prenait à coeur sa veille technologique.
À son retour, je lui ai évidemment demandé de me faire une présentation rapide de ce qu’il avait vu. Il s’agissait des premières versions des toolkits de Google, et ça avait l’air vraiment intéressant.

Nous étions alors en train de démarrer un nouveau projet, et ce développeur était en charge de certaines spécifications techniques. Quand j’ai vu dans ses specs qu’il envisageait d’utiliser les technologies Google qu’il venait d’entrapercevoir, j’ai eu une petite discussion avec lui.

Le message tient en 2 points :

  • Bien qu’absolument nécessaire, la veille technologie est une démarche personnelle. C’est à chacun de se trouver ses propres petits projets qui lui permettront de tester de nouvelles technos ou de nouveaux outils.
  • Un projet mené au sein de l’entreprise répond à des contraintes contractuelles et financières. Vouloir y glisser des technologies qui ne sont encore qu’à l’état de bêta, ou qu’on ne maîtrise absolument pas, est une erreur assez grave.

Canaliser et organiser

Il n’empêche qu’il n’est pas logique d’inciter à la veille tout en la réprimant dans le cadre de l’entreprise. L’entreprise a certains devoirs de formation vis-à-vis de ses employés, il faut s’en occuper de manière raisonnée et planifiée.

FineFS, système de fichiers redondé

J’ai lancé depuis quelques temps un projet dans mon entreprise, que nous venons de publier sous licence libre. Il s’agit d’un système de fichiers répliqué du nom de FineFS.

Je vais en parler ici parce qu’il s’agit d’un projet intéressant d’un point de vue technique, sur lequel les esprits imaginatifs peuvent venir s’éclater avec nous. Mais aussi parce qu’à travers ce projet, je veux vous présenter l’univers des systèmes répartis/distribués/redondés et des bases de données à très haute disponibilité – que tout directeur technique doit connaître un minimum.

Présentation du projet

Le but de ce projet est de faciliter la création de cluster-disque. Lorsque vous avez plusieurs serveurs qui doivent accéder aux mêmes fichiers, il est toujours délicat de mettre en place une architecture satisfaisante sans dépenser des sommes folles. Et pourtant, la moindre infrastructure Web présente plusieurs serveurs frontaux, qui doivent délivrer des contenus (images, vidéos, musiques) communs. Sans compter que ces différents serveurs doivent aussi pouvoir enregistrer de nouveaux fichiers, qui doivent être accessibles à toutes les autres machines.

Il existe plusieurs moyens de mettre des fichiers à dispositions de plusieurs serveurs :

  • Installer un NAS, c’est-à-dire un serveur de fichiers. Mais si ce serveur tombe en panne, plus aucun fichier n’est accessible.
  • Installer un SAN, qui prend souvent la forme d’une baie de stockage redondée. Mais les prix de ce genre d’installation grimpent très vite.
  • Utiliser un service externe, comme Amazon S3, qui prend en charge les aspects complexes de la gestion des fichiers. C’est souvent une solution satisfaisante pour du Web, mais qui peut induire des latences dans les accès aux fichiers, et des coûts inutiles.
  • Mettre en place un système de fichiers réparti, redondé et/ou distribué.

C’est dans cette dernière catégorie que se place FineFS. Il existe déjà des solutions qui s’emploient à résoudre ce besoin, qu’on peut répartir en 5 groupes :

La veille : préparer votre futur

Je discutais récemment avec un développeur que je viens d’embaucher, et je lui expliquais entre autres pourquoi il est important de maintenir une veille active. La conversation avait commencé quand je lui ai donné plusieurs magazines à lire (en l’occurrence des Linux Format et PHP Architect), pour l’aider à se plonger dans la « culture informatique » dans laquelle il allait travailler. Cela l’a laissé un peu perplexe au début, mais il a fini par reconnaître mes arguments.

Par le terme de « veille », on pense habituellement à la veille technologique ; c’est le fait de se tenir au courant des nouveautés concernant une technique ou un champ de technologies. La plupart des informaticiens sont férus d’informatique (oui, ça paraît évident), et se tiennent au courant des dernières informations. Dans certains cas, ce sera les news concernant le monde du logiciel libre, ou celles de tout ce qui gravite autour d’un langage de programmation ou d’une plate-forme particulière ; éventuellement, on trouvera des gens qui suivent avec précision les évolutions des processeurs ou les sorties des jeux vidéos. Bref, on voit de tout.

Mais une des choses qui font la différence entre un ingénieur qui fera évoluer sa carrière, et un autre qui stagnera au même niveau, c’est entre autres l’implication personnelle qu’il met dans son travail. Ce qui veut dire aussi qu’il faut prendre du temps pour mettre à jour nos connaissances et élargir nos compétences sans arrêt.

Le mauvais exemple

Je connais des développeurs qui considèrent qu’ils possèdent le savoir nécessaire et suffisant pour faire leur travail. Leur instruction et leur expérience leur permettent de résoudre la plupart des tâches habituelles, et quand ils sont face à un problème, ils cherchent un peu sur Internet et ça suffit bien souvent.