Agile Tour Paris 2014 
Travailler avec l'existant : 
ou comment s'en débarrasser 
www.agileparis.org 
www.twitter.com/Agil...
Travailler avec l'existant : ou 
comment s'en débarrasser 
Les problèmes qui présentent l'existant, 
comment les confronte...
Qui suis-je ? 
● Développeur entreprise depuis 15 ans 
● Agiliste depuis plus de 10 ans 
● Très (trop) expérimenté en trav...
Un peu d'histoire 
Eugène Ionesco
Bon, c'est qui? 
● Dramaturge Français 
● Créateur accidentel du Théâtre de l'absurde
Amédée ou comment s'en 
débarrasser 
● Pièce absurde en 3 actes 
● Quelque chose encombre l'avancement 
● La crise causé p...
Ok, c'est quoi le rapport ? 
● L'absurde – un décalage entre l'attente de 
l'homme et l'expérience qu'il fait du monde 
● ...
L'absurde existe 
Un peu trop souvent dans 
les équipes de dev...
Présentation en 3 actes 
Le cycle de vie d'un projet informatique 
● On commence avec des bonnes idées et 
les bonne inten...
Acte 1 
Pourquoi on n'avance plus / pas assez vite? 
● L'existant dans ces diverses incarnations 
– Le code 
– L’équipe 
–...
On existe 
● Un produit existant 
● Une équipe existante 
● Des clients existants 
● Des problèmes 
existants 
● L'existan...
Le produit existant
Le code (coté serveur) 
public class BlahFormatter : ICanHaz 
{ 
public string BlahFromUrl() 
{ 
var context = Config.GetG...
Le code (cote client) 
e = "" 
function toggleElm(cls) { 
for (i = 0; i < document.all.length; i++) { 
if (document.all[i]...
Le code (build) 
HAI 1.2 
CAN HAZ STDIO? 
I HAZ A FILE_NAME ITZ 'build.environment' 
I HAZ A SERVR ITS noob 
PLZ OPEN FILE...
L'équipe existante
L’équipe existante 
Pas toujours ouverte au changement
Bozo bit 
Je ne parle pas aux cons, ça les instruit 
http://c2.com/cgi/wiki?SetTheBozoBit
Les clients existants
Les problèmes existants 
● Le produit n'est pas stable 
● Il manque des fonctionnalités 
● Le temps d’évolution est trop l...
L'existant
Il suffit de l'implémenter 
Un dev à la direction : “On peut commencer 
des pratiques agiles ?”
Acte 2 
Ca n'avance plus
Comment est-on arrivé là ? 
Cercle vicieux des manques : 
– De temps 
– De connaissances 
– D'organisation 
– D’évolution ...
Temps 
● Comme on n'est pas 
nombreux, on a 
beaucoup à faire et 
beaucoup de retard 
● Et donc on travaille à 
l'arrache ...
Connaissances 
● Comme on est en retard, on n'a pas le temps 
de faire de la veille technologique 
● Comme le travail actu...
Organisation
Evolution 
● Les clients en demandent 
● La direction aussi
Tests
Passion 
● Travailler dans des 
conditions pareilles est 
très fatigant, ça sape le 
moral 
● Une équipe démotivée 
crée d...
Acte 3 
Il faut que ça change
Comment évaluer l'existant ? 
● La structure 
● La technique 
● L'humain 
● L'attitude 
● La possibilité de changer
Structure 
● Postulat : vous n’êtes pas là 
pour changer l’équipe 
● Donc il faut trouver les 
moyens d'injecter des 
bonn...
Technique 
● Vous êtes là pour faire 
avancer le projet 
● Vous êtes expert dans votre 
domaine 
● Exigez du professionnal...
Duplication
SOLID 
● Principe de Separation de 
responsabiltés 
● Principe d'Ouvert / Fermé 
● Principe de substitution 
de Liskov 
● ...
Humain 
● Est-ce que les collègues veulent 
changer ? 
● Est-ce que les devs sont traités 
avec respect ? 
● Les collègues...
Attitude 
● L'ambiance est-elle bonne ? 
● Est-ce que les problèmes sont la faute des 
autres ?
Le test de Joël 
1.Utilisez-vous un système de 
gestion de version ? 
2.Pouvez-vous effectuer une 
compilation en une seul...
Comment s'en sortir ? 
● Tests 
● Restructuration 
● Organisation 
● Réduction de dette 
technique 
● Maîtrise de l'enviro...
Tests
Restructuration du code 
● Ajouter et/ou réorganiser le projet pour qu'il 
soit compréhensible et cohérent 
● Enlever le c...
Organisation 
● N'oubliez pas le but final, 
● Faire de la thune 
● Euh, de créer de la valeur
Organisation
Dette technique 
● Ne pas la cacher, partager la douleur 
● L'isoler 
● Préparer pour l'injection de dépendances 
● Rendre...
Revue de code
Le code (côté serveur) 
public class BlahFormatter : ICanHaz 
{ 
public string BlahFromUrl() 
{ 
var context = Config.GetG...
Le code (côté serveur) 
public class BlahFormatter : ICanHaz 
{ 
public string BlahFromUrl(string Url, IConvertor converto...
Le code (côté client) 
e = "" 
function toggleElm(cls) { 
for (i = 0; i < document.all.length; i++) { 
if (document.all[i]...
Le code (côté client) 
var selectedElements; 
function toggleElm(cls) { 
selectedElements = document.getElementsByClassnam...
Environnement 
● Insister sur les outils 
suffisants, au minimum 
● Machines performantes 
● Environnement de 
développeme...
Formation 
● Créer / inculquer une culture 
d’apprentissage 
● Proposer des ateliers aux pauses déjeuner 
(dojos, découver...
Méthodes
Focaliser sur l'important 
● Un logiciel stable et maintenable 
● Des clients contents et collaboratifs 
● Un quotidien ép...
Honnête 
● Exposer les fraudes 
● Insister sur des 
échéances justes 
● Ne pas vous laisser 
écraser
Humilité 
● Savoir reconnaître ses fautes, ses erreurs 
“L'humilité n'est pas de penser moins à soi-même, 
mais penser moi...
Résumé 
● Cliquez ici pour ajouter un résumé 
Les 16 C s 
● Courage 
● Compassion 
● Collaboration 
● Capacité 
● Communau...
C’est pas la taille de 
l’épée qui compte, c’est 
l’agilité du mousquetaire
Un peu de lecture
Un peu plus...
Merci ! 
● Aux organisateurs de l'Agile Tour Paris 
● Aux participants ! 
● A Upwiser et tous mes anciens et futurs 
colla...
License 
Cette présentation est sous les licenses 
● Beerware 
● WTFPL
Merci à nos sponsors 
Prestige Platinum 
Gold
Travailler avec l'existant : ou comment s'en débarrasser -  Agile Tour Paris 2014
Travailler avec l'existant : ou comment s'en débarrasser -  Agile Tour Paris 2014
Prochain SlideShare
Chargement dans…5
×

Travailler avec l'existant : ou comment s'en débarrasser - Agile Tour Paris 2014

816 vues

Publié le

Les problèmes qui présentent l'existant, comment les confronter et les contourner et éventuellement s'en débarrasser

Présentation présente à l'Agile Tour Paris 2014

Publié dans : Technologie
  • Soyez le premier à commenter

Travailler avec l'existant : ou comment s'en débarrasser - Agile Tour Paris 2014

  1. 1. Agile Tour Paris 2014 Travailler avec l'existant : ou comment s'en débarrasser www.agileparis.org www.twitter.com/AgileTourParis www.facebook.com/AgileParis team@agileparis.org Meetup.com/AgileParis
  2. 2. Travailler avec l'existant : ou comment s'en débarrasser Les problèmes qui présentent l'existant, comment les confronter et les contourner et éventuellement s'en débarrasser Sam Cranford – Upwiser @nostradamnit me@nostradamnit.com delicious.com/nostradamnit
  3. 3. Qui suis-je ? ● Développeur entreprise depuis 15 ans ● Agiliste depuis plus de 10 ans ● Très (trop) expérimenté en travaillant avec l'existant ● noter: presentation en fr_US
  4. 4. Un peu d'histoire Eugène Ionesco
  5. 5. Bon, c'est qui? ● Dramaturge Français ● Créateur accidentel du Théâtre de l'absurde
  6. 6. Amédée ou comment s'en débarrasser ● Pièce absurde en 3 actes ● Quelque chose encombre l'avancement ● La crise causé par l'encombrant ● La libération de l'encombrant
  7. 7. Ok, c'est quoi le rapport ? ● L'absurde – un décalage entre l'attente de l'homme et l'expérience qu'il fait du monde ● L'existant – un projet en cours, en production qui gagne de l'argent un décalage entre le but d'un projet et son déroulement actuel
  8. 8. L'absurde existe Un peu trop souvent dans les équipes de dev...
  9. 9. Présentation en 3 actes Le cycle de vie d'un projet informatique ● On commence avec des bonnes idées et les bonne intentions ● On prend des décisions douteux et s'y accroche ● On décide finalement de corriger ses erreurs
  10. 10. Acte 1 Pourquoi on n'avance plus / pas assez vite? ● L'existant dans ces diverses incarnations – Le code – L’équipe – L’état d'esprit – Les connaissances
  11. 11. On existe ● Un produit existant ● Une équipe existante ● Des clients existants ● Des problèmes existants ● L'existant, quoi ?!?
  12. 12. Le produit existant
  13. 13. Le code (coté serveur) public class BlahFormatter : ICanHaz { public string BlahFromUrl() { var context = Config.GetGlobalConfig("blahContext"); String url = HttpContext.Current.Request.Url; var mehConverter = new MehConvertor(context); var blah = BlahFactory.getFreshBlah(url); var meh = mehConvertor.convert(blah); return meh.toString(); } }
  14. 14. Le code (cote client) e = "" function toggleElm(cls) { for (i = 0; i < document.all.length; i++) { if (document.all[i].className == cls) { e = document.all[i] } } }
  15. 15. Le code (build) HAI 1.2 CAN HAZ STDIO? I HAZ A FILE_NAME ITZ 'build.environment' I HAZ A SERVR ITS noob PLZ OPEN FILE FILE_NAME? AWSUM THX SERVR R FILE O NOES INVISIBLE "WFT ERRER?" SERVR, WTF? OMG "PROD" I IZ BUILD_PROD GTFO OMG "TEST" I IZ BUILD_TEST GTFO OMGWTF I IZ BUILD_DEV OIC KTHXBYE
  16. 16. L'équipe existante
  17. 17. L’équipe existante Pas toujours ouverte au changement
  18. 18. Bozo bit Je ne parle pas aux cons, ça les instruit http://c2.com/cgi/wiki?SetTheBozoBit
  19. 19. Les clients existants
  20. 20. Les problèmes existants ● Le produit n'est pas stable ● Il manque des fonctionnalités ● Le temps d’évolution est trop long ● L’équipe n'est pas stable / formée / motivée ● La direction met la pression, sans direction ● Le code n'est pas très structuré
  21. 21. L'existant
  22. 22. Il suffit de l'implémenter Un dev à la direction : “On peut commencer des pratiques agiles ?”
  23. 23. Acte 2 Ca n'avance plus
  24. 24. Comment est-on arrivé là ? Cercle vicieux des manques : – De temps – De connaissances – D'organisation – D’évolution – De tests – De passion
  25. 25. Temps ● Comme on n'est pas nombreux, on a beaucoup à faire et beaucoup de retard ● Et donc on travaille à l'arrache !
  26. 26. Connaissances ● Comme on est en retard, on n'a pas le temps de faire de la veille technologique ● Comme le travail actuel nous frustre, on n'a pas envie de continuer
  27. 27. Organisation
  28. 28. Evolution ● Les clients en demandent ● La direction aussi
  29. 29. Tests
  30. 30. Passion ● Travailler dans des conditions pareilles est très fatigant, ça sape le moral ● Une équipe démotivée crée des produits sans passion ● Ce manque de passion se voit dans le résultat
  31. 31. Acte 3 Il faut que ça change
  32. 32. Comment évaluer l'existant ? ● La structure ● La technique ● L'humain ● L'attitude ● La possibilité de changer
  33. 33. Structure ● Postulat : vous n’êtes pas là pour changer l’équipe ● Donc il faut trouver les moyens d'injecter des bonnes pratiques sans trop déranger
  34. 34. Technique ● Vous êtes là pour faire avancer le projet ● Vous êtes expert dans votre domaine ● Exigez du professionnalisme, soyez l’ingénieur que vous êtes
  35. 35. Duplication
  36. 36. SOLID ● Principe de Separation de responsabiltés ● Principe d'Ouvert / Fermé ● Principe de substitution de Liskov ● Principe de ségrégation d'Interface ● L'inversion de Dépendance
  37. 37. Humain ● Est-ce que les collègues veulent changer ? ● Est-ce que les devs sont traités avec respect ? ● Les collègues sont-ils honnêtes dans leurs interactions ? ● Les chefs s'imposent-ils des échéances irréalisables ?
  38. 38. Attitude ● L'ambiance est-elle bonne ? ● Est-ce que les problèmes sont la faute des autres ?
  39. 39. Le test de Joël 1.Utilisez-vous un système de gestion de version ? 2.Pouvez-vous effectuer une compilation en une seule étape ? 3.Faites-vous des compilations journalières? 4.Avez-vous un logiciel de suivi de problèmes ? … ( il y a 12 questions )
  40. 40. Comment s'en sortir ? ● Tests ● Restructuration ● Organisation ● Réduction de dette technique ● Maîtrise de l'environnement ● Formation ● Méthodologie
  41. 41. Tests
  42. 42. Restructuration du code ● Ajouter et/ou réorganiser le projet pour qu'il soit compréhensible et cohérent ● Enlever le code mort, les fonctionnalités non-nécessaires, tout ce qui encombre le code Credits - http://www.qwan.eu/en
  43. 43. Organisation ● N'oubliez pas le but final, ● Faire de la thune ● Euh, de créer de la valeur
  44. 44. Organisation
  45. 45. Dette technique ● Ne pas la cacher, partager la douleur ● L'isoler ● Préparer pour l'injection de dépendances ● Rendre le code testable → découplage
  46. 46. Revue de code
  47. 47. Le code (côté serveur) public class BlahFormatter : ICanHaz { public string BlahFromUrl() { var context = Config.GetGlobalConfig("blahContext"); String url = HttpContext.Current.Request.Url; var mehConverter = new MehConvertor(context); var blah = BlahFactory.getFreshBlah(url); var meh = mehConvertor.convert(blah); return meh.toString(); } }
  48. 48. Le code (côté serveur) public class BlahFormatter : ICanHaz { public string BlahFromUrl(string Url, IConvertor convertor) { var blah = BlahFactory.getFreshBlah(url); var meh = mehConvertor.convert(blah); return meh; } }
  49. 49. Le code (côté client) e = "" function toggleElm(cls) { for (i = 0; i < document.all.length; i++) { if (document.all[i].className == cls) { e = document.all[i] } } }
  50. 50. Le code (côté client) var selectedElements; function toggleElm(cls) { selectedElements = document.getElementsByClassname(cls); }
  51. 51. Environnement ● Insister sur les outils suffisants, au minimum ● Machines performantes ● Environnement de développement isolé ● Automatisation des builds et des tests ● Éviter les espaces ouverts généralisés
  52. 52. Formation ● Créer / inculquer une culture d’apprentissage ● Proposer des ateliers aux pauses déjeuner (dojos, découvertes techniques, discussions) ● Discuter avec l’équipe de la technique ● Jeux sérieux –> tastycupcakes.org
  53. 53. Méthodes
  54. 54. Focaliser sur l'important ● Un logiciel stable et maintenable ● Des clients contents et collaboratifs ● Un quotidien épanouissant ● De l'excellence technique ● Du bonheur, quoi ?
  55. 55. Honnête ● Exposer les fraudes ● Insister sur des échéances justes ● Ne pas vous laisser écraser
  56. 56. Humilité ● Savoir reconnaître ses fautes, ses erreurs “L'humilité n'est pas de penser moins à soi-même, mais penser moins de soi-même” C. S. Lewis
  57. 57. Résumé ● Cliquez ici pour ajouter un résumé Les 16 C s ● Courage ● Compassion ● Collaboration ● Capacité ● Communauté ● Cohérence ● Compréhension ● Conclusif ● Coordination ● Correct ● Confort ● Composé ● Créatif ● Convaincant ● Convivial ● Clair
  58. 58. C’est pas la taille de l’épée qui compte, c’est l’agilité du mousquetaire
  59. 59. Un peu de lecture
  60. 60. Un peu plus...
  61. 61. Merci ! ● Aux organisateurs de l'Agile Tour Paris ● Aux participants ! ● A Upwiser et tous mes anciens et futurs collaborateurs ● A tous les agilistes ● A Okiwi.org et les agilistes de Bordeaux
  62. 62. License Cette présentation est sous les licenses ● Beerware ● WTFPL
  63. 63. Merci à nos sponsors Prestige Platinum Gold

×