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

XP Days Ukraine -- A Crystal Ball to Prioritize...

XP Days Ukraine -- A Crystal Ball to Prioritize Technical Debt

Most organizations find it hard to prioritize and repay their technical debt, and the main reason is the scale of modern systems with million lines of code and multiple development teams; No one has a holistic overview. So what if we could mine the collective intelligence of all contributing programmers and start to make decisions based on data from how the organization actually works with the code? This session introduces one such approach with the potential to change how we view software systems.

Adam Tornhill

November 10, 2017
Tweet

More Decks by Adam Tornhill

Other Decks in Programming

Transcript

  1. “Like a financial debt, the technical debt incurs interest payments,

    which come in the form of the extra effort that we have to do in future development” Questioning Technical Debt https://martinfowler.com/bliki/TechnicalDebt.html @AdamTornhill
  2. Wish List: Information to Prioritize Technical Debt @AdamTornhill Where’s the

    Highest Interest Rate? Does the Architecture Support the way our System Evolves? Any Productivity Bottlenecks for Inter-Team Coordination?
  3. Collective Intelligence @AdamTornhill Uncover Evolutionary Patterns In A System Commit:

    b557ca5 Date: 2016-02-12 Author: Kevin Flynn Fix behavior of StartsWithPrefix 8 27 src/Mvc.Abstractions/ModelBinding/ModelStateDictionary.cs 1 10 src/Mvc.Core/ControllerBase.cs 1 1 src/Mvc.Core/Internal/ElementalValueProvider.cs 1 39 src/Mvc.Core/Internal/PrefixContainer.cs Commit: fd6d28d Date 2016-02-10 Author: Professor Falken Make AddController not overwrite existing IControllerTypeProvider 8 1 src/Core/Internal/ControllersAsServices.cs 48 0 test/Core.Test/Internal/ControllerAsServicesTest.cs 13 0 test/Mvc.FunctionalTests/ControllerFromServicesTests.cs Commit: 910f013 Date :2016-02-05 Author Lisbeth Salander Fixes #4050: Throw an exception when media types are empty. 20 1 src/Mvc.Core/Formatters/InputFormatter.cs Social Information A Time Dimension
  4. All Code is Equal …but some Code is more equal

    than others* * Sorry, George Orwell
  5. Why Hotspots Work 1 Year in Roslyn (C#, VB) 6

    Years of Erlang 12 Years of Ruby on Rails Each file in the system Change Frequency Reference: Your Code as a Crime Scene, ISBN:1680500384 Prioritize improvements here! Ignore the long tail
  6. Hotspots Summary Hotspots find the code with the highest interest

    rate. Hotspots work because all code isn’t equal. Supervise the Complexity Trend of your Hotspots.
  7. FuelInjector Temporal Coupling Diagnostics Combustion Commit #1 Commit #2 Commit

    #3 Time Read More: http://www.empear.com/blog/software-revolution-part3/ @AdamTornhill
  8. Model Controller View Services ORM Repository SQL Layers: A Separation

    of Concerns General Observation: 30-70 % of all commits touch multiple layers @AdamTornhill Change Coupling
  9. Tools Evolution Radar http://reveal.inf.usi.ch/web/dambros/tools/evoradar.php CodeScene: https://codescene.io/ Moose Platform: open source

    platform http://www.moosetechnology.org/ Code Maat: open source, text-only (GPL) https://github.com/adamtornhill/code-maat
  10. Architecture Summary Identify your Architectural Hotspots. Know your System’s Tipping

    Point. Use Temporal Coupling to Evaluate your Architecture.
  11. Fractal Value: M. D’Ambros, M. Lanza, and H Gall. Fractal

    Figures: Visualizing Development Effort for CVS Entities. Inter-Team Overlap Fractal Value 0 ~1.0 Views Integration Tasks Backup Tests Measure Team Coordination Excess Parallel Work The Diffusion of Responsibility
  12. Measuring Conway’s Law Architectural Pattern: Package by Feature Views Features

    @AdamTornhill Front-End Team Export Team Recommendations Team Ads Team Calculations Team Backup Team
  13. Team Team Team Team Team Team Team Team Team Team

    Team Team The Perils of Feature Teams @AdamTornhill
  14. @AdamTornhill Blog on Behavioral Code Analysis http://www.empear.com/blog/ Read The Books:

    Your Code As A Crime Scene https://pragprog.com/book/atcrime/your-code-as-a-crime-scene Software Design X-Rays (October 2017) https://pragprog.com/book/atevol/software-design-x-rays Run the Analyses in CodeScene: https://codescene.io/ [email protected]