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

Improving Development Flow

2c1389cd34e090ffb7c71ecbe3b00e1b?s=47 Marc
October 10, 2013

Improving Development Flow

Overview of key elements, concepts and enthymemes that influence development flow.

2c1389cd34e090ffb7c71ecbe3b00e1b?s=128

Marc

October 10, 2013
Tweet

Transcript

  1. IMPROVING DEVELOPMENT FLOW INTRODUCTORY MATERIAL

  2. LEAN PRINCIPLES ELIMINATE WASTE DEFER DECISIONS 360º PANORAMA BUILT-IN QUALITY

    DELIVER LEARN
  3. LEAN PRINCIPLES ELIMINATE WASTE DEFER DECISIONS 360º PANORAMA BUILT-IN QUALITY

    DEVOPS ARCHITECTURE MANAGEMENT CODING
  4. DEVELOPMENT FLOW CLEAN ARCHITECTURE LEAN MANAGEMENT SMART OPERATIONS TEAM CULTURE

    BEAUTIFUL CODE MEASURABLE UX Key Elements
  5. PRESERVING DEVELOPMENT FLOW COST ($) GOOD CODE DIRTY CODE TIME

    (⌚)
  6. PRESERVING DEVELOPMENT FLOW DIRTY CODE NO FUTURE BANKRUPTCY REWRITE OPPORTUNITY

    X COST ($) TIME (⌚)
  7. PRESERVING DEVELOPMENT FLOW TIME REMAINING WORK PLANNED RELEASE FULL QUALITY

    RELEASE TECHNICAL DEBT Pressure applied RESULT On time, On budget CLAIM Productivity improved
  8. BOOST FLUIDITY ADAPTABILITY SHRINK VISCOSITY STAGNATION PRESERVING DEVELOPMENT FLOW

  9. SOFTWARE QUALITY PORTABILITY MAINTAINABILITY EFFICIENCY RELIABILITY FUNCTIONALITY USABILITY INTERNAL EXTERNAL

    QUALITY ISO9126
  10. SOFTWARE COMPLEXITY PROGRAMMER PROGRAM coding testing debugging modifying DIFFICULTY

  11. SOFTWARE METRICS SIZE Source Lines of Code - SLOC METHOD

    Test Code Coverage - TCC Cyclomatic Complexity - CC CLASS / MODULE Comment Percentage - CP Lack of Cohesion in Methods - LCOM Coupling Between Object Classes - CBO # Methods, Files, Classes &c.
  12. SIZE Less is more. Sometimes...

  13. SIZE ARTIFACTS DEVELOPMENT RUNTIME Disk Memory Source code DEPLOYMENT Packages

    Network Feature creep Patchwork Automated tools Heavyweight frameworks Careless packaging FATTEN SOURCES
  14. SOURCE CODE SURFACE SLOC # CLASSES # PACKAGES

  15. METHODS

  16. CYCLOMATIC COMPLEXITY Number of independent execution paths

  17. M = E - N + 2P WHERE entry for

    loop exit CYCLOMATIC NUMBER E = # Edges N = # Nodes P = # Exit nodes
  18. M = 5 - 5 + 2 1 2 3

    4 5 CYCLOMATIC NUMBER 2 1 2 3 5 4
  19. CYCLOMATIC NUMBER 2 1 10 5 SAFE DANGEROUS HIGHLY DANGEROUS

    CATASTROPHIC
  20. TEST CODE COVERAGE COMPLIANCE LEVELS Test Effectiveness Ratio - TER

    Statement Control-flow branches Linear Code Sequence and Jump - LCSAJ TER1 TER2 TER3
  21. CLASS / MODULE

  22. FAN-IN FAN-OUT CHILDREN COUPLING Depth of inheritance

  23. The most effectively modular system is the one for which

    the sum of functional relatedness between pairs of elements not in the same module is minimized; among other things, this tends to minimize the required number of intermodular connections and the amount of intermodular coupling. For each module in isolation, how tightly bound or related its internal elements are to one another. Edward Yourdon & Larry L. Constantine Structured Design “ COHESION
  24. EQUILIBRIUM

  25. EQUILIBRIUM Multi-level Quality & Planning Key abstractions Well defined boundaries

    Clean interactions SEMANTICS FOCUS Visualize project state Minimize time-boxing Avoid isolation Forget frameworks EMBODIMENT
  26. GET INTO FLOW State of mind in which awareness and

    action become one
  27. HAVE FUN HARD FUN SERIOUS FUN Challenge Mastery Accomplishment Purpose

    Focus Meaning S.M.A.R.T GOALS CELEBRATE CONTINUOUS REINFORCEMENT
  28. CRITICAL ADVICE PRACTICES ARE JUST MEANS TO ACHIEVE GOALS

  29. THANK YOU!