Difference between revisions of "What is the right mix of practices and tools for introducing CI"

From CitconWiki
Jump to: navigation, search
(cnaact)
(monact)
Line 1: Line 1:
 +
lialererch
 
noc4tcoeldr
 
noc4tcoeldr
 
nozelviac
 
nozelviac
Line 10: Line 11:
 
* Remove some obstacles to communication and collaboration
 
* Remove some obstacles to communication and collaboration
 
** Increase happiness
 
** Increase happiness
** Overcome “culture of blame”
+
** Overcome “culture of blame”
 
** Accountability and empowerment
 
** Accountability and empowerment
 
* Improve visibility and assurance of code quality
 
* Improve visibility and assurance of code quality
Line 33: Line 34:
 
** Light-hearted embarrassment tokens / achievement awards
 
** Light-hearted embarrassment tokens / achievement awards
 
* Measurements
 
* Measurements
** “Tasks completed each period” (e.g. Stories per iteration)
+
** “Tasks completed each period” (e.g. Stories per iteration)
 
** Look at valuable quantitative metrics (e.g. Cyclomatic complexity)
 
** Look at valuable quantitative metrics (e.g. Cyclomatic complexity)
 
* Code reviews
 
* Code reviews
** Set the context for positive outcome – it’s not for the mob-flaming of the code author or their skills
+
** Set the context for positive outcome – it’s not for the mob-flaming of the code author or their skills
** Impromptu: “Hey there, whatchya doin?”
+
** Impromptu: “Hey there, whatchya doin?”
 
** Ask questions to understand design intent
 
** Ask questions to understand design intent
 
** Ask someone to look at yours
 
** Ask someone to look at yours
 
** Have the strong developers demonstrate good examples for others to learn from
 
** Have the strong developers demonstrate good examples for others to learn from
 
** Knowledge sharing
 
** Knowledge sharing
* Don’t fall for overly-draconian style rules early on
+
* Don’t fall for overly-draconian style rules early on
  
 
== Tools ==
 
== Tools ==
Line 53: Line 54:
 
** Coverage (improving trend)
 
** Coverage (improving trend)
 
** Change notification
 
** Change notification
** “Basic” code consistency checks
+
** “Basic” code consistency checks
  
 
* Consistent code
 
* Consistent code
Line 70: Line 71:
  
 
=== Later ===
 
=== Later ===
* “Problematic code” detection
+
* “Problematic code” detection
 
** Findbugs
 
** Findbugs
 
** Google singleton collector
 
** Google singleton collector
** Complexian, Jeff’s “Crap4J”
+
** Complexian, Jeff’s “Crap4J”
 
** Simian
 
** Simian
 
** PPMD
 
** PPMD

Revision as of 09:14, 13 February 2008

lialererch noc4tcoeldr nozelviac Facilitated by Jeff Frederick

What pain will they address?

  • Expensive (latent) release cycles
    • Make it easier to do what I want to do
    • Spend less time doing mundane activities
  • Engage in higher-value activities rather than repetitive manual tasks
  • Remove some obstacles to communication and collaboration
    • Increase happiness
    • Overcome “culture of blame”
    • Accountability and empowerment
  • Improve visibility and assurance of code quality
    • Sense of accomplishment
    • More confidence / courage
    • Reduce need to re-write due to lack of knowledge / hit-by-bus
    • Ship more often, happier customer, underpants gnomes PROFIT!

Where do I start

  • Recognise we have a problem
  • Consensus on what the problems are and that we want to change
  • Identify the outcomes we would like to have
  • Listen & understand how the issues impact others
  • Change behaviours
    • Empathetic, trust-building
    • Pick some easy wins to build momentum
    • May make it feel worse before it gets better
    • Frequent retrospectives (perhaps daily)
    • Talk to each other (across teams). Brown bags, socialise, catch up over lunch
    • Co-located cross-functional team
    • Light-hearted embarrassment tokens / achievement awards
  • Measurements
    • “Tasks completed each period” (e.g. Stories per iteration)
    • Look at valuable quantitative metrics (e.g. Cyclomatic complexity)
  • Code reviews
    • Set the context for positive outcome – it’s not for the mob-flaming of the code author or their skills
    • Impromptu: “Hey there, whatchya doin?”
    • Ask questions to understand design intent
    • Ask someone to look at yours
    • Have the strong developers demonstrate good examples for others to learn from
    • Knowledge sharing
  • Don’t fall for overly-draconian style rules early on

Tools

To Start

  • The Basics
    • Unit tester (e.g. JUnit)
    • Builder (e.g. Ant)
    • CI server (e.g. CC)
    • Coverage (improving trend)
    • Change notification
    • “Basic” code consistency checks
  • Consistent code
    • Jalopy
    • Checkstyle
    • IntelliJ inspections
  • Change set notification, review tools
    • SCM commit triggers
    • FishEye
    • RSS
  • Coverage
    • Clover, Cobertura
    • Emma

Later

  • “Problematic code” detection
    • Findbugs
    • Google singleton collector
    • Complexian, Jeff’s “Crap4J”
    • Simian
    • PPMD
  • Test veracity
    • Agitator
    • Jester
  • What files are being changed by others?
    • Crucible
    • Conflict
  • Profiling, performance tuning
    • JProbe, etc