Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DETTE TECHNIQUE ET ENTROPIE DU LOGICIEL — FlowC...

DETTE TECHNIQUE ET ENTROPIE DU LOGICIEL — FlowCon 2018

Souvent mal comprise et confondue avec l’érosion du logiciel, la dette technique a mauvaise presse. Elle reste pourtant un processus essentiel (si maitrisé correctement) lors des développements. A contrario, l’entropie logicielle est un phénomène naturel conduisant progressivement le logiciel à perdre en maintenabilité et évolutivité. Nous étudierons les causes d’accélération de cette entropie, mais surtout, comment combattre ce processus qui finit par bloquer l’évolution du logiciel (et au passage sa rentabilité) ? Une conférence ouverte à tous (y compris non développeurs), pour s’intéresser à pourquoi et comment le code source d’un logiciel finit par être immaintenable.

Arnaud LEMAIRE

November 27, 2018
Tweet

More Decks by Arnaud LEMAIRE

Other Decks in Programming

Transcript

  1. A TICKING BOMB The ticking time bomb of technical debt

    is ticking louder and louder, and the clock is counting down faster and faster « » – Gartner
  2. LEHMAN’S LAW OF SOFTWARE EVOLUTION "Continuing Change" — a system

    must be continually adapted or it becomes progressively less satisfactory "Continuing Growth" — the functional content of a system must be continually increased to maintain user satisfaction over its lifetime "Increasing Complexity" — as a system evolves, its complexity increases unless work is done to maintain or reduce it. "Declining Quality" — the quality of a system will appear to be declining unless it is rigorously maintained and adapted to operational environment changes.
  3. LA DEFINITION D’ORIGINE The obligations incurred by a software organization

    when it chooses an expedient design or construction approach that increases complexity and is more costly in the long term « » – Ward Cunningham
  4. MAIS N’OUBLIEZ PAS QUE FAIRE SIMPLE N’EST PAS FACILE… (ET

    QUE CE QUI PARAIT COMPLEXE N’EST PEUT ETRE QUE COMPLIQUE)
  5. LA DEFINITION D’ORIGINE The obligations incurred by a software organization

    when it chooses an expedient design or construction approach that increases complexity and is more costly in the long term. « » – Ward Cunningham
  6. La vélocité n’est pas bonne, il reste beaucoup de user

    story L’équipe génère de la « dette technique » pour accélérer Il faut résorber la dette au début du sprint suivant On arrive à la fin du sprint
  7. Les temps de développement sont trop longs L’équipe n’arrive pas

    à fournir à temps les fonctionnalités L’équipe génère de la « dette technique » pour accélérer Il faut prendre le temps de résorber la dette
  8. La complexité du système le rend ingérable Panique / Code

    legacy Il faut prendre le temps de résorber la dette Mais on n’a pas le temps
  9. Whenever I see job titles like react developper, I think

    about Hammer Carpenter or Spoon Cook « » @salomvary SE CONCENTRER SUR LES OUTILS
  10. La plus forte cause d'aliénation dans le monde contemporain réside

    dans cette méconnaissance de la machine, qui n'est pas une aliénation causée par la machine, mais par la non-connaissance de sa nature et de son essence « » – Simondon L’ALIENATION PAR LA TECHNIQUE
  11. This second is the most dangerous system a man ever

    designs. […] The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one. « » – Brooks LE SYNDROME DU DEUXIEME SYSTEM
  12. BUSINESS-TECHNIQUE On fait passer les besoins de la base de

    données avant ceux des utilisateurs ce qui nous donne des expériences assez pourries « » @WalterStephanie
  13. [Une des pire dette est] la dette fonctionnelle quand le

    métier finit par s’aligner sur une mauvaise application « » @ygrenzinger BUSINESS-TECHNIQUE
  14. Code that’s too scary to update and too profitable to

    delete « » LEGACY CODE – @dylanbeattie
  15. Software is meant to be soft (easy to change) as

    opposed to hardware « » LEGACY CODE
  16. An important result […] is a movement toward simplicity of

    design. Before I used refactoring, I always looked for flexible solutions. I would wonder how any requirement would change during the life of the system. Because changes were expensive, I would look to build a design that would stand up to the changes I could foresee. The problem with building a flexible solution is that flexible solutions are more complex than simple ones. […] Building flexibility in all these places makes the overall system a lot more complex and expensive to maintain. « » REFACTORING – Fowler
  17. WE NEED MORE CHEFS We tend to get sidetracked by

    tools when we should really be thinking about what our tools are supposed to achieve. Chefs instead of recipe book user « » @_edejong