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

638 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
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
638
Sur SlideShare
0
Issues des intégrations
0
Intégrations
61
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Memphis → Montpellier → Marseille → Marmande
  • Qui connaît cet homme ?
  • Il raconte qu&amp;apos;il a eu une experience apres lequel tout lui semblait terne, … pourri, corrompu, unes series de taches repetitive sans interet
  • Dev a l&amp;apos;arache
    Big design upfront
    Brassage del&amp;apos;equipe
  • Tell a story here
  • Probablement pas le v1, mais le v2 ou v3
    Parce qu&amp;apos;on l&amp;apos;a déjà réécrit
    Il y a toujours pas de tests, du moins comprehensive et automatise
    Complexe, jamais simple
    Il y a neamoins des clients qui l&amp;apos;utisent
    Tous les jours
    Et qui en dependent
  • Des brave gens, pas assez nombreux
    Souvent quelques membres de l’équipe d’origine
    D’expérience variable, certains n&amp;apos;ayant travaille que sur ce projet
    Structure hiérarchique – au moins un meneur ou héro
  • Jim McCarthy
    Dynamics of Software Development 1995
    Software for Your Head 2002 – intro to Core Protocols
  • Vous etes qu&amp;apos;un seul des ses problemes
    Il a a peine le temps pour exprimer ses besoins
    Ses clients lui mettent beaucoup de pression,il vous le partage
  • C&amp;apos;est le cumule du produit bancale, l’équipe mal-organise et surmenée, les clients frustres et demandeur, la direction frustre et confuse sur comment faire avancer
    C&amp;apos;est le manque de structure et bons pratiques
    Le manque de l’agilité !
  • Find image of encombrement
  • Question ouverte : qui a déjà travaille avec un dev qui ouvertement s&amp;apos;en foutait de son travail.
    « mec, je fais ça parce que c&amp;apos;est le diplôme que j&amp;apos;ai. »
    « je code pas après le boulot »
  • Vu l’état des lieux, on a à peine assez de temps pour corriger des bugs, on n&amp;apos;a surtout pas de temps pour s&amp;apos;organiser mieux
    La direction veut ajouter plus de contrôle, qui nous prend d&amp;apos;autant plus de temps
  • L’équipe aussi
    Personne sait comment changer
    Ou au moins, prend les choses en mains pour les faire changer
  • Comme on code toujours dans l&amp;apos;urgence, on n&amp;apos;a pas de temps pour faire des tests
    Donc on augmente la liste de bugs
  • 35 heures, c&amp;apos;est deja trop
  • Corrigez-vous les bugs avant d&amp;apos;écrire de nouvelles fonctionnalités ?
    Avez-vous un planning de développement à jour ?
    Avez-vous des spécifications fonctionnelles ? (« spec »)
    Les programmeurs ont-ils un environnement de travail calme (facilités à la concentration, etc.) ?
    Utilisez-vous les meilleurs outils qu&amp;apos;on puisse acheter ? (le matériel, notamment)
    Avez-vous des testeurs ?
    Les candidats doivent-ils écrire du code pendant leur entretien d&amp;apos;embauche ?
    Faites-vous des tests utilisateur complet ?
    Joel Spolsky compare son test au processus d&amp;apos;évaluation SEMA créé par l&amp;apos;unversité Carnegie Mellon et affirme que là où SEMA a besoin de plusieurs mois d&amp;apos;implémentation, le Joel Test permet une évaluation immédiate de la qualité d&amp;apos;une équipe de développement. Toutefois, il précise que son test n&amp;apos;a qu&amp;apos;une valeur indicative et qu&amp;apos;il ne devrait pas être utilisé pour évaluer les équipes de développement produisant les logiciels utilisés pour piloter une centrale nucléaire.
  • Ifnd an image of a tunnel
    Or a compass
  • Validation de l&amp;apos;existant
    « Je ne crois que ce que je vois »
    Du vert en occurance !
    Si on sait pas ce qu&amp;apos;on a cassé, comment on peut être sur ?
  • Quand on voit pas la sortie, on peut oublier cet aspet
  • Chacun travaille dans son domaine d&amp;apos;expertise
  • 2 definitions :
    1. recourcis fait expres
    Gros switch case deguelasee au lieu de sous-classes
    2. incompetance – code degeu parce qu&amp;apos;on s&amp;apos;en fout, sait pas faire mieux
    (stagiares)
  • Le meilleur moyon de s&amp;apos;assurer d&amp;apos;un code de qualite
    Attaque le code pas la personne
    Nul n&amp;apos;est parfait
  • Passer les dependances
    Eviter les classes statiques
  • Eviter les globaux (var)
    Eviter les globaux tres commun (e)
    Eviter les boucles couteux
  • Story about long compiles
  • Insister sur des formations (si on demande pas, on nous les propose pas)
  • Agile bien sur !
    XP, parfait pour petites equipes
    Scrum, pour une ou plusieurs equipes
    Kanban, peut-etre mieux adapter à l&amp;apos;existant
    Quelque chose qui suit les principes agile
  • 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

    ×