embrace the past
play

Embrace The Past How Software Evolution Lets You Understand Large - PowerPoint PPT Presentation

Embrace The Past How Software Evolution Lets You Understand Large Codebases @AdamTornhill adam.tornhill@empear.com http://www.empear.com/ Motivation Is it a Failure to Improve? Most complex component @AdamTornhill Technical Debt - How Much


  1. Embrace The Past How Software Evolution Lets You Understand Large Codebases @AdamTornhill adam.tornhill@empear.com http://www.empear.com/

  2. Motivation

  3. Is it a Failure to Improve? Most complex component @AdamTornhill

  4. Technical Debt - How Much Is Enough?

  5. Is a Man-Month Still Mythical? Responsible for the merge https://pragprog.com/book/atcrime/your-code-as-a-crime-scene

  6. Why Do We Keep Repeating The Same Misstakes? What’s absent? Time and Social Information! @AdamTornhill

  7. Embrace The Past Time Social information @AdamTornhill

  8. All Code is Equal …but some Code is more equal than others* * Sorry, George Orwell

  9. Change Distribution of Files 12 Years of Ruby on Rails 1 Year in Roslyn (C#, VB) 6 Years of Erlang Change Frequency Each file in the system

  10. Hotspots - A Tool To Prioritize @AdamTornhill

  11. Hotspot Code Complexity Code Change Frequency @AdamTornhill

  12. Hotspots - A Tool To Prioritize Hotspots Hotspots

  13. Code is Auto-Destructive Art

  14. Focus on the Code that Matters 2.6% of the code, 15.5% effort 2.5% of the code, 11.0% effort 2.4% of the code, 13.3% effort ASP.NET MVC 200 kLoC Mono 6.7 MLoC Docker 500 kLoC @AdamTornhill

  15. Prioritize with Hotspots Complex Code Important Hotspots: ~3-6% of the total Code @AdamTornhill

  16. Normalization of Deviance @AdamTornhill

  17. Supervise your Complexity Trends Refactoring Complexity Increasing complexity Increases again Lines of Code @AdamTornhill

  18. Software Half-Life “ Reducing this half-life means any code you are looking at is likely to be either very recent or old. We discover that reasoning about code becomes harder when there is lots of code in the grey area between these two. ” Dan North https://leanpub.com/software-faster

  19. Evolutionary Stable Code Young Code Old Code @AdamTornhill

  20. Case Study: Commodities in Clojure @AdamTornhill

  21. Case Study: Commodities in Clojure Package: “asm” - ClassReader.java - MethodWriter.java - … @AdamTornhill

  22. Case Study: Commodities in Clojure @AdamTornhill

  23. Case Study: CPython cjkcodecs - … Different Rates of Change multibytecodec.c => 1 month since last change mappings => 10 years (!) since last change @AdamTornhill

  24. Code Age : a much underused driver of software design . What if… …we organize our code by age? …we turn stable packages into libraries? …we move and refactor code that fails to stabilize? @AdamTornhill

  25. Organizational problems are mistaken as technical issues @AdamTornhill

  26. A Social View of Clojure

  27. A Social View of Clojure Rich Hickey Stuart Halloway … … …

  28. Teams Underperform

  29. Process Loss Individual Contributions Team Work Real Productivity The Potential Productivity Process Loss @AdamTornhill

  30. Study Team Coordination

  31. Measuring Conway’s Law Features Architectural Pattern: Package by Feature Views @AdamTornhill

  32. Team The Perils of Feature Teams Team Team Team Team Team Team Team Team Team Team Team @AdamTornhill

  33. The Gatekeeper/Architect Pattern https://en.wikipedia.org/wiki/Amdahl%27s_law @AdamTornhill

  34. Alternative: The Team as Gatekeeper @AdamTornhill

  35. Diffusion of Responsibility

  36. Why Hotspots stay where they are Immutable Design

  37. Align Your Architecture and your Organisation @AdamTornhill

  38. Make Decisions Influenced By Data @AdamTornhill

  39. Read More www.adamtornhill.com/articles/aspnetclones/killtheclones.html www.adamtornhill.com/articles/socialside/socialsideofcode.htm The Tools as a Service (work in progress) https://codescene.io/ @AdamTornhill adam.tornhill@empear.com http://www.empear.com/

Recommend


More recommend