<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://citconf.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Squirrel</id>
	<title>CitconWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://citconf.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Squirrel"/>
	<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Special:Contributions/Squirrel"/>
	<updated>2026-06-04T14:10:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16478</id>
		<title>WarStoriesAndSuccesses</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16478"/>
		<updated>2019-05-18T11:15:02Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test strategies and flow and sharing of strategies&lt;br /&gt;
* Test pipelines and integration strategies across teams&lt;br /&gt;
&lt;br /&gt;
* Architecture&lt;br /&gt;
* It’s so important to assume you will miss something .. so MTTR is critical&lt;br /&gt;
&lt;br /&gt;
War stories&lt;br /&gt;
* Defeat: why can’t anyone deploy anything&lt;br /&gt;
* Victory: 3 months to change a web page —&amp;gt; changes in 1 day&lt;br /&gt;
** Text link to 404 for the purpose of recording clicks of interest for house viewing&lt;br /&gt;
* PJ: Company daily release process but often would break and often take 3 people most of the day to get it out&lt;br /&gt;
** Eventually, every time someone made a change of the code it would be deployed to prod and monitored&lt;br /&gt;
*** End to end test bankruptcy&lt;br /&gt;
** Success &lt;br /&gt;
** Monolithic system (with seams but tight coupling) was broken down into component based independently deployable systems&lt;br /&gt;
** Be prepared, this process will take 3 years (or more)&lt;br /&gt;
** How do you sell this idea?&lt;br /&gt;
*** The key to our success is shortening our feedback cycles&lt;br /&gt;
*** From Tony later: show other companies that are already past 3y to show what’s possible (and build trust)&lt;br /&gt;
* Tim: traditionally siloed functional org&lt;br /&gt;
** Idea to cash was ~ 200d&lt;br /&gt;
** 91% wait time&lt;br /&gt;
** First response was to be mad at the person pointing at the problem&lt;br /&gt;
** Improvement is slow, but it is improving&lt;br /&gt;
** It was important to just get people talking about it even if they got upset initially&lt;br /&gt;
** Value stream map made it all possible&lt;br /&gt;
* Christophe - Success: Operations team and developer teams&lt;br /&gt;
** Devs write run-books over a couple months, then throw it to the operators&lt;br /&gt;
** Big bang release every couple of months&lt;br /&gt;
** Build a more intimate relationship between Dev and Ops&lt;br /&gt;
*** Moved to central Jenkins instance from individual snowflakes&lt;br /&gt;
*** This integrated the dev workflow with the ops workflow (common environment)&lt;br /&gt;
** Decoupled infra track from application track for deployments&lt;br /&gt;
** Over a 6 month period — still monthly releases but far less stressful on everyone involved&lt;br /&gt;
** Enjoyable pizza&lt;br /&gt;
* Frederick: Goal: faster release cycle — get to weekly&lt;br /&gt;
** Current was monthly with bi-weekly patch releases&lt;br /&gt;
** Visualized value stream maps with both&lt;br /&gt;
** Took similarities and combined to 1 flow like the patch flow — currently at every 2w&lt;br /&gt;
** Giant monolith&lt;br /&gt;
** There were a lot of fears and resistance but enough trust was built to give it a try&lt;br /&gt;
** Now trying to work towards TBD&lt;br /&gt;
* Small web team gets security scan result&lt;br /&gt;
** Pen testers test quarterly — first report was very ugly&lt;br /&gt;
** Introduced PR process, but devs weren’t able to spot security vulnerabilities &lt;br /&gt;
** Secure Code Warrior gamefies this .. points for vulnerabilities found&lt;br /&gt;
** Got some training (e.g. OWASP) and testers were more involved&lt;br /&gt;
** Making progress&lt;br /&gt;
** “Why should I train you (freelancer), what if you leave&amp;quot;&lt;br /&gt;
*** “What if you don’t train us and we stay” (response)&lt;br /&gt;
* Jonathon - Failure:&lt;br /&gt;
** Cultural, hierarchical issues with a Dev silo, QA silo (which moved closer) and DevOps (eww) silo which was moved even further away&lt;br /&gt;
** Improvements were made in delivering more often, but then there was some realization/questioning of this and so deliveries are now getting slowed/spaced out&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16477</id>
		<title>WarStoriesAndSuccesses</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16477"/>
		<updated>2019-05-18T11:13:09Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test strategies and flow and sharing of strategies&lt;br /&gt;
* Test pipelines and integration strategies across teams&lt;br /&gt;
&lt;br /&gt;
* Architecture&lt;br /&gt;
* It’s so important to assume you will miss something .. so MTTR is critical&lt;br /&gt;
&lt;br /&gt;
War stories&lt;br /&gt;
* Defeat: why can’t anyone deploy anything&lt;br /&gt;
* Victory: 3 months to change a web page —&amp;gt; changes in 1 day&lt;br /&gt;
** Text link to 404 for the purpose of recording clicks of interest for house viewing&lt;br /&gt;
* PJ: Company daily release process but often would break and often take 3 people most of the day to get it out&lt;br /&gt;
** Eventually, every time someone made a change of the code it would be deployed to prod and monitored&lt;br /&gt;
*** End to end test bankruptcy&lt;br /&gt;
** Success &lt;br /&gt;
** Monolithic system (with seams but tight coupling) was broken down into component based independently deployable systems&lt;br /&gt;
** Be prepared, this process will take 3 years (or more)&lt;br /&gt;
** How do you sell this idea?&lt;br /&gt;
*** The key to our success is shortening our feedback cycles&lt;br /&gt;
*** From Tony later: show other companies that are already past 3y to show what’s possible (and build trust)&lt;br /&gt;
* Tim: traditionally siloed functional org&lt;br /&gt;
** Idea to cash was ~ 200d&lt;br /&gt;
** 91% wait time&lt;br /&gt;
** First response was to be mad at the person pointing at the problem&lt;br /&gt;
** Improvement is slow, but it is improving&lt;br /&gt;
** It was important to just get people talking about it even if they got upset initially&lt;br /&gt;
** Value stream map made it all possible&lt;br /&gt;
* Success: Operations team and developer teams&lt;br /&gt;
** Devs write run-books over a couple months, then throw it to the operators&lt;br /&gt;
** Big bang release every couple of months&lt;br /&gt;
** Build a more intimate relationship between Dev and Ops&lt;br /&gt;
*** Moved to central Jenkins instance from individual snowflakes&lt;br /&gt;
*** This integrated the dev workflow with the ops workflow (common environment)&lt;br /&gt;
** Decoupled infra track from application track for deployments&lt;br /&gt;
** Over a 6 month period — still monthly releases but far less stressful on everyone involved&lt;br /&gt;
** Enjoyable pizza&lt;br /&gt;
* Frederick: Goal: faster release cycle — get to weekly&lt;br /&gt;
** Current was monthly with bi-weekly patch releases&lt;br /&gt;
** Visualized value stream maps with both&lt;br /&gt;
** Took similarities and combined to 1 flow like the patch flow — currently at every 2w&lt;br /&gt;
** Giant monolith&lt;br /&gt;
** There were a lot of fears and resistance but enough trust was built to give it a try&lt;br /&gt;
** Now trying to work towards TBD&lt;br /&gt;
* Small web team gets security scan result&lt;br /&gt;
** Pen testers test quarterly — first report was very ugly&lt;br /&gt;
** Introduced PR process, but devs weren’t able to spot security vulnerabilities &lt;br /&gt;
** Secure Code Warrior gamefies this .. points for vulnerabilities found&lt;br /&gt;
** Got some training (e.g. OWASP) and testers were more involved&lt;br /&gt;
** Making progress&lt;br /&gt;
** “Why should I train you (freelancer), what if you leave&amp;quot;&lt;br /&gt;
*** “What if you don’t train us and we stay” (response)&lt;br /&gt;
* Failure:&lt;br /&gt;
** Cultural, hierarchical issues with a Dev silo, QA silo (which moved closer) and DevOps (eww) silo which was moved even further away&lt;br /&gt;
** Improvements were made in delivering more often, but then there was some realization/questioning of this and so deliveries are now getting slowed/spaced out&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16476</id>
		<title>WarStoriesAndSuccesses</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16476"/>
		<updated>2019-05-18T11:11:39Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test strategies and flow and sharing of strategies&lt;br /&gt;
* Test pipelines and integration strategies across teams&lt;br /&gt;
&lt;br /&gt;
* Architecture&lt;br /&gt;
* It’s so important to assume you will miss something .. so MTTR is critical&lt;br /&gt;
&lt;br /&gt;
War stories&lt;br /&gt;
* Defeat: why can’t anyone deploy anything&lt;br /&gt;
* Victory: 3 months to change a web page —&amp;gt; changes in 1 day&lt;br /&gt;
** Text link to 404 for the purpose of recording clicks of interest for house viewing&lt;br /&gt;
* PJ: Company daily release process but often would break and often take 3 people most of the day to get it out&lt;br /&gt;
** Eventually, every time someone made a change of the code it would be deployed to prod and monitored&lt;br /&gt;
*** End to end test bankruptcy&lt;br /&gt;
** Success &lt;br /&gt;
** Monolithic system (with seams but tight coupling) was broken down into component based independently deployable systems&lt;br /&gt;
** Be prepared, this process will take 3 years (or more)&lt;br /&gt;
** How do you sell this idea?&lt;br /&gt;
*** The key to our success is shortening our feedback cycles&lt;br /&gt;
*** From Tony later: show other companies that are already past 3y to show what’s possible (and build trust)&lt;br /&gt;
* Tim: traditionally siloed functional org&lt;br /&gt;
    * Idea to cash was ~ 200d&lt;br /&gt;
    * 91% wait time&lt;br /&gt;
    * First response was to be mad at the person pointing at the problem&lt;br /&gt;
    * Improvement is slow, but it is improving&lt;br /&gt;
    * It was important to just get people talking about it even if they got upset initially&lt;br /&gt;
    * Value stream map made it all possible&lt;br /&gt;
* Success: Operations team and developer teams&lt;br /&gt;
    * Devs write run-books over a couple months, then throw it to the operators&lt;br /&gt;
    * Big bang release every couple of months&lt;br /&gt;
    * Build a more intimate relationship between Dev and Ops&lt;br /&gt;
        * Moved to central Jenkins instance from individual snowflakes&lt;br /&gt;
        * This integrated the dev workflow with the ops workflow (common environment)&lt;br /&gt;
    * Decoupled infra track from application track for deployments&lt;br /&gt;
    * Over a 6 month period — still monthly releases but far less stressful on everyone involved&lt;br /&gt;
    * Enjoyable pizza&lt;br /&gt;
* Frederick: Goal: faster release cycle — get to weekly&lt;br /&gt;
    * Current was monthly with bi-weekly patch releases&lt;br /&gt;
    * Visualized value stream maps with both&lt;br /&gt;
    * Took similarities and combined to 1 flow like the patch flow — currently at every 2w&lt;br /&gt;
    * Giant monolith&lt;br /&gt;
    * There were a lot of fears and resistance but enough trust was built to give it a try&lt;br /&gt;
    * Now trying to work towards TBD&lt;br /&gt;
* Small web team gets security scan result&lt;br /&gt;
    * Pen testers test quarterly — first report was very ugly&lt;br /&gt;
    * Introduced PR process, but devs weren’t able to spot security vulnerabilities &lt;br /&gt;
    * Secure Code Warrior gamefies this .. points for vulnerabilities found&lt;br /&gt;
    * Got some training (e.g. OWASP) and testers were more involved&lt;br /&gt;
    * Making progress&lt;br /&gt;
    * “Why should I train you (freelancer), what if you leave&amp;quot;&lt;br /&gt;
        * “What if you don’t train us and we stay” (response)&lt;br /&gt;
* Failure:&lt;br /&gt;
    * Cultural, hierarchical issues with a Dev silo, QA silo (which moved closer) and DevOps (eww) silo which was moved even further away&lt;br /&gt;
    * Improvements were made in delivering more often, but then there was some realization/questioning of this and so deliveries are now getting slowed/spaced out&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16475</id>
		<title>WarStoriesAndSuccesses</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=WarStoriesAndSuccesses&amp;diff=16475"/>
		<updated>2019-05-18T11:10:19Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: Created page with &amp;quot;Test strategies and flow and sharing of strategies * Test pipelines and integration strategies across teams  * Architecture * It’s so important to assume you will miss somet...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test strategies and flow and sharing of strategies&lt;br /&gt;
* Test pipelines and integration strategies across teams&lt;br /&gt;
&lt;br /&gt;
* Architecture&lt;br /&gt;
* It’s so important to assume you will miss something .. so MTTR is critical&lt;br /&gt;
&lt;br /&gt;
War stories&lt;br /&gt;
* Defeat: why can’t anyone deploy anything&lt;br /&gt;
* Victory: 3 months to change a web page —&amp;gt; changes in 1 day&lt;br /&gt;
    * Text link to 404 for the purpose of recording clicks of interest for house viewing&lt;br /&gt;
* PJ: Company daily release process but often would break and often take 3 people most of the day to get it out&lt;br /&gt;
    * Eventually, every time someone made a change of the code it would be deployed to prod and monitored&lt;br /&gt;
        * End to end test bankruptcy&lt;br /&gt;
    * Success &lt;br /&gt;
    * Monolithic system (with seams but tight coupling) was broken down into component based independently deployable systems&lt;br /&gt;
    * Be prepared, this process will take 3 years (or more)&lt;br /&gt;
    * How do you sell this idea?&lt;br /&gt;
        * The key to our success is shortening our feedback cycles&lt;br /&gt;
        * From Tony later: show other companies that are already past 3y to show what’s possible (and build trust)&lt;br /&gt;
* Tim: traditionally siloed functional org&lt;br /&gt;
    * Idea to cash was ~ 200d&lt;br /&gt;
    * 91% wait time&lt;br /&gt;
    * First response was to be mad at the person pointing at the problem&lt;br /&gt;
    * Improvement is slow, but it is improving&lt;br /&gt;
    * It was important to just get people talking about it even if they got upset initially&lt;br /&gt;
    * Value stream map made it all possible&lt;br /&gt;
* Success: Operations team and developer teams&lt;br /&gt;
    * Devs write run-books over a couple months, then throw it to the operators&lt;br /&gt;
    * Big bang release every couple of months&lt;br /&gt;
    * Build a more intimate relationship between Dev and Ops&lt;br /&gt;
        * Moved to central Jenkins instance from individual snowflakes&lt;br /&gt;
        * This integrated the dev workflow with the ops workflow (common environment)&lt;br /&gt;
    * Decoupled infra track from application track for deployments&lt;br /&gt;
    * Over a 6 month period — still monthly releases but far less stressful on everyone involved&lt;br /&gt;
    * Enjoyable pizza&lt;br /&gt;
* Frederick: Goal: faster release cycle — get to weekly&lt;br /&gt;
    * Current was monthly with bi-weekly patch releases&lt;br /&gt;
    * Visualized value stream maps with both&lt;br /&gt;
    * Took similarities and combined to 1 flow like the patch flow — currently at every 2w&lt;br /&gt;
    * Giant monolith&lt;br /&gt;
    * There were a lot of fears and resistance but enough trust was built to give it a try&lt;br /&gt;
    * Now trying to work towards TBD&lt;br /&gt;
* Small web team gets security scan result&lt;br /&gt;
    * Pen testers test quarterly — first report was very ugly&lt;br /&gt;
    * Introduced PR process, but devs weren’t able to spot security vulnerabilities &lt;br /&gt;
    * Secure Code Warrior gamefies this .. points for vulnerabilities found&lt;br /&gt;
    * Got some training (e.g. OWASP) and testers were more involved&lt;br /&gt;
    * Making progress&lt;br /&gt;
    * “Why should I train you (freelancer), what if you leave&amp;quot;&lt;br /&gt;
        * “What if you don’t train us and we stay” (response)&lt;br /&gt;
* Failure:&lt;br /&gt;
    * Cultural, hierarchical issues with a Dev silo, QA silo (which moved closer) and DevOps (eww) silo which was moved even further away&lt;br /&gt;
    * Improvements were made in delivering more often, but then there was some realization/questioning of this and so deliveries are now getting slowed/spaced out&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=CITCONEurope2019Sessions&amp;diff=16474</id>
		<title>CITCONEurope2019Sessions</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=CITCONEurope2019Sessions&amp;diff=16474"/>
		<updated>2019-05-18T11:10:07Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;10:00&lt;br /&gt;
&lt;br /&gt;
Thierry - [[How to Avoid Branching]]&lt;br /&gt;
&lt;br /&gt;
11:15&lt;br /&gt;
&lt;br /&gt;
[[WarStoriesAndSuccesses]]&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11232</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11232"/>
		<updated>2011-11-21T00:48:42Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* Questions and Comments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Rules&amp;quot; for root-cause analyses==&lt;br /&gt;
Really suggestions for discussion. This is how [http://www.timgroup.com TIM Group] do root-cause analyses (RCAs for short).&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Some participants may tend toward blame, depending on your company culture. Need to set it up ahead of time to avoid blame - &amp;quot;inoculate&amp;quot; people against blame with a discussion at the beginning of the session. A related anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session and I don&#039;t have to do anything else.&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Please list all the problems event X caused&amp;quot;. OK if others have said your items - this naturally happens. The poll ensures everyone gets a say and no one is left out. Other methods include private ballots on post-its or email solicitation. Try to avoid proxies. Get the right people in the room (see above).&lt;br /&gt;
&lt;br /&gt;
===Write a lot===&lt;br /&gt;
When not sure what to do, write! Want to fill the board, and capture all the ideas. OK to have many whys for one item - rare that there is a single chain of whys.&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
Ask why again and again. People will resist going to the fifth why (it may actually take more). Write down items not in current why chain and promise to return to them later (be sure you actually do so to build trust). Push to get to a cultural or training issue.&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
Typically a big pause before someone says, &amp;quot;Well, maybe it&#039;s that we don&#039;t value testing highly enough&amp;quot; or something like that. Wait for the pause and let them squirm.&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of 3 minutes of down time, then you are not doing the right thing. It&#039;s OK to do part of a task (&amp;quot;Write the outline of a training programme for new sysadmins on our Puppet setup and add to induction wiki page&amp;quot;) - if the problem occurs again, you can do the next step (&amp;quot;Fill in the deployment section of the outline&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Identify tasks at many levels of the why chain (not just at the fifth why). Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
Someone (typically the one running the RCA) has to chase this to ensure it happens. Keeping to one week helps ensure proportionality and completion.&lt;br /&gt;
&lt;br /&gt;
==Questions and Comments==&lt;br /&gt;
&#039;&#039;How does this compare to retrospectives?&#039;&#039;&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other techniques for NOT losing focus?&#039;&#039;&lt;br /&gt;
Keep it short term. The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Vote every day&#039;&#039; on actions from retrospectives to determine whether or not they are being actioned. Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bickering can be a problem.&#039;&#039; Having a senior person present helps defuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
Good article on what to avoid in an RCA (above process is designed to avoid most of these errors): [http://www.reinertsenassociates.com/#tipofmonth Cult of the Root Cause] by Don Reintertsen.&lt;br /&gt;
&lt;br /&gt;
==RCA for Funny Video==&lt;br /&gt;
* Building snowmen&lt;br /&gt;
* Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
* &#039;&#039;&#039;Squirrel&#039;&#039;&#039;: Did anyone take a photo of the board? Would be good to include here (sorry I didn&#039;t think of it).&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
* Snowman destroyed - lost good snowman&lt;br /&gt;
* Wallace covered in snowman&lt;br /&gt;
* Got a cold&lt;br /&gt;
* Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
* in wrong place (wallace&#039;s garden)&lt;br /&gt;
* Wallace inconsiderate?&lt;br /&gt;
* Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 whys&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
* Video, Mirrors, Reverse warning&lt;br /&gt;
* Lightning talk on snowman&lt;br /&gt;
* Board Agenda: Profit Sharing&lt;br /&gt;
* Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(take volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11231</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11231"/>
		<updated>2011-11-21T00:45:04Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* No blame */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Rules&amp;quot; for root-cause analyses==&lt;br /&gt;
Really suggestions for discussion. This is how [http://www.timgroup.com TIM Group] do root-cause analyses (RCAs for short).&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Some participants may tend toward blame, depending on your company culture. Need to set it up ahead of time to avoid blame - &amp;quot;inoculate&amp;quot; people against blame with a discussion at the beginning of the session. A related anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session and I don&#039;t have to do anything else.&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Please list all the problems event X caused&amp;quot;. OK if others have said your items - this naturally happens. The poll ensures everyone gets a say and no one is left out. Other methods include private ballots on post-its or email solicitation. Try to avoid proxies. Get the right people in the room (see above).&lt;br /&gt;
&lt;br /&gt;
===Write a lot===&lt;br /&gt;
When not sure what to do, write! Want to fill the board, and capture all the ideas. OK to have many whys for one item - rare that there is a single chain of whys.&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
Ask why again and again. People will resist going to the fifth why (it may actually take more). Write down items not in current why chain and promise to return to them later (be sure you actually do so to build trust). Push to get to a cultural or training issue.&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
Typically a big pause before someone says, &amp;quot;Well, maybe it&#039;s that we don&#039;t value testing highly enough&amp;quot; or something like that. Wait for the pause and let them squirm.&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of 3 minutes of down time, then you are not doing the right thing. It&#039;s OK to do part of a task (&amp;quot;Write the outline of a training programme for new sysadmins on our Puppet setup and add to induction wiki page&amp;quot;) - if the problem occurs again, you can do the next step (&amp;quot;Fill in the deployment section of the outline&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Identify tasks at many levels of the why chain (not just at the fifth why). Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
Someone (typically the one running the RCA) has to chase this to ensure it happens. Keeping to one week helps ensure proportionality and completion.&lt;br /&gt;
&lt;br /&gt;
==Questions and Comments==&lt;br /&gt;
&#039;&#039;How does this compare to retrospectives?&#039;&#039;&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other techniques for NOT losing focus?&#039;&#039;&lt;br /&gt;
Keep it short term. The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Vote every day&#039;&#039; on actions from retrospectives to determine whether or not they are being actioned. Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bickering can be a problem.&#039;&#039; Having a senior person present helps defuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
==RCA for Funny Video==&lt;br /&gt;
* Building snowmen&lt;br /&gt;
* Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
* &#039;&#039;&#039;Squirrel&#039;&#039;&#039;: Did anyone take a photo of the board? Would be good to include here (sorry I didn&#039;t think of it).&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
* Snowman destroyed - lost good snowman&lt;br /&gt;
* Wallace covered in snowman&lt;br /&gt;
* Got a cold&lt;br /&gt;
* Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
* in wrong place (wallace&#039;s garden)&lt;br /&gt;
* Wallace inconsiderate?&lt;br /&gt;
* Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 whys&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
* Video, Mirrors, Reverse warning&lt;br /&gt;
* Lightning talk on snowman&lt;br /&gt;
* Board Agenda: Profit Sharing&lt;br /&gt;
* Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(take volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11230</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11230"/>
		<updated>2011-11-21T00:44:16Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* Write alot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Rules&amp;quot; for root-cause analyses==&lt;br /&gt;
Really suggestions for discussion. This is how [http://www.timgroup.com TIM Group] do root-cause analyses (RCAs for short).&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Ops folks may tend toward blame, depending on your company culture. Need to set it up ahead of time to avoid blame - &amp;quot;inoculate&amp;quot; people against blame with a discussion at the beginning of the session. A related anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session and I don&#039;t have to do anything else.&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Please list all the problems event X caused&amp;quot;. OK if others have said your items - this naturally happens. The poll ensures everyone gets a say and no one is left out. Other methods include private ballots on post-its or email solicitation. Try to avoid proxies. Get the right people in the room (see above).&lt;br /&gt;
&lt;br /&gt;
===Write a lot===&lt;br /&gt;
When not sure what to do, write! Want to fill the board, and capture all the ideas. OK to have many whys for one item - rare that there is a single chain of whys.&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
Ask why again and again. People will resist going to the fifth why (it may actually take more). Write down items not in current why chain and promise to return to them later (be sure you actually do so to build trust). Push to get to a cultural or training issue.&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
Typically a big pause before someone says, &amp;quot;Well, maybe it&#039;s that we don&#039;t value testing highly enough&amp;quot; or something like that. Wait for the pause and let them squirm.&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of 3 minutes of down time, then you are not doing the right thing. It&#039;s OK to do part of a task (&amp;quot;Write the outline of a training programme for new sysadmins on our Puppet setup and add to induction wiki page&amp;quot;) - if the problem occurs again, you can do the next step (&amp;quot;Fill in the deployment section of the outline&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Identify tasks at many levels of the why chain (not just at the fifth why). Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
Someone (typically the one running the RCA) has to chase this to ensure it happens. Keeping to one week helps ensure proportionality and completion.&lt;br /&gt;
&lt;br /&gt;
==Questions and Comments==&lt;br /&gt;
&#039;&#039;How does this compare to retrospectives?&#039;&#039;&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other techniques for NOT losing focus?&#039;&#039;&lt;br /&gt;
Keep it short term. The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Vote every day&#039;&#039; on actions from retrospectives to determine whether or not they are being actioned. Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bickering can be a problem.&#039;&#039; Having a senior person present helps defuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
==RCA for Funny Video==&lt;br /&gt;
* Building snowmen&lt;br /&gt;
* Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
* &#039;&#039;&#039;Squirrel&#039;&#039;&#039;: Did anyone take a photo of the board? Would be good to include here (sorry I didn&#039;t think of it).&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
* Snowman destroyed - lost good snowman&lt;br /&gt;
* Wallace covered in snowman&lt;br /&gt;
* Got a cold&lt;br /&gt;
* Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
* in wrong place (wallace&#039;s garden)&lt;br /&gt;
* Wallace inconsiderate?&lt;br /&gt;
* Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 whys&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
* Video, Mirrors, Reverse warning&lt;br /&gt;
* Lightning talk on snowman&lt;br /&gt;
* Board Agenda: Profit Sharing&lt;br /&gt;
* Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(take volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11229</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11229"/>
		<updated>2011-11-21T00:43:48Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* RCA for Funny Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Rules&amp;quot; for root-cause analyses==&lt;br /&gt;
Really suggestions for discussion. This is how [http://www.timgroup.com TIM Group] do root-cause analyses (RCAs for short).&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Ops folks may tend toward blame, depending on your company culture. Need to set it up ahead of time to avoid blame - &amp;quot;inoculate&amp;quot; people against blame with a discussion at the beginning of the session. A related anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session and I don&#039;t have to do anything else.&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Please list all the problems event X caused&amp;quot;. OK if others have said your items - this naturally happens. The poll ensures everyone gets a say and no one is left out. Other methods include private ballots on post-its or email solicitation. Try to avoid proxies. Get the right people in the room (see above).&lt;br /&gt;
&lt;br /&gt;
===Write alot===&lt;br /&gt;
When not sure what to do, write! Want to fill the board, and capture all the ideas. OK to have many whys for one item - rare that there is a single chain of whys.&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
Ask why again and again. People will resist going to the fifth why (it may actually take more). Write down items not in current why chain and promise to return to them later (be sure you actually do so to build trust). Push to get to a cultural or training issue.&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
Typically a big pause before someone says, &amp;quot;Well, maybe it&#039;s that we don&#039;t value testing highly enough&amp;quot; or something like that. Wait for the pause and let them squirm.&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of 3 minutes of down time, then you are not doing the right thing. It&#039;s OK to do part of a task (&amp;quot;Write the outline of a training programme for new sysadmins on our Puppet setup and add to induction wiki page&amp;quot;) - if the problem occurs again, you can do the next step (&amp;quot;Fill in the deployment section of the outline&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Identify tasks at many levels of the why chain (not just at the fifth why). Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
Someone (typically the one running the RCA) has to chase this to ensure it happens. Keeping to one week helps ensure proportionality and completion.&lt;br /&gt;
&lt;br /&gt;
==Questions and Comments==&lt;br /&gt;
&#039;&#039;How does this compare to retrospectives?&#039;&#039;&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other techniques for NOT losing focus?&#039;&#039;&lt;br /&gt;
Keep it short term. The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Vote every day&#039;&#039; on actions from retrospectives to determine whether or not they are being actioned. Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bickering can be a problem.&#039;&#039; Having a senior person present helps defuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
==RCA for Funny Video==&lt;br /&gt;
* Building snowmen&lt;br /&gt;
* Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
* &#039;&#039;&#039;Squirrel&#039;&#039;&#039;: Did anyone take a photo of the board? Would be good to include here (sorry I didn&#039;t think of it).&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
* Snowman destroyed - lost good snowman&lt;br /&gt;
* Wallace covered in snowman&lt;br /&gt;
* Got a cold&lt;br /&gt;
* Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
* in wrong place (wallace&#039;s garden)&lt;br /&gt;
* Wallace inconsiderate?&lt;br /&gt;
* Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 whys&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
* Video, Mirrors, Reverse warning&lt;br /&gt;
* Lightning talk on snowman&lt;br /&gt;
* Board Agenda: Profit Sharing&lt;br /&gt;
* Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(take volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11228</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11228"/>
		<updated>2011-11-21T00:42:40Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* Actions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Rules&amp;quot; for root-cause analyses==&lt;br /&gt;
Really suggestions for discussion. This is how [http://www.timgroup.com TIM Group] do root-cause analyses (RCAs for short).&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Ops folks may tend toward blame, depending on your company culture. Need to set it up ahead of time to avoid blame - &amp;quot;inoculate&amp;quot; people against blame with a discussion at the beginning of the session. A related anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session and I don&#039;t have to do anything else.&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Please list all the problems event X caused&amp;quot;. OK if others have said your items - this naturally happens. The poll ensures everyone gets a say and no one is left out. Other methods include private ballots on post-its or email solicitation. Try to avoid proxies. Get the right people in the room (see above).&lt;br /&gt;
&lt;br /&gt;
===Write alot===&lt;br /&gt;
When not sure what to do, write! Want to fill the board, and capture all the ideas. OK to have many whys for one item - rare that there is a single chain of whys.&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
Ask why again and again. People will resist going to the fifth why (it may actually take more). Write down items not in current why chain and promise to return to them later (be sure you actually do so to build trust). Push to get to a cultural or training issue.&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
Typically a big pause before someone says, &amp;quot;Well, maybe it&#039;s that we don&#039;t value testing highly enough&amp;quot; or something like that. Wait for the pause and let them squirm.&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of 3 minutes of down time, then you are not doing the right thing. It&#039;s OK to do part of a task (&amp;quot;Write the outline of a training programme for new sysadmins on our Puppet setup and add to induction wiki page&amp;quot;) - if the problem occurs again, you can do the next step (&amp;quot;Fill in the deployment section of the outline&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Identify tasks at many levels of the why chain (not just at the fifth why). Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
Someone (typically the one running the RCA) has to chase this to ensure it happens. Keeping to one week helps ensure proportionality and completion.&lt;br /&gt;
&lt;br /&gt;
==Questions and Comments==&lt;br /&gt;
&#039;&#039;How does this compare to retrospectives?&#039;&#039;&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other techniques for NOT losing focus?&#039;&#039;&lt;br /&gt;
Keep it short term. The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Vote every day&#039;&#039; on actions from retrospectives to determine whether or not they are being actioned. Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bickering can be a problem.&#039;&#039; Having a senior person present helps defuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
==RCA for Funny Video==&lt;br /&gt;
Building snowmen&lt;br /&gt;
Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
Snowman destroyed - lost good snowman&lt;br /&gt;
Wallace covered in snowman&lt;br /&gt;
Got a cold&lt;br /&gt;
Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
in wrong place (wallace&#039;s garden)&lt;br /&gt;
Wallace inconsiderate?&lt;br /&gt;
Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 why&#039;s&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
* Video, Mirrors, Reverse warning&lt;br /&gt;
* Lightning talk on snowman&lt;br /&gt;
* Board Agenda: Profit Sharing&lt;br /&gt;
* Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(take volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11227</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11227"/>
		<updated>2011-11-21T00:40:57Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Rules&amp;quot; for root-cause analyses==&lt;br /&gt;
Really suggestions for discussion. This is how [http://www.timgroup.com TIM Group] do root-cause analyses (RCAs for short).&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Ops folks may tend toward blame, depending on your company culture. Need to set it up ahead of time to avoid blame - &amp;quot;inoculate&amp;quot; people against blame with a discussion at the beginning of the session. A related anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session and I don&#039;t have to do anything else.&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Please list all the problems event X caused&amp;quot;. OK if others have said your items - this naturally happens. The poll ensures everyone gets a say and no one is left out. Other methods include private ballots on post-its or email solicitation. Try to avoid proxies. Get the right people in the room (see above).&lt;br /&gt;
&lt;br /&gt;
===Write alot===&lt;br /&gt;
When not sure what to do, write! Want to fill the board, and capture all the ideas. OK to have many whys for one item - rare that there is a single chain of whys.&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
Ask why again and again. People will resist going to the fifth why (it may actually take more). Write down items not in current why chain and promise to return to them later (be sure you actually do so to build trust). Push to get to a cultural or training issue.&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
Typically a big pause before someone says, &amp;quot;Well, maybe it&#039;s that we don&#039;t value testing highly enough&amp;quot; or something like that. Wait for the pause and let them squirm.&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of 3 minutes of down time, then you are not doing the right thing. It&#039;s OK to do part of a task (&amp;quot;Write the outline of a training programme for new sysadmins on our Puppet setup and add to induction wiki page&amp;quot;) - if the problem occurs again, you can do the next step (&amp;quot;Fill in the deployment section of the outline&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Identify tasks at many levels of the why chain (not just at the fifth why). Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
Someone (typically the one running the RCA) has to chase this to ensure it happens. Keeping to one week helps ensure proportionality and completion.&lt;br /&gt;
&lt;br /&gt;
==Questions and Comments==&lt;br /&gt;
&#039;&#039;How does this compare to retrospectives?&#039;&#039;&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Other techniques for NOT losing focus?&#039;&#039;&lt;br /&gt;
Keep it short term. The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Vote every day&#039;&#039; on actions from retrospectives to determine whether or not they are being actioned. Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bickering can be a problem.&#039;&#039; Having a senior person present helps defuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
==RCA for Funny Video==&lt;br /&gt;
Building snowmen&lt;br /&gt;
Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
Snowman destroyed - lost good snowman&lt;br /&gt;
Wallace covered in snowman&lt;br /&gt;
Got a cold&lt;br /&gt;
Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
in wrong place (wallace&#039;s garden)&lt;br /&gt;
Wallace inconsiderate?&lt;br /&gt;
Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 why&#039;s&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
Video, Mirrors, Reverse warning&lt;br /&gt;
Lightning talk on snowman&lt;br /&gt;
Board Agenda: Profit Sharing&lt;br /&gt;
Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11226</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11226"/>
		<updated>2011-11-21T00:37:38Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Ops folks may tend toward blame, depending on your company culture. Need to set it up ahead of time to avoid blame - &amp;quot;inoculate&amp;quot; people against blame with a discussion at the beginning of the session. A related anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session and I don&#039;t have to do anything else.&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Please list all the problems event X caused&amp;quot;. OK if others have said your items - this naturally happens. The poll ensures everyone gets a say and no one is left out. Other methods include private ballots on post-its or email solicitation. Try to avoid proxies. Get the right people in the room (see above).&lt;br /&gt;
&lt;br /&gt;
===Write alot===&lt;br /&gt;
When not sure what to do, write! Want to fill the board, and capture all the ideas. OK to have many whys for one item - rare that there is a single chain of whys.&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
Ask why again and again. People will resist going to the fifth why (it may actually take more). Write down items not in current why chain and promise to return to them later (be sure you actually do so to build trust). Push to get to a cultural or training issue.&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
Typically a big pause before someone says, &amp;quot;Well, maybe it&#039;s that we don&#039;t value testing highly enough&amp;quot; or something like that. Wait for the pause and let them squirm.&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of 3 minutes of down time, then you are not doing the right thing. It&#039;s OK to do part of a task (&amp;quot;Write the outline of a training programme for new sysadmins on our Puppet setup and add to induction wiki page&amp;quot;) - if the problem occurs again, you can do the next step (&amp;quot;Fill in the deployment section of the outline&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Identify tasks at many levels of the why chain (not just at the fifth why). Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
Someone (typically the one running the RCA) has to chase this to ensure it happens. Keeping to one week helps ensure proportionality and completion.&lt;br /&gt;
&lt;br /&gt;
How does this compare to retrospectives?&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
Other techniques for NOT losing focus?&lt;br /&gt;
Keep it short term&lt;br /&gt;
The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Vote every day on actions from retrospectives to determine whether or not they are being actioned&lt;br /&gt;
Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
Bickering can be a problem. Having a senior person present helps defuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
====Wallace &amp;amp; Gromit Video====&lt;br /&gt;
Building snowmen&lt;br /&gt;
Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
Snowman destroyed - lost good snowman&lt;br /&gt;
Wallace covered in snowman&lt;br /&gt;
Got a cold&lt;br /&gt;
Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
in wrong place (wallace&#039;s garden)&lt;br /&gt;
Wallace inconsiderate?&lt;br /&gt;
Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 why&#039;s&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
Video, Mirrors, Reverse warning&lt;br /&gt;
Lightning talk on snowman&lt;br /&gt;
Board Agenda: Profit Sharing&lt;br /&gt;
Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11225</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11225"/>
		<updated>2011-11-21T00:29:38Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].)&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
If you want to complete the analysis in a short meeting (30-60 minutes) it&#039;s best to focus on a specific recent event, such as a production bug or outage. Good to understand what the level of pain is. One person said he had seen a root cause analysis on a &amp;quot;big&amp;quot; event or series of events completed over time (it took a month and was part of a master&#039;s thesis). &lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
The &amp;quot;feature&amp;quot; team attends (typically developers) as well as senior managers and representatives from other areas of the business, e.g. client support or operations. Not always feasible to get &amp;quot;everyone&amp;quot; in the room. One technique is to give them results and tasks from an RCA they did not show up for. You can&#039;t assign actions to someone not in the room though, so you have to do something like &amp;quot;visit X daily for a week to ensure she does Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Ops folks tend toward blame&lt;br /&gt;
Need to set it up ahead of time to avoid blame...  &amp;quot;inoculate&amp;quot; people against blame&lt;br /&gt;
Anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Hey PJ, please list all the problems&amp;quot;&lt;br /&gt;
Then go around the room and ask for add ons&lt;br /&gt;
Private ballots on post-its. Email solicitation.&lt;br /&gt;
Try to avoid proxies. Get the right people in the room&lt;br /&gt;
&lt;br /&gt;
===Write alot===&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of a 3 minutes of down time, then you are not doing the right thing&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
&lt;br /&gt;
How does this compare to retrospectives?&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
Other techniques for NOT losing focus?&lt;br /&gt;
Keep it short term&lt;br /&gt;
The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Vote every day on actions from retrospectives to determine whether or not they are being actioned&lt;br /&gt;
Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
Bickering can be a problem. Having a senior person present helps diffuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
===Wallace &amp;amp; Gromit Video===&lt;br /&gt;
Building snowmen&lt;br /&gt;
Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
Snowman destroyed - lost good snowman&lt;br /&gt;
Wallace covered in snowman&lt;br /&gt;
Got a cold&lt;br /&gt;
Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
in wrong place (wallace&#039;s garden)&lt;br /&gt;
Wallace inconsiderate?&lt;br /&gt;
Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 why&#039;s&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
Video, Mirrors, Reverse warning&lt;br /&gt;
Lightning talk on snowman&lt;br /&gt;
Board Agenda: Profit Sharing&lt;br /&gt;
Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11224</id>
		<title>Root Cause Analysis</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=Root_Cause_Analysis&amp;diff=11224"/>
		<updated>2011-11-21T00:25:07Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;09:00 on Saturday, Nov 12, 2011 morning in Space Invaders (the big room)&lt;br /&gt;
&lt;br /&gt;
Squirrel has slides on how to go about doing a root cause analysis (PJ reminder: get the slides from Squirrel to attach to the wiki) (&#039;&#039;&#039;Squirrel&#039;&#039;&#039;: I can&#039;t figure out how to attach the slides. Help! In the meantime, you can watch a [http://skillsmatter.com/podcast/agile-testing/talk-by-squirrel video that contains the slides].&lt;br /&gt;
&lt;br /&gt;
===Target a specific event===&lt;br /&gt;
could do a root cause analysis on a &amp;quot;big&amp;quot; event over time, like as part of a master&#039;s thesis&lt;br /&gt;
can be helpful to start with the &amp;quot;level&amp;quot; of pain&lt;br /&gt;
defects are not &amp;quot;really&amp;quot; defects, they are misunderstanding&lt;br /&gt;
should do production bugs&lt;br /&gt;
&lt;br /&gt;
===Everyone affected attends===&lt;br /&gt;
the &amp;quot;feature&amp;quot; team attends, what about senior managers? representatives from other areas of the business&lt;br /&gt;
not always good at getting &amp;quot;everyone&amp;quot; in the room&lt;br /&gt;
one technique is to give them results from one they did not show up for&lt;br /&gt;
&lt;br /&gt;
===No blame===&lt;br /&gt;
Ops folks tend toward blame&lt;br /&gt;
Need to set it up ahead of time to avoid blame...  &amp;quot;inoculate&amp;quot; people against blame&lt;br /&gt;
Anti-pattern: as long as it isn&#039;t MY discipline, then I have gotten what I want out of this session&lt;br /&gt;
&lt;br /&gt;
===Poll to identify problems===&lt;br /&gt;
Go around entire room and ask &amp;quot;Hey PJ, please list all the problems&amp;quot;&lt;br /&gt;
Then go around the room and ask for add ons&lt;br /&gt;
Private ballots on post-its. Email solicitation.&lt;br /&gt;
Try to avoid proxies. Get the right people in the room&lt;br /&gt;
&lt;br /&gt;
===Write alot===&lt;br /&gt;
&lt;br /&gt;
===Move down then across===&lt;br /&gt;
&lt;br /&gt;
===If it doesn&#039;t hurt, then you aren&#039;t doing it right===&lt;br /&gt;
&lt;br /&gt;
===Proportionate tasks===&lt;br /&gt;
If you are re-writing your entire app because of a 3 minutes of down time, then you are not doing the right thing&lt;br /&gt;
&lt;br /&gt;
===All tasks done in a week===&lt;br /&gt;
Every task agreed to:&lt;br /&gt;
 1) Has to be do-able in one week&lt;br /&gt;
 2) Has to actually be done in one week&lt;br /&gt;
&lt;br /&gt;
How does this compare to retrospectives?&lt;br /&gt;
Retros are related to teams, the pain is more direct&lt;br /&gt;
&lt;br /&gt;
Other techniques for NOT losing focus?&lt;br /&gt;
Keep it short term&lt;br /&gt;
The next root cause analysis might highlight the &amp;quot;next&amp;quot; step, but for now, &amp;quot;all we have to do now is take this first step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Vote every day on actions from retrospectives to determine whether or not they are being actioned&lt;br /&gt;
Smiley faces or sad faces depending on votes&lt;br /&gt;
&lt;br /&gt;
Bickering can be a problem. Having a senior person present helps diffuse these types of arguments.&lt;br /&gt;
&lt;br /&gt;
===Wallace &amp;amp; Gromit Video===&lt;br /&gt;
Building snowmen&lt;br /&gt;
Squirrel divided up the group into two: Wallace &amp;amp; Gromit&lt;br /&gt;
&lt;br /&gt;
===Bad things that happened===&lt;br /&gt;
Snowman destroyed - lost good snowman&lt;br /&gt;
Wallace covered in snowman&lt;br /&gt;
Got a cold&lt;br /&gt;
Wasted Gromit time and unhappy&lt;br /&gt;
&lt;br /&gt;
===Lost good snowman===&lt;br /&gt;
in wrong place (wallace&#039;s garden)&lt;br /&gt;
Wallace inconsiderate?&lt;br /&gt;
Couldn&#039;t see - didn&#039;t look - Hard to look - Van too big - Wanted impressive snowman - &lt;br /&gt;
&lt;br /&gt;
30 to 60 second pause is &amp;quot;good&amp;quot; (it has to hurt a little)&lt;br /&gt;
&lt;br /&gt;
Worked down to Competition and Dog Can&#039;t Talk at end of 7 why&#039;s&lt;br /&gt;
&lt;br /&gt;
===Actions===&lt;br /&gt;
Video, Mirrors, Reverse warning&lt;br /&gt;
Lightning talk on snowman&lt;br /&gt;
Board Agenda: Profit Sharing&lt;br /&gt;
Daily meetings (standups), Sign language classes for gromit&lt;br /&gt;
&lt;br /&gt;
(volunteers for each action)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7148</id>
		<title>A Day in the Life of a Checkin</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7148"/>
		<updated>2008-10-20T08:46:53Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* CI Real-World Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using Git And Friends ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed using Git, Mercurial, and similar distributed version-control systems. The consensus was that DVCS works best with continuous integration if you have a central repository from which to draw candidates for CI builds. Why use a DVCS then, since it is not necessarily distributed? The tools provide extra flexibility before the commit to the main repository, and have other useful features besides (e.g. Git&#039;s whole-tree diffs allow you to track code as it moves from file to file). However, the integration of these tools with popular IDEs like Eclipse and NetBeans leaves something to be desired.&lt;br /&gt;
&lt;br /&gt;
== Synchronous CI ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed the synchronous, less-automated continuous integration described by James Shore here: http://jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html. No one had actually tried this CI method, but most did not think it was workable with larger teams and complex tests (such as the acceptance tests described in the next section). We also couldn&#039;t see how it would work when some team members are remote (or just working from home or a customer site temporarily). See this [http://www.flickr.com/photos/jetbrains_teamcity/2920568933/in/set-72157607811381100/ photo of the board] from this part of the session.&lt;br /&gt;
&lt;br /&gt;
== CI Real-World Example ==&lt;br /&gt;
&lt;br /&gt;
We discussed how CI runs at [https://dev.youdevise.com youDevise], a small financial-services firm in London. Here&#039;s a [http://www.flickr.com/photos/jetbrains_teamcity/2920569661/in/set-72157607811381100/ photo of the board] showing how the process works; unfortunately, I don&#039;t seem to be able to add the diagram right here.&lt;br /&gt;
&lt;br /&gt;
A checkin at youDevise follows these steps through our continuous-integration process:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1&#039;&#039;&#039;: First, our checkin has to announce its birth to the world. The checkin causes a hook to run in source control - see [http://cvsbook.red-bean.com/cvsbook.html#The%20commitinfo%20And%20loginfo%20And%20rcsinfo%20Files commitinfo in CVS] and [http://svnbook.red-bean.com/en/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks post-commit hooks in SVN]. This hook script updates a file on a webserver that says &amp;quot;hey, checkin to work on here!&amp;quot; We use a webserver to avoid having all our CI servers checking source control all the time just to see if anything is changed - when we started to get lots of CI instances, CVS couldn&#039;t cope. (Maybe Subversion will be better when we switch, but why add load you don&#039;t need?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2&#039;&#039;&#039;: Next, the checkin has to pass basic tests. The main build server, running [http://cruisecontrol.sourceforge.net/ CruiseControl], notices the flag and retrieves the latest code. It compiles the code, then farms the testing to two servers: one runs unit tests via [http://www.junit.org/ JUnit], and one does loads of static checks ([http://checkstyle.sourceforge.net/ Checkstyle], [http://findbugs.sourceforge.net/ FindBugs], [http://clarkware.com/software/JDepend.html JDepend], [http://emma.sourceforge.net/ Emma], and [http://code.google.com/p/testability-explorer/ Testability Explorer], among others). How does it do the farming? The two slaves and the master share a directory via [http://us1.samba.org/samba/ Samba]; the slaves check every few seconds for a trigger file, and get the compiled code from the same directory once they see a trigger. They publish their results to the same shared directory, and the master waits for both to report a result (timing out if they take too long). Finally, the master extracts a list of the modifications from the CruiseControl log file and stores these in the shared directory. &#039;&#039;This build takes 5-10 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039;: Our checkin now has to pass browser tests (we build only web applications, so that&#039;s all we need to run for acceptance). Three acceptance-test servers, each running CruiseControl and each intended to test a specific browser, monitor the same shared directory we mentioned in step 2. Each one is looking for a different trigger indicating that there has been at least one successful master build since its last build. (This dependency on a successful master build means these servers form the second link in the [http://martinfowler.com/articles/continuousIntegration.html#KeepTheBuildFast build pipeline].) When the acceptance-test server sees the trigger, it gets the compiled code from the main build server as well as all the modification lists for any builds since its last one (both of these come from that same shared Samba directory again); the code to check the modification lists is a little custom plugin we wrote for CruiseControl. It deploys this code in Tomcat (which includes automated start and population of a MySQL database) and tells [http://selenium-rc.openqa.org/ Selenium RC] on one or more slave servers to start running. Our most popular browser, IE6, uses three slaves; the other two browsers just have one each, as we don&#039;t care as much about a speedy answer from them. (We found that if you don&#039;t have at least one slave, the run isn&#039;t efficient - separating Tomcat/MySQL from the browser seems to make everyone happy about resource usage.) Finally, when the acceptance tests are done running on the slave or slaves, Selenium RC reports results back to the master. &#039;&#039;This build takes 20-90 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4&#039;&#039;&#039;: There are some other hurdles for our checkin: two other servers also run tests triggered by a checkin, but not necessarily right away. One runs some very complicated calculations tests overnight, and one runs some specialised tests for a particular subproduct (including unit and acceptance tests). Both run CruiseControl and check the status file via HTTP as described in step 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5&#039;&#039;&#039;: The last step in the life of a checkin is getting used by people. We have a completely automated release-management tool (written in-house) that picks up built code from the main-build server - same shared directory again! - and publishes it to various testing environments, all with one button click. Releasing to production is a slightly more complex process for security reasons, but once the code is delivered to the production site the process is again fully automated.&lt;br /&gt;
&lt;br /&gt;
Results of all these steps are displayed on two monitors in our office, with red or green rectangles indicating the current status of each. Failure at any stage also triggers an email to interested parties, who are supposed to fix the problems identified; while they are doing this, they mark the corresponding rectangle orange (so everyone knows someone is working on the problem).&lt;br /&gt;
 &lt;br /&gt;
By the way, all these &amp;quot;servers&amp;quot; are just commodity desktops, jammed into our server room on some simple shelves. If we want to expand further, we&#039;ll certainly want to consider virtualisation (or a bigger server room!) We&#039;ve experimented with this on one master/slave pair for acceptance tests; it seems to work OK (that is, nothing is faster or slower) but you do have to be careful to configure carefully (we had a network misconfiguration on the host OS that caused the guest to lose its connection mysteriously every once in awhile).&lt;br /&gt;
&lt;br /&gt;
We didn&#039;t get to a lot of discussion on this setup (which was too bad, as feedback was what I&#039;d hoped to get). One participant said he runs a similar setup, but most do not have a complicated build pipeline of this kind running. I&#039;m told that various modern CI servers (see [[CI_Smackdown]]) make this easier to set up out of the box, but no one said they were using these features (and they weren&#039;t available when we started building ours).&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7147</id>
		<title>A Day in the Life of a Checkin</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7147"/>
		<updated>2008-10-17T23:00:20Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* CI Real-World Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using Git And Friends ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed using Git, Mercurial, and similar distributed version-control systems. The consensus was that DVCS works best with continuous integration if you have a central repository from which to draw candidates for CI builds. Why use a DVCS then, since it is not necessarily distributed? The tools provide extra flexibility before the commit to the main repository, and have other useful features besides (e.g. Git&#039;s whole-tree diffs allow you to track code as it moves from file to file). However, the integration of these tools with popular IDEs like Eclipse and NetBeans leaves something to be desired.&lt;br /&gt;
&lt;br /&gt;
== Synchronous CI ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed the synchronous, less-automated continuous integration described by James Shore here: http://jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html. No one had actually tried this CI method, but most did not think it was workable with larger teams and complex tests (such as the acceptance tests described in the next section). We also couldn&#039;t see how it would work when some team members are remote (or just working from home or a customer site temporarily). See this [http://www.flickr.com/photos/jetbrains_teamcity/2920568933/in/set-72157607811381100/ photo of the board] from this part of the session.&lt;br /&gt;
&lt;br /&gt;
== CI Real-World Example ==&lt;br /&gt;
&lt;br /&gt;
We discussed how CI runs at [https://dev.youdevise.com youDevise], a small financial-services firm in London. Here&#039;s a [http://www.flickr.com/photos/jetbrains_teamcity/2920569661/in/set-72157607811381100/ photo of the board] showing how the process works; unfortunately, I don&#039;t seem to be able to add the diagram right here.&lt;br /&gt;
&lt;br /&gt;
A checkin at youDevise follows these steps through our continuous-integration process:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1&#039;&#039;&#039;: First, our checkin has to announce its birth to the world. The checkin causes a hook to run in source control - see [http://cvsbook.red-bean.com/cvsbook.html#The%20commitinfo%20And%20loginfo%20And%20rcsinfo%20Files commitinfo in CVS] and [http://svnbook.red-bean.com/en/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks post-commit hooks in SVN]. This hook script updates a file on a webserver that says &amp;quot;hey, checkin to work on here!&amp;quot; We use a webserver to avoid having all our CI servers checking source control all the time just to see if anything is changed - when we started to get lots of CI instances, CVS couldn&#039;t cope. (Maybe Subversion woll be better when we switch, but why add load you don&#039;t need?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2&#039;&#039;&#039;: Next, the checkin has to pass basic tests. The main build server, running [http://cruisecontrol.sourceforge.net/ CruiseControl], notices the flag and retrieves the latest code. It compiles the code, then farms the testing to two servers: one runs unit tests via [http://www.junit.org/ JUnit], and one does loads of static checks ([http://checkstyle.sourceforge.net/ Checkstyle], [http://findbugs.sourceforge.net/ FindBugs], [http://clarkware.com/software/JDepend.html JDepend], [http://emma.sourceforge.net/ Emma], and [http://code.google.com/p/testability-explorer/ Testability Explorer], among others). How does it do the farming? The two slaves and the master share a directory via [http://us1.samba.org/samba/ Samba]; the slaves check every few seconds for a trigger file, and get the compiled code from the same directory once they see a trigger. They publish their results to the same shared directory, and the master waits for both to report a result (timing out if they take too long). Finally, the master extracts a list of the modifications from the CruiseControl log file and stores these in the shared directory. &#039;&#039;This build takes 5-10 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039;: Our checkin now has to pass browser tests (we build only web applications, so that&#039;s all we need to run for acceptance). Three acceptance-test servers, each running CruiseControl and each intended to test a specific browser, monitor the same shared directory we mentioned in step 2. Each one is looking for a different trigger indicating that there has been at least one successful master build since its last build. (This dependency on a successful master build means these servers form the second link in the [http://martinfowler.com/articles/continuousIntegration.html#KeepTheBuildFast build pipeline].) When the acceptance-test server sees the trigger, it gets the compiled code from the main build server as well as all the modification lists for any builds since its last one (both of these come from that same shared Samba directory again); the code to check the modification lists is a little custom plugin we wrote for CruiseControl. It deploys this code in Tomcat (which includes automated start and population of a MySQL database) and tells [http://selenium-rc.openqa.org/ Selenium RC] on one or more slave servers to start running. Our most popular browser, IE6, uses three slaves; the other two browsers just have one each, as we don&#039;t care as much about a speedy answer from them. (We found that if you don&#039;t have at least one slave, the run isn&#039;t efficient - separating Tomcat/MySQL from the browser seems to make everyone happy about resource usage. Finally, when the acceptance tests are done running on the slave or slaves, Selenium RC reports results back to the master. &#039;&#039;This build takes 20-90 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4&#039;&#039;&#039;: There are some other hurdles for our checkin: two other servers also run tests triggered by a checkin, but not necessarily right away. One runs some very complicated calculations tests overnight, and one runs some specialised tests for a particular subproduct (including unit and acceptance tests). Both run CruiseControl and check the status file via HTTP as described in step 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5&#039;&#039;&#039;: The last step in the life of a checkin is getting used by people. We have a completely automated release-management tool (written in-house) that picks up built code from the main-build server - same shared directory again! - and publishes it to various testing environments, all with one button click. Releasing to production is a slightly more complex process for security reasons, but once the code is delivered to the production site the process is again fully automated.&lt;br /&gt;
&lt;br /&gt;
Results of all these steps are displayed on two monitors in our office, with red or green rectangles indicating the current status of each. Failure at any stage also triggers an email to interested parties, who are supposed to fix the problems identified; while they are doing this, they mark the corresponding rectangle orange (so everyone knows someone is working on the problem).&lt;br /&gt;
 &lt;br /&gt;
By the way, all these &amp;quot;servers&amp;quot; are just commodity desktops, jammed into our server room on some simple shelves. If we want to expand further, we&#039;ll certainly want to consider virtualisation (or a bigger server room!) We&#039;ve experimented with this on one master/slave pair for acceptance tests; it seems to work OK (that is, nothing is faster or slower) but you do have to be careful to configure carefully (we had a network misconfiguration on the host OS that caused the guest to lose its connection mysteriously every once in awhile).&lt;br /&gt;
&lt;br /&gt;
We didn&#039;t get to a lot of discussion on this setup (which was too bad, as feedback was what I&#039;d hoped to get). One participant said he runs a similar setup, but most do not have a complicated build pipeline of this kind running. I&#039;m told that various modern CI servers (see [[CI_Smackdown]]) make this easier to set up out of the box, but no one said they were using these features (and they weren&#039;t available when we started building ours).&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7146</id>
		<title>A Day in the Life of a Checkin</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7146"/>
		<updated>2008-10-17T22:54:54Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* CI Real-World Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using Git And Friends ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed using Git, Mercurial, and similar distributed version-control systems. The consensus was that DVCS works best with continuous integration if you have a central repository from which to draw candidates for CI builds. Why use a DVCS then, since it is not necessarily distributed? The tools provide extra flexibility before the commit to the main repository, and have other useful features besides (e.g. Git&#039;s whole-tree diffs allow you to track code as it moves from file to file). However, the integration of these tools with popular IDEs like Eclipse and NetBeans leaves something to be desired.&lt;br /&gt;
&lt;br /&gt;
== Synchronous CI ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed the synchronous, less-automated continuous integration described by James Shore here: http://jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html. No one had actually tried this CI method, but most did not think it was workable with larger teams and complex tests (such as the acceptance tests described in the next section). We also couldn&#039;t see how it would work when some team members are remote (or just working from home or a customer site temporarily). See this [http://www.flickr.com/photos/jetbrains_teamcity/2920568933/in/set-72157607811381100/ photo of the board] from this part of the session.&lt;br /&gt;
&lt;br /&gt;
== CI Real-World Example ==&lt;br /&gt;
&lt;br /&gt;
We discussed how CI runs at [https://dev.youdevise.com youDevise], a small financial-services firm in London. Here&#039;s a [http://www.flickr.com/photos/jetbrains_teamcity/2920569661/in/set-72157607811381100/ photo of the board] showing how the process works; unfortunately, I don&#039;t seem to be able to add the diagram right here.&lt;br /&gt;
&lt;br /&gt;
A checkin at youDevise follows these steps through our continuous-integration process:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1&#039;&#039;&#039;: First, our checkin has to announce its birth to the world. The checkin causes a hook to run in source control - see [http://cvsbook.red-bean.com/cvsbook.html#The%20commitinfo%20And%20loginfo%20And%20rcsinfo%20Files commitinfo in CVS] and [http://svnbook.red-bean.com/en/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks post-commit hooks in SVN]. This hook script updates a file on a webserver that says &amp;quot;hey, checkin to work on here!&amp;quot; We use a webserver to avoid having all our CI servers checking source control all the time just to see if anything is changed - when we started to get lots of CI instances, CVS couldn&#039;t cope. (Maybe Subversion woll be better when we switch, but why add load you don&#039;t need?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2&#039;&#039;&#039;: Next, the checkin has to pass basic tests. The main build server, running [http://cruisecontrol.sourceforge.net/ CruiseControl], notices the flag and retrieves the latest code. It compiles the code, then farms the testing to two servers: one runs unit tests via [http://www.junit.org/ JUnit], and one does loads of static checks ([http://checkstyle.sourceforge.net/ Checkstyle], [http://findbugs.sourceforge.net/ FindBugs], [http://clarkware.com/software/JDepend.html JDepend], [http://emma.sourceforge.net/ Emma], and [http://code.google.com/p/testability-explorer/ Testability Explorer], among others). How does it do the farming? The two slaves and the master share a directory via [http://us1.samba.org/samba/ Samba]; the slaves check every few seconds for a trigger file, and get the compiled code from the same directory once they see a trigger. They publish their results to the same shared directory, and the master waits for both to report a result (timing out if they take too long). Finally, the master extracts a list of the modifications from the CruiseControl log file and stores these in the shared directory. &#039;&#039;This build takes 5-10 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039;: Our checkin now has to pass browser tests (we build only web applications, so that&#039;s all we need to run for acceptance). Three acceptance-test servers, each running CruiseControl and each intended to test a specific browser, monitor the same shared directory we mentioned in step 2. Each one is looking for a different trigger indicating that there has been at least one successful master build since its last build. (This dependency on a successful master build means these servers form the second link in the [http://martinfowler.com/articles/continuousIntegration.html#KeepTheBuildFast build pipeline].) When the acceptance-test server sees the trigger, it gets the compiled code from the main build server as well as all the modification lists for any builds since its last one (both of these come from that same shared Samba directory again); the code to check the modification lists is a little custom plugin we wrote for CruiseControl. It deploys this code in Tomcat (which includes automated start and population of a MySQL database) and tells [http://selenium-rc.openqa.org/ Selenium RC] on one or more slave servers to start running. Our most popular browser, IE6, uses three slaves; the other two browsers just have one each, as we don&#039;t care as much about a speedy answer from them. (We found that if you don&#039;t have at least one slave, the run isn&#039;t efficient - separating Tomcat/MySQL from the browser seems to make everyone happy about resource usage. Finally, when the acceptance tests are done running on the slave or slaves, Selenium RC reports results back to the master. &#039;&#039;This build takes 20-90 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4&#039;&#039;&#039;: There are some other hurdles for our checkin: two other servers also run tests triggered by a checkin, but not necessarily right away. One runs some very complicated calculations tests overnight, and one runs some specialised tests for a particular subproduct (including unit and acceptance tests). Both run CruiseControl and check the status file via HTTP as described in step 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 5&#039;&#039;&#039;: The last step in the life of a checkin is getting used by people. We have a completely automated release-management tool (written in-house) that picks up built code from the main-build server - same shared directory again! - and publishes it to various testing environments, all with one button click. Releasing to production is a slightly more complex process for security reasons, but once the code is delivered to the production site the process is again fully automated.&lt;br /&gt;
&lt;br /&gt;
By the way, all these &amp;quot;servers&amp;quot; are just commodity desktops, jammed into our server room on some simple shelves. If we want to expand further, we&#039;ll certainly want to consider virtualisation (or a bigger server room!) We&#039;ve experimented with this on one master/slave pair for acceptance tests; it seems to work OK (that is, nothing is faster or slower) but you do have to be careful to configure carefully (we had a network misconfiguration on the host OS that caused the guest to lose its connection mysteriously every once in awhile).&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7145</id>
		<title>A Day in the Life of a Checkin</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7145"/>
		<updated>2008-10-17T22:47:03Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* CI Real-World Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using Git And Friends ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed using Git, Mercurial, and similar distributed version-control systems. The consensus was that DVCS works best with continuous integration if you have a central repository from which to draw candidates for CI builds. Why use a DVCS then, since it is not necessarily distributed? The tools provide extra flexibility before the commit to the main repository, and have other useful features besides (e.g. Git&#039;s whole-tree diffs allow you to track code as it moves from file to file). However, the integration of these tools with popular IDEs like Eclipse and NetBeans leaves something to be desired.&lt;br /&gt;
&lt;br /&gt;
== Synchronous CI ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed the synchronous, less-automated continuous integration described by James Shore here: http://jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html. No one had actually tried this CI method, but most did not think it was workable with larger teams and complex tests (such as the acceptance tests described in the next section). We also couldn&#039;t see how it would work when some team members are remote (or just working from home or a customer site temporarily). See this [http://www.flickr.com/photos/jetbrains_teamcity/2920568933/in/set-72157607811381100/ photo of the board] from this part of the session.&lt;br /&gt;
&lt;br /&gt;
== CI Real-World Example ==&lt;br /&gt;
&lt;br /&gt;
We discussed how CI runs at [https://dev.youdevise.com youDevise], a small financial-services firm in London. Here&#039;s a [http://www.flickr.com/photos/jetbrains_teamcity/2920569661/in/set-72157607811381100/ photo of the board] showing how the process works; unfortunately, I don&#039;t seem to be able to add the diagram right here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1&#039;&#039;&#039;: The checkin causes a hook to run in source control - see [http://cvsbook.red-bean.com/cvsbook.html#The%20commitinfo%20And%20loginfo%20And%20rcsinfo%20Files commitinfo in CVS] and [http://svnbook.red-bean.com/en/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks post-commit hooks in SVN]. This hook script updates a file on a webserver that says &amp;quot;hey, checkin to work on here!&amp;quot; We use a webserver to avoid having all our CI servers checking source control all the time just to see if anything is changed - when we started to get lots of CI instances, CVS couldn&#039;t cope. (Maybe Subversion woll be better when we switch, but why add load you don&#039;t need?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2&#039;&#039;&#039;: The main build server, running [http://cruisecontrol.sourceforge.net/ CruiseControl], notices the flag and retrieves the latest code. It compiles the code, then farms the testing to two servers: one runs unit tests via [http://www.junit.org/ JUnit], and one does loads of static checks ([http://checkstyle.sourceforge.net/ Checkstyle], [http://findbugs.sourceforge.net/ FindBugs], [http://clarkware.com/software/JDepend.html JDepend], [http://emma.sourceforge.net/ Emma], and [http://code.google.com/p/testability-explorer/ Testability Explorer], among others). How does it do the farming? The two slaves and the master share a directory via [http://us1.samba.org/samba/ Samba]; the slaves check every few seconds for a trigger file, and get the compiled code from the same directory once they see a trigger. They publish their results to the same shared directory, and the master waits for both to report a result (timing out if they take too long). Finally, the master extracts a list of the modifications from the CruiseControl log file and stores these in the shared directory. &#039;&#039;This build takes 5-10 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039;: Three acceptance-test servers, each running CruiseControl and each intended to test a specific browser, monitor the same shared directory we mentioned in step 2. Each one is looking for a different trigger indicating that there has been at least one successful master build since its last build. (This dependency on a successful master build means these servers form the second link in the [http://martinfowler.com/articles/continuousIntegration.html#KeepTheBuildFast build pipeline].) When the acceptance-test server sees the trigger, it gets the compiled code from the main build server as well as all the modification lists for any builds since its last one (both of these come from that same shared Samba directory again); the code to check the modification lists is a little custom plugin we wrote for CruiseControl. It deploys this code in Tomcat (which includes automated start and population of a MySQL database) and tells [http://selenium-rc.openqa.org/ Selenium RC] on one or more slave servers to start running. Our most popular browser, IE6, uses three slaves; the other two browsers just have one each, as we don&#039;t care as much about a speedy answer from them. (We found that if you don&#039;t have at least one slave, the run isn&#039;t efficient - separating Tomcat/MySQL from the browser seems to make everyone happy about resource usage. Finally, when the acceptance tests are done running on the slave or slaves, Selenium RC reports results back to the master. &#039;&#039;This build takes 20-90 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 4&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
By the way, all these &amp;quot;servers&amp;quot; are just commodity desktops, jammed into our server room on some simple shelves. If we want to expand further, we&#039;ll certainly want to consider virtualisation (or a bigger server room!)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7144</id>
		<title>A Day in the Life of a Checkin</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=A_Day_in_the_Life_of_a_Checkin&amp;diff=7144"/>
		<updated>2008-10-17T22:44:43Z</updated>

		<summary type="html">&lt;p&gt;Squirrel: /* CI Real-World Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using Git And Friends ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed using Git, Mercurial, and similar distributed version-control systems. The consensus was that DVCS works best with continuous integration if you have a central repository from which to draw candidates for CI builds. Why use a DVCS then, since it is not necessarily distributed? The tools provide extra flexibility before the commit to the main repository, and have other useful features besides (e.g. Git&#039;s whole-tree diffs allow you to track code as it moves from file to file). However, the integration of these tools with popular IDEs like Eclipse and NetBeans leaves something to be desired.&lt;br /&gt;
&lt;br /&gt;
== Synchronous CI ==&lt;br /&gt;
&lt;br /&gt;
[This is a stub since I (Squirrel) didn&#039;t have much to add to this discussion. Please add details.]&lt;br /&gt;
&lt;br /&gt;
We discussed the synchronous, less-automated continuous integration described by James Shore here: http://jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html. No one had actually tried this CI method, but most did not think it was workable with larger teams and complex tests (such as the acceptance tests described in the next section). We also couldn&#039;t see how it would work when some team members are remote (or just working from home or a customer site temporarily). See this [http://www.flickr.com/photos/jetbrains_teamcity/2920568933/in/set-72157607811381100/ photo of the board] from this part of the session.&lt;br /&gt;
&lt;br /&gt;
== CI Real-World Example ==&lt;br /&gt;
&lt;br /&gt;
We discussed how CI runs at [https://dev.youdevise.com youDevise], a small financial-services firm in London. Here&#039;s a [http://www.flickr.com/photos/jetbrains_teamcity/2920569661/in/set-72157607811381100/ photo of the board] showing how the process works; unfortunately, I don&#039;t seem to be able to add the diagram right here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1&#039;&#039;&#039;: The checkin causes a hook to run in source control - see [http://cvsbook.red-bean.com/cvsbook.html#The%20commitinfo%20And%20loginfo%20And%20rcsinfo%20Files commitinfo in CVS] and [http://svnbook.red-bean.com/en/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks post-commit hooks in SVN]. This hook script updates a file on a webserver that says &amp;quot;hey, checkin to work on here!&amp;quot; We use a webserver to avoid having all our CI servers checking source control all the time just to see if anything is changed - when we started to get lots of CI instances, CVS couldn&#039;t cope. (Maybe Subversion woll be better when we switch, but why add load you don&#039;t need?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 2&#039;&#039;&#039;: The main build server, running [http://cruisecontrol.sourceforge.net/ CruiseControl], notices the flag and retrieves the latest code. It compiles the code, then farms the testing to two servers: one runs unit tests via [http://www.junit.org/ JUnit], and one does loads of static checks ([http://checkstyle.sourceforge.net/ Checkstyle], [http://findbugs.sourceforge.net/ FindBugs], [http://clarkware.com/software/JDepend.html JDepend], [http://emma.sourceforge.net/ Emma], and [http://code.google.com/p/testability-explorer/ Testability Explorer], among others). How does it do the farming? The two slaves and the master share a directory via [http://us1.samba.org/samba/ Samba]; the slaves check every few seconds for a trigger file, and get the compiled code from the same directory once they see a trigger. They publish their results to the same shared directory, and the master waits for both to report a result (timing out if they take too long). Finally, the master extracts a list of the modifications from the CruiseControl log file and stores these in the shared directory. &#039;&#039;This build takes 5-10 minutes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 3&#039;&#039;&#039;: Three acceptance-test servers, each running CruiseControl and each intended to test a specific browser, monitor the same shared directory we mentioned in step 2. Each one is looking for a different trigger indicating that there has been at least one successful master build since its last build. (This dependency on a successful master build means these servers form the second link in the [http://martinfowler.com/articles/continuousIntegration.html#KeepTheBuildFast build pipeline].) When the acceptance-test server sees the trigger, it gets the compiled code from the main build server as well as all the modification lists for any builds since its last one (both of these come from that same shared Samba directory again); the code to check the modification lists is a little custom plugin we wrote for CruiseControl. It deploys this code in Tomcat (which includes automated start and population of a MySQL database) and tells [http://selenium-rc.openqa.org/ Selenium RC] on one or more slave servers to start running. Our most popular browser, IE6, uses three slaves; the other two browsers just have one each, as we don&#039;t care as much about a speedy answer from them. (We found that if you don&#039;t have at least one slave, the run isn&#039;t efficient - separating Tomcat/MySQL from the browser seems to make everyone happy about resource usage.&lt;br /&gt;
&lt;br /&gt;
By the way, all these &amp;quot;servers&amp;quot; are just commodity desktops, jammed into our server room on some simple shelves. If we want to expand further, we&#039;ll certainly want to consider virtualisation (or a bigger server room!)&lt;/div&gt;</summary>
		<author><name>Squirrel</name></author>
	</entry>
</feed>