<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Maccherone &#187; Craftsmanship</title>
	<atom:link href="http://maccherone.com/larry/tag/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://maccherone.com/larry</link>
	<description>Software engineering and craftsmanship; Adobe Flex/Flash/ActionScript/AIR; Measurement, Analysis, and Visualization</description>
	<lastBuildDate>Thu, 17 Jun 2010 17:51:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How can an Agile team influence the quality of upstream components</title>
		<link>http://maccherone.com/larry/2010/04/15/how-can-an-agile-team-influence-the-quality-of-upstream-components/</link>
		<comments>http://maccherone.com/larry/2010/04/15/how-can-an-agile-team-influence-the-quality-of-upstream-components/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 13:23:58 +0000</pubDate>
		<dc:creator>Larry Maccherone</dc:creator>
				<category><![CDATA[Software craftsmanship]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Coaching]]></category>
		<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Q&A]]></category>

		<guid isPermaLink="false">http://maccherone.com/larry/?p=191</guid>
		<description><![CDATA[
		
		
		
		Q: I would be interested in anything you might have about rolling out Agile on a team that depends on components created by non-Agile teams. In particular, how that is affected by different approaches to Quality between teams in the same company (and no, we don’t have a common standard, only on paper). I was [...]]]></description>
			<content:encoded><![CDATA[<!--S-ButtonZ 1.1.5 Start--><div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://maccherone.com/larry/2010/04/15/how-can-an-agile-team-influence-the-quality-of-upstream-components/";
		var dzone_title = "How can an Agile team influence the quality of upstream components";
		var dzone_style = "1";
		var dzone_blurb = "Q: I would be interested in anything you might have about rolling out Agile on a team that depends on components created by non-Agile teams. In particular, how that is affected by different approaches to Quality between teams in the same company (and...";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p><strong>Q:</strong> I would be interested in anything you might have about rolling out Agile on a team that depends on components created by non-Agile teams. In particular, how that is affected by different approaches to Quality between teams in the same company (and no, we don’t have a common standard, only on paper). I was reading about the GM/Toyota experiment (first TPS plant in the US) and how GM had issues trying to roll it to other plants, one of the biggest one being the fact that unlike in Japan, they didn’t have the power to push their process down to their producers. They quickly found out that they could not build a Quality car without Quality components; and I am afraid we will find the same here.</p>
<p><strong>A: </strong>The reason quality is generally higher with the output of Agile processes is related to the nature of feedback loops built into Agile. We feedback on the product/design much more rapidly. Practices like pair programming or lightweight <strong>peer review</strong>, <strong>automated testing</strong>, <strong>short iterations</strong>, <strong>automated build</strong>/continuous integration, and <strong>close collaboration</strong> with the customer/proxy, all tend to give us more feedback on the product/design&#8230; which tends to lead to higher quality. My recommendation would be to try to drive as much of those feedback loops up stream as possible. You don&#8217;t control their process but you may be able to influence it at the boundary between them and you.<br />
<strong><br />
Close collaboration. </strong>The lowest hanging fruit is probably the close collaboration with the customer one. In this instance, the Agile team is the customer. The non-Agile teams are the vendors. I&#8217;m thinking of setting up regular demo/review meetings (probably on the cadence of the Agile team &#8211; <strong>short iterations</strong>). You may also be able to visit (virtually or physically) on a near daily basis.</p>
<p><strong>Automated testing. </strong>You might also try setting up automated testing at the interface level for the components delivered by the upstream teams. You&#8217;ll have to avoid the trap of using this as &#8220;contract negotiation over collaboration&#8221; but that is in how you handle it. The key here is that you want them to think of the tests as a tool to help them do their job as opposed to a way to enforce something. This means that they will need ability to run the tests before delivering to you. It would be better still if they owned the tests and you reviewed them. No matter who owns them, the tests become the specification for the API, which is a good Agile smell.</p>
<p><strong>Peer review. </strong>At this point, you are collaborating/reviewing the test code. This might then lead to a situation where you might be able to do peer review of their production code. I&#8217;d prefer a peer review approach that helped them improve their code (and learn how to write better code in the future) over one that just allowed you to fix their code after the fact.</p>
<p><strong>Automated build.</strong> If you were to give them access to your build process, they would also be able to test the compile-time agreement between their code and yours. This comes with two immediate benefits: (1) it serves as an additional automated test of of the interface, and (2) this (combined with the other automated tests) gives them more confidence to refactor their code and make improvements. The assumption here is that most teams know their code has warts but they are afraid to modify it to improve it because they are afraid of breaking code that depends upon it. Running your build script lowers the fear.</p>
<p>There is a third (and potentially more powerful) benefit to a shared build process. It provides you with a place to plug in other quality improving tests and analysis. The automated testing that I proposed above are tests that run against their upstream code. With an automated build, you could include tests that run against your downstream (but higher level) code. This means that they could see if changes that they make break your higher level functionality. You&#8217;d have to use a stable version of your source so they could be sure the problem was theirs but a distributed source control tool or careful branch management could overcome that obstacle. The build is also a common place to run automated bug finders like FindBugs or even custom analysis like a tool to highlight any changes in the calling signature.</p>
<p>Please let me know if any of this helped. Maybe I can refactor and improve my answer (upstream product) based upon your feedback (from downstream). <img src='http://maccherone.com/larry/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div style="clear:both;">&nbsp;</div>


Please vote for this on DZone at the top of this page and share it on:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmaccherone.com%2Flarry%2F2010%2F04%2F15%2Fhow-can-an-agile-team-influence-the-quality-of-upstream-components%2F&amp;t=How%20can%20an%20Agile%20team%20influence%20the%20quality%20of%20upstream%20components" title="Facebook"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=How%20can%20an%20Agile%20team%20influence%20the%20quality%20of%20upstream%20components%20-%20http%3A%2F%2Fmaccherone.com%2Flarry%2F2010%2F04%2F15%2Fhow-can-an-agile-team-influence-the-quality-of-upstream-components%2F" title="Twitter"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2010%2F04%2F15%2Fhow-can-an-agile-team-influence-the-quality-of-upstream-components%2F&amp;title=How%20can%20an%20Agile%20team%20influence%20the%20quality%20of%20upstream%20components&amp;bodytext=Q%3A%20I%20would%20be%20interested%20in%20anything%20you%20might%20have%20about%20rolling%20out%20Agile%20on%20a%20team%20that%20depends%20on%20components%20created%20by%20non-Agile%20teams.%20In%20particular%2C%20how%20that%20is%20affected%20by%20different%20approaches%20to%20Quality%20between%20teams%20in%20the%20same%20company%20%28and" title="Digg"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2010%2F04%2F15%2Fhow-can-an-agile-team-influence-the-quality-of-upstream-components%2F&amp;title=How%20can%20an%20Agile%20team%20influence%20the%20quality%20of%20upstream%20components" title="StumbleUpon"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2010%2F04%2F15%2Fhow-can-an-agile-team-influence-the-quality-of-upstream-components%2F&amp;title=How%20can%20an%20Agile%20team%20influence%20the%20quality%20of%20upstream%20components&amp;notes=Q%3A%20I%20would%20be%20interested%20in%20anything%20you%20might%20have%20about%20rolling%20out%20Agile%20on%20a%20team%20that%20depends%20on%20components%20created%20by%20non-Agile%20teams.%20In%20particular%2C%20how%20that%20is%20affected%20by%20different%20approaches%20to%20Quality%20between%20teams%20in%20the%20same%20company%20%28and" title="del.icio.us"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fmaccherone.com%2Flarry%2F2010%2F04%2F15%2Fhow-can-an-agile-team-influence-the-quality-of-upstream-components%2F&amp;title=How%20can%20an%20Agile%20team%20influence%20the%20quality%20of%20upstream%20components&amp;annotation=Q%3A%20I%20would%20be%20interested%20in%20anything%20you%20might%20have%20about%20rolling%20out%20Agile%20on%20a%20team%20that%20depends%20on%20components%20created%20by%20non-Agile%20teams.%20In%20particular%2C%20how%20that%20is%20affected%20by%20different%20approaches%20to%20Quality%20between%20teams%20in%20the%20same%20company%20%28and" title="Google Bookmarks"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2010%2F04%2F15%2Fhow-can-an-agile-team-influence-the-quality-of-upstream-components%2F&amp;title=How%20can%20an%20Agile%20team%20influence%20the%20quality%20of%20upstream%20components" title="DZone"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://maccherone.com/larry/?page_id=0?</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Measuring Craftsmanship</title>
		<link>http://maccherone.com/larry/2009/05/06/measuring-craftsmanship/</link>
		<comments>http://maccherone.com/larry/2009/05/06/measuring-craftsmanship/#comments</comments>
		<pubDate>Wed, 06 May 2009 15:34:28 +0000</pubDate>
		<dc:creator>Larry Maccherone</dc:creator>
				<category><![CDATA[Software craftsmanship]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://maccherone.com/larry/?p=62</guid>
		<description><![CDATA[
		
		
		
		I&#8217;m on board with the Agile approach to software development and I have a strong history with process approaches to improvement (ISO-9000, CMM, CMMI, TSP, etc.). That said, I have always believed that the quality of the people doing the work is the biggest factor of success. The software estimation technique, COCOMO reveals this because [...]]]></description>
			<content:encoded><![CDATA[<!--S-ButtonZ 1.1.5 Start--><div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://maccherone.com/larry/2009/05/06/measuring-craftsmanship/";
		var dzone_title = "Measuring Craftsmanship";
		var dzone_style = "1";
		var dzone_blurb = "I&#8217;m on board with the Agile approach to software development and I have a strong history with process approaches to improvement (ISO-9000, CMM, CMMI, TSP, etc.). That said, I have always believed that the quality of the people doing the work is...";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>I&#8217;m on board with the Agile approach to software development and I have a strong history with process approaches to improvement (ISO-9000, CMM, CMMI, TSP, etc.). That said, I have always believed that the quality of the people doing the work is the biggest factor of success. The software estimation technique, <a href="http://en.wikipedia.org/wiki/COCOMO" target="_blank">COCOMO </a>reveals this because &#8220;personnel attributes&#8221; dominates just about all COCOMO estimation models.</p>
<p>I think David Starr over on <a href="http://elegantcode.com/2009/05/04/on-measuring-agility-craftsmanship-and-everything-else/" target="_blank">Elegant Code</a> hits the right note in pointing out how this manifests itself in his post on <a href="http://elegantcode.com/2009/05/04/on-measuring-agility-craftsmanship-and-everything-else/" target="_blank">Measuring Craftsmanship</a>. His post starts with a distraction by arguing against the idea of measuring Agile maturity. I say distracting because I think it&#8217;s possible to agree with his message about the importance of craftsmanship no matter how you feel about the idea of creating an Agile Maturity Model.</p>
<p>The emphasis needs to always be on the people doing the work. In particular, I like his idea of &#8220;picking a guild&#8221; as a source for your skills criteria. Because of the way the software industry works, each organization might be its own guild, so I think it will be hard to agree upon the list of guilds and find a set of criteria most appropriate for each of them, but I think it is possible to create a map between certain practices and required skills.</p>
<p>For instance, if you are going to rely upon refactoring and emergent design, you better have strong design patterns skills. Same goes for tool usage. The practice of continuous integration requires build tool skills. Your team&#8217;s approach to software assurance also dictates the skills you need. If you rely heavily upon automated testing, then you need skills with automated testing tools and patterns that enable design for testability. If you rely more upon inspecition, mastering the skills of Spineliis <a href="http://www.amazon.com/Code-Quality-Perspective-Effective-Development/dp/0321166078/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1241623492&amp;sr=1-3" target="_blank">Code Quality</a> and <a href="http://www.amazon.com/Code-Reading-Perspective-Effective-Development/dp/0201799405/ref=pd_bxgy_b_img_b" target="_blank">Code Reading</a> should be expected.</p>
<div style="clear:both;">&nbsp;</div>


Please vote for this on DZone at the top of this page and share it on:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmaccherone.com%2Flarry%2F2009%2F05%2F06%2Fmeasuring-craftsmanship%2F&amp;t=Measuring%20Craftsmanship" title="Facebook"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Measuring%20Craftsmanship%20-%20http%3A%2F%2Fmaccherone.com%2Flarry%2F2009%2F05%2F06%2Fmeasuring-craftsmanship%2F" title="Twitter"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2009%2F05%2F06%2Fmeasuring-craftsmanship%2F&amp;title=Measuring%20Craftsmanship&amp;bodytext=I%27m%20on%20board%20with%20the%20Agile%20approach%20to%20software%20development%20and%20I%20have%20a%20strong%20history%20with%20process%20approaches%20to%20improvement%20%28ISO-9000%2C%20CMM%2C%20CMMI%2C%20TSP%2C%20etc.%29.%20That%20said%2C%20I%20have%20always%20believed%20that%20the%20quality%20of%20the%20people%20doing%20the%20work%20is%20the%20b" title="Digg"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2009%2F05%2F06%2Fmeasuring-craftsmanship%2F&amp;title=Measuring%20Craftsmanship" title="StumbleUpon"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2009%2F05%2F06%2Fmeasuring-craftsmanship%2F&amp;title=Measuring%20Craftsmanship&amp;notes=I%27m%20on%20board%20with%20the%20Agile%20approach%20to%20software%20development%20and%20I%20have%20a%20strong%20history%20with%20process%20approaches%20to%20improvement%20%28ISO-9000%2C%20CMM%2C%20CMMI%2C%20TSP%2C%20etc.%29.%20That%20said%2C%20I%20have%20always%20believed%20that%20the%20quality%20of%20the%20people%20doing%20the%20work%20is%20the%20b" title="del.icio.us"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fmaccherone.com%2Flarry%2F2009%2F05%2F06%2Fmeasuring-craftsmanship%2F&amp;title=Measuring%20Craftsmanship&amp;annotation=I%27m%20on%20board%20with%20the%20Agile%20approach%20to%20software%20development%20and%20I%20have%20a%20strong%20history%20with%20process%20approaches%20to%20improvement%20%28ISO-9000%2C%20CMM%2C%20CMMI%2C%20TSP%2C%20etc.%29.%20That%20said%2C%20I%20have%20always%20believed%20that%20the%20quality%20of%20the%20people%20doing%20the%20work%20is%20the%20b" title="Google Bookmarks"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fmaccherone.com%2Flarry%2F2009%2F05%2F06%2Fmeasuring-craftsmanship%2F&amp;title=Measuring%20Craftsmanship" title="DZone"><img src="http://maccherone.com/larry/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://maccherone.com/larry/?page_id=0?</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
