Développeur, un métier en mutation ?
Du cloud computing aux méthodes agiles, nombreux sont les défis venant impacter le développement logiciel. Les développeurs doivent aujourd’hui assurer des mises en production plus fiables, plus fréquentes et au coût réduit. C’est pour répondre à ces nouveaux défis que nous préconisons l’approche Smart Code : du code de qualité, conçu de façon agile dans un souci de pérennité.
Sous l’impulsion des offres de Cloud Computing, la plupart des DSI sont aujourd’hui engagés dans une démarche d’automatisation de leur infrastructure. Cette automatisation a notamment pour objectif de mettre à disposition des portails de services à destination des autres équipes et en particulier les équipes applicatives. Pour ces équipes, c’est l’opportunité de repenser leur relation avec les équipes infrastructures et la gestion de ressources. Si aujourd’hui il est encore courant de constater qu’il faut plus de 3 mois pour livrer un serveur, ce délai pourrait être ramené à quelques jours, voire quelques dizaines de secondes.
Ces temps de mise à disposition ultra-rapides, couplé au fait qu’il est possible d’obtenir de nombreuses machines vont avoir un impact fort sur l’architecture des logiciels. Pour tirer profit de ces nouvelles possibilités, il faudra de plus en plus aller vers des infrastructures scalables horizontalement, permettant d’ajouter rapidement de nouveaux nœuds en fonction des besoins utilisateurs. Bref, se rapprocher petit à petit des architectures que l’on trouve actuellement chez les géants du Web ou dans l’offre de Cloud public.
L’impact des méthodes agiles sur le développement
Autre défi impactant le développement logiciel : les méthodes agiles. Si de nombreuses équipes ont déjà engagé leur mutation vers des pratiques agiles et des cycles de développement plus courts, il n’en est pas toujours de même quand à l’outillage et la maîtrise de la base de code. Pour suivre le rythme des changements, il est nécessaire de se doter d’outils adaptés, notamment pour l’automatisation des tests et le déploiement des applications vers les environnements de qualification, voire de production. La mise en place de ces outils de continuous delivery permet de gagner la fiabilité et la réactivité nécessaires à la pleine application des méthodes agiles.
L’introduction de l’agilité a également rapproché le client de l’équipe de développement en l’impliquant fortement dans la définition et la priorisation des tâches. Or, certaines tâches techniques telles que le refactoring, les mises à jour de technologie ou la gestion de l’outillage, qui étaient le plus souvent incluses dans des macro-plannings ou faites en tâches de fond, deviennent visibles pour le client. Un important travail de sensibilisation est alors nécessaire pour expliquer l’importance de ces tâches sur le long terme.
La mise en place d’outils d’analyse de la dette technique permet non seulement de suivre l’évolution de la qualité de la base de code mais devient un outil de sensibilisation pour l’équipe et pour le client. Le développeur doit être capable d’écrire du code de qualité mais aussi de sensibiliser les autres, développeurs ou non, à l’importance d’avoir une bonne base de code pour permettre l’ajout rapide de nouvelles fonctionnalités dans le futur.
Développeur : vers des profils plus hybrides
Pour relever l’ensemble de ces défis, les équipes de développement vont devoir évoluer pour intégrer de nouvelles compétences. On demandera de plus en plus aux développeurs des connaissances complémentaires à leur expertise sur un langage, mais on pourra également intégrer directement aux équipes de développement des profils infra ou des MOAs afin de construire des équipes pluridisciplinaires. L’objectif ne sera plus de livrer une application mais de concevoir un service, c’est à dire de composer les éléments logiciels avec les équipes infra pour fournir la solution optimale au problème du client.