Slide 1

Slide 1 text

IMPROVING DEVELOPMENT FLOW INTRODUCTORY MATERIAL

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

LEAN PRINCIPLES ELIMINATE WASTE DEFER DECISIONS 360º PANORAMA BUILT-IN QUALITY DEVOPS ARCHITECTURE MANAGEMENT CODING

Slide 4

Slide 4 text

DEVELOPMENT FLOW CLEAN ARCHITECTURE LEAN MANAGEMENT SMART OPERATIONS TEAM CULTURE BEAUTIFUL CODE MEASURABLE UX Key Elements

Slide 5

Slide 5 text

PRESERVING DEVELOPMENT FLOW COST ($) GOOD CODE DIRTY CODE TIME (⌚)

Slide 6

Slide 6 text

PRESERVING DEVELOPMENT FLOW DIRTY CODE NO FUTURE BANKRUPTCY REWRITE OPPORTUNITY X COST ($) TIME (⌚)

Slide 7

Slide 7 text

PRESERVING DEVELOPMENT FLOW TIME REMAINING WORK PLANNED RELEASE FULL QUALITY RELEASE TECHNICAL DEBT Pressure applied RESULT On time, On budget CLAIM Productivity improved

Slide 8

Slide 8 text

BOOST FLUIDITY ADAPTABILITY SHRINK VISCOSITY STAGNATION PRESERVING DEVELOPMENT FLOW

Slide 9

Slide 9 text

SOFTWARE QUALITY PORTABILITY MAINTAINABILITY EFFICIENCY RELIABILITY FUNCTIONALITY USABILITY INTERNAL EXTERNAL QUALITY ISO9126

Slide 10

Slide 10 text

SOFTWARE COMPLEXITY PROGRAMMER PROGRAM coding testing debugging modifying DIFFICULTY

Slide 11

Slide 11 text

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.

Slide 12

Slide 12 text

SIZE Less is more. Sometimes...

Slide 13

Slide 13 text

SIZE ARTIFACTS DEVELOPMENT RUNTIME Disk Memory Source code DEPLOYMENT Packages Network Feature creep Patchwork Automated tools Heavyweight frameworks Careless packaging FATTEN SOURCES

Slide 14

Slide 14 text

SOURCE CODE SURFACE SLOC # CLASSES # PACKAGES

Slide 15

Slide 15 text

METHODS

Slide 16

Slide 16 text

CYCLOMATIC COMPLEXITY Number of independent execution paths

Slide 17

Slide 17 text

M = E - N + 2P WHERE entry for loop exit CYCLOMATIC NUMBER E = # Edges N = # Nodes P = # Exit nodes

Slide 18

Slide 18 text

M = 5 - 5 + 2 1 2 3 4 5 CYCLOMATIC NUMBER 2 1 2 3 5 4

Slide 19

Slide 19 text

CYCLOMATIC NUMBER 2 1 10 5 SAFE DANGEROUS HIGHLY DANGEROUS CATASTROPHIC

Slide 20

Slide 20 text

TEST CODE COVERAGE COMPLIANCE LEVELS Test Effectiveness Ratio - TER Statement Control-flow branches Linear Code Sequence and Jump - LCSAJ TER1 TER2 TER3

Slide 21

Slide 21 text

CLASS / MODULE

Slide 22

Slide 22 text

FAN-IN FAN-OUT CHILDREN COUPLING Depth of inheritance

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

EQUILIBRIUM

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

GET INTO FLOW State of mind in which awareness and action become one

Slide 27

Slide 27 text

HAVE FUN HARD FUN SERIOUS FUN Challenge Mastery Accomplishment Purpose Focus Meaning S.M.A.R.T GOALS CELEBRATE CONTINUOUS REINFORCEMENT

Slide 28

Slide 28 text

CRITICAL ADVICE PRACTICES ARE JUST MEANS TO ACHIEVE GOALS

Slide 29

Slide 29 text

THANK YOU!