Un projet sans développeur ?
Bien sûr, difficile d'imaginer un projet informatique sans développeur. Même bien conçu et bien supporté, il est difficile de se passer de celui qui produit le code, et convertit les objectifs fonctionnels en instructions PHP. Le titre de ce billet est provocateur. Il ne s'agit pas de s'en passer totalement : même les générateurs de code doivent être programmés par quelqu'un....
Pourtant, il y a un bon nombre de tâches qui échoient, faute d'autre interlocuteur, aux développeurs. Par exemple quand il faut déployer (qui connait l'application?), quand il faut tester (idem), quand il faut suivre la qualité d'application des conventions de code (qui va relire ce fatras?), quand il faut diagnostiquer un bug (Si ca plante, y'a que lui pour avoir l'explication).
Par défaut, tout cela revient directement jusqu'à celui qui a produit le code, car c'est lui qui détient ultimement la connaissance. Cela signifie qu'il devient rapidement un passage obligé pour nombre de phase de vie de l'entreprise, alors même que le code a quitté son giron depuis longtemps. Or, il n'est pas toujours possible de retrouver le développeur, pour de multiples raisons (affectation à une nouvelle mission, démission, mort, vacances, calendrier chargé...)
C'est ici que savoir se passer du ou des développeurs se révèle une pratique indispensable. Si les équipes d'administration doivent faire l'installation durant la nuit, un script de déploiement automatique permettra de le faire sans interroger l'auteur du code. Et cela sera même critique dans le cas où l'intervention se fait en urgence : montée en charge subite, retour en arriève de version, etc.
On peut assurer de nombreuses tâches comme ceci :
- tests unitaires automatiques (phpunit alltests.php)
- analyse statique (pmd)
- déploiement (phing, capistrano)
Dans ces situations, même en l'absence de développeur, on peut vérifier la qualité du projet, obtenir un diagnostic de la situation ou installer une nouvelle machine. Certes, les tests unitaires ne couvriront surement pas toutes les situations, mais ils permettront de vérifier les situations les plus simples, et même par une personne étrangère au projet ou non-technique.
Du point de vue individuel, c'est aussi une phase importante dans le cycle de vie du projet. Quand on travaille sur du code dans un projet, il est important de savoir s'en séparer, de couper le cordon ombilical. Si on est le seul à maîtriser une application, on devient indispensable, et on risque aussi de finir enchaîné à des corrections et évolutions infinies.
À chaque fois que j'ajoute une nouvelle fonctionnalité, je me demande à moi-même : comment mes utilisateurs pourront-ils faire des modifications sans passer par moi? Fouiller toute l'application? Faut-il manipuler du code? Lire une documentation? Changer une configuration ? Moins j'obstruerai la progression, mieux cela sera pour eux.
Et pour moi aussi. Car je ne compte pas rester toute ma vie sur le même projet.
Industrialisation PHP au forum AFUP 2009
Jean-Marc et moi-même étions au Forum AFUP 2009, qui se tenait la semaine dernière au musée des sciences et de l'industrie.
J'étais invité par Olivier Hoareau pour donner une session 'Oui! PHP est industriel' donc le contenu a été enregistré, et est disponible sur le site de phptv.
Vous pouvez écouter la session sur votre navigateur. Les slides sont dors et déjà disponibles sur le site de SlideShare : http://www.slideshare.net/ohoareau/afup-forum-php-2009-oui-php-est-industriel
Les slides (et les enregistrements) de ma session sur L'avenir de LAMP ainsi que le keynote sur les contributions open source d'Alter Way sont aussi disponibles.
Qu’est-ce qu’industrialiser les développements PHP ?
L'industrialisation des développements PHP est un thème émergent. Depuis quelques mois, on en entend de plus en plus parlé mais qu'est-ce que cela recouvre concrètement ?
Une définition pourrait être que l’industrialisation des développements consiste à mettre en œuvre des pratiques et des outils visant à rendre les logiciels produits plus robustes, tout en restant dans des délais et des coûts maîtrisés. On a donc là deux leviers : des pratiques et des outils qui permettent d'atteindre deux buts précis : obtenir des logiciels robustes en maîtrisant à la fois le budget et le planning.
Ces pratiques et ces outils sont multiples et varient selon les habitudes, les sociétés et les projets. Nous avons tenté d'en lister un certain nombre qui nous paraissent essentiels :
- Former les équipes ;
- Employer une convention de programmation ;
- Utiliser un dépôt de code ;
- Utiliser un framework ;
- Adopter un IDE de développement ;
- Automatiser les tests ;
- Mettre en place une intégration continue ;
- Déployer automatiquement ;
- Pratiquer l'analyse statique ;
- Utiliser des outils de conception ;
- Mettre en place des méthodes de programmation ;
- Maîtriser de la qualité du code ;
- S'assurer de l'implication des utilisateurs.
Et vous, quelles pratiques et outils utilisez-vous pour industrialiser vos développements ?
Retour de PHP Barcelone
La semaine dernière, se tenait PHP Barcelone. J'y donnais la seconde version de la session d'industrialisation, en même temps que Rasmus Lerdorf lui-même : nous nous sommes donc partagés l'audience entre les pro-frameworks et les anti.
Vous pourrez trouver les slides sur slideshare : http://www.slideshare.net/dseguy/php-industrialixation, J'ai notamment réutilisé une nouvelle approche des problèmes d'industrialisation, sous forme de carte : l'idée est que les outils et techniques sont très nombreux, et ne se choisissent pas toujours dans un ordre défini. Mais ils s'enchainent naturellement (comme passer les tests unitaires à l'intégration continue). On a donc établit des liens entre les outils, qui vous donneront une idée de quelles étapes suivantes sont disponibles, en fonction de votre parcours actuel.

J'ai aussi eu le temps de discuter avec les programmeurs espagnols sur la notion de conception PHP : la question de fond est de savoir ce qu'est un bon document de conception. Que doit-il rassembler pour que le travail du développeur soit efficace, sans être détaillé au niveau de l'instruction élémentaire. En fait, à ma connaissance, il n'existe pas encore de standard pour cela, ce qui renforce certainement le manque de confiance qu'on leur associe. Qu'en pensez-vous? Que mettez-vous dans un document de conception, hormis les classes et le MCD?
Conférence sur l’industrialisation au Forum PHP 2009
L'édition 2009 du Forum PHP approche à grand pas maintenant. Parmi les nombreuses conférences qui y seront données, l'une d'elle traite directement de l'industrialisation de PHP. Elle sera animée par Damien Seguy, co-auteur de ce blog, et Olivier Hoareau, un spécialiste de ces problématiques.
Durant cette présentation, ils présenterons les composants d'une usine de développement PHP complète, et comment l'utiliser pour industrialiser efficacement vos développements afin de garantir la qualité et la robustesse de vos applications.

