<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10280668</id><updated>2012-01-04T17:35:30.535-06:00</updated><category term='Design/Arch'/><category term='FDD'/><category term='Lean'/><category term='Self-Organization'/><category term='Version-Control'/><category term='Leadership'/><category term='Six-Sigma'/><category term='Agile'/><category term='XP'/><category term='CM'/><category term='Links'/><category term='Tools'/><category term='Traceability'/><category term='Code-Mgmt'/><category term='SCM-Principles'/><category term='Build-Mgmt'/><category term='Management'/><category term='SCM-Architecture'/><category term='Trust'/><category term='Change-Tracking'/><category term='Project-Mgmt'/><category term='Books'/><category term='Futures'/><title type='text'>Brad Appleton's ACME Blog</title><subtitle type='html'>Agile CM / ALM Environments</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default?start-index=101&amp;max-results=100'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>251</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10280668.post-3230811836254721629</id><published>2009-08-20T09:23:00.000-05:00</published><updated>2009-08-21T20:35:59.019-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>SOA, Mashups, Mashed Knees and Surgery</title><content type='html'>&lt;span style="font-family: georgia;"&gt;Today is my birthday - I had arthroscopic knee surgery last night and am feeling pretty good so far (happy birthday to me). I know I still have a lot of meds/painkillers in my system and that its going to feel more uncomfortable the next few days. I'm still hobbling around on crutches but I'm feeling much more confident that I can attend (and present at) &lt;a href="http://www.agile2009.org/"&gt;Agile2009&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I received some very good books on Mashups and SOA a few months back and I'm finally getting a chance to look at them in some more detail. They really are quite good! I think Mashups are the "latest frontier" for realizing the promise of SOA, and a natural evolution from Wiki-webs. Here are the books:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.informit.com/title/0136135161"&gt;SOA Design Patterns&lt;/a&gt;, by Thomas Erl&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.informit.com/title/032157947X"&gt;Mashup Patterns: Designs and Examples for the Modern Enterprise&lt;/a&gt;, by Michael Ogrinz&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.informit.com/title/032159181X"&gt;Mashups: Strategies for the Modern Enterprise&lt;/a&gt;, by J. Jeffrey Hanson&lt;/li&gt;&lt;/ul&gt;If you follow the links above to the &lt;a href="http://www.informit.com/"&gt;InformIT.com&lt;/a&gt; homepage for each of the above books, you'll find some good excerpts and related articles that will give a preview of what to expect so you can judge for yourself.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3230811836254721629?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3230811836254721629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3230811836254721629&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3230811836254721629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3230811836254721629'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/08/soa-mashups-mashed-knees-and-surgery.html' title='SOA, Mashups, Mashed Knees and Surgery'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2673722302242545996</id><published>2009-08-13T00:12:00.001-05:00</published><updated>2009-08-21T20:21:18.479-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>BOOK: Running an Agile Project</title><content type='html'>&lt;span style="font-family:georgia;"&gt;First, on a personal note, I had the misfortune to tear cartilage in my right knee a couple days ago and will require surgery to repair/remove it. I'm hobbling around on crutches for the time being. I  hope I can still attend (and present at) &lt;a href="http://www.agile2009.org/"&gt;Agile2009&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway, my review of Mike Holcombe's book &lt;a style="font-weight: bold;" href="http://www.amazon.com/Running-Agile-Software-Development-Project/dp/0470136693"&gt;Running an Agile Software Development Project&lt;/a&gt; appears in this month's &lt;a href="http://www.agilejournal.com/"&gt;Agile Journal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(0, 0, 102);"&gt;&lt;a target="_blank" href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470136693.html"&gt;Running an Agile Software Development Project&lt;/a&gt; is an interesting book. On the surface it looks like it would be very academic, because the author, &lt;a target="_blank" href="http://www.dcs.shef.ac.uk/%7Ewmlh/"&gt;Mike Holcombe&lt;/a&gt;, was a University Professor at the time, and running an “agile software development factory” of students (albeit for a real commercial development shop). And yet what is described in the contents is very much the practical, real-world results of running agile projects with those same people for real IT software development work.&lt;br /&gt;&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;Overall, I found Running an Agile Software Development Project to be interesting and enjoyable. It still seems just a bit academic for my taste, and probably wouldn’t be the first book I would recommend on the subject unless it was for a classroom audience (in which case this book would be an excellent one to use).&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;You can &lt;a href="http://www.agilejournal.com/articles/columns/featured-books-mainmenu-46/2149-featured-book-running-an-agile-software-development-project-by-mike-holcombe"&gt;read the full review here&lt;/a&gt;!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2673722302242545996?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2673722302242545996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2673722302242545996&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2673722302242545996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2673722302242545996'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/08/book-running-agile-project.html' title='BOOK: Running an Agile Project'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-246042478534472243</id><published>2009-08-07T00:21:00.005-05:00</published><updated>2009-08-18T13:11:43.175-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='CM'/><category scheme='http://www.blogger.com/atom/ns#' term='Change-Tracking'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Traceability'/><category scheme='http://www.blogger.com/atom/ns#' term='Code-Mgmt'/><title type='text'>WANTED: Seeking Single Agile Knowledge Development Tool-set</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://agile2009.agilealliance.org/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 206px; height: 132px;" src="http://agile2009.org/files/Agile2009_WebBadges_Self.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;I'll be presenting at Agile2009 in Chicago on the &lt;a href="http://agile2009.org/tools"&gt;Tools for Agility&lt;/a&gt; stage on Tuesday 25 August, 4:45pm-5:30pm.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is my session description from &lt;a href="http://agile2009.org/node/2762"&gt;http://agile2009.org/node/2762&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 class="with-tabs"&gt;WANTED: Seeking Single Agile Knowledge Development Tool-set&lt;/h2&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="content"&gt;     &lt;p&gt;Aren’t code, backlog-items, tests, designs &amp;amp; documents all just different forms of system knowledge at different levels of detail? Why can’t the same tools help refactor, browse, search, and provide build/test automation for &lt;em&gt;non-code&lt;/em&gt; forms of knowledge &lt;em&gt;without&lt;/em&gt; requiring a separate tool/repository for each format? This talk is intended as a challenge to tool vendors/developers to see how this simple treatment of all non-code items as part of a single, unified project knowledge-base can be at once both immensely powerful, and imminently practical, without requiring too much added complexity.&lt;/p&gt;  &lt;div class="field field-type-text field-field-processmechanics"&gt;   &lt;div style="font-weight: bold;" class="field-label"&gt;Process/Mechanics&lt;/div&gt;   &lt;div class="field-items"&gt;       &lt;div class="field-item"&gt;&lt;p&gt;Approximately ~30 minutes of slides/presentation to “make the case” for why this approach is useful and desirable, followed by discussion of challenges (to and from tool developers/vendors, as well as the rest of the audience) as to its usefulness and benefits, and why their current tools can’t easily do so and why the should or should not be easy to enhancement them to do it.&lt;/p&gt;  &lt;h2&gt;Outline&lt;/h2&gt;  &lt;h3&gt;Software development as knowledge development&lt;/h3&gt;  &lt;ul&gt;&lt;li&gt;Source-Code as knowledge&lt;/li&gt;&lt;li&gt;Requirements (Stories) and Tests as knowledge&lt;/li&gt;&lt;li&gt;Other usable forms of project knowledge (e.g., build scripts &amp;amp; configuration, build/test result reports version control history/comments, online help &amp;amp; other supporting docs)&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;How would I do this?&lt;/h3&gt;  &lt;ul&gt;&lt;li&gt;Refactoring Knowledge (thinking about the rest of the “knowledge” the way we think about the code, and its habitability, navigability, and structure/refactoring)&lt;/li&gt;&lt;li&gt;Applying other agile-practices (like TDD, Continuous Integration, etc.) to non-code knowledge development&lt;/li&gt;&lt;li&gt;Wiki-based skins, DSLs, and use-cases/design as domain-driven Wiki-word definitions &lt;ul&gt;&lt;li&gt;Patterns (giving things names), Retrospectives results and lessons learned&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Viewing, searching EVERYTHING (even the code) via wiki?&lt;/li&gt;&lt;li&gt;The “Wu-Wei” of Traceability (Tracing without Tracing)&lt;/li&gt;&lt;li&gt;Versioning and operating on wiki-like entities, just like with code (e.g., making “working copies”, branches and tags)&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;DISCUSSION &amp;amp; CHALLENGE: Why can’t (or how can) YOUR tools do this!&lt;/h3&gt;  &lt;p&gt;Begin audience discussion/dialogue: Why can’t a tool like Eclipse or a Wiki-based CMS (such as Confluence) be used as a front-end to browsing/refactoring and navigating ALL the knowledge of the system? (not just code, but stories, tests, build/config data, CI reports, backlog, retrospective lessons).&lt;/p&gt;  &lt;p&gt;What makes it easy/hard for these and other tools like any of the following to do this, or to be simple “skins” or plug-ins on top of only a handful of tools instead of a whole kitchen sink full of separate tools and repositories.&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Eclipse, Confluence, Twiki?&lt;/li&gt;&lt;li&gt;FIT, Fitnesse, Contour&lt;/li&gt;&lt;li&gt;Doxygen / Javadoc&lt;/li&gt;&lt;li&gt;Trac / Agile-Trac?&lt;/li&gt;&lt;li&gt;Jira / Remedy&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;See also a blog-entry of mine entitled &lt;em&gt;&lt;a href="http://bradapp.blogspot.com/2005/09/can-i-have-just-one-repository-please.html" title="blog-entry"&gt;Can I have just one repository please?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;div class="field field-type-text field-field-learning-outcomes"&gt;   &lt;div style="font-weight: bold;" class="field-label"&gt;Learning outcomes&lt;/div&gt;   &lt;div class="field-items"&gt;     &lt;div class="field-item"&gt;       &lt;ul&gt;&lt;li&gt;Thinking about Agile development as knowledge management &amp;amp; creation&lt;/li&gt;&lt;li&gt;Current barriers to using agile techniques and supporting tools for non-code artifacts &lt;/li&gt;&lt;li&gt;What do refactoring, TDD, continuous integration, etc. mean for &lt;em&gt;non-code&lt;/em&gt; artifacts (and why you should care)&lt;/li&gt;&lt;li&gt;Use of wikis for organizing, structuring and refactoring ALL system knowledge&lt;/li&gt;&lt;li&gt;Why manual traceability is unnecessary (and even comes for free) when using such an approach&lt;/li&gt;&lt;/ul&gt;    &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;    &lt;div class="field field-type-userreference field-field-participants"&gt;     &lt;div class="field-label"&gt;&lt;br /&gt;&lt;/div&gt;     &lt;div class="field-items"&gt;           &lt;/div&gt;   &lt;/div&gt;  &lt;div class="field field-type-nodereference field-field-primary-personas"&gt;   &lt;div style="font-weight: bold;" class="field-label"&gt;Primary target persona &lt;/div&gt;&lt;div class="field-items"&gt;&lt;div class="field-item"&gt;&lt;ul&gt;&lt;li&gt;Tomas Tool-smith/Tool-vendor&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;  &lt;div class="field field-type-nodereference field-field-personas"&gt;   &lt;div style="font-weight: bold;" class="field-label"&gt;Other target personas&lt;/div&gt;   &lt;div class="field-items"&gt;     &lt;ul&gt;&lt;li&gt;&lt;a href="http://agile2009.org/node/61/popup" target="popup" onclick="window.open('/node/61/popup', 'popup', 'width=500, height=400, location=no, menubar=no, toolbar=no'); return false;"&gt;Billy, Business Analyst &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://agile2009.org/node/59/popup" target="popup" onclick="window.open('/node/59/popup', 'popup', 'width=500, height=400, location=no, menubar=no, toolbar=no'); return false;"&gt;David, Agile Developer &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://agile2009.org/node/71/popup" target="popup" onclick="window.open('/node/71/popup', 'popup', 'width=500, height=400, location=no, menubar=no, toolbar=no'); return false;"&gt;Patricia, Project Manager &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://agile2009.org/node/64/popup" target="popup" onclick="window.open('/node/64/popup', 'popup', 'width=500, height=400, location=no, menubar=no, toolbar=no'); return false;"&gt;Tara, Tester&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;/div&gt; &lt;/div&gt;    &lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(&lt;/span&gt;&lt;a style="font-style: italic;" href="http://agile2009.org/files/session_pdfs/Appleton_1Agile-KM-Toolset_0.pdf"&gt;download PDF here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-246042478534472243?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/246042478534472243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=246042478534472243&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/246042478534472243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/246042478534472243'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/08/wanted-seeking-single-agile-knowledge.html' title='WANTED: Seeking Single Agile Knowledge Development Tool-set'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-854788653014204777</id><published>2009-08-01T12:06:00.003-05:00</published><updated>2009-08-18T12:56:49.739-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Studies on Effectiveness of TDD?</title><content type='html'>&lt;span style="font-family:georgia;"&gt;This question came-up in a discussion earlier this week: Do we know of published studies on this subject? A quick Google-search turned up the following for me ...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt; &lt;li&gt;&lt;a href="http://www.idiacomputing.com/"&gt;George Dinwiddie&lt;/a&gt;'s page on &lt;a href="http://biblio.gdinwiddie.com/biblio/StudiesOfTestDrivenDevelopment"&gt;&lt;em&gt;Studies of Test-Driven Development&lt;/em&gt;&lt;/a&gt; has links to a dozen or so, with summaries &lt;/li&gt;&lt;li&gt;A March 2009 InfoQ.com article &lt;a href="http://www.infoq.com/news/2009/03/TDD-Improves-Quality"&gt;&lt;em&gt;Empirical Studies Show Test Driven Development Improves Quality&lt;/em&gt;&lt;/a&gt; about a paper published in the Journal of Empirical Software Engineering &lt;/li&gt;&lt;li&gt;An XP2009 paper on &lt;a href="http://www.xp2009.org/etsm2009/doc/Canfora_Visaggio_2009.pdf"&gt;&lt;em&gt;Measuring the impact of testing on code structure in Test Driven Development: metrics and empirical analysis&lt;/em&gt;&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;A &lt;a href="http://works.bepress.com/djanzen/12/"&gt;&lt;em&gt;Survey of Evidence for TDD in Academia&lt;/em&gt;&lt;/a&gt; (2008), published in ACM SIGCSE Bulletin &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.slideshare.net/melnik/empirical-evidence-of-agile-methods-190997"&gt;&lt;em&gt;Empirical Evidence of Agile Methods&lt;/em&gt;&lt;/a&gt; (2007) has a nice slide or two devoted to TDD &lt;/li&gt;&lt;li&gt;A Univ. of Karlsruhe study on &lt;a href="http://wwwipd.ira.uka.de/Tichy/uploads/publikationen/136/MuellerHoefer2007.pdf"&gt;&lt;em&gt;The Effect of Experience on the TDD process&lt;/em&gt;&lt;/a&gt; (2007) &lt;/li&gt;&lt;li&gt;An ITEA 2006 paper on &lt;a href="http://www.agile-itea.org/public/deliverables/ITEA-AGILE-D2.7_v1.0.pdf"&gt;TDD Empirical Body of Evidence&lt;/a&gt; &lt;/li&gt;&lt;li&gt;A 2006 Univ. of Kansas Ph.d thesis on &lt;a href="http://portal.acm.org/citation.cfm?id=1195306"&gt;&lt;em&gt;An empirical evaluation of the impact of test-driven development on software quality&lt;/em&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;An ISESE 2006 paper on &lt;a href="http://evidencebasedse.com/?q=node/111"&gt;Evaluating Advantages of Test Driven Development: a Controlled Experiment with Professionals&lt;/a&gt; &lt;/li&gt;&lt;li&gt;VTT &lt;a href="http://agile.vtt.fi/docs/publications/2005/2005_business_quality_ifip.pdf"&gt;&lt;em&gt;Case Study of TDD in Mobile Software Software Development&lt;/em&gt;&lt;/a&gt; (2005) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Any others? Any comments on the above?&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-854788653014204777?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/854788653014204777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=854788653014204777&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/854788653014204777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/854788653014204777'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/08/studies-on-effectiveness-of-tdd.html' title='Studies on Effectiveness of TDD?'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4079082700004300414</id><published>2009-07-26T00:55:00.001-05:00</published><updated>2009-08-18T12:55:59.133-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Resources on Retrospectives</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I found a really good resource-list from &lt;a href="http://idiacomputing.com/"&gt;George Dinwiddie&lt;/a&gt; on &lt;a href="http://idiacomputing.com/moin/IntrospectionAndRetrospectives"&gt;Introspection and Retrospectives&lt;/a&gt; that includes the following list of resources (mostly patterns &amp;amp; techniques) about conducting retrospectives. It contains many (but not all) of the links below:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://idiacomputing.com/moin/RestrospectiveTechniques"&gt;RestrospectiveTechniques&lt;/a&gt; compiled by George Dinwiddie&lt;/li&gt;&lt;li&gt;&lt;a href="http://retrospectivewiki.org/index.php?title=Main_Page"&gt;Agile Retrospectives Resource Wiki&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Singing the Songs of Project Experience: Patterns and Retrospectives&lt;/em&gt; by Linda Rising and Esther Derby from &lt;a href="http://www.estherderby.com/articles/rising-derby.pdf"&gt;Cutter IT Journal&lt;/a&gt; (PDF)&lt;/li&gt;&lt;li&gt;&lt;em&gt;Restrospective Agility&lt;/em&gt; by Tim Mackinnon in &lt;a href="http://www.ratio.co.uk/ov8pdf.pdf"&gt;Objective View&lt;/a&gt; (PDF)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.retrospectives.com/"&gt;http://www.retrospectives.com/&lt;/a&gt; Norm Kerth's website.&lt;/li&gt;&lt;li&gt;Esther Derby's  &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.estherderby.com/weblog/archive/2006_03_01_archive.html#114320660266333594"&gt;Seven Reasons to Have a Retrospective&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.estherderby.com/weblog/archive/2006_02_01_archive.html#114031552004362330"&gt;6 Reasons *not* to have a Retrospective&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.estherderby.com/weblog/archive/2004_05_01_archive.html#108548723203236478"&gt;What a Retrospective Ain't&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.estherderby.com/weblog/2007/04/two-more-ways-to-gather-data-in.html"&gt;Two more ways to gather data&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;amp;ObjectType=COL&amp;amp;ObjectId=14358"&gt;Five Tips for Retrospective Leaders and Meeting Moderators&lt;/a&gt; and &lt;a href="http://www.estherderby.com/weblog/2009/05/tips-for-retrospective-facilitators.html"&gt;Tips for Retrospective Facilitators&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Rachel Davies'  &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.twelve71.org/blogs/rachel/archives/000752.html"&gt;Heartbeat Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/agile-retrospectives-davies"&gt;How To: Live and Learn with Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.methodsandtools.com/archive/archive.php?id=63"&gt;Refactoring Your Development Process with Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Marco Abis' &lt;a href="http://brainscrum.wordpress.com/2006/05/22/retrospectives-in-and-on-action/"&gt;Retrospectives IN and ON action&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Sample chapters 3 &amp;amp; 5 from &lt;a href="http://www.pragprog.com/titles/dlret/agile-retrospectives"&gt;&lt;strong&gt;Agile Retrospectives: Making Good Teams Great&lt;/strong&gt;&lt;/a&gt; by Esther Derby and Diana Larsen: &lt;ul&gt;&lt;li&gt;&lt;a href="http://media.pragprog.com/titles/dlret/Leading.pdf"&gt;Chapter 3, Leading Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://media.pragprog.com/titles/dlret/Activities.pdf"&gt;Chapter 5, Selected Activities&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/resource/articles/Agile-Retrospective-Derby-Larsen/en/resources/dlret-infoq.pdf"&gt;Chapter 10, Make it So&lt;/a&gt;&lt;/li&gt;&lt;li&gt;a 50min &lt;a href="http://www.youtube.com/watch?v=qqtPZYigfNI"&gt;talk/presentation from Esther &amp;amp; Diana on YouTube&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Ellen Gottesdiener's &lt;a href="http://ebgconsulting.com/Pubs/Articles/TeamRetrospectives-Gottesdiener.pdf"&gt;Team Retrospectives — for better iterative assessment&lt;/a&gt; looks at the topic from a RUP perspective.&lt;/li&gt;&lt;li&gt;Bill Wake's &lt;a href="http://xp123.com/xplor/xp0509/index.shtml"&gt;Some Patterns for Iteration Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;James Carr's &lt;a href="http://blog.james-carr.org/2008/09/04/retrospective-patterns/"&gt;Retrospective Patterns&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Ian Burgess' &lt;a href="http://www.ianburgess.me.uk/software-development/agile-retrospective-lessons-learned"&gt;Agile Retrospectives Lessons Learned&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Ilja Preuss' &lt;a href="http://radio.javaranch.com/ilja/2009/03/25/1237998972110.html"&gt;Retrospective Anti-Patterns&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Article: &lt;a href="http://www.agilejournal.com/component/content/article/773-emergent-design-leveraging-agile-retrospectives-to-evolve-your-architecture"&gt;Leveraging Agile Retrospectives to Evolve Your Architecture&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Simon Baker on &lt;a href="http://www.think-box.co.uk/blog/2007/12/retrospective-using-appreciative.html"&gt;Retrospective Using Appreciative Inquiry&lt;/a&gt; (see &lt;a href="http://www.ayeconference.com/appreciativeretrospective/"&gt;similar article by Diana Larsen&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Ben Coombs' &lt;a href="http://www.bencoombs.com/bens_blog/2008/08/agile-retrospec.html"&gt;A Retrospective based on Agile Values&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mark Levison's &lt;a href="http://www.notesfromatooluser.com/2008/10/agile-games-for-making-retrospectives-interesting.html"&gt;Agile Games for Making Retrospectives Interesting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Kris Blake's &lt;a href="http://theagileleap.blogspot.com/2009/04/retrospective-agenda-high-performing.html"&gt;Retrospective Agenda for High-Performing Teams&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scrumalliance.org/articles/30-seven-ways-to-revitalize-your-sprint-retrospectives" rel="nofollow"&gt;Scrum Alliance - Seven Ways to Revitalize Your Sprint Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fabio Periera's &lt;a href="http://fabiopereira.me/blog/2008/11/23/goal-driven-retrospective/"&gt;Goal-Driven Retrospective&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mishkin Berteig's &lt;a href="http://www.berteigconsulting.com/archives/AgileWorkCheatSheetRetrospectives.pdf" rel="nofollow"&gt;Agile Work: Cheat-Sheet for Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/component/option,com_magazine/func,show_article/id,51/" rel="nofollow"&gt;Agile Journal - Iteration and Release Retrospectives: The Natural Rhythm for Agile Measurement&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Retrospectives Content on &lt;a href="http://www.infoq.com/retrospectives"&gt;InfoQ.com/retrospectives&lt;/a&gt;, including ... &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/Heartbeat-Retrospectives-Boris-Gloger" rel="nofollow"&gt;InfoQ: Heartbeat Retrospectives to Amplify Team &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2008/09/making-retros-stick" rel="nofollow"&gt;InfoQ: Making Retrospective Changes Stick&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2007/11/retrospective-length" rel="nofollow"&gt;InfoQ: How Long Should Retrospectives Last?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2008/04/retro-follow-thru" rel="nofollow"&gt;InfoQ: First (Forgotten?) Rule Of The Retrospective: Follow Through&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/03/Burn-Down-And-Retrospectives" rel="nofollow"&gt;InfoQ: Annotated Burn-Down Charts Help During Retrospectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2007/06/davies-agile-retrospectives" rel="nofollow"&gt;InfoQ: Frequent Retrospectives Accelerate Learning and Improvement&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Jim Shore's &lt;a href="http://jamesshore.com/Agile-Book/retrospectives.html"&gt;brief recap&lt;/a&gt; and &lt;a href="http://jamesshore.com/downloads/art-of-agile/retrospective-format.pdf"&gt;retrospective format&lt;/a&gt; from &lt;em&gt;The Art of Agile Development&lt;/em&gt; (&lt;a title="ISBN" href="http://www.amazon.com/exec/obidos/ISBN=0596527675/alberg30-20"&gt;0596527675&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4079082700004300414?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4079082700004300414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4079082700004300414&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4079082700004300414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4079082700004300414'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/resources-on-retrospectives.html' title='Resources on Retrospectives'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5543711386845890278</id><published>2009-07-17T01:35:00.007-05:00</published><updated>2009-09-07T18:57:47.978-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>Refactoring @ Scale</title><content type='html'>&lt;span style="font-family:georgia;"&gt;In my previous post, &lt;a href="http://bradapp.blogspot.com/2009/07/refactoring-for-agility.html"&gt;Refactoring for Agility&lt;/a&gt;, I posted an outline and some thoughts for Part I of an Overview on Refactoring. Now I'm ready to post on Part II which is about refactoring @ scale. By "at scale" I mean in the larger context of other agile practices, as well as for large projects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PART II - REFACTORING @ SCALE&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Scaling-Up&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To scale refactoring for larger projects, some additional techniques &amp;amp; issues must be added to the mix.&lt;/li&gt;&lt;li style="font-style: italic; color: rgb(102, 0, 0);"&gt;Note that this is “&lt;span style="font-weight: bold;"&gt;in addition to&lt;/span&gt;” (not “instead of”)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="font-weight: bold; text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Refactoring In-the-Small&lt;/span&gt;&lt;/td&gt;&lt;td style="font-weight: bold; text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Refactoring @ Scale&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Small, Fast &amp;amp; Frequent Refactorings&lt;/td&gt;&lt;td style="text-align: center;"&gt;Larger, Periodic &amp;amp; Planned Restructurings&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Emergent Design&lt;/td&gt;&lt;td style="text-align: center;"&gt;Incremental Design &amp;amp; Evolutionary Architecture&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Deferred Refactoring&lt;/td&gt;&lt;td style="text-align: center;"&gt;Restructuring &amp;amp; Technical Debt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Code Smells&lt;/td&gt;&lt;td style="text-align: center;"&gt;Architecture Smells&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Design Principles &amp;amp; Patterns&lt;/td&gt;&lt;td style="text-align: center;"&gt;Software Modifiability Tactics&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Simple/Clean Code&lt;/td&gt;&lt;td style="text-align: center;"&gt;Supple/Domain-Driven Design&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;2. Emergent Design&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Emergent Design is a fancy name for the resulting design that “emerges” from the synergy of combining Refactoring together with TDD, Continuous Integration and Automated Testing.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;a style="font-style: italic;" href="http://blog.bradapp.net/2009/07/emergent-design-and-evolutionary.html"&gt;Emergent Design&lt;/a&gt;&lt;/strong&gt; means that ...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;3. &lt;a href="http://blog.bradapp.net/2009/06/technical-debt-definition-and-resources.html"&gt;Technical Debt&lt;/a&gt;&lt;/strong&gt;&lt;a href="http://blog.bradapp.net/2009/06/technical-debt-definition-and-resources.html"&gt; [a.k.a. Design Debt]&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;4. Restructuring Technical Debt&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If we accrue a non-trivial amount of technical debt, we can’t simply “refactor” it away.&lt;/li&gt;&lt;li&gt;Paying it off typically requires restructuring efforts (or even reengineering) that must be planned.&lt;/li&gt;&lt;li&gt;Iteration plans must accommodate specific tasks for these restructuring efforts (or even be dedicated to restructuring).&lt;/li&gt;&lt;li&gt;Ignoring it, or deferring it for very long is not a viable option!&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;5. Overview of Restructuring&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identifies higher-level issues (“architecture smells”) that typically represent violations of known principles of good software architecture &amp;amp; design.&lt;/li&gt;&lt;li&gt;Periodically applies larger-scale “refactorings” and/or many small refactorings that were previously deferred.&lt;/li&gt;&lt;li&gt;The goal is to “pay down technical debt” in order to limit the increasing costs of accumulated complexity.&lt;/li&gt;&lt;li&gt;Typically requires a concerted effort that must be separately planned.&lt;/li&gt;&lt;li&gt;Uses not only design patterns/principles, but also architectural patterns/principles, as well as software modifiability tactics.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;6. Refactoring vs. Restructuring&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;See Martin Fowler's description in &lt;a style="font-style: italic;" href="http://www.blogger.com/martinfowler.com/bliki/RefactoringMalapropism.html"&gt;Refactoring Malapropism&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;7. Restructure Periodically&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Restructuring is often associated with absent or neglectful refactoring and/or design.&lt;/li&gt;&lt;li&gt;But … Any large software project spanning multiple teams eventually needs restructuring.&lt;ul&gt;&lt;li&gt;Even in the presence expert-level architecture, design &amp;amp; continuous refactoring&lt;/li&gt;&lt;li&gt;This is just a reality of software evolution/entropy&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Therefore … Large software projects should assume that periodic restructuring will be necessary, and should plan accordingly to:&lt;ul&gt;&lt;li&gt;Clean-up accumulated code-smells and apply numerous refactorings that were deferred but are now sorely needed, &lt;/li&gt;&lt;li&gt;Address architecture smells by applying restructurings, patterns and  modifiability tactics that have broader impact.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;8. Architecture Smells&lt;/strong&gt;&lt;br /&gt;See Stefan Roock's and Martin Lippert's book &lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470858923.html"&gt;Refactoring in Large Software Projects&lt;/a&gt; (There was an earlier version of their work entitled &lt;i&gt;&lt;a href="http://www.martinlippert.org/publications/review/LargeRefactoringsReviewVersion.pdf"&gt;Large Refactorings"&lt;/a&gt;&lt;/i&gt;).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Smells in Dependency Graphs&lt;/li&gt;&lt;li&gt;Smells in Inheritance Hierarchies&lt;/li&gt;&lt;li&gt;Smells in Packages&lt;/li&gt;&lt;li&gt;Smells in Subsystems&lt;/li&gt;&lt;li&gt;Smells in Layers&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;9. Software Modifiability Tactics&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Localize Changes (increase cohesion)&lt;/li&gt;&lt;li&gt;Prevent Ripple Effects (reduce coupling)&lt;/li&gt;&lt;li&gt;Defer Binding-time (defer decision-making)&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;10. When to Consider/Plan Restructuring?&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;11. Evolutionary Architecture&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Software Architecture concerns infrastructure elements that must exist before you can begin execution.&lt;ul&gt;&lt;li&gt;Architecture is about things that are hard to change later, it is difficult to allow an architecture to emerge.&lt;/li&gt;&lt;li&gt;For large projects, this includes high-level organization of the system into functionality/elements that will be allocated to separate teams.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Key techniques of &lt;a href="http://blog.bradapp.net/2009/07/emergent-design-and-evolutionary.html"&gt;Evolutionary Architecture&lt;/a&gt; include:&lt;ul&gt;&lt;li&gt;Deferring Irreversible Decisions to the “Last Responsible Moment” (LRM Principle) &lt;/li&gt;&lt;li&gt;Architectural “Spike”, Architecture Iteration and/or Spike Iteration&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;12. Incremental Design&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Design evolves incrementally, iteration by iteration, based on current business priorities and discovered technical limitations.&lt;/li&gt;&lt;li&gt;Incremental Design …&lt;ul&gt;&lt;li&gt;Does not prohibit thinking about higher-level design.&lt;/li&gt;&lt;li&gt;Does encourage planning in detail only what will be constructed soon.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Focus is on “Just Enough, Just-In-Time” :&lt;ul&gt;&lt;li&gt;Specifying too much detail too soon causes more rework later.&lt;/li&gt;&lt;li&gt;But doing less now and saving the rest for later should not require significantly more work later than it would today.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;We must do &lt;a style="font-style: italic;" href="http://blog.bradapp.net/2009/07/jedi-programming-just-enough-design.html"&gt;Just Enough Design Initially&lt;/a&gt; to attain the right balance of anticipation and adaptation.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;13. Just Enough Design Initially (JEDI)&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Initial design (before coding) is still necessary.&lt;ul&gt;&lt;li&gt;This use of “JEDI” was coined by Stephen Palmer as part of Feature-Driven Development (FDD)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Basic rule of thumb to tell when “JEDI” is achieved:&lt;ul&gt;&lt;li&gt;At iteration-scope, when, after one pass through the iteration backlog, modeling in small groups does not produce any new classes or associations of real significance.&lt;/li&gt;&lt;li&gt;At task/TDD scope, when we have defined enough structure &amp;amp; interface(s) to know specifically what code to write/test, precisely where to write it, and exactly how to invoke it.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Techniques of “the JEDI way” include:&lt;ul&gt;&lt;li&gt;Collaborative Domain Modeling and Color Modeling [from FDD]&lt;/li&gt;&lt;li&gt;Supple Design techniques &amp;amp; patterns&lt;/li&gt;&lt;li&gt;Domain-Driven Design (a.k.a. DDD -- see &lt;a href="http://domaindrivendesign.org/"&gt;domaindrivendesign.org&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Design Blitz &amp;amp; other Agile Modeling techniques (see &lt;a href="http://www.agilemodeling.com/"&gt;agilemodeling.com&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;14. Supple Design &amp;amp; DDD&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Domain-Driven Design (DDD) approaches modeling the core logic of the software by focusing on the domain.&lt;ul&gt;&lt;li&gt;The basic idea is the design should directly reflect the core business domain and domain-logic of the problem to solve&lt;/li&gt;&lt;li&gt;This helps understanding the problem as well as the implementation and increases maintainability of the software.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;DDD uses common principles and patterns as "building blocks" to model &amp;amp; create a "supple design”&lt;ul&gt;&lt;li&gt;Supple: pliant, malleable, limber, yielding or changing readily. &lt;/li&gt;&lt;li&gt;The design is firm yet flexible, with structure and intent both clearly conveyed and deeply realized by the code.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Patterns of Supple Design include: Intention-Revealing Interfaces, Ubiquitous Language, Side-Effect-Free Functions, Assertions, Conceptual Contours, Standalone Classes, Closure of Operations, Declarative Style &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;15. Resources:&lt;/strong&gt;&lt;br /&gt;       &lt;br /&gt;&lt;b&gt;    Resources on Emergent Design and Evolutionary Architecture&lt;/b&gt;&lt;ul&gt;&lt;li&gt;Neal Ford, &lt;b&gt;&lt;a href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=evolutionary+architecture+emergent+design"&gt;&lt;i&gt;Evolutionary Architecture and Emergent Design&lt;/i&gt;&lt;/a&gt;&lt;/b&gt; series of articles on IBM developerWorks: &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.informit.com/title/0321509366"&gt;Emergent Design&lt;/a&gt;: The Evolutionary Nature of Professional Software Development, &lt;/b&gt;by Scott L. Bain&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://architectureinanagileorganization.com/"&gt;&lt;i&gt;Architecture in an Agile Organization&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&lt;i&gt; by Chris Sterling&lt;/i&gt;&lt;i&gt; (online)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;    Resources on Restructuring&lt;/b&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=4&amp;amp;url=http%3A%2F%2Fwww.infoq.com%2Finterviews%2Fmichael-stal-on-architecture-refactoring&amp;amp;ei=FZdlSszqAYfENsTIlZUB&amp;amp;usg=AFQjCNGgGxdn_zhxA-a0Gfyrq9JnVa_N9w&amp;amp;sig2=hws48fbHt5iLDvR3KVjlWA"&gt;InfoQ: Michael Stal on &lt;i&gt;Architecture Refactoring&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470858923.html"&gt;Refactoring in Large Software Projects: Performing Complex Restructurings Successfully&lt;/a&gt;&lt;/b&gt;, by Martin Lippert, Stephen Roock &lt;i&gt;(also an &lt;/i&gt;&lt;b&gt;&lt;a href="http://www.martinlippert.org/publications/review/LargeRefactoringsReviewVersion.pdf"&gt;&lt;i&gt;earlier version online&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&lt;i&gt;)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://scg.unibe.ch/download/oorp/"&gt;Object-oriented Reengineering Patterns&lt;/a&gt;&lt;/b&gt;, by S. Demeyer, S. Ducasse &amp;amp; O. Nierstrasz &lt;i&gt;(freely downloadable online)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;    Resources on Technical Debt&lt;/b&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.danube.com/whitepapers/technical-debt" title="http://www.danube.com/whitepapers/technical-debtTechnical Debt and Design Death"&gt;&lt;i&gt;Technical Debt and Design Death&lt;/i&gt;&lt;/a&gt;&lt;i&gt;:&lt;/i&gt;&lt;/b&gt;&lt;i&gt;How to ensure you can deliver business value in the future as well as in the present; &lt;/i&gt;by Kane Mar and Michael James&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.ibm.com/developerworks/rational/library/edge/09/jun09/designdebteconomics/index.html" title="http://www.ibm.com/developerworks/rational/library/edge/09/jun09/designdebteconomics/index.html"&gt;&lt;i&gt;Design debt economics&lt;/i&gt;&lt;/a&gt;: &lt;/b&gt;&lt;i&gt;A vocabulary for describing the causes, costs, and cures for software maintainability problems&lt;/i&gt;&lt;b&gt;;&lt;/b&gt;by John Elm, IBM developerWorks, June 2009&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.construx.com/Page.aspx?hid=2801"&gt;Managing Technical Debt&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx"&gt;10X Software Development - Technical Debt&lt;/a&gt;&lt;/b&gt;, by Steve McConnell&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://accu.org/index.php/journals/1301"&gt;&lt;i&gt;Managing Technical Debt&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&lt;i&gt;; by Tom Brazier &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.think-box.co.uk/blog/2005/11/repaying-technical-debt.html"&gt;&lt;i&gt;Repaying Technical Debt&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&lt;i&gt;; by Simon Baker &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://architectureinanagileorganization.com/software-debt/"&gt;&lt;i&gt;Software Debt: Depreciation of Value for Software Assets&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&lt;i&gt; and &lt;/i&gt;&lt;b&gt;&lt;a href="http://architectureinanagileorganization.com/chapter-07-technical-debt/"&gt;&lt;i&gt;Technical Debt: Reducing Internal Quality for Short-term Gain&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;&lt;i&gt;, by Chris Sterling&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.pragprog.com/the-pragmatic-programmer/extracts/software-entropy"&gt;&lt;i&gt;Software Entropy: Don’t Tolerate Broken Windows&lt;/i&gt;&lt;/a&gt;&lt;/b&gt;, and &lt;b&gt;&lt;a href="http://media.pragprog.com/articles/sep_02_zerotol.pdf"&gt;&lt;i&gt;Zero-Tolerance Construction&lt;/i&gt;&lt;/a&gt;&lt;/b&gt; by Andy Hunt and Dave Thomas&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;    Resources on Modifiability Tactics&lt;/b&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sei.cmu.edu/library/abstracts/reports/07tr002.cfm"&gt;&lt;b&gt;&lt;i&gt;Modifiability Tactics&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;, SEI @ CMU Technical Report CMU/SEI-2007-TR-002&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tar.hu/softarchpract/ch05lev1sec3.html"&gt;&lt;b&gt;Modifiability Tactics, Chapter 5 section 3&lt;/b&gt;&lt;/a&gt; of &lt;b&gt;Software Architecture in Practice&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect200708.cfm"&gt;&lt;i&gt;Understanding Architectural Patterns in Terms of Tactics and Models&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cs.aau.dk/%7Emly/dbsa07/L8_Design_and_Tactics.pdf"&gt;&lt;b&gt;&lt;i&gt;Design and Tactics&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;, Lecture notes from an &lt;st1:place st="on"&gt;&lt;st1:placename st="on"&gt;Aalborg&lt;/st1:placename&gt;&lt;st1:placetype st="on"&gt; University &lt;/st1:placetype&gt;&lt;/st1:place&gt;course on &lt;b&gt;&lt;a href="http://www.cs.aau.dk/%7Emly/dbsa07/"&gt;Database and Software Architecture&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;    Resources on Supple Design &amp;amp; DDD&lt;/b&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Domain-driven_design"&gt;Wikipedia page on DDD&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/ddd-in-practice%20and%20http://www.typo3-media.com/blog/domain-driven-design-introduction.html"&gt;&lt;b&gt;DDD Intro Article&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;a href="http://www.typo3-media.com/blog/domain-driven-design-introduction.html"&gt;&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.typo3-media.com/blog/domain-driven-design-introduction.html"&gt;DDD – a Brief Introduction&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.cs.colorado.edu/%7Ekena/classes/6448/s05/lectures/lecture30.pdf"&gt;DDD: Supple Design Patterns&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://domaindrivendesign.org/resources/what_is_ddd"&gt;&lt;b&gt;DDD Pattern Summaries&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Free&lt;/b&gt; mini-eBook: &lt;a href="http://www.infoq.com/minibooks/domain-driven-design-quickly"&gt;&lt;b&gt;Domain-Driven Design Quickly&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Yet another free&lt;/b&gt; mini-eBook: &lt;b&gt;&lt;a href="http://dddstepbystep.com/"&gt;Step-by-Step Guide to DDD&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;See also &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;a href="http://domaindrivendesign.org/"&gt;domaindrivendesign.org&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://www.infoq.com/domain-driven-design"&gt;infoq.com/domain-driven-design&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5543711386845890278?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5543711386845890278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5543711386845890278&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5543711386845890278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5543711386845890278'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/refactoring-scale.html' title='Refactoring @ Scale'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5151439327721874734</id><published>2009-07-16T01:32:00.003-05:00</published><updated>2009-08-10T10:36:53.206-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>Refactoring for Agility</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Some of you might have guessed from my recent posts on &lt;a style="font-style: italic;" href="http://blog.bradapp.net/2009/07/emergent-design-and-evolutionary.html"&gt;Emergent Design&lt;/a&gt;,  &lt;a style="font-style: italic;" href="http://blog.bradapp.net/2009/06/technical-debt-definition-and-resources.html"&gt;Technical Debt&lt;/a&gt;,  &lt;a style="font-style: italic;" href="http://blog.bradapp.net/2009/07/jedi-programming-just-enough-design.html"&gt;JEDI Programming&lt;/a&gt;, and &lt;a style="font-style: italic;" href="http://blog.bradapp.net/2009/06/5s-qualities-of-well-designed-well.html"&gt;5S Qualities of Well Designed, Well-Factored Code&lt;/a&gt;, that I've been looking into trying to teach the fundamentals of refactoring and how it scales to larger projects. I've gathered some references and quotes and some ideas for slides that I wanted to bounce around on my blog.&lt;br /&gt;&lt;br /&gt;Here is an outline and some thoughts for part I of some slides ...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PART I - REFACTORING FOR AGILITY&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Overview of Refactoring&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identifies design-maintenance issues (“code smells”) that typically represent violations of known principles of good design.&lt;/li&gt;&lt;li&gt;Incrementally and iteratively applies a set of design improvement techniques (“refactorings”).&lt;/li&gt;&lt;li&gt;The goal is to minimize complexity &amp;amp; duplication in order to maximize simplicity &amp;amp; ease-of-change.&lt;/li&gt;&lt;li&gt;Encourages the “right” design details to emerge “just-in-time” with minimal guesswork/rework.&lt;/li&gt;&lt;li&gt;Scaling-up includes the use of periodic restructuring, initial &amp;amp; incremental design (“just enough”), and evolutionary architecture.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;2. Refactoring Defined&lt;/strong&gt; [cite definition(s)]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Refactoring Myths -- Refactoring is NOT …&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;“Rework” – redesigning things that could, and should, have been designed correctly in the first place.&lt;/li&gt;&lt;li&gt;Design “gold-plating” – work that adds no business value, and merely serves to stroke the egos of perfectionists who are out of touch with business reality.&lt;/li&gt;&lt;li&gt;Miscellaneous code “tidying” – the kind that is “nice to have,” but should only happen when the team has some slack-time, and is a luxury we can do without, without any serious consequences. &lt;/li&gt;&lt;li&gt;A license to “hack” – avoiding any and all initial design &amp;amp; analysis and instead jumping straight to coding with no “real” design.&lt;/li&gt;&lt;li&gt;Reengineering – large-scale restructuring that requires a concerted effort over the course of several weeks/months to re-write or re-architect significant parts of the system.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;4. Refactoring IS …&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A systematic approach to source-code “hygiene” that minimizes the chances of introducing bugs&lt;/li&gt;&lt;li&gt;Improving the design of the code after it has been written&lt;/li&gt;&lt;li&gt;A behavior-preserving transformation of source-code structure&lt;/li&gt;&lt;li&gt;The process of simplifying &amp;amp; consolidating a work-product by making several, small, successive revisions focused on: preserving correctness, removing redundancy, revealing thoughts &amp;amp; intentions, and improving clarity &amp;amp; conciseness.&lt;/li&gt;&lt;li&gt;A disciplined way of making changes while exposing the project to significantly less risk.&lt;/li&gt;&lt;li&gt;An effective means to address the economic reality of software growth/complexity by reducing &amp;amp; amortizing its cost throughout the daily business of code development &amp;amp; maintenance activities.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;5. Why Refactor?&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;6. How to Refactor&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;7. Rules of Clean Code&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;8. Rules for Simple Code&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;9. The Steps of Refactoring&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;10. Code Smells&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;11. Categories of Refactorings&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Small Refactorings&lt;/li&gt;&lt;li&gt;Larger Refactorings/Restructurings&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Each category contains as many as a dozen or more refactorings, most of which are catalogued at http://refactoring.com/catalog/&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;12. Refactorings&lt;/strong&gt; (Some refactorings from real projects)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;See http://refactoring.com/catalog/ for an up-to-date list (and the “Refactoring to Patterns” catalog too)&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;13. What to do if …?&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I spot a “smell” that is not already known or catalogued?&lt;/li&gt;&lt;li&gt;There is no specific known/catalogued “refactoring” for what I think I need?&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;14. When to Refactor?&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;While adding functionality&lt;/li&gt;&lt;li&gt;While fixing a bug&lt;/li&gt;&lt;li&gt;While reviewing code&lt;/li&gt;&lt;li&gt;After coding the same/similar thing for the third time (to “factor out” the duplication)&lt;/li&gt;&lt;li&gt;A.k.a.: The Rule of Three: 3 strikes and you refactor.&lt;/li&gt;&lt;li&gt;After the third time you deferred refactoring a change, for any reason [The Rule of Three, again]&lt;/li&gt;&lt;li&gt;Before the end of the iteration if you haven’t been following The Rule of Three &lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;15. Refactor Continually&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;16. When NOT to Refactor?&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When the build is broken or tests don’t pass&lt;/li&gt;&lt;li&gt;When it would compromise meeting an impending deadline or commitment&lt;/li&gt;&lt;li&gt;When the code in question really just needs to be re-written “from scratch”&lt;/li&gt;&lt;li&gt;When it would modify code/interfaces that could significantly impact/break other work (e.g.: Published/public interfaces and protocols, Database schemas/tables/operations)&lt;/li&gt;&lt;li&gt;Sometimes we must defer refactoring for later and/or plan for subsequent restructuring&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;17. Refactoring to Patterns &amp;amp; Principles&lt;/strong&gt;&lt;br /&gt;Software Design Principles and Design Patterns are the underlying foundation for Refactoring:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Code smells (a.k.a “code pathologies”): Signal a possible violation of design principles, Suggest which refactoring may be needed&lt;/li&gt;&lt;li&gt;Refactoring: Correct a design principle violation (at least partially), Converge toward common design patterns &lt;/li&gt;&lt;li&gt;Design Patterns: Reconcile forces among conflicting design concerns,Restore balance between competing design principles&lt;/li&gt;&lt;li&gt;Design Principles: Lead us to attain desired design qualities/attributes&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;18. Design Attributes/Code Qualities&lt;/strong&gt;&lt;br /&gt;Qualities of Highly Maintainable Software:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Loose Coupling &amp;amp; High Cohesion&lt;/li&gt;&lt;li&gt;Hierarchy (Structural Decomposition)&lt;/li&gt;&lt;li&gt;Abstraction, Encapsulation &amp;amp; Modularity&lt;/li&gt;&lt;li&gt;Sufficiency, Parsimony and Primitiveness&lt;/li&gt;&lt;li&gt;Readability&lt;/li&gt;&lt;li&gt;Testability&lt;/li&gt;&lt;li&gt;Modifiability&lt;/li&gt;&lt;li&gt;Serviceability&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;19. Design Principles: SOLID, SoC, DRY, Shy&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The SOLID Principles of Object-Oriented Design (from Uncle Bob)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The SoC Principle: Separation of Concerns — separate interface from implementation, policy from mechanism, behavior from construction, commands from queries, ...&lt;/li&gt;&lt;li&gt;The DRY Principle: Don’t Repeat Yourself (Eliminate Duplication), Single Point of Truth&lt;/li&gt;&lt;li&gt;The “Structure-Shy” Principle: (“Tell, Don’t Ask!”), The Law of Demeter, Principle of Least Assumed Knowledge&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;20. Other Acronyms of Simple/Agile Design&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OAOO – Say Things Once And Only Once (restatement of the DRY principle)&lt;/li&gt;&lt;li&gt;DTSTTCPW – Do The Simplest Thing That Could Possibly Work! (restatement of the KISS principle)&lt;/li&gt;&lt;li&gt;YAGNI – You Aren’t Gonna Need It!&lt;/li&gt;&lt;li&gt;The LRM Principle: Defer Commitment of Irreversible Decisions to the Last Responsible Moment!&lt;/li&gt;&lt;li&gt;BDUF – Big Design Up-Front! (vs. JEDI)&lt;/li&gt;&lt;li&gt;JEDI – Just Enough Design Initially/In-front!&lt;/li&gt;&lt;li&gt;DDD – Domain-Driven Design&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;21. Design Patterns&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;22. Summary: Refactoring for Agility&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Successively applies small behavior-preserving transformations to eliminate code smells&lt;/li&gt;&lt;li&gt;Based on proven design principles and patterns for achieving maintainability &amp;amp; modifiability&lt;/li&gt;&lt;li&gt;Good automated testing is a prerequisite&lt;/li&gt;&lt;li&gt;Refactoring is not rewriting, rework or restructuring&lt;/li&gt;&lt;li&gt;With refactoring, we continuously invest nominal effort to reduce the risk &amp;amp; cycle-time of changes&lt;/li&gt;&lt;li&gt;The goal is to minimize complexity &amp;amp; duplication in order to maximize simplicity &amp;amp; ease-of-change.&lt;/li&gt;&lt;li&gt;Practiced in a highly disciplined manner, it promotes:&lt;ul&gt;&lt;li&gt;Sufficient functionality &lt;/li&gt;&lt;li&gt;Simple &amp;amp; clean code&lt;/li&gt;&lt;li&gt;Supple design&lt;/li&gt;&lt;li&gt;Serviceable software&lt;/li&gt;&lt;li&gt;Sustainable team velocity&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;23. Resources:&lt;/strong&gt;&lt;br /&gt;Code Smells:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;a href="http://www.testingeducation.org/pt/Refactoring-smells.pdf"&gt;Introduction to Code Smells and Refactoring&lt;/a&gt;&lt;/i&gt; from &lt;a href="http://www.testingeducation.org/"&gt;TestingEducation.org&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;&lt;i&gt;&lt;a href="http://www.cs.siue.edu/wwhite/CS325/CourseNotes/07_Kerievsky0111.ppt"&gt;Code Smells and Refactoring to Patterns&lt;/a&gt;&lt;/i&gt;, by &lt;a href="http://www.industriallogic.com/"&gt;Josh Kerievsky&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;i&gt;&lt;a href="http://wiki.swelab.info/selabwiki/images/4/49/20070523.ppt"&gt;Refactoring and Code Smells&lt;/a&gt;&lt;/i&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://c2.com/xp/CodeSmell.html"&gt;The original WikiWiki CodeSmells page&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://martinfowler.com/bliki/CodeSmell.html"&gt;Martin Fowler's Code Smells page&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://sis36.berkeley.edu/projects/streek/agile/bad-smells-in-code.html"&gt;A Catalogue of Bad Smells in Code&lt;/a&gt;, by Martin Fowler and Kent Beck &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.soberit.hut.fi/mmantyla/badcodesmellstaxonomy.htm"&gt;A Taxonomy of Bad Code Smells&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000589.html"&gt;CodingHorror.com's list of Code Smells&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.industriallogic.com/papers/smellstorefactorings.pdf"&gt;Smells to Refactorings Quick Reference&lt;/a&gt;, by &lt;a href="http://www.industriallogic.com/"&gt;Josh Kerievsky&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://wiki.java.net/bin/view/People/SmellsToRefactorings"&gt;Gene Garcia's mapping of CodeSmells to Refactorings&lt;/a&gt;  &lt;/li&gt; &lt;li&gt;&lt;i&gt;&lt;a href="http://www.ibm.com/developerworks/library/j-ap07088/"&gt;Using Static Analysis Tools to Identify Code Smells&lt;/a&gt;&lt;/i&gt;, IBM developerWorks article by &lt;a href="http://www.testearly.com/"&gt;Paul Duvall&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Design Principles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;S.O.L.I.D. Principles e-Book (free) &lt;a href="http://www.lostechies.com/content/pablo_ebook.aspx"&gt;http://www.lostechies.com/content/pablo_ebook.aspx&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;An O-O Primer, &lt;a href="http://www.rgoarchitects.com/Files/ooprimer.pdf"&gt;http://www.rgoarchitects.com/Files/ooprimer.pdf&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;The Principles of Object-Oriented Design: &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;Design Principles and Patterns, &lt;a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf"&gt;http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf&lt;/a&gt; and &lt;a href="http://www.oodesign.com/"&gt;http://www.oodesign.com/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;The Art of SoC (Separation of Concerns) &lt;a href="http://www.ctrl-shift-b.com/2008/01/art-of-separation-of-concerns.html"&gt;http://www.ctrl-shift-b.com/2008/01/art-of-separation-of-concerns.html&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;Tell, Don’t Ask, &lt;a href="http://www.pragprog.com/articles/tell-dont-ask"&gt;http://www.pragprog.com/articles/tell-dont-ask&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;O-O in One Sentence: Keep it Shy, DRY, and Tell the Other Guy! &lt;a href="http://media.pragprog.com/articles/may_04_oo1.pdf"&gt;http://media.pragprog.com/articles/may_04_oo1.pdf&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ul&gt;Design Patterns:&lt;br /&gt;    - Online Resources:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Design_pattern"&gt;Wikipedia on Design Patterns&lt;/a&gt; &lt;/li&gt; &lt;li&gt;The Patterns Home page: &lt;a href="http://www.hillside.net/patterns"&gt;hillside.net/patterns&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.oodesign.com/"&gt;Design Patterns Reference&lt;/a&gt; and &lt;a href="http://www.cs.wustl.edu/%7Eschmidt/tutorials-patterns.html"&gt;Patterns Tutorials&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://docs.bradapp.net/patterns-intro.html"&gt;Patterns &amp;amp; Software: Essential Concepts &amp;amp; Terminology&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;     - Books:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.informit.com/title/0201633612"&gt;Design Patterns&lt;/a&gt;, by the “Gang of Four” &lt;i&gt;(the book that started it all)&lt;/i&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.cse.wustl.edu/%7Eschmidt/POSA/"&gt;POSA Series of books&lt;/a&gt; on Pattern-Oriented Software Architecture&lt;/li&gt; &lt;li&gt;&lt;a href="http://oreilly.com/catalog/9780596007126/"&gt;Head First Design Patterns&lt;/a&gt;, from the O’Reilly &lt;a href="http://oreilly.com/store/series/headfirst.html"&gt;Head First&lt;/a&gt; Series&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.informit.com/title/0321213351"&gt;Refactoring to Patterns&lt;/a&gt;; by Joshua Kerievsky&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.informit.com/title/0135974445"&gt;Agile Software Development, Principles, Patterns, and Practices&lt;/a&gt; by Robert C.  Martin&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.informit.com/title/0321413091"&gt;Implementation Patterns&lt;/a&gt;; by Kent Beck &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.informit.com/title/0321247140"&gt;Design Patterns Explained (2ed)&lt;/a&gt;; by Alan Shalloway, James Trott&lt;/li&gt;&lt;/ul&gt;Other Agile Design Slogans:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XP Simplicity Rules, &lt;a href="http://c2.com/cgi/wiki?XpSimplicityRules"&gt;http://c2.com/cgi/wiki?XpSimplicityRules&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;Essential XP: Simple Design, &lt;a href="http://www.xprogramming.com/xpmag/expEmergentDesign.htm"&gt;http://www.xprogramming.com/xpmag/expEmergentDesign.htm&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;DTSTTCPW - &lt;a href="http://c2.com/cgi/wiki?DoTheSimplestThingThatCouldPossiblyWork"&gt;http://c2.com/cgi/wiki?DoTheSimplestThingThatCouldPossiblyWork&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;OAOO - &lt;a href="http://c2.com/cgi/wiki?OnceAndOnlyOnce"&gt;http://c2.com/cgi/wiki?OnceAndOnlyOnce&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;YAGNI - &lt;a href="http://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It"&gt;http://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;LRM - &lt;a href="http://stevesmithblog.com/blog/delaying-decisions/"&gt;http://stevesmithblog.com/blog/delaying-decisions&lt;/a&gt;, &lt;a href="http://vig.pearsoned.co.uk/samplechapter/0321150783.pdf"&gt;http://vig.pearsoned.co.uk/samplechapter/0321150783.pdf&lt;/a&gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;BDUF - &lt;a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front"&gt;http://en.wikipedia.org/wiki/Big_Design_Up_Front&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;JEDI - &lt;a href="http://www.featuredrivendevelopment.com/node/507"&gt;http://www.featuredrivendevelopment.com/node/507&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;li&gt;DDD - &lt;a href="http://www.domaindrivendesign.org/"&gt;http://www.domaindrivendesign.org/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5151439327721874734?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5151439327721874734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5151439327721874734&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5151439327721874734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5151439327721874734'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/refactoring-for-agility.html' title='Refactoring for Agility'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-8598265661142626925</id><published>2009-07-14T01:02:00.001-05:00</published><updated>2009-08-10T08:52:51.687-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Version-Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>Mercurial, Git and Scala</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Three more brand new books I just received that are worth mentioning ...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://oreilly.com/catalog/9780596520120/"&gt;Version Control with Git&lt;/a&gt;: Powerful tools and techniques for collaborative software development, by Jon Loeliger, O'Reilly, 2009&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://oreilly.com/catalog/9780596800673/"&gt;Mercurial: The Definitive Guide&lt;/a&gt; -- Modern Software for Collaboration, by Bryan O'Sullivan, O'Reilly, 2009 (also see the online version at &lt;a href="http://hgbook.red-bean.com/"&gt;hgbook.red-bean.com&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://pragprog.com/titles/vsscala/programming-scala"&gt;Programming Scala&lt;/a&gt;: &lt;span style="font-weight: bold;"&gt;Tackle Multi-Core Complexity on the Java Virtual Machine&lt;/span&gt;,&lt;br /&gt;by Venkat Subramaniam, Pragmatic Programmers, 2009&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For those who may not know ...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt; (like &lt;a href="http://www.git-scm.org/"&gt;Git&lt;/a&gt;) is an open-source, &lt;a href="http://blog.bradapp.net/2008/02/distributed-version-control-systems.html"&gt;distributed version-control system&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;While &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt; is the "hot" new JVM-based programming language that not only contains the "best of both worlds" from other statically-typed languages (like Java) as well as dynamic languages like &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;, but also the best of both worlds from object-oriented programming languages (OOPLs) and functional programming languages (like &lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt; and &lt;a href="http://www.haskell.org/"&gt;Haskell&lt;/a&gt;). Plus it has message-passing and actor-based support for concurrency (like Erlang) while still being strongly typed and having access to all your favorite Java APIs (and anything else that compiles to JVM). Not too mention that Scala has a kick-butt Web development framework called &lt;a href="http://liftweb.net/"&gt;Lift&lt;/a&gt; that is a next-generation framework to the likes of &lt;a href="http://rubyonrails.org/"&gt;Rails&lt;/a&gt;/&lt;a href="http://grails.org/"&gt;Grails&lt;/a&gt; and &lt;a href="http://struts.apache.org/"&gt;Apache Struts&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Scala is my first pick for the programming language that is most excitingly poised for the &lt;a href="http://www.gotw.ca/publications/concurrency-ddj.htm"&gt;multi-core programming revolution&lt;/a&gt; in the age of multicore processors, cloud-computing, web 2.0 and access to all your favorite Java APIs/apps.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-8598265661142626925?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/8598265661142626925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=8598265661142626925&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/8598265661142626925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/8598265661142626925'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/mercurial-git-and-scala.html' title='Mercurial, Git and Scala'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1782088176993658093</id><published>2009-07-11T00:56:00.001-05:00</published><updated>2009-08-08T12:54:51.812-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: Landing the Tech Job You Love</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I blogged earlier about &lt;a href="http://blog.bradapp.net/2009/06/books-passionate-programmer-and-nomadic.html"&gt;&lt;b&gt;The Passionate Programmer&lt;/b&gt; and &lt;b&gt;The Nomadic Developer&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A new book just came out that seems like the perfect complement to these two: &lt;a style="font-weight: bold;" href="http://pragprog.com/titles/algh/land-the-tech-job-you-love"&gt;Landing the Tech Job You Love&lt;/a&gt; by &lt;a href="http://theworkinggeek.com/"&gt;Andy Lester&lt;/a&gt; (also from the &lt;a href="http://pragprog.com/"&gt;Pragmatic Programmers&lt;/a&gt;). I've only just started reading it but so far I like it a LOT! It also received a &lt;a href="http://dobbscodetalk.com/index.php?option=com_myblog&amp;amp;show=Land-the-Tech-Job-You-Love-Book-Review.html&amp;amp;Itemid=29"&gt;nice review by Mike Riley in DDJ online&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Rather than cite the blurb from the book this time, I rather like the description given in &lt;a href="http://www.pragmaticprogrammer.com/press_releases/land-the-tech-job-you-love"&gt;the press release&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-style: italic; font-family: times new roman; color: rgb(0, 0, 102);"&gt;&lt;p&gt;It’s tougher than ever to get that great job. Companies are more demanding and your competition is smart, tech-savvy, and resourceful. You’ve got the right skills for the job—you also need the right skills for job hunting. You need to work deliberately on your new job hunting skills, and this book can help. Old fashioned cookie-cutter job hunting skills aren’t enough: &lt;em&gt;Land the Tech Job You Love&lt;/em&gt; gives you the background and the hard-won wisdom to leapfrog those who play by the old rules.&lt;/p&gt;    &lt;p&gt;Andy tells us, “Life is too short for a job you don’t love. You’re not stuck—other opportunities are available for you, if you know where to look and can work the hiring process to your advantage. This book will help you get that job you love.”&lt;/p&gt;    &lt;p&gt;In this book, you’ll learn how to find the job you want that fits you and your employer. You’ll uncover the hidden jobs that never make it into the classifieds or Monster. You’ll start making and maintaining the connections that will drive your future career moves.&lt;/p&gt;    &lt;p&gt;Andy started writing this book years before the recession (a.k.a. “econopocalypse”) hit. He looked at the conventional wisdom and the advice available in generic books on job hunting, and found the conventional wisdom just didn’t work for programmers, system administrators, testers, and other related development positions.&lt;/p&gt;    &lt;p&gt;He looked at everything from whether you should look for work on online job boards to whether you should lead off your resume with your objectives. Although he has definite answers for these two, he found that the answer to most questions is “it depends.” His book leads you to taking an honest assessment of what you offer and what you want in a job so that you end up in a job that is a good fit for you and your employer.&lt;/p&gt;    &lt;p&gt;This is an important book for you to read whether you currently have a job or not. The same tactics you take to make yourself more employable will also make it easier to get promoted in your current company.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;Also see Andy Lester's presentation on &lt;a style="font-weight: bold;" href="http://assets.en.oreilly.com/1/event/27/Effective%20Job%20Interviewing%20from%20Both%20Sides%20of%20the%20Desk%20Presentation.pdf"&gt;Effective Job Interviewing from Both Side of the Desk&lt;/a&gt;  and his blog @ &lt;a href="http://theworkinggeek.com/"&gt;TheWorkingGeek.com&lt;/a&gt; for his thoughts on "Job hunting and working life for programmers, sysadmins and all other techies"&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1782088176993658093?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1782088176993658093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1782088176993658093&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1782088176993658093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1782088176993658093'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/book-landing-tech-job-you-love.html' title='BOOK: Landing the Tech Job You Love'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4792000499268711571</id><published>2009-07-08T00:35:00.000-05:00</published><updated>2009-07-19T02:44:51.844-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>BOOK: The Economics of Iterative Software Development</title><content type='html'>&lt;span style="font-family:georgia;"&gt;In the July issue of &lt;a href="http://www.agilejournal.com/"&gt;the Agile Journal&lt;/a&gt; I reviewed Walker Royce, Kurt Bittner and Mike Perrow's book &lt;a style="font-weight: bold;" href="http://www.informit.com/title/0321509358"&gt;The Economics of Iterative Software Development: Steering Toward Better Business Results&lt;/a&gt;. Here is an excerpt ...&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(0, 0, 102);"&gt;&lt;strong&gt;The Economics of Iterative Software Development: Steering Toward Better Business Results&lt;/strong&gt; is an important text for anyone trying to persuade management to "go iterative" as well as to anyone needing to measure &amp;amp; track the kinds of business results that management needs to see for a software development project.&lt;br /&gt;&lt;br /&gt;I'll be perfectly honest: I was expecting this book to be an extremely dry and boring read, albeit full of lots of useful information densely packed in mathematical models and formulas, perhaps reminiscent of past college days reading a huge tome on socio-political economic theories. It wasn't as bad as I'd feared. Yes - it is a bit dry in places, but those are the exception rather than the rule. And there are lots of "war stories" sprinkled throughout that hold your interest and stop your eyes from glazing over.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;All in all, &lt;b&gt;The Economics of Iterative Software Development&lt;/b&gt; is a solid-book that is a relatively light/quick read with lots of good, practical advice on how to apply an economic model of thinking and measurement for managing and tracking business-results of an iterative project. If you need help doing that, or with communicating to your management about the need and benefits of an iterative approach, then you need to read this book!&lt;/blockquote&gt;&lt;br /&gt;See &lt;a href="http://www.agilejournal.com/articles/columns/column-articles/1926-featured-book-the-economics-of-iterative-software-development-"&gt;the full review&lt;/a&gt; for more details.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4792000499268711571?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4792000499268711571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4792000499268711571&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4792000499268711571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4792000499268711571'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/book-economics-of-iterative-software.html' title='BOOK: The Economics of Iterative Software Development'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2269842031547175784</id><published>2009-07-06T01:33:00.005-05:00</published><updated>2009-07-19T01:53:44.723-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>JEDI Programming - Just Enough Design Initially</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I left a &lt;a href="http://agileinaflash.blogspot.com/2009/06/what-is-missing.html#comments"&gt;comment on the "What is Missing?" entry&lt;/a&gt; at the &lt;a href="http://agileinaflash.blogspot.com/"&gt;Agile-in-a-Flash blog&lt;/a&gt;. The author's asked the questioin "What is missing?" from the stack of Agile flashcards they are developing. I responded ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think the "JEDI" approach is missing (any by that, I don't mean the mantra of "use the source Luke" ;-)&lt;br /&gt;&lt;br /&gt;I think there is something missing regarding TDD and Design. &lt;a href="http://agileinaflash.blogspot.com/2009/03/unclebobs-three-rules-of-tdd.html"&gt;Uncle Bob's three rules of TDD&lt;/a&gt; (and other writings) often mislead people to think that there is ZERO design up-front, as is if NOT doing Big-Design-Up-Front (BDUF) implies that therefore there is zero up-front design (NoDUF).&lt;br /&gt;&lt;br /&gt;This is false (and Uncle Bob has even vehemently said so in &lt;a style="font-style: italic;" href="http://blog.objectmentor.com/articles/2009/04/25/the-scatology-of-agile-architecture"&gt;The Scatology of Agile Architecture&lt;/a&gt;) but how does a newcomer reconcile it with the three rules of TDD? I can't write test-code without being able to invoke the thing-under-test. I can't invoke a thing if I haven't attempted to design the interface.&lt;br /&gt;&lt;br /&gt;If I design an interface (even for a single method/subroutine) I have to have some inkling of which class/package/module it would go in, at least INITIALLY! There is some initial amount of design I do before writing a test that is both necessary and sufficient to define "just enough" of the interface of what I want my test-case to test.&lt;br /&gt;&lt;br /&gt;So I think that is what is missing, a card called "&lt;strong&gt;JEDI&lt;/strong&gt;", for "&lt;strong&gt;Just Enough Design Initially&lt;/strong&gt;."&lt;br /&gt;&lt;br /&gt;To my knowledge, this particular definition of the JEDI acronym in agile development was first used by Stephen Palmer and other FDD luminaries at &lt;a href="http://www.step-10.com/"&gt;www.step-10.com&lt;/a&gt; and &lt;a href="http://featuredrivendevelopment.com/"&gt;featuredrivendevelopment.com&lt;/a&gt;  (just do a &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=JEDI+AND+%22Just+Enough+Design%22"&gt;Google-search on "JEDI" AND "Just Enough Design"&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I also think there is a relationship between JEDI and Eric Evan's " &lt;a href="http://www.domaindrivendesign.org/"&gt;Domain-Driven Design&lt;/a&gt; (DDD), &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/05/15/domain-driven-design-supple-design-patterns-series.aspx"&gt;Supple Design&lt;/a&gt; (part of DDD), as well as *some* of the so-called "&lt;a href="http://www.oreillynet.com/pub/a/network/2005/11/15/what-is-prefactoring.html"&gt;Pre-factoring&lt;/a&gt;". But it can be a risky, slippery-slope, so it would be great to have some guidance to help us know when we've done "Just Enough Design In-front/Initially."&lt;br /&gt;&lt;br /&gt;I suppose JEDI is a way of straddling the "appropriate range" of risk between anticipation and adaptation. I envision some kind of graph or diagram with axes ...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;On the left-hand side of overanticipating we have "too much too soon" and big/all up-front design.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;All the way on the right-hand-side we have "too little too late." Here you are faced with legacy-rewrites, system re-engineering, large-scale restructuring, etc.&lt;/li&gt;&lt;/ul&gt;The problem with both extremes is the creation of &lt;a href="http://blog.bradapp.net/2009/06/technical-debt-definition-and-resources.html"&gt;technical debt&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One Extreme does it by adding complex structures and behaviors too early in the cone-of-uncertainty and causes too much rework to rewrite that which was not yet certain and subject to much variability.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The other extreme does it by sheer entropy/decay/rot that results from inattention and/or negligence&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In the middle we have a delicate balance that we need to strike, and which JEDI represents: "Just enough" and "Just-in-Time." The problem is that this is a range, not a single perfect point. What makes the problem harder is that the range is different for different projects, depending on a number of factors (including scale and distribution). There is a certain amount of "pay-up-front" and "pay-later" that need to be balanced with "pay-as-you-go."&lt;br /&gt;&lt;br /&gt;I imagine this "range" represents how to find the "sweet spot" that demarcates Just Enough Design Initially:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the middle of the scale is pure refactoring. It is strictly emergent, pay as you go just-in-time by focusing ruthlessly on keeping code clean and simple.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Minor-to-moderate restructurings (too large to be refactorings, too small to be total re-writes) are to the right. Sometimes larger systems and/or systems constructed by multiple-teams can do a great job at refactoring and still not be able to avoid the need for minor-to-moderate restructuring, particular for aspects of the design that cut across teams and architecture and functionality.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Just to the left of refactoring would be so-called "pre-factoring", where you have enough experience refactoring that you are able to apply basic application of encapsulation, DRY, separation of concerns, etc. without adding premature abstraction of inessential complexity. This is hard to get right, and has risk associated with it. But it does get progressively less with the better judgment that comes experience and practice.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To the left of pre-factoring would be the subset of DDD known as Supple Design. And the rest of DDD would be to the left of supple-design.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Somewhere in this continuum might be "segments" corresponding to specific practices or techniques besides DDD and refactoring, such as &lt;a href="http://www.informit.com/title/0132350882"&gt;clean code&lt;/a&gt;, simple/incremental design, and evolutionary architecture.&lt;br /&gt;&lt;br /&gt;The trick of knowing the "just enough" range lies not just in experience and discipline, but also in understanding your context and your "lead-time". Lead-time in particular dictates how soon in advance you need to be able to think and anticipate (and at what level of detail). The shorter the lead/cycle-time, the less you need to anticipate and prognosticate.&lt;br /&gt;&lt;br /&gt;So I would see JEDI as a card that somehow is able to depict this continuum between anticipation and adaptation and where these various techniques fall on it, and the factors/tradeoffs that help you identify the right "range" for yourself. (And of course there is a close relation to technical debt and the cost-of-change curve :-)&lt;br /&gt;&lt;br /&gt;Anyone ever seen a diagram that bears any resemblance to what I'm thinking of here?&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2269842031547175784?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2269842031547175784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2269842031547175784&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2269842031547175784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2269842031547175784'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/jedi-programming-just-enough-design.html' title='JEDI Programming - Just Enough Design Initially'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4941169858845470475</id><published>2009-07-02T02:02:00.018-05:00</published><updated>2009-09-07T21:11:43.558-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Emergent Design and Evolutionary Architecture - Resources</title><content type='html'>&lt;span style="font-family:georgia;"&gt;As a bit of a follow-up to my earlier posting on &lt;a href="http://blog.bradapp.net/2009/06/technical-debt-definition-and-resources.html"&gt;Technical Debt - Definition and Resources&lt;/a&gt; I gathered some resources on the subject of Evolutionary Architecture and Emergent Design (which is closely related to refactoring, restructuring and reengineering).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.emergentarchitecture.com/pdfs/OZJournal.pdf"&gt;Emergent Processes&lt;/a&gt; and &lt;a style="font-style: italic;" href="http://www.emergentarchitecture.com/pdfs/YalePerspecta.pdf"&gt;Emergent Models of Architectural Practice&lt;/a&gt;, by Tom Wiscombe of &lt;a href="http://www.emergentarchitecture.com/"&gt;emergentarchitecture.com&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Neal Ford's series of IBM developerWorks &lt;a style="font-style: italic;" href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=evolutionary+architecture+emergent+design:"&gt;articles on Evolutionary Architecture and Emergent Design&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Chris Sterling's (upcoming) book on &lt;a style="font-weight: bold;" href="http://architectureinanagileorganization.com/"&gt;Architecture in an Agile Organization&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/emergent_architecture"&gt;Articles on Emergent Architecture&lt;/a&gt;, from InfoQ.com&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://dx.doi.org/10.1109/HICSS.2007.136"&gt;Competing in the Era of Emergent Architecture: The Case of Packaged Software Industry&lt;/a&gt;, Proceedings of the 40th Annual Hawaii International Conference on System Sciences (2007)&lt;/li&gt;&lt;li&gt;Any of the fine &lt;a href="http://www.theagileengineer.com/public/Presentations/Presentations.html"&gt;presentations by Ryan Shriver&lt;/a&gt;, over at &lt;a href="http://www.theagileengineer.com/"&gt;theagileengineer.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://scalingsoftwareagility.wordpress.com/category/agile-architecture/"&gt;Dean Leffingwell's writings on Agile Architecture&lt;/a&gt; and  &lt;span style="font-style: italic;"&gt;Intentional Architecture&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Jon Kern's &lt;a style="font-style: italic;" href="http://javasymposium.techtarget.com/html/images/JKern_Agile_Architecture_001.pdf"&gt;Just Enough Early Architecture to Guide Development&lt;/a&gt;, from &lt;a href="http://technicaldebt.wetpaint.com/"&gt;TechnicalDebt.WetPaint.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mysite.verizon.net/dennis.mancl/oopsla09"&gt;OOPSLA '09 workshop on "Architecture in an Agile World"&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://csse.usc.edu/csse/event/2009/Arch-Workshop/presentations/Kruchten%20090608%20agile%20architecture%20usc.ppt"&gt;Software Architecture and Agile Software Development - An Oxymoron?&lt;/a&gt; by Philippe Kruchten &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilearchitect.org/agile/index.asp"&gt;Agile Architect&lt;/a&gt; by Philippe Kruchten &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.martinfowler.com/articles/designDead.html"&gt;Is Design Dead?&lt;/a&gt; by Martin Fowler (see the section "Growing an Architecture") &lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book"&gt;97 Things Every Software Architect Should Know&lt;/a&gt; (the book)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://alistair.cockburn.us/Extending+an+architecture+as+it+earns+business+value"&gt;Extending an architecture as it earns business value&lt;/a&gt; by Alistair Cockburn &lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.eoinwoods.info/doc/SA2008-Woods-Agile-Arch.pdf"&gt;Agile Architecture - How much is enough?&lt;/a&gt;, by Eoin Woods&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.agilearchitect.org/agile/index.asp"&gt;Agile Architect&lt;/a&gt; site (including the &lt;a href="http://www.agilearchitect.org/agile/role.htm"&gt;role of the agile architect&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Articles at &lt;a href="http://blog.softwarearchitecture.com/"&gt;blog.softwarearchitecture.com&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.improvement-services.nl/Agile%20Architecting%20-%20Friends%20or%20Foes.pdf"&gt;Agile Architecting&lt;/a&gt; by Erik Philippus &lt;/li&gt;&lt;li&gt;Eric Evans' work on &lt;a style="font-style: italic;" href="http://domaindrivendesign.org/resources/what_is_ddd"&gt;Domain-Driven Design&lt;/a&gt;, see in particular the &lt;a href="http://domaindrivendesign.org/sites/default/files/discussion/PatternSummariesUnderCreativeCommons.doc"&gt;DDD Pattern Summaries&lt;/a&gt; and the  &lt;a href="http://www.infoq.com/minibooks/domain-driven-design-quickly"&gt;InfoQ eBook Domain Driven Design Quickly&lt;/a&gt; (also this &lt;a href="http://dddstepbystep.com/"&gt;Step-by-Step Guide to DDD&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Scott Ambler's &lt;a style="font-style: italic;" href="http://www.agilejournal.com/articles/columns/column-articles/146-scaling-agile-development-via-architecture"&gt;Scaling Agile Development via Architecture&lt;/a&gt; from the Agile Journal&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.leansoftwarearchitecture.com/"&gt;Lean Software Architecture&lt;/a&gt;, from Jim Coplien and Gertrud Bjornvig&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://techdistrict.kirkk.com/2009/05/06/agile-architecture/"&gt;Agile Architecture&lt;/a&gt; and &lt;span style="font-family:georgia;"&gt;&lt;a style="font-style: italic;" href="http://techdistrict.kirkk.com/2009/06/15/agile-architecture-requires-modularity"&gt;Agile Architecture Requires Modularity&lt;/a&gt;, by Kirk Knoernschild&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;a style="font-style: italic;" href="http://www.acube-community.org/wikis/images/7/7c/ProductLineAndAgile.pdf"&gt;Product Line Architectures and Agile Development&lt;/a&gt;, M.Ali Babar et.al. &lt;/li&gt;&lt;li&gt; &lt;a style="font-style: italic;" href="http://www.acube-community.org/wikis/images/c/c8/AliBabar-GoingAgile.pdf"&gt;Going Agile? Beware of Architecture-Related Changes and Challenges&lt;/a&gt;, &lt;span style="font-family:georgia;"&gt;M.Ali Babar et.al.&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;The &lt;/span&gt;&lt;a style="font-style: italic;" href="http://epf.eclipse.org/wikis/openup/practice.tech.evolutionary_arch.base/guidances/practices/evolutionary_arch_CF7385B0.html"&gt;Evolutionary Architecture Practice&lt;/a&gt; from the &lt;a href="http://epf.eclipse.org/"&gt;Eclipse Process Framework &lt;/a&gt;&lt;/li&gt;&lt;li&gt;DevJam's David Hussman on &lt;a style="font-style: italic;" href="http://www.intertech.com/resource/usergroup/architecture-agility-color.pdf"&gt;Architecture and Agility&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0809/rW_SW_ArchitectureMeetsAgility.pdf"&gt;Architecture Meets Agility&lt;/a&gt;, by Hakan Erdogmus&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.isr.umd.edu/%7Eaustin/reports.d/INCOSE2008-Paper378.pdf"&gt;Toward and Evolutionary System of Systems Architecture&lt;/a&gt;, by Scott Selberg &amp;amp; Mark Austin, INCOSE 2008&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://greenbay.usc.edu/csci577/spring2006/site/guidelines/LeanMBASE_Guidelines_V1.5.pdf"&gt;Guidelines for Lean Model-Based (System) Architecting and Software Engineering&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.csi.stevens-tech.edu/Keynote%20&amp;amp;%20Invited/Murray%20Cantor.pdf"&gt;Systems Engineering and Architecting Challenges: Application to Agile Development&lt;/a&gt;, by Murray Cantor&lt;/li&gt;&lt;li&gt;The (freely available online) book &lt;a style="font-weight: bold;" href="http://scg.unibe.ch/download/oorp/"&gt;Object-Oriented Reengineering Patterns&lt;/a&gt;, by Serge Demeyer, Stéphane Ducasse and Oscar Nierstrasz&lt;/li&gt;&lt;li&gt;The &lt;a style="font-style: italic;" href="http://homepages.inf.ed.ac.uk/perdita/Reengineering/"&gt;System Reengineering Patterns Project&lt;/a&gt;, by Perdita Stevens et.al. from Heriot-Watt University in Edinburgh (also see the &lt;a href="http://www.sei.cmu.edu/reengineering/"&gt;SEI page on software reengineering&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4941169858845470475?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4941169858845470475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4941169858845470475&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4941169858845470475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4941169858845470475'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/07/emergent-design-and-evolutionary.html' title='Emergent Design and Evolutionary Architecture - Resources'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4436677287382337222</id><published>2009-06-28T00:52:00.012-05:00</published><updated>2009-07-27T17:38:04.196-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Embracing Change - quotable quotes on change and uncertainty</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Every now and then I come across a good quote about embracing the fact that change and uncertainty are an essential inherent reality of software development. Here are the ones I like so far. Do you have another one you like? If so, leave a comment and share it with me.&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;ul&gt;&lt;table border="1" cellpadding="3" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;It’s inevitable that requirements will change.  Business needs evolve, new users or markets are identified, business rules and government regulations are revised, and operating environments change over time.  In addition, the business need becomes clearer as the key stakeholders become better educated about what their true needs are.&lt;/span&gt;&lt;br /&gt;&lt;em style="color: rgb(153, 51, 0); font-weight: bold;"&gt;-- Karl Wiegers, &lt;a href="http://www.processimpact.com/more_about_reqs_book/chapter_2.pdf"&gt;&lt;i&gt;Cosmic Truths about Software Requirements&lt;/i&gt;&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="color: rgb(0, 0, 102);"&gt;&lt;td&gt;The growing unpredictability of the future is one of the most challenging aspects of the new economy:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Turbulence—in both business and technology—causes change, which can be viewed either as a threat to be guarded against or as an opportunity to be embraced.&lt;/li&gt;&lt;li&gt;Rather than resist change, the agile approach strives to accommodate it as easily and efficiently as possible, while maintaining an awareness of its consequences.  &lt;/li&gt;&lt;/ul&gt;Facilitating change is more effective than attempting to prevent it.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Learn to trust in your ability to respond to unpredictable events; it's more important than trusting in your ability to plan for disaster.&lt;/li&gt;&lt;li&gt;Agile processes harness change for the customer's competitive advantage.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;-- Martin Fowler and James Highsmith, &lt;a href="http://www.ddj.com/showArticle.jhtml?articleID=184414755"&gt;On the Agile Manifesto&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Orders must change rapidly in response to change in circumstances. If one sticks to the idea that once set, a plan should not be changed, a business cannot exist for long.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold; font-style: italic;"&gt;-- Taiichi Ohno, &lt;a href="http://www.amazon.com/Toyota-Production-System-Beyond-Large-Scale/dp/0915299143"&gt;Toyota Production System&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="color: rgb(0, 102, 0);"&gt;&lt;td&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;It’s not the strongest who survive, nor the most intelligent, but the ones most adaptable to change.&lt;/span&gt;&lt;br /&gt;&lt;em style="font-weight: bold; color: rgb(102, 51, 102);"&gt;-- attributed to Charles Darwin&lt;/em&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;Doubt is not a pleasant condition, but certainty is absurd. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0); font-weight: bold; font-style: italic;"&gt;-- Voltaire&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;It is not necessary to change; survival is not mandatory.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold; font-style: italic;"&gt;-- W.  Edwards Deming&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;When the rate of change outside exceeds the rate of change inside, the end is in sight.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold; font-style: italic;"&gt;-- Jack Welch&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="color: rgb(102, 0, 204);"&gt;&lt;td&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;The Futility of Fighting Change: Requirements, technologies, teams, priorities, companies, usage, users, everything will change. There are things you cannot know until you know them. Give up. Change is inevitable. Our process must be a process, therefore, of change.&lt;/span&gt;&lt;br /&gt;&lt;em style="font-weight: bold;"&gt;-- Scott L. Bain &lt;a href="http://www.informit.com/articles/article.aspx?p=1180983&amp;amp;seqNum=12http://www.cmcrossroads.com/content/view/6752/264/"&gt;&lt;i&gt;The Nature of Software Development&lt;/i&gt;&lt;/a&gt;, May 2008&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;Uncertainty is inherent and inevitable in software development processes and products.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0); font-weight: bold; font-style: italic;"&gt;-- H. Ziv and D.J. Richardson, &lt;a href="http://jeffsutherland.com/papers/zivchaos.html"&gt;The Uncertainty Principle in Software Engineering&lt;/a&gt;, Aug 1996&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;It will be important to organize future projects with enough agility to be able to adapt to the additional emergence of new sources of unpredictable change.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold; font-style: italic;"&gt;-- Barry Boehm, &lt;a href="http://www.computer.org/portal/site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&amp;amp;pName=computer_level1_article&amp;amp;TheCat=1005&amp;amp;path=computer/homepage/0308&amp;amp;file=cover.xml&amp;amp;xsl=article.xsl&amp;amp;;jsessionid=JykdXy48m4tvk2thLQP3drL1Gx2PNcTPKMtwY2q0fqRpB"&gt;Making a Difference in the Software Industry&lt;/a&gt;, March 2008&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;ul&gt;&lt;li&gt;When we program, we transform a poorly understood problem into a precise set of instructions that can be executed by a computer.&lt;/li&gt;&lt;li&gt;When we think we understand a program?s requirements, we are invariably wrong.&lt;/li&gt;&lt;li&gt;When we do not completely understand a problem, we must research it until we know that we understand it.&lt;/li&gt;&lt;li&gt;Only when we truly understand a problem can we develop a superior product to address that problem.&lt;/li&gt;&lt;li&gt;What the users think they want will change as soon as they see what we develop. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;i&gt;-- Watts Humphrey, &lt;a href="http://www.sei.cmu.edu/news-at-sei/columns/watts_new/2003/1q03/watts-new-1q03.htm"&gt;Some Programming Principles--Requirements&lt;/a&gt;, January 2003&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;There is a very fancy technical term biologists use to describe completely stable systems. This highly sophisticated technical term is the word “DEAD!” Change is not the enemy – stagnation is!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold; font-style: italic;"&gt;-- from &lt;a href="http://www.cmcrossroads.com/content/view/6752/264/"&gt;The Unchangeable Rules of Software Change&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;Requirements changes late in the lifecycle are competitive advantage, IF you can act on them!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153); font-weight: bold; font-style: italic;"&gt;-- Mary Poppendieck&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;Becoming agile means accepting uncertainty about the future as a way of dealing with the future. Any project development effort should be a balance between anticipation (planning based on what we know now) and adaptation (responding to what we learn over time).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0); font-weight: bold; font-style: italic;"&gt;-- James Highsmith, &lt;a href="http://blog.cutter.com/2008/09/16/to-attract-agile-change-embrace-uncertainty/"&gt;Embrace Uncertainty&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Scrum’s Uncertainty Principle is: Customers don’t know what they want until they see it, and they always reserve the right to change their mind.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold; font-style: italic;"&gt;-- Jeff Sutherland, &lt;a href="http://www.controlchaos.com/download/Emergence%20of%20Essential%20Systems.pdf"&gt;Emergence of Essential Systems&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="color: rgb(0, 102, 0);"&gt;&lt;td&gt;Systems requirements cannot ever be stated fully in advance, not even in principle, because the user doesn’t know them in advance--not even in principle.&lt;br /&gt;&lt;br /&gt;To assert otherwise is to ignore the fact that the development process itself changes the user’s perceptions of what is possible, increases his or her insights into the applications environment, and indeed often changes that environment itself.&lt;br /&gt;&lt;br /&gt;We suggest an analogy with the Heisenberg Uncertainty Principle: any system development activity inevitably changes the environment out of which the need for the system arose. System development methodology must take into account that the user, and his or her needs and environment, change during the process.&lt;br /&gt;&lt;em style="font-weight: bold;"&gt;-- Dan McCracken and Michael A. Jackson, ACM SIGSoft, 1982&lt;/em&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ul&gt;&lt;/span&gt;Is your favorite quote about software change/uncertainty missing from the above? Leave a comment and tell me about it!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4436677287382337222?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4436677287382337222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4436677287382337222&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4436677287382337222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4436677287382337222'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/embracing-change-quotable-quotes-on.html' title='Embracing Change - quotable quotes on change and uncertainty'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1232867911987749681</id><published>2009-06-24T00:47:00.042-05:00</published><updated>2010-10-19T11:38:04.568-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Technical Debt - Definition and Resources</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I ran across a few really good papers on the subject of technical debt that are fairly comprehensive in their treatment of not just what it is, but also how to manage it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.danube.com/system/files/CollabNet_WP_Technical_Debt_041910.pdf"&gt;Technical Debt and Design Death&lt;/a&gt;: &lt;em&gt;How to ensure you can deliver business value in the future as well as in the present&lt;/em&gt;; by Kane Mar and Michael James&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.construx.com/Page.aspx?hid=2801"&gt;Managing Technical Debt - a whitepaper&lt;/a&gt;, by Steve McConnell (requires registration, which is free, but also see the blog-entry &lt;a style="font-style: italic;" href="http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx"&gt;10X Software Development - Technical Debt&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.ibm.com/developerworks/rational/library/edge/09/jun09/designdebteconomics/index.html"&gt;Design debt economics&lt;/a&gt;: &lt;em&gt;A vocabulary for describing the causes, costs, and cures for software maintainability problems&lt;/em&gt;; by John Elm, IBM developerWorks, June 2009&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://accu.org/index.php/journals/1301"&gt;Managing Technical Debt&lt;/a&gt;; by Tom Brazier &lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://architectureinanagileorganization.com/software-debt/"&gt;Software Debt - Depreciation of Value for Software Assets&lt;/a&gt; and &lt;a style="font-weight: bold;" href="http://architectureinanagileorganization.com/chapter-07-technical-debt/"&gt;Technical Debt - Reducing Internal Quality for Short-term Gain&lt;/a&gt;, by Chris Sterling, from his forthcoming book &lt;a href="http://www.informit.com/title/0321700597"&gt;&lt;span style="font-weight: bold;"&gt;Managing Software Debt&lt;/span&gt;&lt;/a&gt; (also see his &lt;span&gt;&lt;a title="blocked::http://video.yahoo.com/watch/4754803/12699073" href="http://video.yahoo.com/watch/4754803/12699073"&gt;video presentation&lt;/a&gt;&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;For those not already well-versed on the subject, &lt;span style="color: rgb(153, 51, 0);"&gt;&lt;strong&gt;Technical Debt&lt;/strong&gt; [a.k.a. &lt;em&gt;Design Debt&lt;/em&gt;] occurs when our software becomes difficult or risky to change, and takes increasingly more time &amp;amp; effort to evolve. Technical debt represents the cost of the accumulated amount of rework that will be necessary to correct and/or recover from the deviation between:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the current design of the system, &lt;em&gt;versus &lt;/em&gt;...&lt;/li&gt;&lt;li&gt;a design that is minimally complex yet sufficiently complete to ensure correctness &amp;amp; consistency for timely delivery.&lt;/li&gt;&lt;/ul&gt;This effort &lt;em&gt;grows more than linearly&lt;/em&gt; over time as a system becomes bigger and more complex.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The economic impact of technical debt is directly related to the cost of complexity and its resulting “friction” against the velocity of the development team (and, subsequently, upon the ease of system evolution).&lt;br /&gt;&lt;br /&gt;Technical debt can be caused by under-engineering just as much as it can be caused by overengineering (overdesigning). It is a difficult, delicate and dynamic balancing act to achieve the necessary and sufficient amount of design to implement only the essential complexity required by system:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sometimes we knowingly (under great pressure) do something the "quick &amp;amp; dirty" way, with the intent to "do it right" later (but not too late).&lt;/li&gt;&lt;li&gt;Sometimes we try to do too much to soon, and elaborate or implement details of the requirements when we and our customers/users haven't yet learned enough about the true needs of the system.&lt;/li&gt;&lt;li&gt;Sometimes we haven't yet learned enough about good design, and unintentionally violate design principles, resulting in undesirable dependencies that make code or other work-products hard to change.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sometimes we neglect to properly "tend" to the design and don't give it the necessary amount of ongoing care and feeding needed to keep it "fit" and "supple."&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;But whether it is a deviation between principles and practice (knowingly or unknowingly), guessing incorrectly, anticipating too early, neglect, poor quality, or even just the &lt;a href="http://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution"&gt;laws of software evolution&lt;/a&gt;, we must make plans and take action to deal with the inevitable entropy of evolution or else we will sink too far into technical debt.&lt;br /&gt;&lt;br /&gt;That's just my two cents on the subject of course. What do others have to say about it?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Technical_debt"&gt;Wikipedia defines Technical Debt&lt;/a&gt; by referring to the words of &lt;a href="http://en.wikipedia.org/wiki/Ward_Cunningham"&gt;Ward Cunningham&lt;/a&gt;, who first drew the comparison between technical complexity and debt in a &lt;a href="http://c2.com/doc/oopsla92.html"&gt;1992 experience report&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(0, 0, 102);"&gt;"Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite.... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise."&lt;/blockquote&gt;&lt;br /&gt;On the &lt;a href="http://c2.com/cgi/wiki?TechnicalDebt"&gt;C2 Wiki, Ward defined Technical Debt&lt;/a&gt; as:&lt;br /&gt;&lt;blockquote face="times new roman" style="color: rgb(0, 102, 0); font-family: times new roman;"&gt;“Technical Debt includes those internal things that you choose not to do now, but which will impede future development if left undone. This includes deferred refactoring.  Technical Debt doesn't include deferred functionality, except possibly in edge cases where delivered functionality is "good enough" for the customer, but doesn't satisfy some standard (e.g., a UI element that isn't fully compliant with some UI standard).”&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://martinfowler.com/bliki/TechnicalDebt.html"&gt;Martin Fowler's definition of Technical Debt&lt;/a&gt; is also frequently cited:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(102, 51, 0);"&gt;"Doing things the quick and dirty way sets us up with a technical debt, which is similar to a financial debt. Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development because of the quick and dirty design choice. We can choose to continue paying the interest, or we can pay down the principal by refactoring the quick and dirty design into the better design. Although it costs to pay down the principal, we gain by reduced interest payments in the future."&lt;/blockquote&gt;&lt;br /&gt;In his &lt;a href="http://www.informit.com/articles/article.aspx?p=360842"&gt;introduction to Refactoring to Patterns&lt;/a&gt;, Joshua Kerievsky quite simply defines design debt as follows:&lt;br /&gt;&lt;blockquote style="font-family: times new roman;"&gt;Design debt occurs when you don't consistently do three things.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Remove duplication.&lt;/li&gt;&lt;li&gt;Simplify your code.&lt;/li&gt;&lt;li&gt;Clarify you code's intent.&lt;/li&gt;&lt;/ol&gt;Few systems remain completely free of design debt. Wired as we are, humans just don't write perfect code the first time around. We naturally accumulate design debt ....&lt;br /&gt;&lt;br /&gt;Due to ignorance or a commitment to "not fix what ain't broken," many programmers and teams spend little time paying down design debt.... In financial terms, if you don't pay off a debt, you incur late fees. If you don't pay your late fees, you incur higher late fees. The more you don't pay, the worse your fees and payments become. Compound interest kicks in, and as time goes on, getting out of debt becomes an impossible dream. So it is with design debt. &lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://jamesshore.com/Articles/Business/Software%20Profitability%20Newsletter/Design%20Debt.html"&gt;James Shore describes Design Debt&lt;/a&gt; in much the same manner:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(102, 51, 102);"&gt;When the cost of change increases, it's because the design quality is decreasing. Since retiring or rewriting software means writing off a huge investment, you wouldn't expect any team to let design quality deteriorate to that point. Yet it happens all the time. Why?&lt;br /&gt;&lt;br /&gt;Design debt" explains the problem. When a team is working under pressure, they take shortcuts that compromise design quality. It's like taking out a high-interest loan. The team gets a short-term boost in speed, but from that point forward, changes are more expensive: they're paying interest on the loan. The only way to stop paying interest is to pay back the loan's principle and fix the design shortcuts.&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.construx.com/Page.aspx?hid=2801"&gt;Steve McConnell defines Technical Debt&lt;/a&gt; as follows:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(0, 0, 102);"&gt;“Technical Debt” refers to delayed technical work that is incurred when  technical short cuts are taken, usually in pursuit of calendar-driven software  schedules. Just like financial debt, some technical debts can serve valuable  business purposes. Other technical debts are simply counterproductive. The  ability to take on debt safely, track their debt, manage their debt, and pay  down their debt varies among different organizations. Explicit decision making  before taking on debt and more explicit tracking of debt are advised.&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.poppendieck.com/"&gt;Mary Poppendieck&lt;/a&gt; gives a definition of Technical Debt in her upcoming book &lt;a style="font-weight: bold;" href="http://www.poppendieck.com/llsd.htm"&gt;Leading Lean Software Development&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(0, 102, 0);"&gt;“All successful software gets changed. So if we think we’re working on code that will be successful … we need to keep it easy to change. Anything that makes code difficult to change is technical debt. Just like any other debt, the cost of paying off technical debt gets more and more expensive over time. … Technical debt drives the total cost of software ownership relentlessly higher … eventually we will have to pay it off or the system will go bankrupt.”&lt;/blockquote&gt;&lt;br /&gt;Kane Mar, in &lt;a href="http://www.danube.com/whitepapers/technical-debt"&gt;&lt;em&gt;Technical Debt and Design Death&lt;/em&gt;&lt;/a&gt;, describes technical debt and later likens it to the effects of entropy:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 51, 0); font-family: times new roman;"&gt;&lt;em&gt;Technical debt&lt;/em&gt; is simply defined as &lt;em&gt;deferred work that is not directly related to new functionality, but necessary for the overall quality of the system&lt;/em&gt;. Examples of this include delaying upgrades to necessary tools and frameworks, delaying the refactoring of overly complex system components, and so on. If this technical work is necessary for the health of the system, then what happens when it is ignored for too long? What happens when several layers of cruft accumulate and there are no unit tests to aid refactoring? ...&lt;br /&gt;&lt;br /&gt;In thermodynamics, “&lt;em&gt;entropy&lt;/em&gt;” refers to the randomness of the components of a system. When the term is applied to software it is considered a measure of disorder. Thus entropy in software is the result of changes made to the code base, including bug fixes, updates to existing functionality, and the addition of new functionality. But over a period of time, these small changes can snowball to create a system that is difficult to change, overly connected to external systems, and lacks clear delineation of functionality. &lt;/blockquote&gt;&lt;br /&gt;Chris Sterling, in his &lt;a href="http://architectureinanagileorganization.com/about/"&gt;upcoming book on Architecture in an Agile Organization&lt;/a&gt;, distinguishes between &lt;a style="font-style: italic;" href="http://architectureinanagileorganization.com/software-debt/"&gt;Software Debt&lt;/a&gt; and &lt;a style="font-style: italic;" href="http://architectureinanagileorganization.com/chapter-07-technical-debt/"&gt;Technical Debt&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="color: rgb(51, 51, 51); font-family: times new roman;"&gt;Software debt accumulates when focus remains on immediate completion while neglecting changeability of the system. The accumulation of debt does not impact software delivery immediately. At first it creates a sense of increased feature delivery with management, business stakeholders and the team. Business stakeholders respond well to the pace of delivered functionality. What they don’t understand is that this only represents an illusion of earlier returns on their investment.&lt;br /&gt;...&lt;br /&gt;This allows both the business and software delivery teams to live in the illusion of status quo far longer than they should. At some point previously small forms of decay in the system become large enough to affect our software delivery to the point that working harder and longer doesn’t result in success.&lt;br /&gt;...&lt;br /&gt;Debt is made glaringly visible when the team works on stabilizing the software functionality late in the release cycle. Integration, testing, and bug fixing is unpredictable and does not get resolved adequately before the release. People involved in the project stay late working to get the release out the door. It is now too late to pay back the debt accrued during the feature development.&lt;br /&gt;&lt;br /&gt;The following sources constitute what I call &lt;strong&gt;software debt&lt;/strong&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Technical Debt&lt;/strong&gt;: those activities that a team or team members chooses not to do now and will impede future development if left undone&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Quality Debt&lt;/strong&gt;: diminishing ability to verify functional and technical quality of entire system&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Configuration Management Deb&lt;/strong&gt;t: integration and release management become more risky, complex, and error-prone&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Design Debt&lt;/strong&gt;: cost of adding average sized features is increasing to more than writing from scratch&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Platform Experience Debt&lt;/strong&gt;: availability and cost of people to work on system features are becoming limited&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;Over at the &lt;a href="http://agileinaflash.blogspot.com/"&gt;Agile-in-a-Flash blog&lt;/a&gt;, Jeff Langr and Tim Ottinger provide a &lt;a href="http://agileinaflash.blogspot.com/2009/02/technical-debt.html"&gt;flashcard of tips &amp;amp; truths about technical debt&lt;/a&gt;, along with a more detailed discussion about its nature and origins. They distill several nuggets of wisdom like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Incurring technical debt means your velocity slows down and you will deliver less value&lt;/li&gt;&lt;li&gt;The cost of getting out-of-debt is compounded over time: the longer you wait, the faster it grow! &lt;/li&gt;&lt;li&gt;If you plan to incur technical debt, the persons responsible must have a workable plan to pay it off!&lt;/li&gt;&lt;li&gt;“Interest only” payments won’t improve things&lt;/li&gt;&lt;li&gt;Pay early, pay often, and pay-as-you-go. (The only other options are bankruptcy or death.) &lt;/li&gt;&lt;li&gt;Remember: Those with the worst debt problems often have the most difficulty imagining a life without borrowing!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So how might we properly measure/monitor and account for technical debt? Well, some of the above papers I mentioned have some good ideas. Some that address it more explicitly are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;span&gt;&lt;span&gt;&lt;li&gt;Israel Gat's &lt;a style="font-style: italic;" href="http://theagileexecutive.com/category/technical-debt/"&gt;Agile Executive Articles on Technical Debt&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a style="font-style: italic;" href="http://www.infoq.com/news/2010/03/monetizing-technical-debt"&gt;Monetizing Technical Debt&lt;/a&gt; (also see other &lt;a href="http://www.google.com/search?q=%22Technical+Debt%22+site%3Awww.infoq.com"&gt;&lt;span style="font-style: italic;"&gt;InfoQ.com articles on Technical Debt&lt;/span&gt;&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt; &lt;/span&gt;&lt;/span&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://jamesshore.com/Blog/An-Approximate-Measure-of-Technical-Debt.html"&gt;An Approximate Measure of Technical Debt&lt;/a&gt; by James Shore&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://sonar.codehaus.org/evaluate-your-technical-debt-with-sonar/"&gt;Evaluate your technical debt with Sonar&lt;/a&gt; (&lt;a href="http://sonar.codehaus.org/"&gt;SONAR&lt;/a&gt; is a free open-source tool)&lt;/li&gt;&lt;li&gt;Martin Fowler writes about &lt;a style="font-style: italic;" href="http://martinfowler.com/bliki/EstimatedInterest.html"&gt;Estimated Interest&lt;/a&gt;&lt;/li&gt;&lt;li&gt;In &lt;a style="font-style: italic;" href="http://www.infoq.com/news/2007/06/Code_Quality_and_Cost_Accounting"&gt;Does Cost Accounting Cause Crappy Code?&lt;/a&gt; Amr Elssamadisy suggests using throughput accounting (from &lt;a href="http://www.blogger.com/en.wikipedia.org/wiki/Theory_of_Constraints"&gt;TOC&lt;/a&gt;) instead of cost-accounting for understanding the cost of design debt&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Here are a number of other very good resources on technical debt culled from blogs, articles, and presentations over the years. Some of them describe it, while others delve into methods for managing it and paying it off:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.think-box.co.uk/blog/2005/11/repaying-technical-debt.html"&gt;Repaying Technical Debt&lt;/a&gt;, by Simon Baker &lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.pragprog.com/the-pragmatic-programmer/extracts/software-entropy"&gt;Software Entropy: Don’t Tolerate Broken Windows&lt;/a&gt;, and &lt;a style="font-weight: bold;" href="http://media.pragprog.com/articles/sep_02_zerotol.pdf"&gt;Zero-Tolerance Construction&lt;/a&gt; by Andy Hunt and Dave Thomas&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://mark-dot-net.blogspot.com/2008/10/cost-of-complexity-and-coupling.html"&gt;The Cost of Complexity and Coupling&lt;/a&gt;, by Mark Heath&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.codinghorror.com/blog/archives/001230.html"&gt;Coding Horrors: Paying Down your Technical Debt&lt;/a&gt;, by Jeff Atwood&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.stickyminds.com/s.asp?F=S3629_COL_2"&gt;What Testers Can Do about Technical Debt&lt;/a&gt; (&lt;a href="http://www.stickyminds.com/s.asp?F=S3629_COL_2"&gt;Part1&lt;/a&gt; and &lt;a href="http://www.stickyminds.com/s.asp?F=S3643_COL_2"&gt;Part 2&lt;/a&gt;), by Johanna Rothman (also see Johanna's earlier essay &lt;a style="font-style: italic;" href="http://www.ayeconference.com/climboutoftechnicaldebt/"&gt;Climbing Out of Technical Debt&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.crisp.se/henrik.kniberg/presentations/agile2008/Technical-Debt-how-not-to-ignore-it.pdf"&gt;Technical Debt - How not to ignore it!&lt;/a&gt;, by Henrik Kniberg&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://www.media-landscape.com/yapc/2006-06-26.AndyLester/"&gt;Get out of Technical Debt Now!&lt;/a&gt;, by Andy Lester&lt;/li&gt;&lt;li&gt;&lt;a style="font-weight: bold;" href="http://patrickwilsonwelsh.com/?p=10"&gt;Continous Refactoring and the Cost of Decay&lt;/a&gt;, by Patrick W. Welsh&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.agileadvice.com/archives/2006/12/technical_debt.html"&gt;Agile Advice on Technical Debt&lt;/a&gt;, by Mishkin Bertieg&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.infoq.com/news/2008/08/tech-debt-wkshp"&gt;A Fresh Look at Technical Debt&lt;/a&gt;, an &lt;a href="http://www.infoq.com/agile"&gt;InfoQ.com&lt;/a&gt; summary of a &lt;a title="Technical Debt Workshop" target="_blank" href="http://www.cs.calvin.edu/activities/technical-debt/"&gt;Technical Debt Workshop&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/s.asp?F=S15549_ART_2"&gt;&lt;span style="font-style: italic;"&gt;Managing your Analysis debt&lt;/span&gt;&lt;/a&gt;, by Ellen Gottesdiener&lt;br /&gt;&lt;/li&gt;&lt;span&gt;&lt;span style="font-family:georgia;"&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/10/dissecting-technical-debt"&gt;Dissecting Technical Debt&lt;/a&gt;, &lt;span style="font-family:georgia;"&gt;an &lt;a href="http://www.infoq.com/agile"&gt;InfoQ.com&lt;/a&gt; summary from &lt;a href="http://www.infoq.com/agile_techniques"&gt;Agile techniques&lt;/a&gt; &lt;/span&gt; &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.brandonsavage.net/paying-down-technical-debt/"&gt;Paying Down Technical Debt&lt;/a&gt;, by Brandon Savage&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.codesqueeze.com/refinance-your-technical-debt-just-like-your-mortgage/"&gt;Refinance your Technical Debt Just Like Your Mortgage&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://chrissterling.gettingagile.com/2008/10/20/managing-software-debt-article/"&gt;Managing Software Debt&lt;/a&gt;, by Chris Sterling (also see &lt;a href="http://video.yahoo.com/watch/4754803/12699073"&gt;video presentation&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/06/03/fighting-technical-debt-with-the-wall-of-pain.aspx"&gt;Fighting technical debt with the Wall of Pain&lt;/a&gt;, by Jimmy Boggard &lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://codebetter.com/blogs/patricksmacchia/archive/2009/03/01/development-psychology-technical-debt-and-the-next-feature-syndrome.aspx"&gt;Development Psychology, technical debt and the next feature syndrome&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.techdarkside.com/where-does-technical-debt-come-from"&gt;Where does technical debt come from?&lt;/a&gt;, by David Christiansen &lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.extremeplanner.com/blog/2005/03/technical-debt-deficit-spending-for.html"&gt;Technical Debt - deficit spending for geeks&lt;/a&gt;, by Dave Churchville&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://iancartwright.com/blog/2009/01/five-kinds-of-technical-debt.html"&gt;Five Kinds of Technical Debt&lt;/a&gt;, by Ian Cartwright &lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://blog.technoetic.com/2006/09/19/threshold-of-pain/"&gt;Technical Debt: The threshold of acceptable pain&lt;/a&gt;, by (Technoetic) Steve Bate &lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.xprogramming.com/blog/tech/technical-debt-2.htm"&gt;Technical Debt: Transparency and Customer Communication&lt;/a&gt;, by Ron Jeffries&lt;/li&gt;&lt;li&gt;&lt;a href="http://martinfowler.com/bliki/TechnicalDebtQuadrant.html"&gt;&lt;span style="font-style: italic;"&gt;Technical Debt Quadrants&lt;/span&gt;&lt;/a&gt;, by Martin Fowler (also see &lt;a href="http://martinfowler.com/bliki/DesignStaminaHypothesis.html"&gt;&lt;span style="font-style: italic;"&gt;Design Stamina Hypothesis&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://blog.objectmentor.com/articles/2009/10/15/we-must-ship-now-and-deal-with-consequences"&gt;We must ship now and deal with the consequences&lt;/a&gt;, by (Uncle) Bob Martin - a response to Martin Fowler's article above&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.informit.com/articles/printerfriendly.aspx?p=1401640"&gt;&lt;span style="font-style: italic;"&gt;Don't Enron your software project&lt;/span&gt;&lt;/a&gt;, by Aaron Erickson&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Technical Debt:&lt;/strong&gt; &lt;a style="font-style: italic;" href="http://blog.abakas.com/2009/04/technical-debt-what-is-it.html"&gt;What is it?&lt;/a&gt; The &lt;a style="font-style: italic;" href="http://blog.abakas.com/2009/04/technical-debt-warning-signs.html"&gt;Warning Signs&lt;/a&gt; and &lt;a style="font-style: italic;" href="http://blog.abakas.com/2009/04/technical-debt-paying-it-off.html"&gt;Paying it Off&lt;/a&gt;, by Catherine Powell&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1232867911987749681?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1232867911987749681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1232867911987749681&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1232867911987749681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1232867911987749681'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/technical-debt-definition-and-resources.html' title='Technical Debt - Definition and Resources'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1863654900356744766</id><published>2009-06-20T01:08:00.016-05:00</published><updated>2009-07-09T09:26:40.433-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Self-Organization'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Resources on Self-Organizing Teams for Agility</title><content type='html'>&lt;span style="font-family:georgia;"&gt;In the past several blog-entries I've been focusing on the agile principle of self-organization, what it means, and what it implies for teams. So far, I've written about &lt;a href="http://blog.bradapp.net/2009/06/agile-self-organization-versus-lean.html"&gt;&lt;em&gt;Agile Self-Organization versus Lean Leadership&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://blog.bradapp.net/2009/06/self-organization-and-complexity.html"&gt;&lt;em&gt;Self-Organization and Complexity&lt;/em&gt;&lt;/a&gt;, and &lt;em&gt;&lt;a href="http://blog.bradapp.net/2009/06/agile-self-organizing-teams.html"&gt;Agile Self-Organizing Teams&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;For some online resources (articles and presentations) on self-organization and self-organizing teams, I recommend the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;InfoQ.Com articles: &lt;a href="http://www.infoq.com/news/2009/06/high-performance-teams-teamicide"&gt;&lt;em&gt;High-Performance Teams – Avoiding Teamicide&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://www.infoq.com/news/2008/08/coaching_teams"&gt;&lt;em&gt;Coaching Self Organizing Teams&lt;/em&gt;&lt;/a&gt;, and &lt;em&gt;&lt;a href="http://www.infoq.com/news/2009/07/self-organization-success-factor"&gt;Ensuring Success for Self Organizing Teams&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mountaingoatsoftware.com/presentation/94-leading-a-selforganizing-team"&gt;&lt;strong&gt;Leading a Self-Organizing Team&lt;/strong&gt;&lt;/a&gt;, PDF presentation by Mike Cohn given at the Jan 2009 Dallas Agile Project Leadership Network (APLN)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scrumalliance.org/resources/557"&gt;&lt;strong&gt;Flock-theory applied&lt;/strong&gt;&lt;/a&gt;, by James Brett -- a look at Flock Theory by D.Rosen for answers to creating highly optimized, self-organised Scrum teams &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.futureworksconsulting.com/resources/TeamAgilityAgileTimesFeb04.pdf"&gt;Exploring Self-Organizing Software Development Teams&lt;/a&gt;&lt;/strong&gt;, by Diana Larsen&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilealliance.com/system/article/file/784/file.pdf"&gt;&lt;strong&gt;Agile Processes and Self-organization&lt;/strong&gt;&lt;/a&gt;, by Ken Schwaber &lt;/li&gt;&lt;li&gt;&lt;a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&amp;amp;arnumber=4483195&amp;amp;isnumber=4483172"&gt;&lt;strong&gt;Understanding Self-organizing Teams in Agile Software Development&lt;/strong&gt;&lt;/a&gt;, from 2008 Australian Software Engineering Conference (ASWEC2008) &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scrumalliance.org/articles/103-the-managers-role-in-agile"&gt;&lt;strong&gt;The Manager's role in Agile&lt;/strong&gt;&lt;/a&gt;, and &lt;a href="http://www.agilejournal.com/content/view/858/195/"&gt;&lt;strong&gt;7 Agile Coach Failure Modes&lt;/strong&gt;&lt;/a&gt;, by Lyssa Adkins and Michael Spayd &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scrumalliance.org/articles/6"&gt;&lt;strong&gt;Scum vs Scrum: Emergent behavior in slime molds and software development teams&lt;/strong&gt;&lt;/a&gt;, by Matt Truxaw &lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://www.targetprocess.com/blog/2008/11/agile-software-development-and-complex.html"&gt;Agile Software Development and Complex Adaptive Systems&lt;/a&gt;, a 4 part series of articles by Michael Dubakov: &lt;ul&gt;&lt;li&gt;part1: &lt;a style="FONT-STYLE: italic" href="http://www.targetprocess.com/blog/2008/11/agile-software-development-and-complex.html"&gt;Introduction to Agile Software Development and CAS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;part2: &lt;em&gt;&lt;a href="http://www.targetprocess.com/blog/2008/11/software-development-is-complex.html"&gt;Software Development is a Complex Adaptive System - No Doubt&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;part3: &lt;a style="FONT-STYLE: italic" href="http://www.targetprocess.com/blog/2008/12/edge-of-chaos-and-hyper-productive.html"&gt;The Edge of Chaos and Hyper-Productive Software Development Teams&lt;/a&gt;&lt;/li&gt;&lt;li&gt;part4: &lt;a style="FONT-STYLE: italic" href="http://www.targetprocess.com/blog/2009/03/simple-rules-complex-systems-and.html"&gt;Simple Rules, Complex Systems and Software Development&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/holacracy-agile-enterprise"&gt;&lt;strong&gt;Holacracy - The Self-Organizing Enterprise&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lithespeed.com/resources/Agile-Project-Management-Steering-from-the-Edges.pdf"&gt;&lt;strong&gt;Steering from the Edges&lt;/strong&gt;&lt;/a&gt;, by Sanjiv Augustine et.al. &lt;/li&gt;&lt;li&gt;&lt;a href="http://jeffsutherland.com/scrum/2009/01/roots-of-scrum-takeuchi-and-nonaka.html"&gt;&lt;strong&gt;Roots of Scrum: Takeuchi and Self-Organizing Teams&lt;/strong&gt;&lt;/a&gt;, by Jeff Sutherland &lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://www.infoq.com/articles/learning_is_the_bottleneck"&gt;Learning is the Bottleneck&lt;/a&gt;, by Amr Elssamadisy &amp;amp; Deborah Hartmann&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://www.infoq.com/news/2007/11/poppendieck-software-leadership"&gt;Leadership is not obsolete in Self-Organizing Teams&lt;/a&gt;, by Mary Poppendieck&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/selforganizingteam"&gt;More InfoQ.com articles on Self-Organizing Teams&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.accelinnova.com/publications.html"&gt;Polyanna Pixton's papers/presentations on Agile leadership &amp;amp; collaboration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.estherderby.com/weblog/2009/06/when-to-stand-back-when-to-step-in.html"&gt;When to stand back, when to step-in (Managing self-organizing teams)&lt;/a&gt;, by Esther Derby&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://softwarecreation.org/2007/what-is-the-best-leader-for-the-software-team"&gt;&lt;strong&gt;What is the best leadership style for a software team?&lt;/strong&gt;&lt;/a&gt; by Andriy Solovey (also see &lt;a href="http://softwarecreation.org/2007/evolutionary-software-architecture-or-why-developers-are-not-janitors"&gt;&lt;strong&gt;Evolutionary Software Architecture&lt;/strong&gt; &lt;/a&gt;and &lt;a href="http://softwarecreation.org/2007/self-organization-the-army-vs-jim-highsmith"&gt;&lt;strong&gt;Self-Organizing Teams: The Army versus Jim Highsmith&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://agileconsortium.pbworks.com/Self-Organization-in-Scrum"&gt;Self Organization in Scrum&lt;/a&gt; and &lt;a style="FONT-WEIGHT: bold" href="http://jeffsutherland.com/scrum/SelfOrganizationShockTherapyBT2Apr2009.pdf"&gt;Self-Organization &amp;amp; Shock Therapy&lt;/a&gt;, presentations by Jeff Sutherland (also see the corresponding video &lt;a style="FONT-STYLE: italic" href="http://jeffsutherland.com/scrum/2009/04/self-organization-secret-sauce-for.html"&gt;Self-Organization - The Secret Sauce for Improving Your Scrum Team&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www2.isye.gatech.edu/~carl/papers/anderson_mcmillan_revised.pdf"&gt;&lt;strong&gt;Of ants and men: self-organized teams in human and insect organizations&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://pespmc1.vub.ac.be/Papers/IEEE.Self-organization.pdf"&gt;The Meaning of Self-Organization in Computing&lt;/a&gt; and &lt;a href="http://pespmc1.vub.ac.be/Papers/EOLSS-Self-Organiz.pdf"&gt;The Science of Self-Organization and Adaptivity&lt;/a&gt;, by Francis Heylighen&lt;/li&gt;&lt;li&gt;Mishkin Berteig on &lt;a style="FONT-WEIGHT: bold" href="http://www.agileadvice.com/archives/2005/12/agile_work_uses_2.html"&gt;Team Self-Organization&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://www.solutionsiq.com/resources/SIQ-Swarming-Panchal-Agile2008.pdf"&gt;Swarming: The Birds, Bees and Agile&lt;/a&gt;, by Tom Perry and Dhaval Panchal&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://allankelly.blogspot.com/2008/11/limits-of-self-organizing-teams.html"&gt;Limits of Self-Organizing Teams&lt;/a&gt;, by Alan Kelly&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.systems-thinking.org/bop/bop.htm"&gt;&lt;strong&gt;Bureaucracy &amp;amp; Organizational Politics:&lt;/strong&gt; &lt;em&gt;Emergent Characteristics of Structure&lt;/em&gt;&lt;/a&gt;, an essay from &lt;a href="http://www.systems-thinking.org/"&gt;systems-thinking.org &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.noop.nl/2009/05/selforganization-anarchy-part-3.html"&gt;Jurgen Appelo on Self-Organizing Teams&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.systemdynamics.org/conferences/2003/proceed/PAPERS/279.pdf"&gt;Systemic Analysis of A Team’s Self- Organizing processes&lt;/a&gt;: some insights into the knowledge management&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.springerlink.com/content/a1j9j2rh2h9hl8p3/"&gt;Be Empowered (That’s an Order !) “Experience the Dynamics and the Paradoxes of Self-Organizing Teams”&lt;/a&gt;, by Laurent Bossavit and Emannuel Gaillot&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://www.scribd.com/doc/14424701/Conditions-for-SelfOrganizing-in-Human-Systems"&gt;Conditions for Self-Organizing in Human Systems&lt;/a&gt; by Glenda Holladay Eoyang (Ph.D. Thesis)&lt;/li&gt;&lt;li&gt;Series of articles on &lt;a href="http://www.groupcoherence.com/"&gt;Group Coherence&lt;/a&gt; for Agile/Project Teams:&lt;/li&gt;&lt;ul style="FONT-STYLE: italic"&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/articles/17-articles/893-group-coherence-for-project-teams-a-search-for-hyper-productivity"&gt;Group Coherence for Project Teams - A Search for Hyper-Productivity&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/articles/17-articles/883-group-coherence-for-project-teams-common-purpose"&gt;Group Coherence for Project Teams - Common Purpose&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/articles/17-articles/1222-group-coherence-for-project-teams-collaborative-interaction"&gt;Group Coherence for Project Teams - Collaborative Interaction&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/articles/17-articles/1342-group-coherence-for-project-teams-group-creativity"&gt;Group Coherence for Project Teams – Group Creativity&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/articles/17-articles/1468-group-coherence-practice-in-the-agile-community"&gt;Group Coherence Practice in the Agile Community&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/articles/17-articles/1742-group-coherence-for-project-teams-practice-for-continuous-improvement"&gt;Group Coherence for Project Teams - Practice for Continuous Improvement&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://books.google.com/books?id=FGcPVCca1WsC&amp;amp;pg=PA167&amp;amp;lpg=PA167&amp;amp;dq=%22Self-Organized+Teams%22&amp;amp;source=bl&amp;amp;ots=DV1doiwmFj&amp;amp;sig=nl7B3sUltyE4WgUOoHlmfoKc0NA&amp;amp;hl=en&amp;amp;ei=N_FMSpbgLoHWM_-Z4foD&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=6"&gt;Team Effectiveness in Complex Organizations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://www.saferpak.com/teamwork_articles/ensuring_success.pdf"&gt;Ensuring Success: A Model for Self-Managed Teams&lt;/a&gt;, by Lori Silverman &amp;amp; Annabeth Propst&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.margaretwheatley.com/articles/using-emergence.pdf"&gt;Using Emergence to Take Social Innovation to Scale&lt;/a&gt;, and &lt;a style="FONT-STYLE: italic" href="http://www.margaretwheatley.com/articles/Self-OrganizedNetworks.pdf"&gt;Leadership of Self-Organized Networks: Lessons from the War on Terror&lt;/a&gt;, by &lt;a href="http://www.margaretwheatley.com/writing.html"&gt;Margaret Wheatley&lt;/a&gt; et.al.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://books.google.com/books?id=FGcPVCca1WsC&amp;amp;pg=PA167&amp;amp;lpg=PA167&amp;amp;dq=%22Self-Organized+Teams%22&amp;amp;source=bl&amp;amp;ots=DV1doiwmFj&amp;amp;sig=nl7B3sUltyE4WgUOoHlmfoKc0NA&amp;amp;hl=en&amp;amp;ei=N_FMSpbgLoHWM_-Z4foD&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=6"&gt;Complexity, Organizations and Change&lt;/a&gt;, by Elizabeth McMillan&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-WEIGHT: bold" href="http://www.plexusinstitute.com/edgeware/archive/think/main_filing12.html"&gt;Managing the Unknowable&lt;/a&gt;: &lt;em&gt;Strategic Boundaries Between Order and Chaos in Organizations&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.alexeikurakin.org/main/soft.html"&gt;&lt;em&gt;The Universal principles of Self-organization and the Unity of Nature and Knowledge&lt;/em&gt;&lt;/a&gt;, by Alexei Kurakin&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.per.marine.csiro.au/staff/Fabio.Boschetti/papers/Halley_Winkler_Emergence.pdf"&gt;Classification of Emergence and its Relation to Self-Organization&lt;/a&gt; (also see &lt;a href="http://www.per.marine.csiro.au/staff/Fabio.Boschetti/CSS_emergence.htm"&gt;related papers on emergence by Fabio Boschetti&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wikipedia entries on &lt;a style="FONT-STYLE: italic" href="http://en.wikipedia.org/wiki/Self-organization"&gt;Self-Organization&lt;/a&gt; and &lt;a style="FONT-STYLE: italic" href="http://en.wikipedia.org/wiki/Emergence"&gt;Emergence&lt;/a&gt; (also Wapedia entries on &lt;a style="FONT-STYLE: italic" href="http://wapedia.mobi/en/Self-organization"&gt;Self-Organization&lt;/a&gt; and &lt;a style="FONT-STYLE: italic" href="http://wapedia.mobi/en/Emergence"&gt;Emergence&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a id="v9b_" title="Self-Organizing Systems FAQ" href="http://www.calresco.org/sos/sosfaq.htm"&gt;Self-Organizing Systems FAQ&lt;/a&gt; &lt;/li&gt;&lt;li style="FONT-STYLE: italic"&gt;&lt;a href="http://arxiv.org/ftp/nlin/papers/0509/0509049.pdf"&gt;10 Questions about Emergence&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.systemdynamics.org/conferences/2001/papers/Georgantzas_2.pdf"&gt;Self-Organization Dynamics&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.naturalhistorymagazine.com/0603/0603_feature1.html"&gt;Patterns in Nature&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="FONT-WEIGHT: normal; FONT-STYLE: italic"&gt;&lt;a title="Order Out of Chaos" href="http://www.amazon.com/gp/product/0553343637/104-2883280-1296732?tag=softwcreatmys-20"&gt;Order Out of Chaos&lt;/a&gt;&lt;/strong&gt;, Ilya Prigogine&lt;/li&gt;&lt;li&gt;&lt;a style="FONT-STYLE: italic" href="http://www.cmqr.rmit.edu.au/publications/lbpositi.pdf"&gt;Using Positioning Theory to Make Change Happen&lt;/a&gt;, by Lionel Boxer&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I'll be taking a break on this topic (Self-Organization) for awhile, and then returning to it again later to talk about &lt;em&gt;Swarm Behavior, Collective Intelligence, Social Creativity, Group Coherence, Group Decision-Making and Holocracy/Sociocracy&lt;/em&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1863654900356744766?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1863654900356744766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1863654900356744766&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1863654900356744766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1863654900356744766'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/resources-on-self-organizing-teams-for.html' title='Resources on Self-Organizing Teams for Agility'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5125642102870697848</id><published>2009-06-16T00:16:00.011-05:00</published><updated>2009-07-06T07:26:49.256-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Self-Organization'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Agile Self-Organizing Teams</title><content type='html'>&lt;span style="font-family:georgia;"&gt;The previous blog-entry on self-organization was lots of jargon and technical mumbo jumbo that didn't say too much about what that means for teams of people. So let's shift from talking about self-organizing systems in complexity science to talking about how it applies to self-organizing teams in an agile context.&lt;br /&gt;&lt;br /&gt;A self-organizing team is a team that is led and organized by it's members, to attain goals and objectives specified by management within the constraints of its environment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Management can shape and "nudge" the team and its members, but management doesn't try to dictate the details of "what" the solution is nor the process of how to create it.&lt;/li&gt;&lt;li&gt;The team is responsible for not only leading and organizing itself to achieve its goals, but also to monitor and adapt its behavior to correct/improve its own performance.&lt;/li&gt;&lt;li&gt;This means the team can change how it leads and organizes itself in order to respond to feedback and constraints from its environment, which also implies that ...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is no single central "leader" for the team over the lifetime of the team/project - the "leader" is not a static assignment, but rather a dynamic role&lt;/li&gt;&lt;li&gt;So the person(s) leading any given moment may change, depending on the particular decision, activity, or problem being addressed in any particular context/situation.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;By themselves, self-organizing teams are neither "good" nor "bad." They simply "are." They require a supporting management environment (the "fitness landscape") and organizational culture that establishes, communicates, rewards and reinforces the "right" set of values and principles. Without supportive management and the proper leadership culture, there is a very high likelihood that a self-organizing team may be unable to create good results or effective processes (or both). In fact, it's not uncommon for a newly formed &amp;amp; "empowered" self-organizing team to fall into many of the same dysfunctional patterns of behavior that it was most trying to escape from within the "management" that only recently "empowered" the team.&lt;br /&gt;&lt;br /&gt;An "agile team" is (supposed to be) a self-organizing team that is guided by the &lt;a href="http://www.agilemanifesto.org/"&gt;agile values&lt;/a&gt; and &lt;a href="http://www.agilemanifesto.org/principles.html"&gt;agile principles&lt;/a&gt; (given by the &lt;a href="http://www.agilemanifesto.org/"&gt;agile manifesto&lt;/a&gt;) and is supported by a trusting and empowering style of management. With management supporting their agile values/principles, Agile teams "self-organize" to collectively decide and do what is needed in order to: make and meet commitments, develop a quality product, respond to feedback, and adapt to changes.&lt;br /&gt;&lt;br /&gt;So an &lt;i&gt;Agile Self-Organizing Team&lt;/i&gt; is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Autonomous&lt;/b&gt;: There is no single central decision-making authority. Control is distributed collectively to the team.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Adaptive&lt;/b&gt;: The team dynamically adjusts as needed across roles, functional specialties, and other boundaries, in order to solve their own problems and improve their own performance.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Accountable&lt;/b&gt;: The team collectively shares responsibility for results, and members hold each other accountable for outcomes.&lt;/li&gt;&lt;/ul&gt;Here are some choice quotes regarding self-organizing teams ...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:trebuchet ms;" &gt;“The team makes most decisions, while every member could step in and become leader in specific areas and situations. People are highly capable, committed and self-driven.”&lt;/span&gt;&lt;br /&gt;—Andriy Solovey, &lt;a href="http://softwarecreation.org/2007/what-is-the-best-leader-for-the-software-team"&gt;&lt;i&gt;What is the best leadership style for the software team?&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;" &gt;“This causes a shift in the roles of managers from planning, controlling, directing, and managing to new roles like building trust, facilitating and supporting team decisions, expanding team capabilities, anticipating and influencing change.”&lt;/span&gt;&lt;br /&gt;—Diana Larsen, &lt;a style="font-style: italic;" href="http://www.futureworksconsulting.com/resources/TeamAgilityAgileTimesFeb04.pdf"&gt;Exploring Self-Organizing Software Development Teams&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:trebuchet ms;" &gt;"Responsibility-Based Planning and Control: Respecting people means that teams are given general plans and reasonable goals and are trusted to self-organize to meet the goals. Respect means that instead of telling people what to do and how to do it, you develop a reflexive organization where people use their heads and figure this out for themselves."&lt;/span&gt;&lt;br /&gt;—Mary Poppendieck, &lt;a style="font-weight: bold;" href="http://www.poppendieck.com/ilsd.htm"&gt;Implementing Lean Software Development&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In &lt;a style="font-style: italic;" href="http://www.infoq.com/articles/learning_is_the_bottleneck"&gt;Learning is the Bottleneck&lt;/a&gt;, Amr Elssamadisy &amp;amp; Deborah Hartmann write:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 51, 102); font-family: trebuchet ms;"&gt;"Human psychology aspect adds that self-organized teams:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;are more responsible for end results, self-disciplined and self-driven&lt;/li&gt;&lt;li&gt;avoid dependency on the formal leader qualities&lt;/li&gt;&lt;li&gt;motivated, initiative and willing to act&lt;/li&gt;&lt;li&gt;enjoy work more&lt;/li&gt;&lt;li&gt;better insured against &lt;a href="http://en.wikipedia.org/wiki/Groupthink"&gt;groupthink&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Conformity"&gt;conformity&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Diffusion_of_responsibility"&gt;diffusion of responsibility&lt;/a&gt;&lt;/li&gt;&lt;li&gt;not&lt;a href="http://softwarecreation.org/2007/lost-personalities-how-our-company-alters-us/"&gt; shifting judgment and decisions&lt;/a&gt; to others, better in finding alternative and balancing options&lt;/li&gt;&lt;li&gt;every member is in charge, ready to step in as a leader and have incentive to develop leadership skills&lt;/li&gt;&lt;/ul&gt;A self-organized team is possible when people carry shared purpose, principles and values. They support and respect each other. And they want to succeed. The [Agile] team works together to respond to changes that happen together. They collectively do what needs to be done to build the software."&lt;/blockquote&gt;&lt;br /&gt;In his 2001 paper &lt;a style="font-style: italic;" href="http://www.controlchaos.com/download/Self%20Organization.pdf"&gt;Agile Processes and Self-Organization&lt;/a&gt; Ken Schwaber wrote:&lt;br /&gt;&lt;blockquote style="font-family: trebuchet ms; color: rgb(51, 0, 153);"&gt;"Agile processes employ self-organizing teams to handle the complexity inherent in systems development projects. A team of individuals is formed. They organize themselves into a team in response to the pressure of a deadline, reminding me of the saying, "Nothing focuses the mind like a noose!" The pressure cooker of the deadline produces cooperation and creativity that otherwise is rare. This may seem inhumane, but compared with non-agile practices for dealing with complexity, self-organization is a breath of fresh air."&lt;/blockquote&gt;&lt;br /&gt;This is what Kevin Kelly wrote about that problem in his book  &lt;a href="http://www.amazon.com/gp/product/0201483408"&gt;&lt;b&gt;Out of Control&lt;/b&gt;&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-family: trebuchet ms; color: rgb(102, 51, 51);"&gt;"When everything is connected to everything in a distributed network, everything happens at once. When everything happens at once, wide and fast moving problems simply route around any central authority. Therefore overall governance must arise from the most humble interdependent acts done locally in parallel, and not from a central command."&lt;/blockquote&gt;&lt;br /&gt;Roger Lewin wrote in &lt;a href="http://www.amazon.com/gp/product/0226476553"&gt;&lt;b&gt;Complexity: Life at the Edge of Chaos&lt;/b&gt;&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0); font-family: trebuchet ms;"&gt;"Complexity science implies that CEOs and managers must give up control -- or rather, the illusion of control -- when they are trying to lead their organization to some goal. But they do need to create the environment in which creativity can emerge. The message of complexity science is not simply to stand back and wait for the right solutions to emerge. Too little control is just as misguided a business strategy as too much. Some structure is necessary. The degree and nature of control that CEOs establish in their companies strongly influences what emerges, in terms of culture, creativity, and adaptability."&lt;/blockquote&gt;&lt;br /&gt;Mishkin Berteig writes in &lt;a style="font-style: italic;" href="http://www.agileadvice.com/archives/2005/12/agile_work_uses_2.html"&gt;Team Self-Organization&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-family: trebuchet ms; color: rgb(102, 51, 102);"&gt;"In agile teams, this concept of self-organization is taken quite far. Team members collaborate to get work done. No one orders a team or an individual to do specific work. The team members volunteer for work that they see needs doing, even if it is not something that is in their area of expertise. An agile team is constantly promoting learning in its people. Agile teams are also cross-functional so that the team can get work done without relying on external services. The team therefore represents a complete work unit capable of taking a function valuable to customers from start to finish, from idea to deployment."&lt;/blockquote&gt;&lt;br /&gt;In &lt;a href="http://www.think-box.co.uk/blog/2006/01/why-agile-principles-are-important.html"&gt;&lt;i&gt;Why Agile Principles are Important&lt;/i&gt;&lt;/a&gt;, Simon Baker writes:&lt;br /&gt;&lt;blockquote style="font-family: trebuchet ms; color: rgb(51, 0, 153);"&gt;An experienced agile software development team is a highly social group that is self-organising around these principles and acts with coordination and collective behaviour. This collective behaviour comprises:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Collective mind&lt;/i&gt; where individual team members develop shared understandings of the team's tasks and of one another, and come to understand how their work contributes to the work of the team thereby facilitating team performance.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;Swarm intelligence&lt;/i&gt; which gives a team the ability to adapt to changes, and robustness which enables them to still perform and deliver even when one or more members fail.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;From &lt;a style="font-style: italic;" href="http://www2.isye.gatech.edu/%7Ecarl/papers/anderson_mcmillan_revised.pdf"&gt;Of ants and men: self-organized teams in human and insect organizations&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 51, 0);font-family:trebuchet ms;" &gt;To cope with today’s complex, fast-paced, and ever-changing business environment, companies need to shift their overall structure to produce adaptive, highly responsive organizations. The use of teams, particularly self-organized teams with their reactive, emergent properties, may be one way of achieving this goal.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);font-family:trebuchet ms;" &gt;In other words, insect societies often harness the power of self-organization such that with the appropriate set of feedbacks, interindividual interactions, and proximate mechanisms, group-level adaptive behavior simply emerges. No one directs the foragers where to find food, the network of trails and interactions takes care of that; individuals are not allocated to tasks, the reverse is true: the tasks allocate the workers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);font-family:trebuchet ms;" &gt;McMillan-Parsons (1999) found that the teams fitted Stacey’s (1996) description of self-organizing groups or teams as ones that arise spontaneously around specific issues, communicate and cooperate about these issues, reach a consensus, and make a committed response to these issues. Further, ‘research suggested that self organizing teams have a strong sense of shared purpose, strong personal commitment, display creative and spontaneous behaviors, have high levels of energy and enthusiasm, and that an inherent order emerges from their activities’.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);font-family:trebuchet ms;" &gt;Importantly, in self-organizing teams the members self select and there is no-one checking to see if they have the necessary range of attributes. In her study, McMillan (1999) discovered that members of the self-organizing teams studied learned new skills and developed new attributes to meet the needs of the team.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 0);font-family:trebuchet ms;" &gt;One characteristic of such organizations is adhocracy. These large, mature yet high-performing companies manage to generate the flexible and adaptive properties of smaller entrepreneurial organizations—in short, to “be big and yet to act small at the same time”. Using teams is one key means of achieving that, for, as Flory (2002, p. 9) remarks, self-managed teams, ‘are fast moving, fast learning groups, flexible, highly autonomous and have a well-developed pro-active attitude and sense of responsibility. These characteristics are the very reason they are brought into life as answers for organizations to respond to a fast moving world.’&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="1" cellspacing="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td  style="color: rgb(102, 51, 0);font-family:arial;"&gt; &lt;span style="font-size:130%;"&gt;&lt;b&gt;Self-managed Teams &lt;/b&gt;&lt;/span&gt; &lt;/td&gt; &lt;td  style="color: rgb(0, 102, 0);font-family:arial;"&gt; &lt;span style="font-size:130%;"&gt;&lt;b&gt;Self-organized Teams &lt;/b&gt;&lt;/span&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Part of formal organization structure &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Not part of formal organization structure &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Formal, temporary, or permanent &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Informal and temporary &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Not spontaneously formed &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Formed spontaneously around issue(s) &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Indirectly controlled by senior management &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Boundaries influenced by senior management &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Managers decide ‘who’ and ‘what’ &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Team members decide ‘who’ and ‘what’ &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Replace the hierarchy &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Often in conflict with or constrained by the hierarchy &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Empowered by senior management &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Empowered by the team’s members &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Strongly shared culture &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Cultural differences provoke and constrain &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Some sense of shared purpose &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Strong sense of shared purpose &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Order created via recognized processes &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Inherent order emerges &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Behaviors influenced by procedures and roles &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Spontaneous, creative behaviors &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Strong sense of team commitment &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Strong sense of personal commitment &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Some energy and enthusiasm &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; High levels of energy and enthusiasm &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; Decision making is mainly a planned process &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; Decision making is mainly a spontaneous process &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="font-family: arial; color: rgb(102, 51, 0);"&gt; At least one member’s primary role is organizational &lt;/td&gt; &lt;td style="font-family: arial; color: rgb(0, 102, 0);"&gt; All members’ primary role relate to the task &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;In my next blog-entry I'll give links to several other resources on Self-Organizing Teams.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5125642102870697848?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5125642102870697848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5125642102870697848&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5125642102870697848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5125642102870697848'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/agile-self-organizing-teams.html' title='Agile Self-Organizing Teams'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-7526747776750785435</id><published>2009-06-14T00:17:00.013-05:00</published><updated>2009-07-01T01:07:24.118-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Self-Organization'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Self-Organization and Complexity</title><content type='html'>&lt;span style="font-family:georgia;"&gt;In my &lt;a href="http://blog.bradapp.net/2009/06/agile-self-organization-versus-lean.html"&gt;previous blog-entry&lt;/a&gt; I talked a little about how self-organization is a key aspect of &lt;a href="http://blog.bradapp.net/2009/04/what-is-agility-part-2-software-agility.html"&gt;software agility&lt;/a&gt;. In this blog-entry I'd like to explore in more detail just what "self-organization" really means.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://en.wikipedia.org/wiki/Self-organization"&gt;Self-organization&lt;/a&gt; comes from &lt;a href="http://en.wikipedia.org/wiki/Complexity"&gt;complexity science&lt;/a&gt; and the theory of &lt;a href="http://en.wikipedia.org/wiki/Complex_adaptive_system"&gt;complex adaptive systems&lt;/a&gt; (CAS). A system is "self-organizing" if, left to its own devices, it tends to become more organized over time. This is in stark contrast to the concept of &lt;a href="http://en.wikipedia.org/wiki/Entropy"&gt;entropy&lt;/a&gt; from the &lt;a href="http://en.wikipedia.org/wiki/Laws_of_thermodynamics"&gt;laws of thermodynamics&lt;/a&gt; whereby a closed system tends to move to a state of increasing disorder in the absence of outside influences.&lt;br /&gt;&lt;br /&gt;In a complex adaptive system where self-organization occurs, we necessarily have an &lt;a href="http://en.wikipedia.org/wiki/Open_system_%28systems_theory%29"&gt;open system&lt;/a&gt; rather than a closed one. The theory goes that if a &lt;a href="http://en.wikipedia.org/wiki/Complex_systems"&gt;complex system&lt;/a&gt; possesses the necessary &lt;a href="http://en.wikipedia.org/wiki/Emergence"&gt;emergent properties&lt;/a&gt; in an appropriate &lt;a href="http://en.wikipedia.org/wiki/Fitness_landscape"&gt;fitness landscape&lt;/a&gt;, then the system will yield emergent behavior,  exhibiting system-wide "patterns", that increases the "order" or organization in the system. Hence the system has become &lt;span style="font-style: italic;"&gt;self-organizing&lt;/span&gt; as a result of this &lt;span style="font-style: italic;"&gt;emergent behavior &amp;amp; structure&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Some of the emergent properties of self-organizing systems can include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Autonomy,&lt;/li&gt;&lt;li&gt;Adaptability,&lt;/li&gt;&lt;li&gt;Decentralization,&lt;/li&gt;&lt;li&gt;Dynamic reconfiguration,&lt;/li&gt;&lt;li&gt;Positive &amp;amp; Negative Feedback&lt;/li&gt;&lt;li&gt; Cooperation &amp;amp; Information exchange&lt;/li&gt;&lt;/ul&gt;The &lt;a href="http://softwarecreation.org/2007/evolutionary-software-architecture-or-why-developers-are-not-janitors/"&gt;theory of complex systems&lt;/a&gt; suggests that self-organized systems are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;better in selecting optimal state and local decisions&lt;/li&gt;&lt;li&gt;robust&lt;/li&gt;&lt;li&gt;effectively adapt to environment and use feedback loops&lt;/li&gt;&lt;li&gt;often come up with emergent and unexpected solutions&lt;/li&gt;&lt;li&gt;self-regulated and better cope with perturbations&lt;/li&gt;&lt;/ul&gt;According to &lt;a href="http://www.jimhighsmith.com/"&gt;James Highsmith&lt;/a&gt;,&lt;br /&gt;&lt;blockquote face="trebuchet ms" style="color: rgb(0, 0, 102); font-family: trebuchet ms;"&gt;“There's no hierarchy of command and control in a complex adaptive system. There's no planning or managing, but there's a constant re-organizing to find the best fit to the environment. The system is continually self-organizing through the process of emergence and feedback”&lt;/blockquote&gt;&lt;br /&gt;The &lt;a style="font-weight: bold;" href="http://emergent.brynmawr.edu/eprg/"&gt;Emergent Phenomena Research Group&lt;/a&gt; at Brywn Mawr says:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 51, 0); font-family: trebuchet ms;"&gt;"In self-organizing systems, global order (i.e., complex aggregate structure/behavior) results (emerges) from the local behaviors of simple agents following simple rules specifying conditions under which those agents act (interact) in such a way that the results of the agents' actions are fed back as input to the operation of the rule system at some future time step. "&lt;/blockquote&gt;&lt;br /&gt;In &lt;a style="font-weight: bold;" href="http://pespmc1.vub.ac.be/Papers/EOLSS-Self-Organiz.pdf"&gt;The Science of Self-organization and Adaptivity&lt;/a&gt;, Francis Heylighen writes:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(102, 51, 102);font-family:trebuchet ms;" &gt;Self-organization is basically the spontaneous creation of a globally coherent pattern out of the local interactions between initially independent components. This collective order is organized in function of its own maintenance, and thus tends to resist perturbations. This robustness is achieved by distributed, redundant control so that damage can be restored by the remaining, undamaged sections. ...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 51, 102);font-family:trebuchet ms;" &gt;Self-organizing systems are characterized by: &lt;span style="font-style: italic;"&gt;distributed control&lt;/span&gt; (absence of centralized control), &lt;span style="font-style: italic;"&gt;continual adaptation&lt;/span&gt; to a changing environment, &lt;span style="font-style: italic;"&gt;emergent structure&lt;/span&gt; from local interaction, &lt;span style="font-style: italic;"&gt;robustness/resiliency&lt;/span&gt; (able under change  and can quickly repair, correct, adapt/adjust), &lt;span style="font-style: italic;"&gt;non-linearity&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;feedback&lt;/span&gt; (both positive and negative), &lt;span style="font-style: italic;"&gt;self-sufficiency&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;closure/coherence&lt;/span&gt;. ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);font-family:trebuchet ms;" &gt;&lt;span style="font-style: italic;"&gt;Organizational closure&lt;/span&gt; turns a collection of interacting elements into an individual, coherent whole. This whole has properties that arise out of its organization, and that cannot be reduced to the properties of its elements. Such properties are called &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 102);font-family:trebuchet ms;" &gt;emergent&lt;/span&gt;&lt;span style="color: rgb(102, 51, 102);font-family:trebuchet ms;" &gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);font-family:trebuchet ms;" &gt;Every self-organizing system &lt;span style="font-style: italic;"&gt;adapts &lt;/span&gt;to its environment; Systems may be called &lt;span style="font-style: italic;"&gt;adaptive &lt;/span&gt;if they can adjust to such changes while keeping their organization as much as possible intact.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;From &lt;a style="font-weight: bold;" href="http://www.targetprocess.com/blog/2008/11/software-development-is-complex.html"&gt;Software Development is Complex Adaptive System. No Doubt&lt;/a&gt;&lt;br /&gt;&lt;blockquote  style="color: rgb(0, 51, 0);font-family:trebuchet ms;"&gt;&lt;span style="font-style: italic;"&gt;Emergence &lt;/span&gt;is the way complex systems and patterns arise out of a multiplicity of relatively &lt;span style="font-style: italic;"&gt;simple interactions&lt;/span&gt;. Small actions of agents lead to unexpected &lt;span style="font-style: italic;"&gt;emergent &lt;/span&gt;system behavior and it is impossible to predict system behavior based on the behavior of an individual agent. Small errors pile up and may cause huge problem.&lt;br /&gt;&lt;br /&gt;There's no hierarchy of command and control in a complex adaptive system. There's no planning or managing, but there's a constant re-organizing to find the best fit to the environment. The system is continually self-organizing through the process of &lt;span style="font-style: italic;"&gt;emergence &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;feedback&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A system in equilibrium does not have the internal dynamics that enables it to respond to the environment and will slowly (or quickly) die. A system in chaos stops functioning as a system. The most productive state to be in is at the edge of chaos where there is maximum variety and creativity, leading to new possibilities.  A set of simple rules allows edge of chaos and powers creativity, flexibility and success.&lt;/blockquote&gt;&lt;br /&gt;And last but not least, from &lt;a href="http://www.scribd.com/doc/14424701/Conditions-for-SelfOrganizing-in-Human-Systems"&gt;Conditions for Self-Organizing in Human Systems&lt;/a&gt; :&lt;br /&gt;&lt;blockquote  style="color: rgb(0, 0, 102);font-family:trebuchet ms;"&gt;&lt;span style="font-style: italic;"&gt;Self-organization&lt;/span&gt; is the spontaneous generation of order in a complex adaptive system. It is the process by which the internal dynamics of a system generate system-wide patterns. Some of the emergent patterns in a self-organizing system are coherent, and others are not. &lt;span style="font-style: italic;"&gt;Coherence &lt;/span&gt;is a state of the system in which:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Meaning is shared among agents.&lt;/li&gt;&lt;li&gt;Internal tension is reduced.&lt;/li&gt;&lt;li&gt;Actions of agents and sub-systems are aligned with system-wide intentionality.&lt;/li&gt;&lt;li&gt;Patterns are repeated across scales and in different parts of the system.&lt;/li&gt;&lt;li&gt;A minimum amount of energy of the system is dissipated through internal interactions.&lt;/li&gt;&lt;li&gt;Parts of the system function in complementary ways.&lt;/li&gt;&lt;/ul&gt;System-wide patterns in which the parts are aligned and mutually reinforcing (coherent) are more stable than other self-organized patterns. Because of the mutually reinforcing dynamics of a coherent pattern, the effort required to change the pattern is greater than the effort to maintain it, so coherent patterns are more stable than incoherent ones. When the system reaches a state of coherence ... tensions within the system are reduced, and the available energy of the system is aligned and focused on system-wide behaviors, rather than diverse and disruptive behavior of individual agents or sub-system clusters. ...&lt;br /&gt;&lt;br /&gt;In human systems, the process of self-organizing is particularly important. Teams, institutions, and communities include individuals or groups of individuals that function as agents in self-organizing. As the agents interact, patterns of behavior emerge over time.These patterns form and reform spontaneously and continually at multiple levels within the system. Individuals work together to form teams. Ethnic identity groups establish relationships and micro-cultures. Functional departments engage with each other to do the work of the organization. At all of these levels, agents interact naturally to form patterns of system-wide behavior. ...&lt;br /&gt;&lt;br /&gt;The CDE model is a set of the three conditions for self-organizing of human systems: &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;C&lt;/span&gt;ontainer&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;significant &lt;span style="font-weight: bold;"&gt;D&lt;/span&gt;ifference&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;transforming &lt;span style="font-weight: bold;"&gt;E&lt;/span&gt;xchange&lt;/span&gt;. The path, rate, and outcomes of self-organizing processes are influenced by these three conditions, which are co-dependent such that the function of each of the conditions depends on the others in nonlinear interactions in the system. A change in any one of the conditions results in a change in the other two over time.&lt;/blockquote&gt;&lt;br /&gt;Also see the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wikipedia entries on &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Self-organization"&gt;Self-Organization&lt;/a&gt; and &lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Emergence"&gt;Emergence&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;a href="http://www.calresco.org/sos/sosfaq.htm" id="v9b_" title="Self-Organizing Systems FAQ"&gt;Self-Organizing Systems FAQ&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;li style="font-style: italic;"&gt;&lt;a href="http://arxiv.org/ftp/nlin/papers/0509/0509049.pdf"&gt;10 Questions about Emergence&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://pespmc1.vub.ac.be/Papers/IEEE.Self-organization.pdf"&gt;The Meaning of Self-Organization in Computing&lt;/a&gt; and &lt;span style="font-style: italic;font-family:georgia;" &gt;&lt;a href="http://pespmc1.vub.ac.be/Papers/EOLSS-Self-Organiz.pdf" id="iq-e" title="The Science of Self-Organization and Adaptivity"&gt;The Science of Self-Organization and Adaptivity&lt;/a&gt;&lt;/span&gt;, Francis Heylighen &amp;amp; Carlos Gershenson&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.systemdynamics.org/conferences/2001/papers/Georgantzas_2.pdf"&gt;Self-Organization Dynamics&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://www.naturalhistorymagazine.com/0603/0603_feature1.html"&gt;Patterns in Nature&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong style="font-weight: normal;"&gt;&lt;a href="http://www.amazon.com/gp/product/0553343637/104-2883280-1296732?tag=softwcreatmys-20" title="Order Out of Chaos"&gt;Order Out of Chaos&lt;/a&gt;&lt;/strong&gt;, Ilya Prigogine&lt;/li&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://softwarecreation.org/2007/evolutionary-software-architecture-or-why-developers-are-not-janitors/"&gt;Evolutionary Software Architecture, or Why Developers are not Janitors&lt;/a&gt;, Andriy Solovey&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In my &lt;span style="font-weight: bold;"&gt;next blog-entry&lt;/span&gt; I'll talk specifically &lt;span style="font-weight: bold;"&gt;about self-organizing teams&lt;/span&gt;. Some specific characteristics and/or results of self-organization that I'll be delving into more deeply in subsequent blog-entries are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Swarm Behavior&lt;/span&gt; (a.k.a. &lt;span style="font-style: italic;"&gt;Swarm Intelligence&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Collective Intelligence&lt;/span&gt; (a.k.a. &lt;span style="font-style: italic;"&gt;Collective Mind&lt;/span&gt;)&lt;/li&gt;&lt;li style="font-weight: bold; font-style: italic;"&gt;Social Creativity&lt;/li&gt;&lt;li style="font-weight: bold; font-style: italic;"&gt;Group Coherence&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-7526747776750785435?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/7526747776750785435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=7526747776750785435&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7526747776750785435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7526747776750785435'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/self-organization-and-complexity.html' title='Self-Organization and Complexity'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-3449960090954598430</id><published>2009-06-12T00:52:00.005-05:00</published><updated>2009-06-30T03:25:37.979-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Self-Organization'/><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Agile Self-Organization versus Lean Leadership</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Getting back to the agility cycle ... recall that I started with &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-1.html"&gt;the business agility cycle&lt;/a&gt; and used that to derive &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-2.html"&gt;the software agility cycle&lt;/a&gt;. There isn't a great deal of difference between the first two steps of the business-agility cycle and the software-agility cycle, other than the fact that much of the former takes place at a higher-level of organizational management and strategy.&lt;br /&gt;&lt;br /&gt;The biggest difference between the two cycles happens after those first two steps. In the business agility cycle we then decide-communicate-act, suggesting that it is the higher-ups who make and communicate the decisions and the lower-end of the organizational food chain (the "worker bees") that execute the organization's strategic solution.&lt;br /&gt;&lt;br /&gt;If that seems a bit command-and-control, its because it is (a bit). It's also likely necessary in larger organizations where it is virtually impossible to avoid having 2 or more layers of management. There, the "communicate &amp;amp; act" steps are really the process of providing focus, and communicating objectives and constraints to the knowledge workers, and letting them apply principles of collaboration and self-organization to solve the problem (like in the software-agility cycle).&lt;br /&gt;&lt;br /&gt;So the key difference between business-agility and software-agility is the extra emphasis of the latter on "the people factor" and on the notion of dynamic self-organization of knowledge-workers as empowered, self-organizing teams. This difference between agility at the business-level versus software-level is also the key difference between Lean-vs-Agile:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Lean&lt;/b&gt; focuses more on &lt;i&gt;flow&lt;/i&gt; whereas &lt;b&gt;Agility&lt;/b&gt; focuses  more on &lt;i&gt;adapting to change&lt;/i&gt; (this is true of both software agility &lt;i&gt;and&lt;/i&gt; business-agility). As it turns out, focusing on flow requires being able to adapt to change; and focusing on adaptiveness and responsiveness requires a focus on flow. So here, the end-results may be quite similar&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Agile software development&lt;/span&gt; emphasizes a very &lt;span style="font-style: italic;"&gt;hands-off management style&lt;/span&gt; of not just trusting and empowering the team(s), but often to the extreme of basically saying "&lt;span style="font-family:verdana;"&gt;leave us alone and don't interfere&lt;/span&gt;" to management (and in return promising extreme transparency and frequent tangible end-results).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Much of this is due to the fact that the scope of &lt;span style="font-weight: bold;"&gt;Agile development&lt;/span&gt; is &lt;span style="font-style: italic;"&gt;limited to software projects and teams&lt;/span&gt;, whereas &lt;span style="font-weight: bold;"&gt;Lean &lt;/span&gt;is &lt;span style="font-style: italic;"&gt;targeted at enterprise-wide scale across the whole value-stream&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;That is not to say that Lean (or business-agility) don't emphasize trusting and empowering workers and teams (they do). But they don't have the underlying inherent attitude of "just trust us and stay out of the way." The "trust" often doesn't seem to extend as far in the other direction with Agile development (e.g. not trusting management direction to the same extent that management is asked to trust the team).&lt;br /&gt;&lt;br /&gt;I think this stems from the fact that software agility started more at the grass-roots level, with developers and teams struggling to create good, quality software in the face of what was all too often a fundamentally broken management framework for the governance, visibility, and lifecycle of software development projects. Because they were working and trying to get support from the bottom-up, they needed to be shielded from and unshackled by all the dilbert-esque "pointy haired managers" and their big, bad governance framework with its "evil" waterfall lifecycle.&lt;br /&gt;&lt;br /&gt;And in that context, the advice of "just get out of the way and trust us and we promise to deliver working software every 2-4 weeks" is actually a very effective strategy to employ.  When management doesn't "get it", their attempts to steer, direct and intervene are often the equivalent of "friendly fire" (which, despite well intentions, still yields calamitous results.)&lt;br /&gt;&lt;br /&gt;But Lean comes from a history of a much more enterprise-wide scope, often even using a top-down deployment strategy. So when it asks management to trust and empower workers and teams it expects the corresponding change in its leaders and their leadership-style, and for them to still play a strong, active and participative role with their projects and teams.&lt;br /&gt;&lt;br /&gt;Agile teams often get a "bad rap" for having this isolationist attitude toward management. And sometimes that "rap" is warranted. But when the leadership "gets it" and understands and values the "new" paradigm of why+how agile works, and why+how the "old way" didn't, then it probably is time for the leadership to play a different, more active role while still trusting and empowering teams (and still enabling self-organization). This is the view that Lean takes toward management, and is a big part of why it is better received by management and is more broadly applicable for scaling agility "up" and "out" in larger enterprises.&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3449960090954598430?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3449960090954598430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3449960090954598430&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3449960090954598430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3449960090954598430'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/agile-self-organization-versus-lean.html' title='Agile Self-Organization versus Lean Leadership'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2925160615377879982</id><published>2009-06-10T01:17:00.012-05:00</published><updated>2009-06-19T01:21:48.597-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Value Proposition for Agility</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I'm sure I'm not the first person to think it, but I just came across the description of a newly published book whose title made me think about this subject. The book is:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.informit.com/title/0137032382"&gt;&lt;span style="font-weight: bold;"&gt;Reading Minds and Markets: Minimizing Risk and Maximizing Returns in a Volatile Global Marketplace&lt;/span&gt;&lt;/a&gt;, by Jack Ablin and Suzanne McGee.&lt;br /&gt;&lt;br /&gt;The title immediately made me think that this was the right language to use when communicating with business-people and senior management to describe what agility is in terms of its benefits to the bottom line.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.investopedia.com/"&gt;Investopedia&lt;/a&gt; describes a "&lt;a href="http://www.investopedia.com/terms/v/valueproposition.asp"&gt;&lt;i&gt;Value Proposition&lt;/i&gt;&lt;/a&gt;" as: "&lt;em style="font-family: times new roman;"&gt;A business or marketing statement that summarizes why a consumer should buy a product or use a service. This statement should convince a potential consumer that one particular product or service will add more value or better solve a problem than other similar offerings.&lt;/em&gt;"&lt;br /&gt;&lt;br /&gt;So I think that "value proposition" is the right term to describe what is it about agility that I want to describe to a business-person or senior manager that should make them want to care about what agility is and why they should adopt it.&lt;br /&gt;&lt;br /&gt;With the above in mind, here is my "value proposition" for agility:&lt;br /&gt;&lt;blockquote style="font-family: verdana; font-size: 130%; color: rgb(0, 0, 153);"&gt;&lt;em&gt;&lt;strong&gt;Agility is all about harnessing the power of &lt;u&gt;collaborative people&lt;/u&gt; and &lt;u&gt;frequent delivery&lt;/u&gt; to:&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;learn &amp;amp; adapt to change,&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;minimize risk &amp;amp; cycle-time,&lt;/strong&gt; and ...&lt;/li&gt;&lt;li&gt;&lt;strong&gt;maximize returns &amp;amp; customer-value&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;in a volatile global marketplace.&lt;/strong&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;There! Top that! :-)&lt;br /&gt;&lt;br /&gt;Think you have a better value-proposition for agility that is more succinct while still touching on the minimally sufficient set of key attributes? (the people-factor, frequent value-delivery, cycle-time, responsiveness to change and risk/ROI)&lt;br /&gt;&lt;br /&gt;If so, then I want to see it! Leave a comment and let me know!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2925160615377879982?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2925160615377879982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2925160615377879982&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2925160615377879982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2925160615377879982'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/value-proposition-for-agility.html' title='Value Proposition for Agility'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5558156937363852150</id><published>2009-06-09T23:18:00.002-05:00</published><updated>2009-07-19T02:35:21.991-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>BOOK: The Art of Lean Software Development</title><content type='html'>&lt;span style="font-family:georgia;"&gt;In the June issue of &lt;a href="http://www.agilejournal.com/"&gt;the Agile Journal&lt;/a&gt; I reviewed Curt Hibbs, Steve Jewett and Mike Sullivan's &lt;a href="http://oreilly.com/catalog/9780596517311/"&gt;The Art of Lean Software Development: A Practical and Incremental Approach&lt;/a&gt;. Here is an excerpt ...&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(0, 0, 102);"&gt;With &lt;a href="http://www.leanssc.org/press-releases/2009-05-06.html"&gt;last month's announcement&lt;/a&gt; of the &lt;a href="http://www.leankanbanconference.com/"&gt;Lean Software and Systems Consortium&lt;/a&gt; at the &lt;a href="http://www.leanssc.org/"&gt;2009 Lean &amp;amp; Kanban Conference&lt;/a&gt;, it seems fitting that this month's book is about Lean Software Development and how Agile development practices support Lean Thinking.&lt;br /&gt;   &lt;br /&gt;&lt;a href="http://oreilly.com/catalog/9780596517311/"&gt;The Art of Lean Software Development: A Practical and Incremental Approach&lt;/a&gt; is an introduction to Agile software development practices through the lense of &lt;a href="http://en.wikipedia.org/wiki/Lean_manufacturing"&gt;Lean thinking&lt;/a&gt;. The first thing you need to know about this book is who its target audience is [...] from the &lt;a href="http://oreilly.com/catalog/9780596517311/"&gt;publisher's website for the book&lt;/a&gt;: "This book has a very specific purpose -- it is aimed squarely at the complete novice. The one who has been hearing all the Lean-Agile buzz, really knows nothing about it, and wants to learn more quickly to decide if they want to dig deeper (without having to read a 500 page tome)."&lt;br /&gt;...&lt;br /&gt;Now that we've finally gotten that out of the way ... The &lt;a href="http://oreilly.com/catalog/9780596517311/"&gt;Art of Lean Software Development&lt;/a&gt; actually succeeds at its intended purpose. It is a very "lean" introduction to the subject of applying lean thinking to software development. (You can see for yourself by looking at the online excerpts of &lt;a href="http://fyi.oreilly.com/2009/01/chapter-2-applying-lean-to.html"&gt;chapter 2&lt;/a&gt; and &lt;a href="http://cdn.oreilly.com/books/leansoftware/9780596517311_ch4.pdf"&gt;chapter 4&lt;/a&gt;.)&lt;br /&gt;...&lt;br /&gt;I like just about everything that &lt;a href="http://tedyoung.blogsome.com/2009/02/01/book-review-the-art-of-lean-software-development-1st-edition/"&gt;The Art of Lean Software Development&lt;/a&gt; has to say. It is a bit of a dry read but a very quick one.  ... For those more interested in the abridged version or the line-manager's equivalent of a technical overview, &lt;a href="http://oreilly.com/catalog/9780596517311/"&gt;The Art of Lean Software Development&lt;/a&gt; is a very quick and easy read that successfully introduces the history and essentials of Lean and Agile software development from a Lean thinking perspective.&lt;/blockquote&gt;&lt;br /&gt;See &lt;a href="http://www.agilejournal.com/articles/columns/column-articles/1746-featured-book-the-art-of-lean-software-development-by-curt-hibbs-steve-jewett-and-mike-sullivan"&gt;the full review&lt;/a&gt; for more details.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5558156937363852150?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5558156937363852150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5558156937363852150&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5558156937363852150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5558156937363852150'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/book-art-of-lean-software-development.html' title='BOOK: The Art of Lean Software Development'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5439552570982824119</id><published>2009-06-07T09:08:00.005-05:00</published><updated>2009-06-17T12:08:35.740-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>The Dynamics of Leadership-Team Behavior</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Interesting article in BusinessWeek from &lt;a href="http://www.businessweek.com/magazine/toc/09_21/B4132jim_collins.htm"&gt;Jim Collins&lt;/a&gt; on the &lt;a href="http://www.businessweek.com/magazine/content/09_21/b4132026793275.htm"&gt;&lt;em&gt;Dynamics of Team-Leadership Behavior&lt;/em&gt;&lt;/a&gt;. It's actually an excerpt from his latest book "&lt;strong&gt;&lt;a href="http://www.amazon.com/How-Mighty-Fall-Companies-Never/dp/0977326411"&gt;How the Mighty Fall: and Why Some Companies Never Give In&lt;/a&gt;&lt;/strong&gt;."&lt;br /&gt;&lt;br /&gt;Anyway ... &lt;a href="http://www.businessweek.com/magazine/content/09_21/b4132026793275.htm"&gt;&lt;em&gt;the Dynamics of Team-Leadership Behavior&lt;/em&gt;&lt;/a&gt; is divided into leadership behaviors of teams on the way up vs. on the way down:&lt;br /&gt;&lt;br /&gt;&lt;table valign="top" border="1" cellpadding="2" cellspacing="1"&gt; &lt;tbody valign="top"&gt;&lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; &lt;h2&gt;Teams on the Way Down&lt;/h2&gt; &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; &lt;h2&gt;Teams on the Way Up&lt;/h2&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; People shield those in power from unpleasant facts, fearful of penalties and criticism for shining light on the rough realities &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; People bring forth grim facts—"Come here and look, man, this is ugly"—to be discussed; leaders never criticize those who bring forth harsh realities &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; People assert strong opinions without providing data, evidence, or a solid argument &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; People bring data, evidence, logic, and solid arguments to the discussion &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; The team leader has a very low questions-to-statements ratio, avoiding critical input and/or allowing sloppy reasoning and unsupported opinions &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; The team leader employs a Socratic style, using a high questions-to-statements ratio, challenging people, and pushing for penetrating insights &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; Team members acquiesce to a decision but don't unify to make the decision successful—or worse, undermine it after the fact &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; Team members unify behind a decision once made, then work to make the decision succeed, even if they vigorously disagreed with it &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; Team members seek as much credit as possible for themselves, yet do not enjoy the confidence and admiration of their peers &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; Each team member credits other people for success, yet enjoys the confidence and admiration of his or her peers &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; Team members argue to look smart or to further their own interests rather than argue to find the best answers to support the overall cause &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; Team members argue and debate, not to improve their personal position but to find the best answers to support the overall cause &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; The team conducts "autopsies with blame," seeking culprits rather than wisdom &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; The team conducts "autopsies without blame," mining wisdom from painful experiences &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="color: rgb(102, 51, 51);"&gt; Team members often fail to deliver exceptional results and blame other people or outside factors for setbacks, mistakes, and failures &lt;/td&gt; &lt;td style="color: rgb(0, 0, 153);"&gt; Each team member delivers exceptional results, yet in the event of a setback each accepts full responsibility and learns from mistakes &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5439552570982824119?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5439552570982824119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5439552570982824119&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5439552570982824119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5439552570982824119'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/dynamics-of-leadership-team-behavior.html' title='The Dynamics of Leadership-Team Behavior'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-6674944303669531942</id><published>2009-06-04T00:26:00.004-05:00</published><updated>2009-06-15T00:56:56.283-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOKS: The Passionate Programmer and the Nomadic Developer</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Gosh, when I write/say the titles of these two books together in one line it looks like the title of some kind of computer-geek romance novella. (maybe it will sell more books that way :-)&lt;br /&gt;&lt;br /&gt;Anyway, I'm mentioning these two books together because they both relate to subject of managing your career if you are a professional software developer, and they are both complementary to one another.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.pragprog.com/titles/cfcar2/the-passionate-programmer"&gt;The Passionate Programmer: Creating a Remarkable Career in Software Development&lt;/a&gt;, by &lt;a href="http://chadfowler.com/"&gt;Chad Fowler&lt;/a&gt;, is really the revised edition of an earlier work by him under a different book title. It's from the &lt;a href="http://pragprog.com/"&gt;Pragmatic Programmers&lt;/a&gt;, so that by itself practically guarantees its pretty darn good. The blurb for the book is pretty darn accurate too: "&lt;span style="font-style: italic; color: rgb(0, 0, 102);font-family:times new roman;" &gt;This book is about creating a remarkable career in software development. In most cases, remarkable careers don’t come by chance. They require thought, intention, action, and a willingness to change course when you’ve made mistakes. Most of us have been stumbling around letting our careers take us where they may. It’s time to take control. This revised and updated second edition lays out a strategy for planning and creating a radically successful life in software development&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-family:times new roman;" &gt;.&lt;/span&gt;" Several excerpts are available from &lt;a href="http://pragprog.com/titles/cfcar2/the-passionate-programmer"&gt;publisher's homepage for the book&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.informit.com/store/product.aspx?isbn=0321606396"&gt;&lt;span style="font-weight: bold;"&gt;The Nomadic Developer: Surviving and Thriving in the World of Technology Consulting&lt;/span&gt;&lt;/a&gt;, by &lt;a href="http://nomadic-developer.com/"&gt;Aaron Erickson&lt;/a&gt;, is a must read for anyone considering becoming a software development consultant (or by anyone who recently became one). &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.informit.com/content/images/9780321606396/samplepages/0321606396_Sample.pdf"&gt;Chapter 6 - Surviving&lt;/a&gt;, is available as an online excerpt.&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;br /&gt;The "blurb" for this book is a bit long so I'll include only part of it here: "&lt;span style="font-style: italic; color: rgb(0, 0, 102);font-family:times new roman;" &gt;There are real advantages to being a consultant. You make contacts with a lot of different people; you get exposure to many industries; and most important, unlike a software developer in the IT department for a brick-and-mortar company, as a technology consultant, you &lt;/span&gt;&lt;i style="font-family: times new roman; font-style: italic; color: rgb(0, 0, 102);"&gt;are&lt;/i&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102);font-family:times new roman;" &gt; the profit center…so long as you are billing. Consulting can be hugely rewarding–but it’s easy to fail if you are unprepared. To succeed, you need a mentor who knows the lay of the land. Aaron Erickson is your mentor, and this is your guidebook. Erickson has done it all–from Practice Leadership to the lowest level project work. In &lt;/span&gt;&lt;i style="font-family: times new roman; font-style: italic; color: rgb(0, 0, 102);"&gt;The Nomadic Developer&lt;/i&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102);font-family:times new roman;" &gt;, he brings together his hardwon insights on becoming successful and achieving success through tough times and relentless change. You’ll find 100% practical advice and real experiences–his own and annotations from those in the trenches. In addition, renowned consultants–such as David Chappell, Bruce Eckel, Deborah Kurata, and Ted Neward–share some of their hard-earned lessons.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;I don't need to tell anyone that we are in tough economic times with cuts and force reductions abounding and new jobs being scarce. Seems to me that getting both of these books together makes just plain good sense for anyone in our line of work these days.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-6674944303669531942?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/6674944303669531942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=6674944303669531942&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6674944303669531942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6674944303669531942'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/books-passionate-programmer-and-nomadic.html' title='BOOKS: The Passionate Programmer and the Nomadic Developer'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-8143048774772643263</id><published>2009-06-01T02:21:00.008-05:00</published><updated>2009-06-17T01:10:10.898-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>5S Qualities of Well Designed, Well-Factored Code</title><content type='html'>&lt;span style="font-family:georgia;"&gt;The other day I was trying to explain to someone the properties of code that is well-factored and found myself using aliteration with 'S' words. That made me wonder if they were equivalent to Lean's "5S", which is as follows:&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Seiri&lt;/i&gt;  (&lt;b&gt;Sort&lt;/b&gt;) - Organize the work-area, leaving only the tools and materials necessary to perform daily activities&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;Seiton&lt;/i&gt;  (&lt;b&gt;Straighten, Set in Order&lt;/b&gt;) - the orderly arrangement of needed items so they are easy to use and accessible for “anyone” to find.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;Seiso&lt;/i&gt;  (&lt;b&gt;Shine&lt;/b&gt;) - Keep everything clean and swept. Don’t allow litter, scrap, shavings, cuttings, etc., to land on the floor in the first place.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;Seiketsu&lt;/i&gt;  (&lt;b&gt;Standardize&lt;/b&gt;) - Creating a consistent approach for carrying out tasks and procedures. Orderliness is the core of “standardization” and is maintained by Visual Controls.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;Shitsuke&lt;/i&gt;  (&lt;b&gt;Sustain&lt;/b&gt;) - the discipline and commitment of all other stages. Without “sustaining”, your workplace can easily revert back to being dirty and chaotic. That is why it is so crucial for your team to be empowered to improve and maintain their workplace. &lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;Does the above apply to the structure and content of the code itself? Have you ever come across code that is truly well-factored? I don't just mean correct and that it follows coding standards, I mean the structure of the code itself not only had such clarity of thought and order, but it also had all the qualities that we like to think of that make the code changeable/malleable with ease. Here is what I think those qualities are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Sufficient&lt;/strong&gt; scope (content &amp;amp; functionality) – The code implements only that which is necessary. It doesn't have more content than needed, or more behavior or interfaces or abstractions than needed. It is "just enough" code to get the job done, while still possessing the other properties below. XP ensures this by taking the “next most important” requirement, creating only just enough content (spec, requirements, even branches) that can be implemented for current activity in the current workspace. Then write only “just enough” code to pass the test (then you refactor).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Simple&lt;/strong&gt;, clean code – The code isnt just "Lean" in its content and functionality, but also in its structural design. Dependencies and duplication are minimized while clarity, cohesiveness, and conciseness are maximized. In XP, once the code result is “sufficient” in content &amp;amp; correctness, we refactor to simplify the structure and dependencies as much as possible.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Supple&lt;/strong&gt; design – This comes from the chapter of the same name in Eric Evans Evans' book &lt;a style="font-weight: bold;" href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215"&gt;Domain-Driven Design&lt;/a&gt;.  Supple means pliant, malleable, limber, yielding or changing readily. Code that is well-factored is at once so simple yet sufficient as to be firm yet flexible. Yet the flexibility comes not so much from what you added as from what you left out and how you organized it. It is more than just simple and sufficient, there is an inherent model or "theory" of the program inside the programmer's head, and that structure and intent are clearly conveyed and deeply realized by the code and somehow manages to incorporate the subject domain in it as well. Evans cites patterns of supple design like: &lt;i&gt;Intention-Revealing Interfaces, Side-Effect-Free Functions, Assertions, Conceptual Contours, Standalone Classes, Closure of Operations, Declarative Style of Design&lt;/i&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Serviceable&lt;/strong&gt; product – Making the code easy to change isn’t enough. Use coding standards too. But beyond that, ensure that what is delivered from the code is &lt;i&gt;serviceable&lt;/i&gt;, so that it is ALSO quick &amp;amp; easy to (re)build, (re)test, commit/merge, stage, release, configure and install/upgrade/deploy. It’s not just the code that needs to be quick and easy to change, it is everything that needs to be done to deliver change to the consumer in order to realize its value.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Sustainable&lt;/strong&gt; team velocity – Okay, I'm cheating a bit here because this last one is really about the process used to attain the other 4 qualities above. It's not just  the code &amp;amp; product that needs to be sustainable (from a business-perspective and from a support/maintenance perspective) but the process that the programmers follow. On the one hand it must necessarily be disciplined, and yet it needs to be something that does not force them to work at or above their capacity for any significant time. The process should be sustainable and renewable so that the discipline is relatively easy to sustain and in fact gets easier over time, resisting "burnout" as well as the temptation to fall back into bad habits.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So that's my "&lt;span style="font-weight: bold;"&gt;5S&lt;/span&gt;" for code/design structure! It's not quite as pithy as saying "lean, mean, keen, clean &amp;amp; green." The thing is, I'm not so sure my five S-words really do map all that accurately to the 5S of Lean (and I'm not sure I should try to make them either). What do you think?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-8143048774772643263?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/8143048774772643263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=8143048774772643263&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/8143048774772643263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/8143048774772643263'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/06/5s-qualities-of-well-designed-well.html' title='5S Qualities of Well Designed, Well-Factored Code'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-7546971291628790304</id><published>2009-05-29T23:50:00.009-05:00</published><updated>2009-06-17T09:31:53.948-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Trust'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>HBR on Rebuilding Trust</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Some of you may recall some earlier blog-entries of mine on the topic of trust:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Trust-Social-Virtues-Creation-Prosperity/dp/0684825252"&gt;Trust: The social virtues and the creation of prosperity&lt;/a&gt; by Francis Fukuyama&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.bradapp.net/2009/04/more-articles-on-trust.html"&gt;More Articles on Trust&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.bradapp.net/2009/04/book-building-trust.html"&gt;Building Trust: In Business, Poliotics, Relationship and Life&lt;/a&gt; by Solomon and Flores, and&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.bradapp.net/2009/04/book-speed-of-trust.html"&gt;The Speed of Trust: The One Thing that Changes Everything&lt;/a&gt; by Stephen M.R. Covey&lt;/li&gt;&lt;/ul&gt;As it turns out, the &lt;a href="http://hbr.harvardbusiness.org/archive-toc/BR0906"&gt;current issue of Harvard Business Review&lt;/a&gt; is on the theme of Rebuilding Trust (follow the hyperlink for executive summaries). The article "&lt;a href="http://hbr.harvardbusiness.org/2009/06/trust-revisited/ar/1"&gt;Trust Revisited&lt;/a&gt;" has a roundup of the other articles in the issue that deal with trust:&lt;br /&gt;&lt;blockquote style="font-family: times new roman;"&gt;&lt;p&gt;The public’s trust in business leaders has never been weaker. According to the Edelman Trust Barometer, released in January, trust in U.S. business dropped from 58% to 38% in one year. European businesses are in nearly as much trouble with the public. Businesses in emerging markets are faring better—but not by a lot.&lt;/p&gt; &lt;p&gt;If companies can’t address this problem, an economic turnaround may be delayed indefinitely: Banks won’t lend money; innovation will slow to a crawl; trade across borders will fall even more rapidly; governments will overregulate the private sector; unemployment numbers will continue to rise; and consumers won’t open their wallets for anything they consider nonessential. A complex modern economy simply can’t function unless people believe that its institutions are fundamentally sound.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;The articles' executive summaries are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rod Kramer, in “&lt;a href="http://hbr.harvardbusiness.org/2009/06/rethinking-trust/ar/1"&gt;Rethinking Trust&lt;/a&gt;,” argues that most of us trust others far too easily. While the pundits claim that businesses need to rebuild consumers’ trust as soon as possible, Kramer argues that we need to remain skeptical.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Joel Podolny’s piece “&lt;a href="http://hbr.harvardbusiness.org/2009/06/the-buck-stops-and-starts-at-business-school/ar/1"&gt;The Buck Stops (and Starts) at Business School&lt;/a&gt;,” indicts the schools that train managers and executives and shares his thoughts about how to reinvent business education—and thereby regain people’s trust.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;James O’Toole and Warren Bennis argue passionately that senior managers must build a culture of transparency to repair that problem. “&lt;a href="http://hbr.harvardbusiness.org/2009/06/a-culture-of-candor/ar/1"&gt;What’s Needed Next: A Culture of Candor&lt;/a&gt;” makes the case that trust within organizations is the bedrock for rebuilding it in business as a whole.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In “&lt;a href="http://hbr.harvardbusiness.org/2009/06/how-to-be-a-good-boss-in-a-bad-economy/ar/1"&gt;How to Be a Good Boss in a Bad Economy&lt;/a&gt;” Bob Sutton and another Stanford professor take a different perspective on the destructive dynamic of senior management behavior during tough economic times — and describes a better one.&lt;/li&gt;&lt;/ul&gt;There is also an article from the previous month's issue about "&lt;a href="http://hbr.harvardbusiness.org/2009/05/when-contracts-destroy-trust/ar/1"&gt;When Contracts Destroy Trust&lt;/a&gt;."&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-7546971291628790304?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/7546971291628790304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=7546971291628790304&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7546971291628790304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7546971291628790304'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/hbr-on-rebuilding-trust.html' title='HBR on Rebuilding Trust'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-357721891891424751</id><published>2009-05-26T07:10:00.005-05:00</published><updated>2009-06-17T09:31:53.948-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>Rewiring the Primal Management Talent Code</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I came across an interesting book in &lt;a href="http://www.borders.com/"&gt;Borders&lt;/a&gt; over the weekend, but didn't have the time to browse it more thoroughly. A few hours later, at home, I  looked it up on &lt;a href="http://www.amazon.com/"&gt;Amazon.com&lt;/a&gt;. I found the description and review comments very interesting, and found myself following links to some related books and reading through those pages as well.&lt;br /&gt;&lt;br /&gt;There were three books in particular that struck me as having conclusions that were different, but closely connected, and which combined together to yield something more powerful than any of them does alone. These three books are:&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Management-Rewired-Feedback-Surprising-Lessons/dp/159184262X"&gt;&lt;b&gt;Management Rewired: Why Feedback Doesn't Work and Other Surprising Lessons from the Latest Brain Science&lt;/b&gt;&lt;/a&gt;, by Charles S. Jacobs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Primal-Management-Unraveling-Secrets-Performance/dp/081441396X"&gt;&lt;b&gt;Primal Management: Unraveling the Secrets of Human Nature to Drive High Performance&lt;/b&gt;&lt;/a&gt;, by Paul Herr&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Talent-Code-Greatness-Born-Grown/dp/055380684X"&gt;&lt;b&gt;The Talent Code: Greatness Isn't Born. It's Grown. Here's How.&lt;/b&gt;&lt;/a&gt;, by Daniel Coyle&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;What do you think? Can you see a connection from each of these to the other that suggests a "bigger picture" regarding agility, collaboration, leadership and excellence? How did you connect the dots from one to the other?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-357721891891424751?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/357721891891424751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=357721891891424751&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/357721891891424751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/357721891891424751'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/rewiring-primal-management-talent-code.html' title='Rewiring the Primal Management Talent Code'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-9189413594954640164</id><published>2009-05-21T00:56:00.006-05:00</published><updated>2011-07-13T12:11:10.599-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CM'/><category scheme='http://www.blogger.com/atom/ns#' term='Version-Control'/><title type='text'>Synchronous and Staged Integration</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I participated in a LinkedIn CM group discussion about Building Code before -vs- after Checkin. The discussion was kicked-off by Tracy Ragan, COO and Co-Founder, &lt;a href="http://www.openmakesoftware.com/"&gt;OpenMake Software&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: times new roman;"&gt;Many companies implementing a distributed SCM process make the mistake of checking source code into their SCM repository before they validate the code through a compile and link process. Checking in source code that does not compile is honestly, a waste of time. I call it the garbage in/garbage out method. The goal of SCM is to match your production source code to your production executables. This goal should be kept in mind when implementing your SCM process.&lt;br /&gt;&lt;br /&gt;So many companies have a very complex SCM process with tightly managed approvals. But when it comes time to roll out binaries to production, they have no idea how those binaries were created. What you need is the ability to run a footprint of your production executables showing all artifacts used to create those binaries. That footprint should show the versions of the files that were found via your SCM repositories and audit all files that were used to create the binary but were not stored in your SCM repository.&lt;br /&gt;&lt;br /&gt;Build your code as part of your SCM process. This is the only way to know if the code you are spending time and money to manage is actually executing in your production environment. The mainframe community has gotten this right for the last 20 years. It is time for the distributed developers to sort out a 100% complete SCM process.&lt;/blockquote&gt;&lt;br /&gt;There were several good comments, most of them tacking positions for or against, and a few adding some more insight.  I responded as follows ...&lt;br /&gt;&lt;br /&gt;I wrote a paper for the CM Journal on this very issue a few years back (Nov 2003). It was entitled &lt;a href="http://cmcrossroads.com/agile-scm/6536-codeline-merging-and-locking-continuous-updates-and-two-phased-commits"&gt;Codeline Merging and Locking: Continuous Update and Two-Phased Commits&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It talks about what we ideally want to have done by the time we try to commit our changes to the codeline (shared/team integration branch) and some of the different strategies (patterns) and trade-offs for how to ensure correct, complete &amp;amp; consistent results while still trying to be as practical as possible regarding complexity and overhead.&lt;br /&gt;&lt;br /&gt;It does not however discuss the issue of "synchronous" versus "asynchronous" build+regression-test as part of the commit operation. It assumes "synchronous", where you must successfully build+test *before* the commit operation is considered complete (which is what Tracy is talking about here).&lt;br /&gt;&lt;br /&gt;Another approach is "asynchronous", which is what many CI-server implementations do: allow the commit complete (perhaps after doing only an incremental build), but then behind the scenes immediately "kickoff" a more rigorous/complete build which then raises a visible alert upon failure (which should then be fixed *immediately*).&lt;br /&gt;&lt;br /&gt;Rather than an either/or approach (building before commit -vs- building after commit), what is becoming more common for larger projects &amp;amp; codebases is a "staged continuous integration approach" such as those described by the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/development-tools/212201506%20"&gt;Multi-Stage Continuous Integration&lt;/a&gt;, by Damon Poole, December 2008, Dr. Dobbs Journal&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/architect/210603696%20"&gt;Staged CI and the Build &amp;amp; Release Pipeline&lt;/a&gt;, by Maciej Zawadski, September 2008, Dr. Dobbs Journal&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2007/09/CI_Pipeline%20"&gt;Is Pipelined Continuous Integration a Good Idea?&lt;/a&gt;, by Amr Elssamadisy, September 2007 from InfoQ.com&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cmcrossroads.com/content/view/9068/120/%20"&gt;When to use Staged Integration&lt;/a&gt;, by Johanna Rothman, September 2007&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.testearly.com/2007/04/25/staged-builds-with-cruisecontrol/%20"&gt;Staged Builds with Cruise-Control&lt;/a&gt;, by Paul Duvall, April 2007&lt;/li&gt;&lt;li&gt;&lt;a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;amp;f=67&amp;amp;t=000843%20"&gt;Staged CI Stories&lt;/a&gt; at Java Ranch Other references on Scaling Continuous Integration:&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.crosstalkonline.org/storage/issue-archives/2008/200805/200805-Vodde.pdf"&gt;Measuring Continuous Integration Capability&lt;/a&gt;, Bas Vodde&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.aspiring-technology.com/post/Does-Continuous-Integration-Scale-to-Enterprise-Projects.aspx%20"&gt;Does Continuous Integration Scale to Enterprise Projects?&lt;/a&gt; [blog-article containing a whitepaper "PDF"]&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.accurev.com/whitepaper/pdf/large-scale-continuous-integration.pdf"&gt;Large-Scale Continuous Integration&lt;/a&gt;, by Damon Poole, CM Journal, January 2009, Vol. 8 No. 1&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.viewtier.com/support/articles/continuous_integration_build_breakage_patterns.htmhttp:/www.cmcrossroads.com/article/53375%20"&gt;Avoiding Continuous Integration Build Breakage Patterns&lt;/a&gt;, by Slava Imeshev&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.dzone.com/blogs/mrjohnsmart/2008/03/03/continuous-integration-build-s%20"&gt;CI Strategies: stage your builds&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jira.codehaus.org/browse/DC-22%20"&gt;Staged Resilient Build Approach&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=30854%20"&gt;Unbreakable Builds&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-9189413594954640164?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/9189413594954640164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=9189413594954640164&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/9189413594954640164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/9189413594954640164'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/synchronous-and-staged-integration.html' title='Synchronous and Staged Integration'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-7321338663037267652</id><published>2009-05-17T11:51:00.007-05:00</published><updated>2009-06-04T02:43:00.916-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The Five Traits of Agile Projects</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I submit that any project which successfully executes their practices in accordance with Agile values and principles will exhibit the following key traits (Note the acronym formed):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;strong&gt;Adaptive&lt;/strong&gt; -- responsive to change (based on feedback and learning), rather than predictive plan-driven. Plans, designs, and processes are regularly tuned and adjusted to adapt to changing needs and requirements&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Goal/value-driven&lt;/strong&gt; -- scope and solutions/activities are focused on and constrained by value-demand, producing executable-results (working functionality) in order of highest business value&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Iterative &amp;amp; Incremental&lt;/strong&gt; -- short development cycles, frequent releases, regular feedback&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lean&lt;/strong&gt; -- simple design, streamlined processes, elimination of redundant information, and barely sufficient documentation and methodology&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Emergent results from Evolvable structures&lt;/strong&gt; -- successful results emerge over time, using  close collaboration to create "firm yet flexible" design structures that are relatively easy to dynamically change &amp;amp; evolve into what the final result needs to be. This pertains to structures of team/organizations as much as it does to architecture, processes, requirements and plans.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;No single one of these key traits is, by itself, unique to Agile, but I claim that all of them taken together form the differentiating characteristics of successful agile projects, teams and their environment. If they are visibly exhibiting these traits then the project and team are "agile."&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-7321338663037267652?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/7321338663037267652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=7321338663037267652&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7321338663037267652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7321338663037267652'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/five-traits-of-agile-projects.html' title='The Five Traits of Agile Projects'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2097663345679013843</id><published>2009-05-15T17:02:00.005-05:00</published><updated>2009-06-02T00:03:59.020-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Sensing and Sense-making in the Agility Cycle</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Part 1 of this series presented &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-1.html"&gt;the Business Agility Cycle&lt;/a&gt; and from that derived &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-2.html"&gt;the Software Agility Cycle&lt;/a&gt; in Part 2. Then part 3 elaborated upon the first step of that cycle, &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-3.html"&gt;sensing the need for change using feedback-loops&lt;/a&gt; at all levels of scale.&lt;br /&gt;&lt;br /&gt;In this installment (part 4) I intend to elaborate upon the second step of the software agility cycle: &lt;i&gt;See the Problem in the Context of the "Whole"&lt;/i&gt; ...&lt;br /&gt;&lt;br /&gt;Here the "whole" means both seeing and understanding the "big picture" and how any near-term/local changes we might make can impact or compromise the needs of everyone else in the value-chain. So how do we do this?&lt;br /&gt;&lt;br /&gt;The basic way is to take a &lt;a href="http://en.wikipedia.org/wiki/Systems_thinking"&gt;Systems Thinking&lt;/a&gt; approach within the (desired) context of a &lt;a href="http://en.wikipedia.org/wiki/Organizational_learning"&gt;Learning Organization&lt;/a&gt; (particularly double-loop learning). That's a lot of fancy jargon without some very specific advice. There are a half a gazillion different ways to do that (see &lt;a href="http://www.valuebasedmanagement.net/"&gt;ValueBasedManagement.net&lt;/a&gt; for a bunch of 'em), so let's get a bit more concrete about some of the specific methods or means of doing this ...&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://en.wikipedia.org/wiki/Lean_manufacturing"&gt;Lean&lt;/a&gt; terms, this would correspond to seeing the whole value-stream and optimizing the flow of operational value throughout the value-stream. Lean offers the technique of &lt;a href="http://en.wikipedia.org/wiki/Value_Stream_Mapping"&gt;Value-stream mapping&lt;/a&gt; to help us see the problem/opportunity in the strategic context of the business.&lt;br /&gt;&lt;br /&gt;From a &lt;a href="http://en.wikipedia.org/wiki/Theory_of_Constraints"&gt;Theory of Constraints&lt;/a&gt; (TOC) perspective, this would be akin to "the goal" of optimizing the throughput of value-delivery. TOC provides a whole host of &lt;a href="http://en.wikipedia.org/wiki/Thinking_Processes_%28Theory_of_Constraints%29"&gt;Thinking Processes&lt;/a&gt; for us to figure out what to change, what to change to, and how to cause the change.  The &lt;a href="http://www.goldratt.com/toctpwhitepaper.pdf"&gt;TOC Thinking processes&lt;/a&gt; are one specific set of tools for making strategic sense of the problem/opportunity with a focus on the end-goal.&lt;br /&gt;&lt;br /&gt;There is also something called the &lt;a href="http://en.wikipedia.org/wiki/Cynefin"&gt;Cynefin Framework&lt;/a&gt; (pronounced kun-ev’in) by Dave Snowden and his collaborators at IBM (see articles &amp;amp; resources at &lt;a href="http://www.cognitive-edge.com/"&gt;www.cognitive-edge.com&lt;/a&gt;). The Cynefin framework is a model used to describe problems, situations and systems. The model provides a taxonomy that guides what sort of explanations and/or solutions may apply. Basically you have to decide which of four categories your problem falls under: &lt;i&gt;Simple&lt;/i&gt;, &lt;i&gt;Complicated&lt;/i&gt;, &lt;i&gt;Complex &lt;/i&gt;or &lt;i&gt;Chaotic&lt;/i&gt;. There are pretty straightforward definitions for each of these in the framework so it's not too hard to take a stab at doing this. Then, each category has a recommended approach to use for strategizing:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Sense-Categorize-Respond&lt;/i&gt; to discover "best practice" (for Simple issues)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Sense-Analyze-Respond&lt;/i&gt; to discover "good practice" (for Complicated issues)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Probe-Sense-Respond&lt;/i&gt; to discover "emergent practice" (for Complex issues)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Act-Sense-Respond&lt;/i&gt; to discover "novel practice" (for Chaotic issues)&lt;/li&gt;&lt;/ul&gt;The above is oversimplifying a bit, so definitely visit the hyperlinks to find out more about this interesting framework.&lt;br /&gt;&lt;br /&gt;What are some of the more concrete ways agile methods use to "keep their eyes on the prize" in terms of focusing on strategic value to the business and seieng the whole problem (so as not to "suboptimize")?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Using an onsite-customer (or customer-proxy) to maintain focus on business goals/priorities and always have the team working on the most highly valued features in the current iteration.&lt;/li&gt;&lt;li&gt;Applying the &lt;a href="http://www.codinghorror.com/blog/archives/000705.html"&gt;LRM principle&lt;/a&gt; or the &lt;a href="http://c2.com/cgi/wiki?YouArentGonnaNeedIt"&gt;YAGNI philosophy&lt;/a&gt; when tempted to anticipate a feature or add additional flexibility/capability to a design.&lt;/li&gt;&lt;li&gt;Applying the &lt;a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;DRY principle&lt;/a&gt; and/or refactoring to make designs be simple and sufficient&lt;/li&gt;&lt;li&gt;Using &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;TDD&lt;/a&gt; to specify a requirement as a test, and then writing just enough code to pass the test (and using &lt;a href="http://testobsessed.com/wordpress/wp-content/uploads/2008/12/atddexample.pdf"&gt;Acceptance TDD&lt;/a&gt; at the story/feature-level)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Having the "navigator" in a pairing session focus the "driver" on strategic goals.&lt;/li&gt;&lt;/ul&gt;Some of these are more fine-grained than others, but they are valid examples of the approach used when responding to a problem/opportunity sensed by one of our &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-3.html"&gt;feedback-loops&lt;/a&gt;. Agile methods use a validation-driven approach where, for a given activity, we have a definition of "DONE" that we can systematically verify through either automation or rapid stakeholder communication, and keep using that "DONE" criteria as the "carrot" to keep us aligned with our strategic goals, even at the tactical level.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2097663345679013843?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2097663345679013843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2097663345679013843&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2097663345679013843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2097663345679013843'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/sensing-and-sense-making-in-agility.html' title='Sensing and Sense-making in the Agility Cycle'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-3732454008002851030</id><published>2009-05-13T23:51:00.004-05:00</published><updated>2009-06-01T22:59:21.516-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>BOOK: Agile Testing</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I reviewed &lt;a style="font-weight: bold;" href="http://www.informit.com/store/product.aspx?isbn=0321534468"&gt;Agile Testing: A Practical Guide for Testers and Agile Teams&lt;/a&gt; for the May 2009 issue of &lt;a href="http://www.agilejournal.com/"&gt;The Agile Journal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: verdana; color: rgb(0, 0, 102);"&gt;The book is exactly what its title says, and should quickly become “the bible” for all would-be agile testers.&lt;em&gt; Right from the start&lt;/em&gt; it is obvious that this book is not about theory, but is borne from profoundly deep insight and broad experience on real world projects. It doesn’t just cover testing types and techniques, or values and principles, but also real world challenges from organizational culture to team logistics; and from technological and geographical constraints to tooling, environments, and communication/collaboration.&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;If your organization has dedicated testers and test-teams and wants (or needs) to learn how to work effectively on agile projects, or even just in an agile fashion, I currently cannot envision a better or more practical “HowTo” guide then Lisa Crispin’s and Janet Gregory’s &lt;strong style=""&gt;&lt;a href="http://www.informit.com/store/product.aspx?isbn=0321534468"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Agile Testing: A Practical Guide for Testers and Agile Teams&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;. I expect it to appear at the top of any mandatory reading list about learning and setting-up a discipline of agile testing. &lt;/blockquote&gt;&lt;br /&gt;You can &lt;a href="http://www.agilejournal.com/articles/17-articles/1633-featured-book-agile-testing-a-practical-guide-for-testers-and-agile-teams"&gt;read the full review here&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3732454008002851030?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3732454008002851030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3732454008002851030&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3732454008002851030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3732454008002851030'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/book-agile-testing.html' title='BOOK: Agile Testing'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-9124203792086875367</id><published>2009-05-09T23:17:00.001-05:00</published><updated>2009-05-25T11:48:57.978-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CM'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOKS: The CMDB Imperative and the Data Access Handbook</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I recently received the following books:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/CMDB-Imperative-Realize-Dream-Nightmares/dp/0137008376"&gt;&lt;b&gt;The CMDB Imperative: How to Realize the Dream and Avoid the Nightmares&lt;/b&gt;&lt;/a&gt;, by Glenn O'Donnel and Carlos Casanova; Prentice Hall PTR; March 2009&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Data-Access-Handbook-Application-Performance/dp/0137143931"&gt;&lt;b&gt;The Data Access Handbook: Achieving Optimal Database Application Performance and Scalability&lt;/b&gt;&lt;/a&gt;, by John Goodson and Robert A. Steward; Prentice Hall PTR; March2009&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;The CMDB Imperative&lt;/b&gt; has online excerpts and "extras" available from &lt;a href="http://www.informit.com/store/product.aspx?isbn=0137008376"&gt;its InformIT.com homepage&lt;/a&gt;. It also has its own website at &lt;a href="http://www.cmdbimperative.com/"&gt;cmdbimperative.com&lt;/a&gt; where you can find additional resources, previews and excerpts, and a &lt;a href="http://blog.cmdbimperative.com/"&gt;cmdbimperative blog&lt;/a&gt;. The "blurb" for the book is:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(0, 0, 102);"&gt;&lt;i&gt;Implement Configuration Management Databases that Deliver Rapid ROI and Sustained Business Value&lt;/i&gt;. Implementing an enterprise-wide Configuration Management Database (CMDB) is one of the most influential actions an IT organization can take to improve service delivery and bridge the gap between technology and the business. With a well-designed CMDB in place, companies are better positioned to manage and optimize IT infrastructure, applications, and services; automate more IT management tasks; and restrain burgeoning costs. Now, there’s an objective, vendor-independent guide to making a CMDB work in your organization. The CMDB Imperative presents a start-to-finish implementation methodology that works and describes how the CMDB is shifting to the superior Configuration Management System (CMS).&lt;br /&gt;&lt;br /&gt;Expert CMDB industry analyst Glenn O’Donnell and leading-edge architect and practitioner Carlos Casanova first review the drivers behind a CMDB and the technical, economic, cultural, and political obstacles to success. Drawing on the experiences of hundreds of organizations, they present indispensable guidance on architecting and customizing CMDB solutions to your specific environment. They’ll guide you through planning, implementation, transitioning into production, day-to-day operation and maintenance, and much more. Coverage includes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Defining the tasks and activities associated with configuration management&lt;/li&gt;&lt;li&gt;Understanding the CMDB’s role in ITIL and the relationship between CMDBs and ITIL v3’s CMS&lt;/li&gt;&lt;li&gt;Building software models that accurately represent each entity in your IT environment&lt;/li&gt;&lt;li&gt;Ensuring information accuracy via change management and automated discovery&lt;/li&gt;&lt;li&gt;Understanding the state of the CMDB market and selling the CMDB within your organization&lt;/li&gt;&lt;li&gt;Creating federated CMDB architectures that successfully balance autonomy with centralized control&lt;/li&gt;&lt;li&gt;Planning a deployment strategy that sets appropriate priorities and reflects a realistic view of your organization’s maturity&lt;/li&gt;&lt;li&gt;Integrating systems and leveraging established and emerging standards&lt;/li&gt;&lt;li&gt;Previewing the future of the CMDB/CMS and how it will be impacted by key trends such as virtualization, SOA, mobility, convergence, and “flexi-sourcing”&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;The Data Access Handbook&lt;/b&gt; also has online excerpts and "extras" available from &lt;a href="http://www.informit.com/store/product.aspx?isbn=0137143931"&gt;its InformIT.com homepage&lt;/a&gt; as well as its own website at &lt;a href="http://dataaccesshandbook.com/"&gt;dataaccesshandbook.com&lt;/a&gt; where you can find additional resources, excerpts and code-samples and its own &lt;a href="http://dataaccesshandbook.com/community/"&gt;communiuty-site&lt;/a&gt;. The "blurb" for &lt;b&gt;The Data Access Handbook&lt;/b&gt; is:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; color: rgb(102, 51, 0);"&gt;&lt;i&gt;Drive breakthrough database application performance by optimizing middleware and connectivity&lt;/i&gt;. Performance and scalability are more critical than ever in today’s enterprise database applications, and traditional database tuning isn’t nearly enough to solve the performance problems you are likely to see in those applications. Nowadays, 75-95% of the time it takes to process a data request is typically spent in the database middleware. Today’s worst performance and scalability problems are generally caused by issues with networking, database drivers, the broader software/hardware environment, and inefficient coding of data requests. In The Data Access Handbook, two of the world’s leading experts on database access systematically address these issues, showing how to achieve remarkable improvements in performance of real-world database applications.&lt;br /&gt;&lt;br /&gt;Drawing on their unsurpassed experience with every leading database system and database connectivity API, John Goodson and Rob Steward reveal the powerful ways middleware affects application performance and guide developers with designing and writing API code that will deliver superior performance in each leading environment. In addition to covering essential concepts and techniques that apply across database systems and APIs, they present many API examples for ODBC, JDBC, and ADO.NET as well as database system examples for DB2, Microsoft SQL Server, MySQL, Oracle, and Sybase. Coverage includes:&lt;ul&gt;&lt;li&gt;Clearly understanding how each component of database middleware can impact performance and scalability&lt;/li&gt;&lt;li&gt;Writing database applications to reduce network traffic, limit disk I/O, optimize application-to-driver interaction, and simplify queries—including examples for ODBC, JDBC, and ADO.NET&lt;/li&gt;&lt;li&gt;Managing connections, transactions, and SQL statement execution more efficiently&lt;/li&gt;&lt;li&gt;Making the most of connection and statement pooling&lt;/li&gt;&lt;li&gt;Writing good benchmarks to predict your application’s performance&lt;/li&gt;&lt;li&gt;Systematically resolving performance problems—including eight start-to-finish case-study examples&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-9124203792086875367?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/9124203792086875367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=9124203792086875367&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/9124203792086875367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/9124203792086875367'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/cmdb-imperative-and-data-access.html' title='BOOKS: The CMDB Imperative and the Data Access Handbook'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-3528828479053857345</id><published>2009-05-07T00:02:00.002-05:00</published><updated>2009-05-20T17:39:16.756-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CM'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>An Agile CM Manifesto: Lame Oxymoron or Long Overdue?</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I submitted &lt;a href="http://agile2009.org/node/2806"&gt;a proposal on this topic&lt;/a&gt; to the &lt;a href="http://www.agile2009.org/"&gt;Agile2009 conference&lt;/a&gt;. The idea was to garner feedback as to whether or not there is a perceived need for Lean/Agile CM Manifesto (or "Declaration" of some sorts), which sort of presumes there is a legitimate place for something called Agile CM (or Lean CM).&lt;br /&gt;&lt;br /&gt;The proposal was well received by its reviewers, but alas the sheer number of submissions versus number of available slots meant that even a lot of well-received submissions (including mine) didn't make the final cut.&lt;br /&gt;&lt;br /&gt;Here is the proposal (below)! What do you think about the basic question it would ask of its audience? Is there a legitimate need for a Lean/Agile CM Manifesto? If so, what do you think it should say?&lt;/span&gt;&lt;hr /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summary Description&lt;/b&gt;&lt;br /&gt;&lt;p&gt;Agile development, agile project management, agile management, agile testing, all thus far have grown sizeable communities founded by many respected experts in their field. Why is this not yet the case for agile configuration management? Is there simply no need? Is lean/agile CM an oxymoron? Or is it an idea whose time has come and is long overdue? This talk will explore common complaints and misunderstandings between agilists/developers and CM, define what lean/agile CM really means, and whether or not a corresponding “manifesto” for CM is warranted (and if so, what must it include).&lt;/p&gt;&lt;br /&gt;&lt;b&gt;Presentation Outline&lt;/b&gt;&lt;br /&gt;&lt;p&gt;Approx ~30min of presentation followed by discussion/dialogue with the audience on whether or not the world needs a Lean/Agile CM manifesto, and what it should say. The Outline follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;What is CM? (its more than just integration/build and version-control)&lt;/li&gt;&lt;li&gt;Traditional CM definition and Lean/Agile perspectives on CM&lt;/li&gt;&lt;li&gt;What is “Agile CM”? (CM for Agile projects? Agility for CM? or both?)&lt;/li&gt;&lt;li&gt;Lean/Agile CM Planning?&lt;/li&gt;&lt;li&gt;Lean/Agile Change Control/Tracking?&lt;/li&gt;&lt;li&gt;Lean Configuration audits/reviews, and status accounting?&lt;/li&gt;&lt;li&gt;Lean Traceability? (everyone’s favorite)&lt;/li&gt;&lt;li&gt;Agile Version control and Lean branching&lt;/li&gt;&lt;li&gt;Agile integration &amp;amp; build (nested synchronization &amp;amp; harmonic cadences)&lt;/li&gt;&lt;li&gt;“Emergent CM Architecture” from “refactoring” to SCM patterns&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Discussion Points:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Common agilist/developer complaints &amp;amp; misunderstanding about CM &lt;i&gt;[interspersed with the presentation]&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Common CM complaints about (agile) development &lt;i&gt;[interspersed with the presentation]&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Do we need a Lean/Agile CM manifesto? Why or why not? &lt;i&gt;[at the end of  the presentation]&lt;/i&gt;&lt;/li&gt;&lt;li&gt;What must this manifesto include? from whom? &lt;i&gt;[at the end of  the presentation]&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Background/Materials:&lt;/b&gt;&lt;br /&gt;&lt;p&gt;Materials for the presentation will be distilled from the following sources where many of the points above have been presented or discussed in more detail. Each of the below will be distilled into no more than a single slide (with few exceptions):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2007/05/defining-agile-scm.html"&gt;Defining Agile SCM&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2008/06/four-rules-for-simple-codeline.html"&gt;Four Rules for Simple Codelines&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2007/05/five-rs-of-agile-scm-baselines.html"&gt;5 R’s of Agile SCM Baselines&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2007/05/software-cm-is-not-process.html"&gt;Software CM is NOT a Process&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2007/05/lean-cm.html"&gt;Lean CM&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2006/08/scm-patterns-for-agile-architectures.html"&gt;SCM Patterns for Agile Architectures&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2006/07/codeline-flow-availability-and.html"&gt;Codeline Flow, Availability and Throughput&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2006/07/5cs-of-agile-scm.html"&gt;5 C’s of Agile SCM&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2006/07/trustworthy-transparency-over-tiresome.html"&gt;Trustworthy Transparency over Tiresome Traceability&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2006/06/nested-synchronization-and-harmonic.html"&gt;Nested Synchronization and Harmonic Cadences&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2006/05/pragmatic-multi-variant-management.html"&gt;Pragmatic Multi-variant Management&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2006/01/lean-principles-for-branching.html"&gt;Lean Principles for Branching&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2005/08/scm-design-smells.html"&gt;SCM Design Smells&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2005/07/cm-to-interface-not-to-implementation.html"&gt;CM to an Interface, NOT an Implementation&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://blog.bradapp.net/2005/08/customer-inversion-principle-of.html"&gt;Customer-inversion Principle of Process Design&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For additional background, links to a veritable cornucopia of related articles may be found on the &lt;a href="http://cmwiki.com/"&gt;CMWiki-web&lt;/a&gt; at &lt;a href="http://cmwiki.com/AgileSCMArticles" title="http://cmwiki.com/AgileSCMArticles"&gt;http://cmwiki.com/AgileSCMArticles&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Learning Outcomes:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Learn what Lean/Agile CM really means &amp;amp; implies&lt;/li&gt;&lt;li&gt;Common misunderstandings of agilists and developers about CM, and vice-versa&lt;/li&gt;&lt;li&gt;How to apply Lean thinking and Agile principles to more than just CI (CM planning, change-tracking, version-control, etc.)&lt;/li&gt;&lt;li&gt;Discover why there is (or is not) a need for a Lean/Agile CM “manifesto” or “declaration of interdependence”&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3528828479053857345?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3528828479053857345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3528828479053857345&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3528828479053857345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3528828479053857345'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/agile-cm-manifesto-lame-oxymoron-or.html' title='An Agile CM Manifesto: Lame Oxymoron or Long Overdue?'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-6029543353042331657</id><published>2009-05-04T23:53:00.002-05:00</published><updated>2009-06-17T09:31:53.949-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><title type='text'>Dee Hock on Hiring &amp; Leadership</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I came across a great quote from Dee Hock in an &lt;a href="http://www.good2work.com/article/90"&gt;article at Good2work.com&lt;/a&gt;:&lt;br /&gt;&lt;blockquote style="font-family: verdana; color: rgb(0, 0, 102);"&gt;&lt;i&gt;“Hire and promote first on the basis of integrity; second, motivation; third, capacity; fourth, understanding; fifth, knowledge; and last and least, experience. Without integrity, motivation is dangerous; without motivation, capacity is impotent; without capacity, understanding is limited; without understanding, knowledge is meaningless; without knowledge, experience is blind. Experience is easy to provide and quickly put to good use by people with all the other qualities.”&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;A few other good quotes from Dee Hock ...&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 0); font-family: verdana;font-family:verdana;" &gt;“If you don't understand that you work for your mislabeled 'subordinates,' then you know nothing of leadership. You know only tyranny.”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;“If you look to lead, invest at least 40% of your time managing yourself - your ethics, character, principles, purpose, motivation, and conduct. Invest at least 30% managing those with authority over you, and 15% managing your peers.”&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;“If you're in such a position of power and your ego is such that this is not possible, then its essential to have a small cadre of very bright, committed people who are questioning, exploring and understanding these emerging concepts.”&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;“It is essential to employ, trust, and reward those whose perspective, ability, and judgment are radically different from yours. It is also rare, for it requires uncommon humility, tolerance, and wisdom.”&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(0, 51, 0);"&gt;“Lead yourself, lead your superiors, lead your peers, and free your people to do the same. All else is trivia.”&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-style: italic; font-family: verdana;font-family:verdana;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;“Make a careful list of all things done to you that you abhorred. Don't do them to others, ever. Make another list of things done for you that you loved. Do them for others, always.”&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 51);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 51); font-family: verdana;font-family:verdana;" &gt;“Money motivates neither the best people, nor the best in people. It can move the body and influence the mind, but it cannot touch the heart or move the spirit; that is reserved for belief, principle, and morality.”&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-6029543353042331657?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/6029543353042331657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=6029543353042331657&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6029543353042331657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6029543353042331657'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/dee-hock-on-hiring-leadership.html' title='Dee Hock on Hiring &amp; Leadership'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1834378778176195442</id><published>2009-05-02T01:11:00.003-05:00</published><updated>2009-05-11T01:45:28.600-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: Pragmatic Thinking and Learning</title><content type='html'>&lt;span style="font-family:georgia;"&gt;The &lt;a href="http://www.pragprog.com/titles"&gt;Pragmatic Bookshelf&lt;/a&gt; totally rocks!!! I received my 3rd edition of the pickaxe book: &lt;a href="http://pragprog.com/titles/ruby3/programming-ruby-1-9"&gt;&lt;b&gt;Programming Ruby 1.9&lt;/b&gt;&lt;/a&gt;, which reminds me that I'm anxiously awaiting the arrival of  &lt;a href="http://www.pragprog.com/titles/vsscala/programming-scala"&gt;&lt;b&gt;Programming Scala&lt;/b&gt;&lt;/a&gt; (some excerpts are available now).&lt;br /&gt;&lt;br /&gt;The "Pragmatic" book I most recently finished is &lt;a href="http://pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt;&lt;b&gt;Pragmatic Thinking &amp;amp; Learning: Refactor Your Wetware&lt;/b&gt;&lt;/a&gt;, by Andy Hunt. Not quite two years ago, I tackled two similar books: &lt;a href="http://www.oreilly.com/catalog/mindhks/"&gt;&lt;b&gt;Mind Hacks&lt;/b&gt;&lt;/a&gt; and &lt;a href="http://www.oreilly.com/catalog/mindperfhks/"&gt;&lt;b&gt;Mind Performance Hacks&lt;/b&gt;&lt;/a&gt;. Both of those books cover a bit more material than PT&amp;amp;L does, but I found &lt;a href="http://pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt;&lt;b&gt;Pragmatic Thinking &amp;amp; Learning&lt;/b&gt;&lt;/a&gt; to be a bit more readable. It was also a good companion to the other two since I'd already gone through them once before. The coverage of R-mode versus L-mode reminded a bit of Dan Pink's &lt;a href="http://blog.bradapp.net/2006/03/whole-new-mind-from-information-age-to.html"&gt;&lt;b&gt;A Whole New Mind: Why Right Brainers will Rule the Future&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So I'd have to say I definitely would recommend &lt;a href="http://pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt;&lt;b&gt;Pragmatic Thinking &amp;amp; Learning: Refactor Your Wetware&lt;/b&gt;&lt;/a&gt;, by Andy Hunt from the &lt;a href="http://www.pragprog.com/titles"&gt;Pragmatic Programmer's bookshelf&lt;/a&gt;. Oh yeah! When I finished reading through the book, the 2nd-to-last page was a handy, dandy &amp;amp; concise summary of all the tips in the book. NICE!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1834378778176195442?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1834378778176195442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1834378778176195442&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1834378778176195442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1834378778176195442'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/05/book-pragmatic-thinking-and-learning.html' title='BOOK: Pragmatic Thinking and Learning'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-7540228681981628883</id><published>2009-04-30T23:53:00.005-05:00</published><updated>2009-05-15T17:01:39.957-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The Agility Cycle - Part 3</title><content type='html'>&lt;span style="font-family:georgia;"&gt;In Part 1 of this series we discussed &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-1.html"&gt;the Business Agility Cycle&lt;/a&gt; and then in Part 2 we derived &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-2.html"&gt;the Software Agility Cycle&lt;/a&gt; from that by applying "the people factor" of Agile development to the business-agility cycle.&lt;br /&gt;&lt;br /&gt;That "people factor" of Agile development essentially boils down to the notion of &lt;i&gt;emergent behavior/structure through self-organization&lt;/i&gt; of collaborative "agents." The resulting discussion used of lot of jargon from complexity science and wasn't particularly easy to follow. Feedback from &lt;a href="http://blog.accurev.com/2009/04/23/agile-software-development-for-no-apparent-reason/"&gt;one reader&lt;/a&gt; even suggested the resulting "steps" in the agility-cycle came across as so much Zen/Yoga mumbo-jumbo.&lt;br /&gt;&lt;br /&gt;To make matters worse, I wasn't exactly ultra-consistent in how I characterized the cycle:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;one description had six steps (&lt;i&gt;sense, see, socialize, swarm, show, share&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;another "condensed" the most closely-related steps together (&lt;i&gt;sense + see, socialize + swarm, show + share&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;then the summary appeared to have four steps (&lt;i&gt;evaluate, collaborate, validate, learn&lt;/i&gt;), which looks suspiciously similar to the &lt;a href="http://en.wikipedia.org/wiki/PDCA"&gt;Shewhart cycle&lt;/a&gt; of Plan-Do-Check-Act (though to be fair the differences between the two are important in meaning despite being only slight in appearance)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So perhaps the "jury" is still out on authoritatively characterizing those steps in the software agility cycle. Perhaps "strategize" is still better than "see from the perspective of the whole", even though doing the latter is really a prerequisite for being able to do the former correctly. And perhaps "swarming" and "socializing" are too readily misunderstood by those who don't already "grok" the whole notion of "emergence through self-organization" (and maybe don't really care to either).&lt;br /&gt;&lt;br /&gt;The basic idea remains the same though: being "agile" means minimizing the response-time to some event or "stimulus" while maximizing the overall value of that response (and hence the efficiency and effectiveness of our behavior). This implies two basic things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;We must have some regular means of becoming aware of the "significant" events in the first place, or else the "cycle" never even starts-up in the first place.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There are multiple such "cycles" going on, each of which forms a feedback-loop at its own level of "scale."&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;So how do we "sense and make sense of" these events that indicate the presence of a need/opportunity for change? The answer is &lt;i&gt;feedback loops&lt;/i&gt;! We have to mindfully and intentionally set them up ourselves and make sure they happen regularly, and at the right frequency and level of scale.&lt;br /&gt;&lt;br /&gt;This is in fact how the software-agility cycle fits into the larger business-agility cycle. If we think of the business-agility cycle(s) as something that takes place at the level of entire portfolios, product-lines, markets, programs and their governance, then ultimately:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The very software project/product we're trying to be "agile" for came about in response to some higher-level business-need.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And putting an "agile" project+team in place was really the "act" step of the business-agility cycle.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The act of putting that agile project into motion is what prompted us to set-up the feedback-loops for software agility for that product or service.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;What then do these feedback-loops look like and how do we put them into place? Well, they typically need to validate our knowledge and understanding of a need/opportunity against that of the user or consumer in some systematic fashion. For software agility, these feedback-loops are manifested by some of the agile software development practices we have become quite familiar with:&lt;br /&gt;&lt;ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Iterations:&lt;/span&gt; An iteration is one feedback cycle we use, and one of the larger-grained ones. At the end of the iteration, we demonstrate the results to the customer and get feedback about what we did right/wrong and what to focus on next. We also have &lt;b&gt;Retrospectives &lt;/b&gt;to get feedback about our process so we can learn to improve it by inspecting &amp;amp; adapting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Stand-up Meetings:&lt;/span&gt; This is another feedback cycle to hear from the workers in the trenches what problems and impediments there are. This typically is setup to happen daily.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Continuous Integration:&lt;/span&gt; This is a feedback cycle that gives developers feedback on not just whether or not what they just coded works, but how well it does/doesn’t fit with what everyone else just implemented. It happens at least a couple times per day per developer (if they are practicing CI properly, and not just doing daily/nightly builds)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Test-Driven Development:&lt;/span&gt; This feedback cycle forces one to first validate their thinking about the test (even watching it fail first) before trying to write the code that passes it. As far as knowing what you’re supposed to be trying to do, this forces that to happen at the front of the programming task, in terms of understanding the requirements very precisely, and designing for testability:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When done by the programmer at the unit-level, TDD forces the granularity of this feedback cycle to be pretty darn small (often just hours, or less).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;At a higher-level of granularity is &lt;a href="http://www.slideshare.net/nashjain/acceptance-test-driven-development-350264"&gt;&lt;b&gt;Acceptance Test Driven Development&lt;/b&gt;&lt;/a&gt; (ATDD) where customer-acceptance criteria are represented as readable yet "executable requirements" in the form of automated tests. (These, in turn, drive the TDD cycle at the unit-level.)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Pair Programming:&lt;/span&gt; This is the most fine-grained of all the feedback loops mentioned above. It gives that second pair of eyes whose purpose is not to try and co-design the code so much as to ask questions about the clarity, correctness, and necessity of what the programmer is writing, and maintain the strategic direction of that effort.&lt;/ul&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;One picture that is particularly good at depicting several of these feedback-loops all working together is the &lt;a href="http://pm.versionone.com/AgilePoster.html"&gt;agile development poster&lt;/a&gt; from &lt;a href="http://www.versionone.com/"&gt;VersionOne:&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;img src="http://pm.versionone.com/rs/versionone/images/AgilePoster.jpg" /&gt;&lt;/ul&gt;Unfortunately, in order to see the picture at larger-size, you'll need to &lt;a href="http://pm.versionone.com/AgilePoster.html"&gt;request it from VersionOne&lt;/a&gt; (It is free, but you have to fill-in a web-form to obtain it.)&lt;br /&gt;&lt;br /&gt;Every single one of the above practices establishes a systematic feedback-loop whose purpose to “sense” some form of problem/opportunity by comparing our current understanding of something and validating against that of the consumer.&lt;ul&gt;&lt;li&gt;Each loop progresses through the software-agility cycle at its own level-of-scale.&lt;/li&gt;&lt;li&gt;And each one of them requires being able to “make sense” of the problem/opportunity after you’ve sensed it, by “seeing the problem in the context of the whole”&lt;/li&gt;&lt;li&gt;This requires us to think strategically about the end-goal before adding that unneeded abstraction or anticipating that not yet high-priority requirement, or fixing that urgent build-breakage with a band-aid that actually makes things harder for the next “consumer” downstream in the process).&lt;/li&gt;&lt;/ul&gt;So if the "secret sauce" of software agility comes from the "people factor" to create emergent results from close collaboration, then the "secret recipe" for applying that sauce is the "nested feedback-loops" that integrate the collaboration and resulting "emergent behavior" into adaptive cycles of activity that let us incrementally learn and evolve our understanding by iterating through each of those cycles at each level of scale.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-7540228681981628883?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/7540228681981628883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=7540228681981628883&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7540228681981628883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7540228681981628883'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/agility-cycle-part-3.html' title='The Agility Cycle - Part 3'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2609405591618594477</id><published>2009-04-29T23:41:00.009-05:00</published><updated>2009-05-04T13:40:17.253-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trust'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: Trust - The social virtues and the creation of prosperity</title><content type='html'>&lt;span style="color: rgb(102, 51, 51);font-family:georgia;" &gt;A couple of &lt;a href="http://blog.bradapp.net/2009/04/book-building-trust.html"&gt;posts&lt;/a&gt; ago I mentioned the book &lt;a href="http://www.amazon.com/Trust-Social-Virtues-Creation-Prosperity/dp/0684825252"&gt;Trust: The social virtues and the creation of prosperity&lt;/a&gt; by Francis Fukuyama. I hadn't read the book yet, but &lt;a href="http://www.longacre-scm.com/blog/"&gt;Austin Hastings&lt;/a&gt;, an esteemed SCM colleague, has and I promised that if he was willing to post his summary and notes on the book that I would publish them on my blog here (and not just as a comment). I also recommend reading one of Austin's recent blog-entries entitled "&lt;a href="http://www.longacre-scm.com/blog/index.php/2009/04/being-a-trust-specialist"&gt;&lt;i&gt;Being a trust specialist&lt;/i&gt;&lt;/a&gt;", which reinforces why, even for CM professionals, it is often all too true that "&lt;a href="http://blog.bradapp.net/2005/02/first-thing-to-build-is-trust.html"&gt;The first thing to 'build' is TRUST.&lt;/a&gt;" The rest of this blog-entry is Austin's writing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-family:verdana;"&gt;&lt;p&gt;Francis Fukuyama is noted for writing "&lt;a style="font-weight: bold;" href="http://www.amazon.com/End-History-Last-Man/dp/0743284550"&gt;The End of History&lt;/a&gt;" and "&lt;a href="http://www.amazon.com/Great-Disruption-Nature-Reconstitution-Social/dp/0684865777"&gt;&lt;span style="font-weight: bold;"&gt;The Great Disruption&lt;/span&gt;&lt;/a&gt;" as well as for "&lt;a style="font-weight: bold;" href="http://www.amazon.com/Trust-Social-Virtues-Creation-Prosperity/dp/0684825252"&gt;Trust: The Social Virtues and The Creation of Prosperity&lt;/a&gt;." As such, it is pretty easy to draw inferences about his political viewpoint(s). Many reviewers have made the assertion that his books are a product of his politics. I (personally) don't know enough to comment.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;That exact argument -- questionable causality -- is one they make against some of the correlations that Fukuyama cites in Trust, but they seem to miss it when it applies to their own positions. So beware: the book may be written in deliberate support of his politics, or his politics may have evolved from the studies he has done. It's your call.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Fukuyama claims that trust is a form of "Social Capital." That is, trust is something that you can invest in, something that you can create or obtain more of, something that you can use to achieve an economic end, and something that has value.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;He further claims that the presence or absence of trust in a society has a significant, measurable impact on the economic indicators for that society, and that it probably has other, less clear effects as well. All of this is generally in agreement with other writings on trust that &lt;a href="http://blog.bradapp.net/"&gt;Brad&lt;/a&gt; has cited &lt;a href="http://blog.bradapp.net/2009/04/book-building-trust.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;His argument, then, is that there should be a way to objectively test for the amount of trust in a society. His test criterion is the number of employees that work for medium-sized businesses, where business size is a function of the number of employees. (That sounds circular, but it isn't.)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For example, my neighborhood pizza shop is run by George, his wife Rosanne, and their son Steve. There are two other cooks, and two delivery drivers. So the business has 7 employees, which makes it a small business.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;By contrast, GM just announced that they intend to close down the Pontiac car brand, and lay off 21,000 workers. Having 21,000 workers to lay off makes GM a really, really HUGE business.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Somewhere between the two extremes lies a medium sized business. I don't recall exactly what numbers Fukuyama used, but let's say it's 100 &lt;= n &lt;= 1000. So we have small is less than 100 employees, medium is up to 1000, and large is anything over that.  &lt;/p&gt;&lt;p&gt;With those boundaries in mind, the question is simply how many employees in a particular country work for a business that can be classified as "small," or "medium," or "large." Well, if there are 200 small businesses, and their average size is 30 employees, then 6,000 employees work for small businesses. (That's how we figured the average size, I guess.) &lt;/p&gt;&lt;p&gt;What Fukuyama found was that some regions or countries exhibited a noticeable "saddle shape" in their graph of business size versus number of employees. There were lots of people working for small businesses, and there were lots of people working for large businesses, but few people working for medium sized businesses.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;He argues that large businesses are a distraction, because governments can create large businesses by fiat. France, Mexico, and most of the OPEC countries have huge businesses that were created by the government (as opposed to being grown up from small businesses).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Small businesses, naturally, are the starting point for almost everything. Somebody has an idea, they start a business with their close friend from college or their brother or parents, and if they make money they start hiring.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The problem comes when all the family members are hired. If the entire family is hired -- all the brothers, uncles, cousins, etc. -- and they're all doing some kind of management thing, with "outsiders" brought in to do the simple labor, the business has reached a critical point.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;At this point, the business may or may not be *capable* of bringing in a qualified stranger, and handing that stranger an appropriate amount of power.  That transition, from family shop to "real company," is the dividing line that Fukuyama is really looking for with his arbitrary criterion of 100 employees.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;And he argues that if you see a disproportionately low number of workers that have jobs at medium-sized companies, it's because there are a low number of medium-sized companies. And *that* is because there is not enough social trust. When grandpa and dad and uncle Cletus can't let go of the reins, the company can't get any bigger. And in fact, the company will likely fail shortly thereafter, resulting in a much smaller business after the smoke clears.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Using his metric, there are some genuine surprises. Germany is a high-trust country, but France is low-trust. Southern Italy is virtually a no-trust area. Japan and Korea appear low-trust, until you refactor your statistics to deal with the Zaibatsu. China and most of the Asian mainland are low-trust.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This is interesting, but not necessarily controversial.  What *is* controversial is the correlation with "The Protestant Ethic and the Spirit of Capitalism" (Max Weber, 1905 !!). That offends a lot of people, for a lot of reasons. Weber's point, made back when people were giving serious credence to "racial studies" and other stuff, was that Protestant countries did better economically than Catholic ones.  Fukuyama makes a similar point, but claims that the effect is corollary, not causal.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Fukuyama's point is that there are a lot of flavors of protestantism, and countries that are majority protestant don't always have social mechanisms for creating and maintaining trust networks. If you can't generate trust, it doesn't matter how Protestant you are.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Things like the Rotary Club, and the Moose Lodge, and the Veterans of Foreign Wars in the United States do that job for us. These little mini-networks enable people of similar creed to reach each other, so that there are many networks of high trust -- "I trust him because we go to the same meetings" -- working parallel to each other. This enables Catholics to network with Catholics, Baptists with Baptists, Scrum fans with other Scrum fans, etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The rest of the "trust equation" is pretty straightforward. Nearly all of the trust literature agrees on these things: high trust leads to efficiency. Fukuyama's point is illustrated in any American business transaction. If you make noises of intent to engage in such a transaction, the expectation is that both sides intend to do so fairly.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;That simple fact -- that you can go into a sandwich shop, for example, and place an order, and they will start making your order before you pay for it -- is one that is hard to see if you aren't looking for it.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The reverse situation pertains low trust areas. If you try to do business in these places, nothing is done until the cash changes hands, or at least until it is displayed for all to see.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A similar thing occurs in my own line of work, where implementing change tracking lifecycles is surrounded by requests to create explicit status codes for each possible situation. ("You should have a 'completed by development, but QA will not start testing due to other commitments' status code!")&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It's important to keep in mind that the business-size metric is an indicator, nothing more. And that Fukuyama uses that metric as a way to set expectations for research, not as a causative for other social ills. A small number of medium-sized businesses doesn't cause poor social trust. It is an indicator that social trust is likely poor. (Or, as in the cases of Japan and Korea, that the metrics need to be refined.)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;One of the reasons for many of the negative reviews is Fukuyama's assertion that trust is not correlated with equality, or fairness.  American society has historically been more unfair and inequal than otherwise. Every single minority has been discriminated against at some point, which has led most of them to creating their own separate "civil associations" -- networks of trust.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The obvious inference is that eroding the separate networks of trust will result in an overall low-trust society. This isn't particularly politically correct, and so you can probably imagine how it was received in academic and/or liberal circles&lt;br /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:georgia;" &gt;Thanks again to &lt;a href="http://www.longacre-scm.com/blog/"&gt;Austin Hastings&lt;/a&gt; for taking the time to comment so comprehensively on this important work. And don't forget to read his recent blog-entry "&lt;a href="http://www.longacre-scm.com/blog/index.php/2009/04/being-a-trust-specialist"&gt;&lt;i&gt;Being a trust specialist&lt;/i&gt;&lt;/a&gt;." &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2609405591618594477?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2609405591618594477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2609405591618594477&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2609405591618594477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2609405591618594477'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/book-trust-social-virtues-and-creation.html' title='BOOK: Trust - The social virtues and the creation of prosperity'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-3692245194916337339</id><published>2009-04-26T00:48:00.003-05:00</published><updated>2009-06-17T09:31:53.949-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Trust'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>More Articles on Trust</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Since I blogged about a couple books on this subject I wanted to give a few other resources as well. First off, the reason I came across these resources is because back in January I participated in a discussion with &lt;a href="http://www.gertrudandcope.com-a.googlepages.com/jimcoplien"&gt;Jim Coplien&lt;/a&gt;, &lt;a href="http://www.futureworksconsulting.com/blog/"&gt;Diana Larsen&lt;/a&gt;, and &lt;a href="http://doug-shimp.net/"&gt;Doug Shimp&lt;/a&gt; about sharing, trust-loops, and team interaction.&lt;br /&gt;&lt;br /&gt;Aside from each of us sharing our own thoughts we also shared some resources. I already mentioned the books. There were also some online articles/materials that were discussed and I wanted to share those here.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One recent article is &lt;a href="http://www.chacocanyon.com/pointlookout/090121.shtml"&gt;&lt;i&gt;Creating Trust&lt;/i&gt;&lt;/a&gt; by &lt;a href="http://www.chacocanyon.com/"&gt;Rick Brenner&lt;/a&gt; -- Rick has a lot of good articles at his site, and I'm a regular subscriber to his free &lt;a href="http://www.chacocanyon.com/pointlookout/"&gt;PointLookout&lt;/a&gt; newsletters&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I also read some interesting things in "&lt;a href="http://www.beyondintractability.org/essay/trust_building"&gt;Trust and Trust Building&lt;/a&gt;" by &lt;a href="http://www.beyondintractability.org/action/author.jsp?id=920"&gt;Roy J. Lewicki&lt;/a&gt; and &lt;a href="http://www.beyondintractability.org/action/author.jsp?id=24807"&gt;Edward C. Tomlinson&lt;/a&gt;, particularly the definitions of "calculus-based trust" and "identification-based trust" (which I admit were new terms to me)&lt;/li&gt;&lt;br /&gt;&lt;li style="font-style: italic;"&gt;&lt;a href="http://d.scribd.com/docs/1m4u0513rxmsids9r97n.pdf"&gt;Fear, trust and Truth in IT Project Teams&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a style="font-style: italic;" href="http://ifyouonlyreadonethingthisweek.wordpress.com/2009/03/26/building-trust-in-emergency-response-teams/"&gt;Building Trust in Emergency Response Teams&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://misrc.umn.edu/wpaper/WorkingPapers/9604.pdf"&gt;&lt;i&gt;The Meanings of Trust&lt;/i&gt;&lt;/a&gt;, by some folks at the University of Minnesota (not sure if this is a research project/report or someone's in-progress thesis)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Diana Larsen has a presentation entitled &lt;a style="font-style: italic;" href="http://www.agile2007.org/downloads/presentations/Larsen_613_613.pdf"&gt;"The First Thing to Build": Leveraging Trust on Agile Teams&lt;/a&gt;, which builds upon something I said several years back ("&lt;a href="http://www.blogger.com/blog.bradapp.net/2005/02/first-thing-to-build-is-trust.html"&gt;The first thing to build is TRUST!&lt;/a&gt;" -- which &lt;a href="http://alistair.cockburn.us/"&gt;Alistair Cockburn&lt;/a&gt; liked a lot and started using it in the signature of his email &amp;amp; forum posts)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Diana Larsen mentioned the following:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:trebuchet ms;"&gt;Another useful book is Dennis &amp;amp; Michelle Reina's &lt;a href="http://www.amazon.com/Trust-Betrayal-Workplace-Relationships-Organization/dp/1576753778"&gt;&lt;b&gt;Trust and Betrayal in the Workplace&lt;/b&gt;&lt;/a&gt;.  They've developed an interesting model they call &lt;i&gt;Transactional Trust&lt;/i&gt; which is a further explanation of the behaviors involved in "you've got to give it to get it?". They include three kinds;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Contractual trust&lt;/i&gt; - managing explicit and implicit expectations, establish boundaries, delegate appropriately, encourage mutually serving intentions, be consistent, keep agreements (do what you say you'll do)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Communication trust&lt;/i&gt; share information, tell the truth, admit mistakes, give &amp;amp; receive effective feedback, maintain confidentiality, speak to good purpose (avoid gossip, a.k.a "be impeccable with your word")&lt;/li&gt;&lt;li&gt;&lt;i&gt;Competence trust&lt;/i&gt; - acknowledge people's skills and abilities, allow people to make decisions, involve others &amp;amp; seek their input, help people learn new skills&lt;/li&gt;&lt;/ul&gt;Robert Hurley wrote an article for Harvard Business Review, &lt;a href="http://harvardbusinessonline.hbsp.harvard.edu/b02/en/common/item_detail.jhtml;jsessionid=A3BYIKIHGBIFOAKRGWDSELQBKE0YIISW?id=1052&amp;amp;referral=2341"&gt;&lt;i&gt;Winning Your Employee's Trust&lt;/i&gt;&lt;/a&gt;. It's more about the relationship between leaders and staff. The interesting part, to me, is a model he developed out of his research. It links back to that idea that people's capacity for trust comes both from within themselves and from situational context, in a sophisticated (and unconscious) calculation of numerous elements. Fascinating, I thought.&lt;br /&gt;&lt;br /&gt;Another article you might find interesting is called, &lt;a href="http://knowledge.wharton.upenn.edu/article.cfm?articleid=1532"&gt;&lt;i&gt;Promises, Lies and Apologies: Is it Possible to Restore Trust?&lt;/i&gt;&lt;/a&gt; and is about what circumstances contribute to whether trust can be rebuilt. Particularly apt here in Portland as we deal with the lies our newly elected Mayor got caught in.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;If you have some links to some other good resources on trust, please add your comment and share them with me!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3692245194916337339?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3692245194916337339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3692245194916337339&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3692245194916337339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3692245194916337339'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/more-articles-on-trust.html' title='More Articles on Trust'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5961050663366712700</id><published>2009-04-25T00:12:00.003-05:00</published><updated>2009-06-04T21:06:00.887-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trust'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: Building Trust</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Last time I blogged about Stephen Covey's &lt;a href="http://www.amazon.com/SPEED-Trust-Thing-Changes-Everything/dp/074329730X"&gt;&lt;b&gt;The Speed of Trust: The One Thing That Changes Everything&lt;/b&gt;&lt;/a&gt; (see &lt;a href="http://www.speedoftrust.com/"&gt;www.speedoftrust.com&lt;/a&gt;). I have a few other books about trust on my bookshelf,  including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Trust-Betrayal-Workplace-Relationships-Organization/dp/1576753778"&gt;&lt;b&gt;Trust and Betrayal in the Workplace&lt;/b&gt;&lt;/a&gt;, by Dennis &amp;amp; Michelle Reina&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.thetrustedleader.com/"&gt;&lt;b&gt;The Trusted Leader&lt;/b&gt;&lt;/a&gt;, by Robert Galford and Anne Seibold Drapeau, and ...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Building-Trust-Business-Politics-Relationships/dp/0195161114"&gt;&lt;b&gt;Building Trust: in Business, Politics, Relationships, and Life&lt;/b&gt;&lt;/a&gt; by Robert C. Solomon and Fernando Flores&lt;/li&gt;&lt;/ul&gt;This time I'd I like to share some of the thoughts from  Solomon and Flores' book &lt;a href="http://www.amazon.com/Building-Trust-Business-Politics-Relationships/dp/0195161114"&gt;&lt;b&gt;Building Trust: in Business, Politics, Relationships, and Life&lt;/b&gt;&lt;/a&gt;. I bought it on the recommendation of &lt;a href="http://www.agilemanagement.net/"&gt;David Anderson&lt;/a&gt; in his blog-entry &lt;a href="http://www.agilemanagement.net/Articles/Weblog/YouareWhatYouRead.html"&gt;&lt;i&gt;You are what you read!&lt;/i&gt;&lt;/a&gt;. That blog-entry also mentions &lt;a href="http://www.thetrustedleader.com/"&gt;&lt;b&gt;The Trusted Leader&lt;/b&gt;&lt;/a&gt;, as well as &lt;a href="http://www.amazon.com/Trust-Social-Virtues-Creation-Prosperity/dp/0684825252"&gt;&lt;b&gt;Trust: The social virtues and the creation of prosperity&lt;/b&gt;&lt;/a&gt; by Francis Fukuyama (which David felt was the most important book he'd seen on the topic so far).&lt;br /&gt;&lt;br /&gt;Anyway, since we started exploring what trust is and what it means, here are some excerpt's from the introduction of "&lt;b&gt;&lt;a href="http://www.amazon.com/Building-Trust-Business-Politics-Relationships/dp/0195161114"&gt;&lt;b&gt;Building Trust: in Business, Politics, Relationships, and Life&lt;/b&gt;&lt;/a&gt;&lt;/b&gt;, by Robert C. Solomon and Fernando Flores (italicized comments appearing in square brackets &lt;span style="font-style: italic;"&gt;outside&lt;/span&gt; of quotation marks are mine):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;"&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Building trust begins with an honest understanding of trust, but it also requires everyday routines and practices. Without the practices, that understanding comes to nothing."&lt;/span&gt; &lt;i style="font-family: times new roman;"&gt;[what happens if I replace "trust" with "agility" in this sentence]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;"Trust is the essential precondition upon which all real success depends. The key to trust is action, and, in particular, commitment: commitments made and commitments honored."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;"The problem of trust has clearly emerged as the problem in human relationships and organizations. What makes most companies falter-leaving aside market forces, bad products, and incompetent management-is the lack of trust."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"Trusting is something we make, we create, we build, we maintain, we sustain with our promise, our commitments, our emotions, and our sense of our own integrity. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"Trust is not merely reliability, predictability, or what is sometimes understood as trustworthiness. It is always the relationship within which trust is based and which trust itself helps create."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;"The freedom provided by trust is the freedom to to engage in projects that one could not or would not undertake on one's own. The freedom provided by trust is the freedom to approach and engage with strangers whom one may in fact never lay eyes on. The freedom provided by trust is the freedom to think for oneself and speak up with one's ideas. It includes as its consequence (not its cost) the freedom to be questioned and criticized -- and the right to be recognized and (if deserving) rewarded."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;"Trust is a matter of making and keeping commitments, and the problem is the failure to cultivate commitment making.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"Trust involves sincerity, authenticity, integrity, virtue, and honor. It is a matter of conscientious integrity."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"Authentic trust is going into the unknown together."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;"The worst enemies of trust are cynicism, selfishness, and a naïve conception of life in which one expects more than one is willing to give. Resentment, distrust, and inauthenticity are the result."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;"&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 102);"&gt;Self-trust&lt;/span&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; is the most basic and most often neglected from of trust. Distrust is often a projection of missing self-trust."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"Trust goes hand in hand with truth. Lying is always a breach of trust. What is wrong with lying, in turn, is that it breaches trust. ...telling the truth establishes trust and lying destroys it."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"Authentic trust can never be taken for granted, but must be continuously cultivated through commitments and truthfulness. True leadership, whatever else it may be, can be based on nothing less."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;"&lt;/span&gt;&lt;i style="color: rgb(102, 51, 51);"&gt;cordial hypocrisy&lt;/i&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;: the strong tendency of people in organizations, because of loyalty or fear, to pretend there is trust when there is none, being polite in the name of harmony when cynicism and distrust are active poisons, eating away at the very existence of organizations &lt;/span&gt;&lt;i style="color: rgb(102, 51, 51);"&gt;[or relationships]&lt;/i&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;"How we think about trust ... makes trust possible, difficult, or even impossible. Trust (like love and freedom) involves any number of self-promoting and self-defeating prophecies."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"Trust(ing), not trustworthiness, is the issue. The existential question is &lt;/span&gt;&lt;i style="color: rgb(0, 102, 0);"&gt;how&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; to trust, not just who can be trusted. (Trust is not only earned; it must be &lt;/span&gt;&lt;i style="color: rgb(0, 102, 0);"&gt;given&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Trust is a matter of reciprocal &lt;/span&gt;&lt;i style="color: rgb(0, 0, 153);"&gt;relationships&lt;/i&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, not of predictions, risk and reliance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;Trust is transformative. It is not a matter of trusting or being trusted so much as it is a matter of changing each other and the relationship through trust."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;"The German sociologist Niklas Luhmann stresses that trust is a way of dealing with complexity in an increasingly complex society. There is a deep truth to this. The paradigm of trust is not found in the simplicity of a familiar relationship. Rather, it exists in the new complexity of the world and the global economy. Trust not only lets us increase complexity in our lives (and thus simplify them at the same time); it also changes our lives in dramatic ways, allowing us to explore in new directions, to experiment and express ourselves in our relationships in ways that would otherwise be unthinkable. And it allows us to grow and change and mellow and deepen in all the ways that merely provincial trust and distrust distort and prohibit."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"Trust is not always a good thing. Trust can be foolish, naive, gullible, and blind. And trust ought never to be taken for granted. That is why we insist the issue is &lt;/span&gt;&lt;i style="color: rgb(0, 102, 0);"&gt;building trust&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; -- that is, creating trust, maintaining trust, restoring trust once it has been lost or betrayed. We want to suggest that this requires a radical revision of our conception of trust. Our thesis, to put it simply, is that trusting is something that we individually &lt;/span&gt;&lt;i style="color: rgb(0, 102, 0);"&gt;do&lt;/i&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;; it is something we make, we create, we build, we maintain, we sustain with our promises, our commitments, our emotions, and our sense of our own integrity.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Trust is not, contrary to what some authors have written, a medium, an atmosphere, a 'lubricant,' social 'glue,' a lucky break for one society or another, or some mysterious social 'stuff.' Trust is an option, a choice. It is an active part of our lives, not something that is there from the beginning, or that can be taken for granted. It involves skills and commitment, not just good luck or mutual understanding.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;The focus of trust -- or what we will call &lt;/span&gt;&lt;i style="color: rgb(102, 51, 51);"&gt;authentic trust&lt;/i&gt;&lt;span style="color: rgb(102, 51, 51);"&gt; -- is not just the hoped for outcome of this or that event or transaction. Trust is not merely reliability, predictability, or what is sometimes understood as &lt;/span&gt;&lt;i style="color: rgb(102, 51, 51);"&gt;trustworthiness&lt;/i&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;. It is always the &lt;/span&gt;&lt;i style="color: rgb(102, 51, 51);"&gt;relationship&lt;/i&gt;&lt;span style="color: rgb(102, 51, 51);"&gt; within which trust is based and which trust itself helps create. Authentic trust does not necessitate the exclusion of distrust. To the contrary, it embraces the possibilities of distrust and betrayal as an essential part of trust. To be somewhat grim in our initial characterization of trust, &lt;/span&gt;&lt;i style="color: rgb(102, 51, 51);"&gt;it entails the possibility of betrayal&lt;/i&gt;&lt;span style="color: rgb(102, 51, 51);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;The loss of trust is not mere disappointment. That is why trust is often evident only in the event of a breakdown. Like love, trust often becomes most palpable in the breach. (“You don't miss your water till the well runs dry.”) Building trust means coming to terms with the possibility of breach and betrayal."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;"Trust, like love, may seem to fail us, but truly, we fail at trust or love. But then we get more sophisticated. We learn that trust, like love, is an emotional skill. It requires judgment. It requires vigilant attention. It requires conscientious action. It involves all of the intricate reciprocities of a human relation­ship (even in cases in which it remains “unrequited”)."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"Trust. like love, is an emotional skill, an ongoing dynamic aspect of relationships. We don't just fall in love, we decide to love. So, too, we do not simply find ourselves trusting, after months or perhaps years of comfortable familiarity. We make decisions to trust. We make promises and tacit communication. We see them through. We come to have expectations of others, and we respond to the fulfillment or frustration of those expectations. Trust isn't something we 'have,' or a medium or an atmosphere withing which we operate. Trust is something we do, something we make. Our mutual choices of trust determine nothing less than the kinds of beings we are and the kinds of lives we will live together."&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Note some of the similarities and differences between the above, and what Stephen R. Covey writes in &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;a href="http://www.amazon.com/SPEED-Trust-Thing-Changes-Everything/dp/074329730X"&gt;&lt;b&gt;The Speed of Trust&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;. Next time I'll give a few more resources on trust!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5961050663366712700?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5961050663366712700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5961050663366712700&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5961050663366712700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5961050663366712700'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/book-building-trust.html' title='BOOK: Building Trust'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-7772294581931087999</id><published>2009-04-24T02:05:00.003-05:00</published><updated>2009-06-04T21:06:59.539-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trust'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: The Speed of Trust</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I read Stephen Covey's &lt;a href="http://www.amazon.com/SPEED-Trust-Thing-Changes-Everything/dp/074329730X"&gt;&lt;b&gt;The Speed of Trust: The One Thing That Changes Everything&lt;/b&gt;&lt;/a&gt; (see &lt;a href="http://www.speedoftrust.com/"&gt;www.speedoftrust.com&lt;/a&gt;). I listened to it on audiobook during my commute a few months ago and parts of it definitely struck a chord with me.&lt;br /&gt;&lt;br /&gt;I like how he described the relationship between "trust" and speed+cost, and how low trust makes things slower and more costly. He also defined "5 levels of trust" (more like concentric circles) as follows:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-weight: bold;"&gt;Self-Trust &lt;/span&gt;("giving trust" - do you trust yourself? are you willing &amp;amp; able to trust of others?)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-weight: bold;"&gt;Relationship Trust&lt;/span&gt; (establishing trust within interpersonal relationships)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-weight: bold;"&gt;Organizational Trust&lt;/span&gt; (establishing trust within &amp;amp; across an organization)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-weight: bold;"&gt;Market Trust&lt;/span&gt; (establishing trust within &amp;amp; across your market - stockholders, patrons, consumers. This is like "Brand trust")&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-weight: bold;"&gt;Global Trust&lt;/span&gt; (I forget the examples of this one)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;There is a &lt;a href="http://www.duncanworldwide.com/pdf/SOTBookSummary.pdf"&gt;good summary of the book here&lt;/a&gt;, and &lt;a href="http://www.emorymi.com/covey.shtml"&gt;another one here&lt;/a&gt;. There is also an &lt;a href="http://www.coveylink.com/documents/SOTBookManuscript-Ch1-2.pdf"&gt;early draft of chapters 1-2&lt;/a&gt; available online.&lt;br /&gt;&lt;br /&gt;Covey actually doesnt try to define trust very precisely. He simply quotes Jack Welch saying "I know it when I feel it." He says trust implies confidence in something/someone, and that lack of trust implies suspicion.&lt;br /&gt;&lt;br /&gt;Trusting someone is a function of our perception of their character, and their competency.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"&lt;span style="font-weight: bold;"&gt;Character&lt;/span&gt;" includes a person's integrity, motives/agenda, intent and behavior with people, where&lt;/li&gt;&lt;li&gt;"&lt;span style="font-weight: bold;"&gt;Integrity&lt;/span&gt;" is mostly congruence (with an appropriate  dash of humility and courage thrown in). Lack of congruence results in a lack of credibility.&lt;/li&gt;&lt;li&gt;"&lt;span style="font-weight: bold;"&gt;Competency&lt;/span&gt;" includes a person's capabilities, skills, results and "track record"&lt;/li&gt;&lt;li&gt;"&lt;span style="font-weight: bold;"&gt;Capability&lt;/span&gt;" is defined in terms of &lt;span style="font-weight: bold;"&gt;TASKS&lt;/span&gt;: &lt;span style="font-style: italic;"&gt;talent, attitudes, skills, knowledge &amp;amp; style&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In addition to observing the five "waves" (or "levels of evolutionary scale") of trust above, he says about the first level/wave that it is very much about credibility, and describes the &lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic;"&gt;"four cores" of credibility are a person's integrity, intentions, capability and results&lt;/span&gt;&lt;/span&gt;. Demonstrating those things builds credibility in your words and actions. Credibility is a necessary (but not sufficient) ingredient for trust. People are less able to trust you if they don't find you credible.&lt;br /&gt;&lt;br /&gt;The rest of the book is about the so called "&lt;a href="http://www.coveylink.com/documents/13-Behaviors-Handout-CoveyLink.pdf"&gt;13 behaviors&lt;/a&gt;" that, when demonstrated, will help you "build trust". Those are:&lt;br /&gt;&lt;ol style="font-style: italic; font-family: verdana;"&gt;&lt;li&gt;talk straight&lt;/li&gt;&lt;li&gt;demonstrate respect&lt;/li&gt;&lt;li&gt;create transparency&lt;/li&gt;&lt;li&gt;right wrongs&lt;/li&gt;&lt;li&gt;show loyalty&lt;/li&gt;&lt;li&gt;deliver results&lt;/li&gt;&lt;li&gt;get better (improve)&lt;/li&gt;&lt;li&gt;confront reality&lt;/li&gt;&lt;li&gt;clarify expectations&lt;/li&gt;&lt;li&gt;practice accountability&lt;/li&gt;&lt;li&gt;listen first&lt;/li&gt;&lt;li&gt; keep commitments&lt;/li&gt;&lt;li&gt;extend trust&lt;/li&gt;&lt;/ol&gt;Regarding "higher" (more evolved) levels of trust, he refers to the following principles:&lt;br /&gt;&lt;ul style="font-style: italic; font-family: verdana;"&gt;&lt;li&gt;the principle of alignment&lt;/li&gt;&lt;li&gt;the principle of reputation&lt;/li&gt;&lt;li&gt;the principle of contribution&lt;/li&gt;&lt;/ul&gt;He also describes some &lt;a href="http://www.coveylink.com/documents/SOTBookManuscript-MythsRlts.pdf"&gt;myths about trust&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="1" cellspacing="1"&gt;&lt;tbody bgcolor="lightgray"&gt;&lt;tr&gt;&lt;th width="35%"&gt;MYTH&lt;/th&gt;&lt;th&gt;REALITY&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trust is soft. &lt;/td&gt; &lt;td&gt; Trust is hard, real, and quantifiable.&lt;br /&gt;It measurably affects both speed and cost.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trust is slow. &lt;/td&gt; &lt;td&gt; Nothing is as fast as the speed of trust.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trust is built solely on integrity. &lt;/td&gt; &lt;td&gt; Trust is a function of both character (which includes integrity) and competence.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;You either have trust or you don’t. &lt;/td&gt; &lt;td&gt; Trust can be both created and destroyed.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Once lost, trust cannot be restored. &lt;/td&gt; &lt;td&gt; Though difficult, in most cases lost trust can be restored&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;You can’t teach trust. &lt;/td&gt; &lt;td&gt; Trust can be effectively taught and learned, and it can become a leverageable, strategic advantage.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trusting people is too risky. &lt;/td&gt; &lt;td&gt; Not trusting people is a greater risk.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;You establish trust one person at a time. &lt;/td&gt; &lt;td&gt; Establishing trust with the one establishes trust with the many.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-7772294581931087999?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/7772294581931087999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=7772294581931087999&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7772294581931087999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7772294581931087999'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/book-speed-of-trust.html' title='BOOK: The Speed of Trust'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-6339182464977019233</id><published>2009-04-17T17:19:00.015-05:00</published><updated>2009-04-23T03:23:33.483-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The Agility Cycle - Part 2</title><content type='html'>&lt;span style="font-family:georgia;"&gt;We saw in the &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-1.html"&gt;previous blog-entry&lt;/a&gt; several definitions of &lt;a href="http://blog.bradapp.net/2009/04/agility-cycle-part-1.html"&gt;the Business Agility Cycle&lt;/a&gt;. We also mentioned that in order to derive the Software Agility Cycle from this, we needed to explicitly include more close collaboration.&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-family:trebuchet ms;font-size:130%;"  &gt;&lt;br /&gt;The &lt;i&gt;Software Agility Cycle&lt;/i&gt; is:&lt;br /&gt;&lt;i&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Sense&lt;/b&gt; the Problem/Opportunity&lt;/li&gt;&lt;li&gt;&lt;b&gt;See&lt;/b&gt; the Problem in the Context of the "Whole"&lt;/li&gt;&lt;li&gt;&lt;b&gt;Socialize&lt;/b&gt; the Goals and Constraints&lt;/li&gt;&lt;li&gt;&lt;b&gt;Swarm&lt;/b&gt; the Solution&lt;/li&gt;&lt;li&gt;&lt;b&gt;Show&lt;/b&gt; the Results&lt;/li&gt;&lt;li&gt;&lt;b&gt;Share&lt;/b&gt; the Knowledge Learned&lt;/li&gt;&lt;/ul&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Here's how I derived the above... Once again, I'll refer to &lt;a href="http://www.jimhighsmith.com/pubs.html#publications"&gt;Jim Highsmith&lt;/a&gt; to represent the "people and collaboration" component of software agility.&lt;br /&gt;&lt;br /&gt;In his book &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0932633404"&gt;&lt;b&gt;Adaptive Software Development&lt;/b&gt;&lt;/a&gt;, Highsmith compares software development to a &lt;a href="http://en.wikipedia.org/wiki/Complex_adaptive_system"&gt;complex adaptive system&lt;/a&gt; (CAS) and uses CAS with elements of &lt;a href="http://en.wikipedia.org/wiki/Chaos_theory"&gt;chaos theory&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Complexity"&gt;complexity science&lt;/a&gt; to derive the critical importance of people and collaboration in software development. He does this using the concepts of &lt;a href="http://en.wikipedia.org/wiki/Multi-agent_system"&gt;intelligent agents&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Self-organization"&gt;self-organization&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Emergence"&gt;emergence&lt;/a&gt; within a turbulent (ever-changing, complex and seemingly chaotic) environment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When we treat people as "intelligent agents" who both cooperate and compete to get work done in a turbulent environment, the final outcome is &lt;i&gt;not&lt;/i&gt; the result of the work from any particular individual or process.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The outcome instead emerges from the interaction between the collaborating individuals to produce a result that cannot be predicted from their individual behavior (it is non-linear, defying simple cause-and-effect reasoning).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The details of the collaboration (and the final solution) cannot be pre-ordained and then commanded-and-controlled&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Instead, successful collaboration and creativity must be nurtured, and must trust and empower the individuals to direct and organize themselves together "in real-time", learning and adjusting as they go.&lt;/li&gt;&lt;/ul&gt;This is the phenomenon of &lt;i&gt;emergent behavior from self-organization&lt;/i&gt; to achieve successful results and adapt to unpredictable circumstances.&lt;br /&gt;&lt;br /&gt;The other problem with the business agility cycle is  that it seems to presume that decision-making about what solution to attempt is done by a smaller, separate group of people than those who will implement and deliver the solution, and we merely need to communicate to them and have them act to execute the solution.&lt;br /&gt;&lt;br /&gt;It's not clear whether this assumes knowledge or design of the solution "up front" with a "handover" to an implementation team, or whether it can mean that determining the solution needs to be just as collaborative as its implementation and must involve many of the same people, all working together at the same time.&lt;br /&gt;&lt;br /&gt;The collaborative aspect of software agility demands that the solution emerges from those who must create and deliver it, and that they are empowered to make the decisions about what that solution is and how best to do it. Rather than having the decision made for them and simply "executed" by them, once the problem became known, the request or opportunity would be presented to them as a problem to be solved, together.&lt;br /&gt;&lt;br /&gt;The goals and objectives would be socialized, along with the needs and constraints, and then those who must collaborate across the value-stream to devise and deliver a solution would get together to make it a reality. They would learn what they needed to know, show results to customers and stakeholders and then get feedback to try and learn and adapt.&lt;br /&gt;&lt;br /&gt;This yields a slightly different cycle for software agility than the one we had for business agility:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Sense&lt;/span&gt; the Problem/Opportunity&lt;/b&gt; using whatever local feedback mechanisms have been put in place to become aware of it. This is the same as it was in the business agility cycle.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;See&lt;/span&gt; the Problem in the  Context of the "Whole"&lt;/b&gt; system. Rather than "strategizing" this is more like the "orient" step from &lt;a href="http://www.d-n-i.net/fcs/pdf/adolph_2006_agile%20lessons_final.pdf"&gt;Boyd&lt;/a&gt;, or the "interpret &amp;amp; evaluate" step from &lt;a href="http://business-it-agility.blogspot.com/2008/10/sense-respond-and-learn.html"&gt;Oosterhout&lt;/a&gt;. This lets us properly frame the problem within the organization and its "delivery system."&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Socialize&lt;/span&gt; the Goals and Constraints&lt;/b&gt; among all those who will work together to devise and deliver the result. This is similar to the communicate step from &lt;a href="http://www.gartner.com/DisplayDocument?doc_cd=137820"&gt;Gartner&lt;/a&gt;, but we didn't really decide what the solution should be. We decided what to do (the vision) at a high-level but not the details of "how."  We haven't made a detailed plan or spec.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Swarm&lt;/span&gt; the Solution&lt;/b&gt;, collaborating intensely and self-organizing as needed across functions, organizational and geographical boundaries, etc. This combines the "act" and "decide" steps into a single, self-organizing group responsible for the result. We delegated the decision-making authority to them about what exactly to build and how to go about building it.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Show&lt;/span&gt; the Results&lt;/b&gt;, demonstrating the knowledge gained about the solution in "executable" form so we can get feedback as to its validity. Then finally ...&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Share&lt;/span&gt; the Knowledge Learned&lt;/b&gt;  with the rest of the organization so they can inspect, adapt, and move forward. And most importantly so they can remember &lt;i&gt;how &lt;/i&gt;they learned what they now know.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The thing to remember is that this cycle happens at every level of scale in our delivery system. If we do this cycle once for a large problem, we have ourselves a waterfall. The above cycle applies to ALL the feedback loops that need to be put into place. There is the delivery-cycle, the release-cycle, the planning-cycle (the timebox), the development-cycle (backlog-item), the integration-cycle (e.g., TDD and CI), and the peer-review cycle (e.g., pair programming). They all go thru these same six steps in some form or another:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Sense &amp;amp; See&lt;/b&gt; &lt;i&gt;(sense locally, see globally)&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Socialize &amp;amp; Swarm&lt;/b&gt; &lt;i&gt;(socialize the problem, swarm the solution)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Show &amp;amp; Share &lt;/b&gt; &lt;i&gt;(show the results, share the knowledge)&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;These are the steps of the software agility cycle that we use to &lt;i&gt;Evaluate&lt;/i&gt; change, &lt;i&gt;Collaborate&lt;/i&gt; together, &lt;i&gt;Validate&lt;/i&gt; the results, and then &lt;i&gt;Iterate&lt;/i&gt; over the cycle again, applying our newly found knowledge to learn and adapt was we go.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-6339182464977019233?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/6339182464977019233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=6339182464977019233&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6339182464977019233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6339182464977019233'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/agility-cycle-part-2.html' title='The Agility Cycle - Part 2'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-3987926405137341269</id><published>2009-04-12T09:36:00.016-05:00</published><updated>2009-04-18T08:22:56.300-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The Agility Cycle - Part 1</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Continuing the "&lt;a href="http://blog.bradapp.net/2009/04/what-is-agility.html"&gt;&lt;i&gt;What is Agility?&lt;/i&gt;&lt;/a&gt;" series of posts ... we have looked at &lt;a href="http://blog.bradapp.net/2009/04/what-is-agility-part-1-business-agility.html"&gt;&lt;i&gt;business agility&lt;/i&gt;&lt;/a&gt; and how it combines with the "people factor" from the &lt;a href="http://www.agilemanifesto.org/"&gt;agile manifesto&lt;/a&gt; to yield &lt;a href="http://blog.bradapp.net/2009/04/what-is-agility-part-2-software-agility.html"&gt;&lt;i&gt;software development agility&lt;/i&gt;&lt;/a&gt;. So now that we know the meaning of agility, the next questions two I want to answer are "how do you do it?" and "what does it look like?"&lt;br /&gt;&lt;br /&gt;In this posting I will attempt to generally answer the "how do you do it?" question. This is basically a question of process. What is the overall process for "&lt;i style="color: rgb(153, 102, 51);"&gt;swiftly sensing and rapidly responding to change &amp;amp; uncertainty in close collaboration with stakeholders to create simple, sustainable structures with sufficient flexibility to dynamically adapt &amp;amp; evolve business processes, products &amp;amp; plans.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;This process is essentially an overall cycle. Something that you do, and then "rinse, lather &amp;amp; repeat." It is called &lt;i&gt;&lt;b&gt;the Agility Cycle&lt;/b&gt;&lt;/i&gt;. Let's look at a few different descriptions of this cycle (mostly from the realm of business agility) and then formulate our own for software development agility.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gartner.com/DisplayDocument?doc_cd=137820"&gt;Gartner describes the business agility cycle&lt;/a&gt; as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Sense&lt;/b&gt; the need for change in the environment (includes the proactive initiation of change)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Strategize&lt;/b&gt; the available options and develop alternatives&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Decide&lt;/b&gt; which path to take and commit to the approach&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Communicate&lt;/b&gt; internally and externally to everyone who needs to know&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Act&lt;/b&gt; to produce results and follow-through efficiently&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Gartner has a number of reports on agility (some of which are even freely available :). You can read about them all &lt;a href="http://www.gartner.com/DisplayDocument?doc_cd=139734"&gt;at this summary&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.d-n-i.net/fcs/pdf/adolph_2006_agile%20lessons_final.pdf"&gt;John Boyd&lt;/a&gt; describes it as an OODA loop:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Observe&lt;/b&gt; your environment (yourself; your threats and opportunities; the physical, mental, and ethical situation; and potential allies and opponents)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Orient&lt;/b&gt; yourself to grasp what it all means and identify patterns, approaches and likely outcomes&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Decide&lt;/b&gt; upon a course of action and tactical plan&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Act&lt;/b&gt; on the plan (execute while minding the terrain)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.ssa.vic.gov.au/CA2571410025903D/WebObj/agile_government_towards_agile/$File/agile_government_towards_agile.pdf"&gt;Another source&lt;/a&gt; describes it as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Scan&lt;/b&gt; emerging trends and issues through gathering information and analysis&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Sense&lt;/b&gt; opportunities to translate information into actionable solutions&lt;/li&gt;&lt;li&gt;&lt;b&gt;Respond&lt;/b&gt; to opportunities and risks by being sufficiently flexible at tactical and strategic levels&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Shape&lt;/b&gt; future environments  through driving change.&lt;/li&gt;&lt;/ul&gt;In &lt;a href="http://business-it-agility.blogspot.com/2008/10/sense-respond-and-learn.html"&gt;&lt;i&gt;Sense, Respond and Learn&lt;/i&gt;&lt;/a&gt;, Marcel v Oosterhout describes the business-agility cycle as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Monitor &amp;amp; Sense&lt;/b&gt;: monitor the business environment and sense critical market signals, events, and changing conditions&lt;/li&gt;&lt;li&gt;&lt;b&gt;Interpret &amp;amp; Evaluate&lt;/b&gt;: interpret the information and evaluate if it is something to (re)act to or ignore.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Decide &amp;amp; Plan&lt;/b&gt;: decide which response is best and plan to implement it&lt;/li&gt;&lt;li&gt;&lt;b&gt;Reconfigure &amp;amp; Adapt&lt;/b&gt;: reconfigure or adapt business, operations, or IT capabilities&lt;/li&gt;&lt;li&gt;&lt;b&gt;Respond &amp;amp; Execute&lt;/b&gt;: respond by executing with new or adapted capabilities&lt;/li&gt;&lt;li&gt;&lt;b&gt;Learn&lt;/b&gt;: Record the cycle, learn from previous cycles, share to improve future cycles&lt;/li&gt;&lt;li&gt;&lt;b&gt;Manage&lt;/b&gt;: manage the sense-respond-learn cycle to support completing the process as rapidly and effectively as required&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; Notice that, as with  the definitions of business agility we saw before, there is no explicit mention of the kind of close collaboration and self-organization that is deemed an essential component of software agility. Any attempt we make to derive the software agility cycle from the business agility cycle needs to take into consideration this close collaboration of the participants and emergence of the solution as a result (rather than knowing it all up front).&lt;br /&gt;&lt;br /&gt;We'll discuss this next time when we try to describe &lt;span style="font-style: italic; font-weight: bold;"&gt;the software agility cycle&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3987926405137341269?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3987926405137341269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3987926405137341269&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3987926405137341269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3987926405137341269'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/agility-cycle-part-1.html' title='The Agility Cycle - Part 1'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2857292848788100129</id><published>2009-04-10T16:14:00.012-05:00</published><updated>2009-04-10T19:56:12.788-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>What is Agility? Part 2 - Software Agility</title><content type='html'>&lt;span style="font-family:georgia;"&gt;In &lt;a href="http://blog.bradapp.net/2009/04/what-is-agility-part-1-business-agility.html"&gt;&lt;i&gt;Part 1 of "What is Agility?"&lt;/i&gt;&lt;/a&gt; we looked at numerous definitions and descriptions of &lt;a href="http://blog.bradapp.net/2009/04/what-is-agility-part-1-business-agility.html"&gt;business agility&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The overwhelming majority of them had the following elements in common among their descriptions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Agility&lt;/b&gt; means &lt;i&gt;swiftly sensing and rapidly responding&lt;/i&gt; to change and uncertainty.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Demand&lt;/b&gt; for change may be &lt;i&gt;internal or external&lt;/i&gt; to the organization/environment.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Responding&lt;/b&gt; to the change utilizes resources &amp;amp; staff that are both internal &lt;i&gt;and external.&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Changes&lt;/b&gt; can be &lt;i&gt;unpredictable and unanticipated&lt;/i&gt;, as well as foreseeable and anticipated.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Unanticipated changes&lt;/b&gt; are typically handled with &lt;i&gt;dynamic adaptation through short cycles of feedback and learning&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Anticipated changes&lt;/b&gt; are typically handled with &lt;i&gt;simple yet flexible structures&lt;/i&gt; that are &lt;i&gt;resilient when modified&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;And of course all this is achieved with solutions that are &lt;i&gt;effective, efficient, and economical&lt;/i&gt; to implement and deliver!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So what is missing from the above that is an essential characteristic of agile development as defined by the values and principles of the &lt;a href="http://www.agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;I think it is the people factor, and what Jim Highsmith calls "&lt;span style="font-family:times new roman;"&gt;&lt;i&gt;a focus on talent and skills of individuals and teams.&lt;/i&gt;&lt;/span&gt;" Close collaboration across functions and other internal &amp;amp; external boundaries is the "secret sauce" that best leverages the talents &amp;amp; skills of individuals &amp;amp; teams. This is what enables the rapid learning which, when combined with those talents and skills, delivers the most innovative solutions and best results in the shortest time.&lt;br /&gt;&lt;br /&gt;Put ALL of the above together, and we have a definition of software development agility that looks something like the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;blockquote&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;i&gt;Software development agility&lt;/i&gt; is the ability to ...&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 51, 0);font-size:100%;" &gt;&lt;b&gt;swiftly sense&lt;/b&gt; and &lt;b&gt;rapidly respond&lt;/b&gt; &lt;i&gt;to change &amp;amp; uncertainty&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 51, 0);font-size:100%;" &gt;in &lt;b&gt;close collaboration&lt;/b&gt; with internal &lt;i&gt;and external&lt;/i&gt; stakeholders&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 0, 0);font-size:100%;" &gt;to create &lt;b&gt;simple, sustainable structures&lt;/b&gt; with &lt;i&gt;sufficient flexibility&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 0, 51);font-size:100%;" &gt;to &lt;b&gt;dynamically adapt &amp;amp; evolve&lt;/b&gt; business processes, products &amp;amp; plans&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 102);font-size:100%;" &gt;that realize results with &lt;i&gt;efficiency&lt;/i&gt; in motion, &lt;i&gt;economy&lt;/i&gt; of effort, &lt;i&gt;energy&lt;/i&gt; in execution, and &lt;i&gt;efficacy&lt;/i&gt; of impact!&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;And there you have it! Note that the last bullet above is really just a fancy phrasing of mandatory business jargon that ultimately means "&lt;a href="http://en.wikipedia.org/wiki/Lean_manufacturing"&gt;&lt;i&gt;Lean&lt;/i&gt;&lt;/a&gt;", but we'll explore that connection further in a later blog-entry.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2857292848788100129?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2857292848788100129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2857292848788100129&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2857292848788100129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2857292848788100129'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/what-is-agility-part-2-software-agility.html' title='What is Agility? Part 2 - Software Agility'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-7985457036944218911</id><published>2009-04-08T00:38:00.003-05:00</published><updated>2009-04-08T03:06:31.269-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Code-Mgmt'/><title type='text'>BOOK: Clean Code - A Handbook of Software Craftsmanship</title><content type='html'>&lt;span style="font-family:georgia;"&gt;My review of &lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Robert Martin's&lt;/a&gt;  (and the rest of the folks at &lt;a href="http://www.objectmentor.com/"&gt;ObjectMentor&lt;/a&gt;) book &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0132350882/"&gt;&lt;span style="font-weight: bold;"&gt;Clean Code: A Handbook of Software Craftsmanship&lt;/span&gt;&lt;/a&gt; was just published in the April 2009 issue of &lt;a href="http://agilejournal.com/articles/magazine"&gt;the Agile Journal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;blockquote&gt;&lt;p&gt;Robert ("Uncle Bob") Martin and the folks at &lt;a href="http://www.objectmentor.com/"&gt;ObjectMentor&lt;/a&gt; have written a new book that &lt;em&gt;should be required reading for all programmers&lt;/em&gt;! When it comes to writing clear and maintainable code, cleanliness is indeed next to godliness, and we should all follow the Boy Scouts' Rule whenever we write or modify any piece of code: &lt;em&gt;leave the place cleaner than when you found it&lt;/em&gt;!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Robert C. Martin&lt;/a&gt; is one of the giants of object-oriented design, and a founding father of the agile manifesto and of agile software development. More recently, he helped kickstart the &lt;a href="http://www.infoq.com/news/2009/03/software_craftsmanship"&gt;software craftsmanship movement&lt;/a&gt;, which gained much attention from &lt;a href="http://www.infoq.com/news/2008/08/manifesto-fifth-craftsmanship"&gt;his keynote at Agile2008&lt;/a&gt; and subsequent talks on &lt;a href="http://www.infoq.com/news/2009/02/craftsmanship-and-ethics-article"&gt;craftsmanship and ethics&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;If you are at all serious about programming, then as soon as you finish reading this review you should get your hands on &lt;em&gt;Clean Code&lt;/em&gt; as fast as you can! Get it. Read it. Learn it. Then &lt;i&gt;live it!&lt;/i&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://agilejournal.com/articles/columns/articles/1466-featured-book-clean-code-a-handbook-of-software-craftsmanship"&gt;&lt;i&gt;Read the full review&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Additional resources&lt;/b&gt; related to the book are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Uncle Bob's article "&lt;a href="http://www.informit.com/articles/article.aspx?p=1235624"&gt;What is Clean Code?&lt;/a&gt;" which is an online version of the first chapter of the book&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.informit.com/content/images/9780132350884/samplepages/0132350882_Sample.pdf"&gt;PDF of an excerpt from the book&lt;/a&gt;, including the TOC, Foreword, Introduction, and Chapter 1&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.informit.com/articles/article.aspx?p=1313447"&gt;Clean Code Tip of the Week #1&lt;/a&gt; and other Clean Code tips available online from the "Extras" tab of the &lt;a href="http://www.informit.com/store/product.aspx?isbn=0132350882"&gt;InformIT site for the book&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-7985457036944218911?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/7985457036944218911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=7985457036944218911&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7985457036944218911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/7985457036944218911'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/book-clean-code-handbook-of-software.html' title='BOOK: Clean Code - A Handbook of Software Craftsmanship'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-6524440954959038472</id><published>2009-04-07T11:25:00.001-05:00</published><updated>2009-04-08T03:00:41.639-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build-Mgmt'/><title type='text'>CRISP Builds</title><content type='html'>&lt;span style="font-family:georgia;"&gt;&lt;a href="http://langrsoft.com/"&gt;Jeff Langr&lt;/a&gt; and &lt;a href="http://agileotter.blogspot.com/"&gt;Tim Ottinger&lt;/a&gt; have a pretty sweet and useful "gig" going on at &lt;a href="http://agileinaflash.blogspot.com/"&gt;&lt;i&gt;The Agile In a Flash project&lt;/i&gt;&lt;/a&gt;, which will "result in a book and replenishable deck of at least 52 flash cards."&lt;br /&gt;&lt;br /&gt;I made a suggestion to them late last week about Mike Clark's "CRISP" acronym for builds, and they turned it into a &lt;a href="http://agileinaflash.blogspot.com/2009/04/crisp.html"&gt;CRISP flashcard&lt;/a&gt;. Here is the comment I made that led to that result ...&lt;br /&gt;&lt;blockquote&gt;Mike Clark gave a 2004 presentation on &lt;a href="http://www.denverjug.org/meetings/files/200410_automation.pdf"&gt;Pragmatic Project Automation&lt;/a&gt; that included a description of what he called the "CRISP" criteria for build:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;C&lt;/b&gt;omplete (recipe lists all ingredients)&lt;/li&gt;&lt;li&gt;&lt;b&gt;R&lt;/b&gt;epeatable (version control time machine)&lt;/li&gt;&lt;li&gt;&lt;b&gt;I&lt;/b&gt;nformative (radiate valuable information)&lt;/li&gt;&lt;li&gt;&lt;b&gt;S&lt;/b&gt;chedulable (complete and repeatable)&lt;/li&gt;&lt;li&gt;&lt;b&gt;P&lt;/b&gt;ortable (machine-independent)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;There is a similar description in the 2007 presentation “&lt;a href="http://www.houstontechfest.com/dotnetnuke/LinkClick.aspx?fileticket=fS+wZZsJyCw=&amp;amp;tabid=67&amp;amp;mid=440"&gt;All Builds are Good&lt;/a&gt;”, and a more detailed description in this 2007 &lt;a href="http://www.pshymorphic.com/files/CT-SPIN%2033%20-%20Pragmatic%20Project%20Automation%20-%20Jan%20Pool%20-%20NioCAD.pdf"&gt;CT-SPIN presentation on project automation&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;C&lt;/b&gt;omplete:&lt;br /&gt;• Build from scratch and independently without human intervention.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;R&lt;/b&gt;epeatable:&lt;br /&gt;• Must be able to create exactly the same build at a later time.&lt;br /&gt;• Store build scripts in source control.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I&lt;/b&gt;nformative:&lt;br /&gt;• "Detector of unexpected changes".&lt;br /&gt;• Provide information on why a build failed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;S&lt;/b&gt;cheduled:&lt;br /&gt;• Let the builds run automatically.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;P&lt;/b&gt;ortable:&lt;br /&gt;• Build should be runnable from any system (same platform), not just that of the developer.&lt;br /&gt;• For cross-platform software, it should build on all platforms.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I'm curious as to whether or not others have come across this acronym and if they like it and find it useful? What corrections, clarifications or additions do you think should be made to the acronym or its description?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-6524440954959038472?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/6524440954959038472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=6524440954959038472&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6524440954959038472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/6524440954959038472'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/crisp-builds.html' title='CRISP Builds'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4469521804783519070</id><published>2009-04-06T07:03:00.013-05:00</published><updated>2009-04-12T19:19:46.312-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>What is Agility? Part 1 - Business Agility</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Kicking off my series of posts on the subject of "&lt;a style="font-style: italic;" href="http://blog.bradapp.net/2009/04/what-is-agility.html"&gt;What is Agility?&lt;/a&gt;" is this first posting on Business Agility, and how agile methods got its name from those roots...&lt;br /&gt;&lt;br /&gt;Some of you may already know that before Agile methods used the word "Agile", the term "Lightweight methods" was being generally used to describe them. It wasn't until the February 2001 gathering at Snowbird, Utah that they began using the term "Agile", and the "Agile manifesto" was born.&lt;br /&gt;&lt;br /&gt;At that time, the term "Agile" was already in use to refer to "business agility" by those in the field of organizational change and learning. I know of at least a few people (Mike Beedle for example) who were there at Snowbird that knew this and even liked the term and used it from time-to-time before that now famous gathering.&lt;br /&gt;&lt;br /&gt;So the then lightweight methods community intentionally adopted the terms "agile" and "agility" in this context. Let's explore our roots and see exactly what "Business Agility" means. I surfed the net for some time and gathered a number of definitions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;b&gt;Business Agility is ...&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;ul&gt;&lt;table border="1" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;“the ability to both &lt;i&gt;create&lt;/i&gt; and &lt;i&gt;respond to&lt;/i&gt; [anticipated &lt;i&gt;and&lt;/i&gt; unanticipated] change in order to profit in a turbulent business environment.” &lt;i&gt;—[&lt;a href="http://www.informit.com/articles/article.aspx?p=25930"&gt;James Highsmith&lt;/a&gt; &lt;/i&gt;and &lt;i&gt;&lt;a href="http://www.stsc.hill.af.mil/crosstalk/2002/10/highsmith.html"&gt;Highsmith2&lt;/a&gt;]&lt;/i&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“the ability to adapt rapidly and cost efficiently in response to changes in the business environment.” &lt;i&gt;—[&lt;a href="http://en.wikipedia.org/wiki/Business_Agility"&gt;Wikipedia&lt;/a&gt;]&lt;/i&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“the ability to sense environmental change and to respond efficiently and effectively to it. Sensing the need for change also includes the proactive initiation of change.” &lt;i&gt;—[&lt;a href="http://www.gartner.com/DisplayDocument?id=771215&amp;amp;ref=%27g_fromdoc%27"&gt;Gartner1&lt;/a&gt; &lt;/i&gt;and&lt;i&gt; &lt;a href="http://www.gartner.com/resources/139700/139734/defining_cultivating_and_mea_139734.pdf"&gt;Gartner2&lt;/a&gt;]&lt;/i&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“the capability to be flexible, responsive, adaptive, and show initiative in times of change and uncertainty”&lt;i&gt;—[&lt;a href="http://dictionary.bnet.com/definition/agility.html"&gt;BNET&lt;/a&gt;]&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“the ability of enterprises to cope with unpredictable changes, to survive unprecedented threats from the business environment, and to take advantage of changes as opportunities” &lt;i&gt;—[&lt;a href="http://iloapp.moosterhout.nl/blog/agility?Home&amp;amp;post=12"&gt;Agile Business: The competitive weapon. Market research study in four business segments (2004)&lt;/a&gt;]&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“the ability to swiftly change businesses and business processes beyond the normal level of flexibility in order to effectively deal with unpredictable external and internal changes.” &lt;i&gt;—[&lt;a href="http://iloapp.moosterhout.nl/blog/agility?Home&amp;amp;post=13"&gt;Business Agility in the Netherlands: Research Study Public Sector (2005)&lt;/a&gt;]&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“the capacity to gain competitive advantage by intelligently, rapidly and proactively seizing opportunities and responding to threats.” —S. Meredith and D. Francis (2000)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“the ability to cope with unexpected changes, survive unprecedented threats from the business environment, and take advantage of these changes as opportunities.” —Z. Zhang and H. Sharifi (2000)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;“The ability to thrive in a continuously changing, unpredictable business environment.” —R. Dove (1999)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Those are some nutshell definitions. They are focused on &lt;i&gt;the dynamic capability to swiftly sense and rapidly respond to change using a combination of adaptation&lt;/i&gt; (for unforeseen changes) &lt;i&gt;and flexibility&lt;/i&gt; (for foreseeable changes).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Let's look at some more details from a few more sources ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From &lt;/span&gt;&lt;i style="font-weight: bold;"&gt;&lt;a href="http://www.ceciis.foi.hr/app/index.php/ceciis/2008/paper/view/6/48"&gt;Process Transformation for Reaching Agility: CIO Role&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Business agility calls for quick decisions and action. Agility is the ability of a business system to sense environmental change and respond efficiently and effectively to that change. Any framework for agility must address issues that go well beyond selection of the latest technologies.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Business system's willingness to be agile, its understanding of its own business system building blocks and its enablers of agility, and its adherence to an "agility cycle" are just as important as the judicious use of agility-influencing technologies.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The following four fundamental capabilities enable a business system to increase agile performance across the agility cycle. They are essential to being able to allocate corporate activities to measurable categories:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Awareness&lt;/i&gt; (the right information through data and event monitoring mean knowing what is going on)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Flexibility&lt;/i&gt; (the right options by rule modeling and simulation render possible confronting expected change)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Adaptability&lt;/i&gt; (the right reactions by rapid rule modification enable confronting unexpected change)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Productivity&lt;/i&gt; (the right policies, procedures and operations through automation for executing well day to day).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From &lt;a style="font-style: italic;" href="http://www.d-n-i.net/fcs/pdf/adolph_2006_agile%20lessons_final.pdf"&gt;What Lessons can the Agile Community Learn from a Maverick Fighter Pilot?&lt;/a&gt; and &lt;/span&gt;&lt;i style="font-weight: bold;"&gt;&lt;a href="http://www.allsoulsnyc.org/publications/sermons/ggsermons/thriving-on-chaos.pdf"&gt;Thriving on Chaos&lt;/a&gt;&lt;/i&gt;&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The key to thriving on chaos is a skill Boyd calls agility, which is “the ability to rapidly change one’s orientation—[or] worldview—in response to what is happening in the external world.”&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;In the context of battle, agility involves four distinctive activities: observe your environment (yourself; your opponent; the physical, mental, and moral situation; and potential allies and opponents), orient yourself to decide what it all means, reach some type of decision, and attempt to carry out the decision. Observe, orient, decide, and act.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;It turns out that the most critical step in the agility cycle is the first one: observe. This is much more than a process of looking around. Rather, it is a relentless search for the truth about your situation. The idea is to “go out and get all the information you can by whatever means possible.” Why? Because you can never be sure beforehand which stray idea will prove essential.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;In Boyd’s conception, the first step—observe—is the only input from outside yourself. For this reason, how well your orientation matches the real world is largely a function of how well you observe. You are looking for mismatches between your current worldview and the world as it actually is. “A general rule is that bad news is the only kind that will do you any good….&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;You must seek out and find data that doesn’t fit with your worldview and you must do this while there is still time.” Otherwise the world will change and you will find yourself disoriented. You will have lost the initiative, which is dangerous in any conflict. However, if you are able to get the facts right and are willing to orient yourself to them, then astute decisions and effective actions will follow.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From &lt;/span&gt;&lt;a href="http://www.ssa.vic.gov.au/CA2571410025903D/WebObj/agile_government_towards_agile/$File/agile_government_towards_agile.pdf"&gt;&lt;i style="font-weight: bold;"&gt;Towards Agile Government&lt;/i&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;In practice, agility features the following four characteristics: short term frontline responsiveness, strategic adaptation, outcomes focus. preventing or reducing problems before they arise.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Agile organisations are ‘hyper strategic’, tackling challenges wrought by turbulent external environments, while also preparing for future changes that are not yet apparent. They move through an agility cycle, seeking out and interpreting information to inform short, medium and long term decision making and action. The agility cycle is a four-step process through which organisations:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;scan&lt;/i&gt; emerging trends and issues&lt;/li&gt;&lt;li&gt;&lt;i&gt;sense&lt;/i&gt; opportunities to translate information into actionable solutions&lt;/li&gt;&lt;li&gt;&lt;i&gt;respond&lt;/i&gt; to opportunities and risks&lt;/li&gt;&lt;li&gt;&lt;i&gt;shape&lt;/i&gt; future environments.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://essay.utwente.nl/58072/1/scriptie_H_van_Ravenswaay_Claasen.pdf"&gt;Agility thru SOA&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; (Master’s Thesis) &lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;i&gt;Business Agility&lt;/i&gt; is the ability to sense internal and external changes, as well as being able to swiftly adapt, in reaction to sensed changes, businesses and business processes beyond the normal (operational) levels of flexibility, effectively using internal and external resources, to effectively manage unpredictable external and internal changes.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Different types of agility:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Product Agility&lt;/i&gt; – the ability to easily change between various products to address changing needs&lt;/li&gt;&lt;li&gt;&lt;i&gt;Process Agility&lt;/i&gt; – the ability to easily adapt the internal processes to address changing circumstances&lt;/li&gt;&lt;li&gt;&lt;i&gt;Market Agility&lt;/i&gt; – the ability to easily enter and change markets&lt;/li&gt;&lt;li&gt;&lt;i&gt;Network Agility&lt;/i&gt; – the ability to easily coordinate and cooperate with various partners, ranging from suppliers to customers&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;So what did we learn?&lt;/span&gt; Share your thoughts! (I'll share mine in my next blog-entry.)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4469521804783519070?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4469521804783519070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4469521804783519070&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4469521804783519070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4469521804783519070'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/what-is-agility-part-1-business-agility.html' title='What is Agility? Part 1 - Business Agility'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-51591252562152609</id><published>2009-04-03T12:52:00.004-05:00</published><updated>2009-04-03T14:41:42.276-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>What is Agility?</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I'm involved in an Agile adoption effort that has done of lot of communication as of late. And one of  the things we always cover in any intro training is the question &lt;i&gt;What is Agile Software Development?&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;Our standard answer and presentation materials usually involves citing the text of the &lt;a href="http://www.agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;and either &lt;a href="http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm"&gt;this definition by Scott Ambler&lt;/a&gt; and/or this comment by James Highsmith that &lt;span style="font-style: italic;font-family:times new roman;" &gt;"Ultimately, Agility is about embracing change rather than attempting to resist it, [and a] focus on talent and skills of individuals and teams."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've noticed our responses attempt to describe what Agile Development is by describing what it looks like (Ambler's definition), or the Agile values (from the manifesto), or the emphasis on change and collaboration (Highsmith). &lt;b&gt;What they don't do is describe what Agility is!&lt;/b&gt; The Highsmith comment comes closest, but none of them really describe what it means for something to have the ability called agility.&lt;br /&gt;&lt;br /&gt;I think it is key to understand what Agility is, and why/how it works, in order to understand Agile software development. I think without that understanding, it can be much harder to understand and apply the principles of lean/agile development, and to "inspect and adapt" to improve the &lt;i&gt;right&lt;/i&gt; things in the &lt;i&gt;right&lt;/i&gt; direction.&lt;br /&gt;&lt;br /&gt;Toward that end, I did a bit of research on a lot of different definitions of agility (beyond some of my previous blog entries like &lt;a href="http://blog.bradapp.net/2006/05/nutshell-definitions-of-agile.html"&gt;Nutshell definitions of Agile development&lt;/a&gt;, &lt;a href="http://blog.bradapp.net/2007/04/agile-development-distilled.html"&gt;Agile development distilled&lt;/a&gt;, and &lt;a href="http://blog.bradapp.net/2006/05/business-agility-defined.html"&gt;Business Agility defined&lt;/a&gt;) and of various attributes of agility. And I plan to share them in some blog-entries for each of the following:&lt;br /&gt;&lt;b&gt;&lt;ul&gt;&lt;li&gt;Business Agility&lt;/li&gt;&lt;li&gt;The Agility Cycle&lt;/li&gt;&lt;li&gt;Software Agility&lt;/li&gt;&lt;li&gt;Self-Organization&lt;/li&gt;&lt;li&gt;Collective Intelligence&lt;/li&gt;&lt;li&gt;Social Creativity&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Swarm Behavior&lt;/li&gt;&lt;li&gt;Emergence&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Collective Ownership&lt;/li&gt;&lt;li&gt;Change &amp;amp; Uncertainty&lt;/li&gt;&lt;li&gt;Simplicity, Sufficiency and Sustainability&lt;/li&gt;&lt;/ul&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So "stay tuned" to this blog over the next several days because I intend to post on this more than weekly.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-51591252562152609?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/51591252562152609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=51591252562152609&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/51591252562152609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/51591252562152609'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/what-is-agility.html' title='What is Agility?'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4318553320969957025</id><published>2009-04-02T18:34:00.002-05:00</published><updated>2009-04-02T18:39:12.938-05:00</updated><title type='text'>I'm ba-a-ack!</title><content type='html'>I must apologies to my readers of this blog (or at least whomever is left). I haven't blogged in 9 months. I became heavily immersed in an agile adoption effort that had just managed to succeed in getting the senior-most management fully bought-in to Agile.&lt;br /&gt;&lt;br /&gt;I've had a LOT of ideas I've been wanting to blog, many of them queued up and waiting, but I kept having too many other higher-priority things on my plate. I finally have a bit more breathing room now and plan to "catch up". So expect a burst of activity over the next few months.&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4318553320969957025?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4318553320969957025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4318553320969957025&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4318553320969957025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4318553320969957025'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2009/04/im-ba-ack.html' title='I&apos;m ba-a-ack!'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1112142673688587479</id><published>2009-02-21T00:18:00.000-06:00</published><updated>2011-03-31T19:56:37.915-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>Gee Scrum Method Owners!</title><content type='html'>&lt;span style="font-style: italic;"&gt;[&lt;span style="font-weight: bold;"&gt;Personal note:&lt;/span&gt; I first wrote this down back in April 2009 a few months or so before the Agile 2009 Conference in Chicago. I later put it down here in my blog with  the intent to publish it but forgot to take it out of "draft" mode.]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;"  &gt;Sung to the tune of &lt;i style=""&gt;&lt;a href="http://www.westsidestory.com/lyrics_krupke_movie.php"&gt;Gee, Officer Krupke!&lt;/a&gt;&lt;/i&gt; from West-Side Story &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:11pt;"  &gt;&lt;span style="font-size:100%;"&gt;-- Music: Leonard Bernstein, Lyrics: Stephen Sondheim &lt;/span&gt;&lt;i style=""&gt;&lt;span style="font-size:100%;"&gt;(see &lt;a href="http://www.youtube.com/watch?v=pq28qCklEHc"&gt;video of the movie performance&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Background:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;For about a year now, I believe there has been a greater than usual amount Agile-related blogging and mail-list discussion on the subject of the shortcomings of what is currently the most popular agile development method: Scrum. Some of them are legitimately about Scrum, others are really more about the kinds of problems one encounters introducing Agile methods without appropriate emphasis/execution of the technical practices (especially Refactoring and TDD).&lt;br /&gt;&lt;br /&gt;Its seems much of it may have started around the same time that Alan Shalloway (and later others, including Ron Jeffries, below) were banned from the &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;"  &gt;&lt;a href="http://groups.yahoo.com/group/scrumdevelopment/"&gt;ScrumDevelopment&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; list for “going meta” and discussing problems with and/or additions to Scrum itself instead of how to apply/use it. Alan subsequently created the&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;"  &gt;&lt;a href="http://tech.groups.yahoo.com/group/leanagile/"&gt; Lean-Agile&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; list for such discussions (and is also working on a &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;"  &gt;&lt;a href="http://www.netobjectives.com/resources/books/lean-agile-software-development"&gt;book&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;).&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;As of this writing, more recent examples include the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;James Shore, &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://www.infoq.com/news/2008/11/decline-of-agile"&gt;The Decline and Fall of Agile&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Two specific threads on the ExtremeProgramming list: &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://tech.groups.yahoo.com/group/extremeprogramming/message/147031"&gt;What about Scrum + CI + Automated-Tests?&lt;/a&gt;&lt;/i&gt;&lt;/b&gt; and &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://tech.groups.yahoo.com/group/extremeprogramming/message/147790"&gt;What if Code Smells were counted as …&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Robert (”Uncle Bob”) Martin, presentation on &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://www.infoq.com/presentations/craftmanship-ethics"&gt;Craftsmanship and Ethics&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;, and a follow-up blog-entry on &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://blog.objectmentor.com/articles/2008/08/14/quintessence-the-fifth-element-for-the-agile-manifesto"&gt;Quintessence: The fifth element for the Agile Manifesto&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The thread from the Lean-Agile list on &lt;i style=""&gt;&lt;a href="http://tech.groups.yahoo.com/group/leanagile/message/2617"&gt;&lt;b&gt;Controlling&lt;/b&gt; &lt;b&gt;Say&lt;/b&gt; (was Definition and Scope of Scrum / PO Role)&lt;/a&gt;&lt;/i&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Ron Jeffries, &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://xprogramming.com/blog/2009/01/30/context-my-foot/"&gt;Context My Foot!&lt;/a&gt;&lt;/i&gt;&lt;/b&gt; and &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://xprogramming.com/blog/2009/02/01/quality-speed-tradeoff-youre-kidding-yourself/"&gt;Quality-Speed Tradeoff — You’re kidding yourself&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style=""&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Jurgen Appelo, &lt;b style=""&gt;&lt;i style=""&gt;&lt;a href="http://www.noop.nl/2009/02/the-decline-and-fall-of-agilists.html"&gt;The Decline and Fall of Agilists&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Cast of Characters:&lt;/span&gt; &lt;/span&gt;You will need individual actors portraying the following roles!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Alan Shalloway, &lt;a href="http://www.netobjectives.com/"&gt;www.netobjectives.com&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Ron Jeffries, &lt;a href="http://www.xprogramming.com/"&gt;www.XProgramming.com&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Peter Alfvin, &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Brad Appleton, &lt;a href="http://blog.bradapp.net/"&gt;blog.bradapp.net&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Uncle Bob (Robert C. Martin), &lt;a href="http://www.objectmentor.com/"&gt;www.objectmentor.com&lt;/a&gt;  &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 255);"&gt;NOTE that the people are real, but the dialogue is fictional, even tho it is derived from bits and pieces of actual messages and blog-posts.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Lyrics:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON &lt;/span&gt;(spoken): &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Hey, you! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN &lt;/span&gt;(spoken): &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Me, Officer Jeffries? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON &lt;/span&gt;(spoken):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;That’s &lt;span style="font-style: italic;"&gt;Scrum Master &lt;/span&gt;Jeffries to you! Gimme one good reason&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; for not draggin’ ya to the scrumdevelopment list&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;to answer for blamin all yer troubles on Scrum.&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; What’ll you say to Schwaber, ya punk!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN &lt;/span&gt;(sings):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Dear kindly Scrum-Lord Schwaber, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;You gotta understand,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It's just our agile nature &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;that gets us Scrum-list banned.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Our management is clueless,&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; our backlog’s full of junk,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Golly Moses, that’s where Scrum has flunked!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN &lt;/span&gt;with &lt;span style="font-weight: bold;"&gt;BRAD &lt;/span&gt;&amp;amp; &lt;span style="font-weight: bold;"&gt;PETER&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Gee Scrum-method owners, we're very upset;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Your method doesn’t scale and we’re in technical debt!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We ain't no extremists, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Our motives are clean,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Deep down inside us there is Lean!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN&lt;/span&gt;: There is Lean!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;ALL:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;There is Lean, there is Lean, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;There is untapped Lean,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Deep inside XP and Scrum there’s Lean.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON &lt;/span&gt;(spoken -- imitating Scrum list-owner):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;That's an off-topic discussion!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN &lt;/span&gt;(spoken):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Lemme tell it to the world!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON &lt;/span&gt;(“Scrum list-owner”):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Just tell it some place else!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN &lt;/span&gt;(singing, while creating the Lean-Agile list):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Dear Lean-Agile list-readers, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;The Scrum-list is too closed.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Despite their Agile leaders, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;the truth must be exposed:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;They didn't want discussion &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;of what Scrum oughta add.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Leapin' lizards, that's why I'm so “rad!”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Hey Scrum-method owners, you're really deep-fried!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;There’s plenty wrong with Scrum that needs Lean-thinking applied!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;PETER&lt;/span&gt;: Those darn product-owners have gotta be curbed!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON&lt;/span&gt;:     They’re pathologic'ly disturbed!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD&lt;/span&gt;: &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;They’re disturbed?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALL&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;They're disturbed. They're disturbed, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;They're the most disturbed,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Like they're pathologic'ly disturbed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN &lt;/span&gt;(spoken, imitating Mary Poppendieck):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Hear ye! Hear ye! &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;In the opinion of Lean-thinking, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;these POs act depraved on account of&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; they ain't had a proper “frame.”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD &lt;/span&gt;(spoken): Hey, they’re depraved on account of their dis-functional context!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON &lt;/span&gt;(spoken): Lemme to introduce ‘em to my fully functional foot!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD &lt;/span&gt;(singing, to &lt;span style="font-weight: bold;"&gt;Ron&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;My PO is so dastard, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;da coach won’t hear my plea,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;da team’s code ain’t refactored, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;‘cuz PO won’t agree.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;They add it to the backlog &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;for later to address,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Goodness gracious, dat's why it’s a mess!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Please! “Bad product-owners!” that reason’s so lame!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;You shouldn’t even ask them, (and you should be ashamed)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It’s really yer context that oughta be changed,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It’s economic’ly deranged!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD&lt;/span&gt;: &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;We’re deranged?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALL&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We’re deranged! We’re deranged! &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;We are so de-ranged,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We're so economic’ly deranged!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON &lt;/span&gt;(spoken):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In my opinion, Scrum don't need &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;to have its head roles re-thunk at all.&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;Use of RASCI matrices is surely a &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;management disease!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD &lt;/span&gt;(spoken):     Hey, I got a management disease!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALL &lt;/span&gt;(spoken sarcastically): So go buy an agile management tool.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD &lt;/span&gt;(singing to "Agile tool-vendor"):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Dear kindly Scrum-tool master, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;they say go use your tools.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;They’ll save us from disaster, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;‘cuz they’ll enforce da rules. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;And for our retrospectives, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;they’ll generate nice charts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Glory Osky, that's why our code smarts!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;UNCLE BOB&lt;/span&gt; (with &lt;span style="font-weight: bold;"&gt;RON&lt;/span&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Yikes! Stupid tool vendors, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;you've done it again.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This team don't need a tool, &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;just index cards and a pen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It ain't just enough to inspect-and-adapt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;UNCLE BOB&lt;/span&gt;: Value craftsmanship over crap!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD&lt;/span&gt;: Ship 'er crap?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALL&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Don’t ship crap! Don’t make crap!&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; Craftsmanship over crap!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Craft clean code as if you give a crap.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;UNCLE BOB&lt;/span&gt; (spoken):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We hereby declare this project’s code to be crap &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;on account of its ignerantive and excremental development. &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Failure to write clean code is professionally irresponsible!&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;TDD and refactoring are not optional!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;RON&lt;/span&gt;:         The problem is your context!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;ALAN:       &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;The answer is go Lean!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BRAD&lt;/span&gt;:     The problem is design debt!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;BOB&lt;/span&gt;:         The answer is code clean!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;PETER&lt;/span&gt;:    The problem is Scrum's growing!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALAN&lt;/span&gt;:      The answer is Scrum's grown!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;ALL&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Scrum Lords we got troubles of our own!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;To all unclean-coders &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;We just have to yell,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;“Your projects can’t be agile if your code-bases smell!”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Gee, Scrum method-owners,&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;What are we to do!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Dear Scrum method-owners,&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;SCRUM YOU!!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Acknowledgements:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;I  credit Ron Jeffries with my inspiration (obsession?) in crafting the above! Ron quoted a line from the West-Side Story song “Gee Officer  Krupke!” in one of his email replies and I couldn’t get the song out of  my head all that day and began piecing together the above (which I developed iteratively &amp;amp; incrementally using TDD and  refactoring – of course :-).&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1112142673688587479?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1112142673688587479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1112142673688587479&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1112142673688587479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1112142673688587479'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2011/03/gee-scrum-method-owners.html' title='Gee Scrum Method Owners!'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1628660578760570394</id><published>2008-07-03T01:27:00.003-05:00</published><updated>2008-08-10T02:20:50.373-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Summer of Books</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I'm going on some long needed (and hard earned) vacation. I won't be blogging again for about one month (so this will likely be my only entry for July).&lt;br /&gt;&lt;br /&gt;I've got a lot of REALLY GREAT and interesting books to try and catch up on. I hope to blog about them when I return. Here is what's on my summer reading list:&lt;br /&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt style="font-family: arial;"&gt;&lt;b&gt;&lt;a href="http://www.amazon.com/Theory-U-Leading-Future-Emerges/dp/0974239054"&gt;Theory U: Leading from the Future as it Emerges&lt;/a&gt;&lt;/b&gt;, by &lt;a href="http://www.ottoscharmer.com/"&gt;C. Otto Scharmer&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;I saw the executive summary and other chapters at &lt;a href="http://www.theoryu.com/"&gt;www.TheoryU.com&lt;/a&gt; (also see &lt;a href="http://www.dialogonleadership.org/"&gt;www.dialogonleadership.org&lt;/a&gt;). This looks to be THE penultimate book on leadership for the Agile Organization. It doesn't even use the word "Agile" anywhere, but the values and principles from the book are so well aligned with Agile values and principles, it is positively uncanny.&lt;/dd&gt;&lt;br /&gt;&lt;dt style="font-family: arial;"&gt;&lt;b&gt;&lt;a href="http://www.pragprog.com/titles/fr_arr/advanced-rails-recipes"&gt;Advanced Rails Recipes&lt;/a&gt;&lt;/b&gt; (by Mike Clark), and &lt;b&gt;&lt;a href="http://www.pragprog.com/titles/fr_deploy/deploying-rails-applications"&gt;Deploying Rails Applications&lt;/a&gt;&lt;/b&gt; (by Ezra Zygmuntowicz, Bruce Tate, and Clinton Begin)&lt;/dt&gt;&lt;dd&gt;The latest Ruby &amp;amp; Rails books from the &lt;a href="http://www.pragmaticbookshelf.com/"&gt;Pragmatic Bookshelf&lt;/a&gt;.&lt;br /&gt;&lt;/dd&gt;&lt;a href="http://www.informit.com/store/product.aspx?isbn=0321504720"&gt;&lt;br /&gt;&lt;/a&gt;&lt;dt style="font-family: arial;"&gt;&lt;a href="http://www.informit.com/store/product.aspx?isbn=0321504720"&gt;&lt;b&gt;Implementing SOA: Total Architecture in Practice&lt;/b&gt;&lt;/a&gt;, by Paul C. Brown&lt;/dt&gt;&lt;dd&gt;I was extremely impressed with Paul Brown's earlier book on &lt;a style="font-family: arial;" href="http://www.informit.com/store/product.aspx?isbn=0321508912"&gt;&lt;b&gt;Succeeding with SOA: Realizing Business Value through Total Architecture&lt;/b&gt;&lt;/a&gt;, and am looking forward to this follow-up work.&lt;/dd&gt;&lt;br /&gt;&lt;dt style="font-family: arial;"&gt;&lt;a href="http://www.informit.com/store/product.aspx?isbn=0137130120"&gt;&lt;b&gt;Eating the IT Elephant: Moving from Greenfield Development to Brownfield&lt;/b&gt;&lt;/a&gt;, by Richard Hopkins and Kevin Jenkins&lt;/dt&gt;&lt;dd&gt;I received a review copy of this. Don't exactly know what to make of it just yet - but it does seem intriguing&lt;/dd&gt;&lt;br /&gt;&lt;dt style="font-family: arial;"&gt;&lt;a href="http://www.informit.com/title/0321509366"&gt;&lt;b&gt;Emergent Design: The Evolutionary Nature of Professional Software Development&lt;/b&gt;&lt;/a&gt;, by Scott L. Bain&lt;/dt&gt;&lt;dd&gt;This books looks to be an excellent "one stop shop" for learning the theory and practice of Test-Driven Development, Refactoring, Simple Design, and Design Patterns, all as part of a single integrated and coherent method&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a style="font-family: arial;" href="http://www.informit.com/title/0321514521"&gt;&lt;b&gt;Agile Adoption Patterns: A Roadmap to Organizational Success&lt;/b&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, by Amr Elssamadisy&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;Amr has been writing for &lt;a href="http://www/agilejournal.com/"&gt;&lt;i&gt;the Agile Journal&lt;/i&gt;&lt;/a&gt; and &lt;a href="http://www.infoq.com/agile"&gt;InfoQ.com&lt;/a&gt; and I have been looking forward to seeing this book in hardcopy.&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt style="font-family: arial;"&gt;&lt;a href="http://www.informit.com/title/0321502752"&gt;&lt;b&gt;The Software Project Manager's Bridge to Agility&lt;/b&gt;&lt;/a&gt;, by &lt;a href="http://www.sligerconsulting.com/"&gt;Michelle Sliger&lt;/a&gt; and &lt;a href="http://www.agileevolution.com/"&gt;Stacia Broderick&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;I think this is going to be THE book for all traditional PMPs trying to make the transition to agile project management.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;a style="font-family: arial;" href="http://www.amazon.com/Changing-Software-Development-Learning-Become/sim/047051504X/2"&gt;&lt;b&gt;Changing Software Development: Learning to Become Agile&lt;/b&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, by Alan Kelly&lt;/span&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt;This books seems to have an interesting take on the connection between Agile, Lean, and Learning Organizations.&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;I have a few other books too, but they are much shorter :-)&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Have a great July everybody!!!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1628660578760570394?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1628660578760570394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1628660578760570394&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1628660578760570394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1628660578760570394'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/07/summer-of-books.html' title='Summer of Books'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-959887578691941810</id><published>2008-06-26T01:45:00.007-05:00</published><updated>2008-08-08T03:04:19.182-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code-Mgmt'/><title type='text'>Assigning Code Ownership-Policy Ownership</title><content type='html'>&lt;span style="font-family:georgia;"&gt;&lt;a href="http://www.noop.nl/"&gt;Jurgen Appelo&lt;/a&gt; has an interesting article on &lt;a href="http://www.stickyminds.com/"&gt;StickyMinds&lt;/a&gt; entitled "&lt;a href="http://www.stickyminds.com/s.asp?F=S13816_ART_2"&gt;&lt;i&gt;Code Ownership Re-Visited&lt;/i&gt;&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;Jurgen prefers the term "artifact assignment" rather than "code ownership" and explains there are 4 methods of artifact assignment:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;Local Artifact Assignment (LAA)&lt;/i&gt; delegates policy to subsystems and subsubsystems (etc.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Authoritarian Artifact Assignment (AAA)&lt;/i&gt; assigns change/access-control access-control of of ALL related artifacts to a single individual "benevolent dictator" who approves/authorizes all changes and who may also assign individual change-tasks to developers&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Collective Artifact Assignment (CAA)&lt;/i&gt; assigns the whole team (rather than any one person) as collectively accountable for all its artifacts&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Individual Artifact Assignment (IAA)&lt;/li&gt;&lt;/ol&gt;He also provides a nice set of criteria to help decide which policy to use.&lt;br /&gt;&lt;br /&gt;This seems very different from the 4 kinds of ownership I described in "&lt;a href="http://www.blogger.com/www.cmcrossroads.com/content/view/6757/96/"&gt;&lt;em&gt;Situational Code Ownership: Dynamically Balancing Individual -vs- Collective Ownership&lt;/em&gt;&lt;/a&gt;" where I define what amounts to Non-Ownership (which can sometimes be the result of Dictatorship), Individual Ownership, Stewardship, and Collective Ownership  and show how each maps to a corresponding leadership-style of &lt;a href="http://changingminds.org/disciplines/leadership/styles/situational_leadership_hersey_blanchard.htm"&gt;the Situational Leadership Model&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So what gives? What explains this difference?&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;I think Jurgen would probably consider Stewardship as a weak form of Individual ownership (many others would too, though I staunchly disagree for reasons elaborated in the aforementioned article).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Authoritarian Assignment would be akin to the form of Non-Ownership that results from Dictatorship (or "director-ship" to be more precise) where assignments are made per modification/tasks by a director (or "benevolent dictator")&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;I would argue that the first two methods Jurgen describes above aren't really artifact-assignment policies, but instead are assignment-ownership policies: They're not so much about making a decision among ownership-policies as they are about making a policy for ownership decisions. Rather than deciding "who should own which artifacts", they decide "who should own the decision" to make such artifact assignments.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;In other words, the first two policies Jurgen defines are about &lt;i&gt;decision-rights to assign modification-rights&lt;/i&gt; to owners, and not about the modification-rights (or ownership assignments) themselves. As such, it raises an important point taken for granted in my article and in so many other discussions on this topic. Most of the prior discussion probably has assumed that the decision about which ownership-policy to adopt was made either "by the team" or by the team's "leadership" (that might be a manager, a technical-lead, a project-lead, or any combination thereof).&lt;br /&gt;&lt;br /&gt;Another common assumption is that such ownership is defined along "&lt;i&gt;architectural&lt;/i&gt;" boundaries such as individual artifacts/files, classes/modules, or packages, components and subsystems. Other possibilities are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Functional &lt;/i&gt;boundaries (e.g., by feature/feature-set, story/theme/epoch, or use-cases)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Project &lt;/i&gt;boundaries (e.g., work-breakdown-structures, tasks, activities)&lt;/li&gt;&lt;li&gt;&lt;i&gt;Role/discipline specialization&lt;/i&gt; boundaries (e.g., requirements, tests, models, database, UI, programming-language, user/help documentation, etc.), and even ...&lt;/li&gt;&lt;li&gt;&lt;i&gt;Configuration/variation&lt;/i&gt; boundaries (e.g., version, variant, branch, platform). In fact some of these stretch across multiple &lt;a href="http://www.cmcrossroads.com/bradapp/acme/branching/#DimensionsOfBranching"&gt;dimensions&lt;/a&gt; of a project/product and  might even be used in combination.&lt;/li&gt;&lt;/ul&gt;With Agile development, the emphasis is to break-down communication boundaries and any corresponding separation related to role, or phase, or physical boundaries and to instead prefer customer-determined  boundaries of "scope" and "deliverable value" (e.g., stories, features or MMFs, use-cases, etc.).&lt;br /&gt;&lt;br /&gt;So you will see a definite (but time-constrained) assigning of things like tasks to owners and stories (though the "owners" sign-up rather than "being assigned"). Those kinds of boundaries encourage closer and more frequent communication rather than separate &amp;amp; isolated (and less frequent) communication.&lt;br /&gt;&lt;br /&gt;In the end, with Agile methods, it's all about maximizing learning and knowledge sharing &amp;amp; transfer rather than compartmentalizing knowledge into pigeon-holed roles and responsibilities. One opts for "separation of concerns" without "separation of those concerned" (&lt;i&gt;work&lt;/i&gt; is isolated and separated, but &lt;u&gt;not people&lt;/u&gt;).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-959887578691941810?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/959887578691941810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=959887578691941810&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/959887578691941810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/959887578691941810'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/06/assigning-code-ownership-policy.html' title='Assigning Code Ownership-Policy Ownership'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2780499931279476850</id><published>2008-06-19T00:01:00.014-05:00</published><updated>2009-12-22T12:28:25.941-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build-Mgmt'/><category scheme='http://www.blogger.com/atom/ns#' term='Version-Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Four Rules for Simple Codelines</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Some of you may be aware of Kent Beck's &lt;a href="http://c2.com/cgi/wiki?XpSimplicityRules"&gt;Four Rules of Simple Code&lt;/a&gt; that state simple code:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Correctly runs (and passes) all the tests&lt;/li&gt;&lt;li&gt;Contains no duplication (&lt;a href="http://c2.com/cgi/wiki?OnceAndOnlyOnce"&gt;OnceAndOnlyOnce&lt;/a&gt; and &lt;a href="http://c2.com/cgi/wiki?DontRepeatYourself"&gt;The DRY Principle&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Clearly expresses all the ideas/intentions we needed to express (reveals all intent and intends all it reveals)&lt;/li&gt;&lt;li&gt;Minimizes the number of classes and methods (has no superfluous parts)&lt;/li&gt;&lt;/ol&gt;(I've seen some boil this down into some of the same rules for writing clear prose: correct, consistent, clear, and concise.)&lt;br /&gt;&lt;br /&gt;Lately I've been noticing some parallels to the above and rules for what I would call "simple codelines" and I think there may be a similar way of expressing them...&lt;br /&gt;&lt;br /&gt;Simple codelines:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;Correctly build, run (and pass) all the tests&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Contain no duplicate work/work-products&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Transparently contain all the changes we needed to make (and none of the ones we didn't)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Minimize the number and length of sub-branches and unsynchronized work/changes&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;To elaborate further...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;Correctly build, run (and pass) all the tests&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;This is of course the most obvious and basic of necessities for any codeline. If the codeline (or the "build") is broken, then integration is basically blocked, and starting new work/changes for the codeline is hindered.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;Contains no duplicate work/products&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;The same work and work-products should be done &lt;a href="http://c2.com/cgi/wiki?OnceAndOnlyOnce"&gt;OnceAndOnlyOnce&lt;/a&gt;! Sometimes effort is spent more than once to introduce the same change/functionality. This is sometimes because of miscoordination, or simply lack of realization that what two different developers were working on required each of them doing some of the same things (and perhaps should have been accomplished in smaller chunks).&lt;br /&gt;&lt;br /&gt;Other times, rather than modify or refactor a common file, some will simply copy-and-paste the contents of one or more files (or directories/folders) because they don't want to have to worry about reconciling what would otherwise be merges of concurrent changes to the common files.&lt;br /&gt;&lt;br /&gt;This is akin to neglecting to refactor at the "physical" level (of files and folders) as opposed to the "logical" level of classes and methods. It adds more complexity and (over time) inconsistency to the set of artifacts and versions that make up the codeline, and also eventually adds to the time it takes to merge, build, and test any integrated changes.&lt;br /&gt;&lt;br /&gt;If content is being added to the codeline, we want that content to have to be added only once, without any duplicate or redundant human effort.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;Transparently contains all the changes we needed to make (and none of the ones we didn't)&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;The above is sometimes the cause of much undesirable additional effort that is imposed for the sake of attaining traceability and ensuring process compliance/enforcement. Here, I mean to focus on the ends rather than the means, and I say &lt;i&gt;transparency&lt;/i&gt; rather than traceability for that very reason.&lt;br /&gt;&lt;br /&gt;If people are working in a task-based and test-driven manner, it should be simple to report what changes have been made since a previous commit and that only intended tasks were worked-on and integrated.&lt;br /&gt;&lt;br /&gt;If a codeline is truly simple, then it should be very simple and easy to reveal all the changes that went into it without adding a lot of overhead and constraints to development. It should be easy to tell which changes/tasks have been integrated and what functionality and tests they correspond to. One very simple and basic means of tying checkins (or "commits") to backlog-tasks and their tests can be found &lt;a href="http://blog.bradapp.net/2006/04/extreme-traceability.html"&gt;here&lt;/a&gt;; others are mentioned &lt;a href="http://www.cmcrossroads.com/agile-scm/9089-lean-traceability-a-smattering-of-strategies-and-solutions"&gt;in this article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;Minimizes the number and length of sub-branches and unsynchronized work/changes&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Branching can be a boon when used properly and miserly. It can also add a heck of a lot of complexity and redundancy for maintaining two or more evolving variants of the project. The additional effort to track and merge and build many of the same fixes and enhancements in multiple configurations can be staggering.&lt;br /&gt;&lt;br /&gt;Sometimes such branches are useful or even necessary (and can help with what Lean calls &lt;a href="http://bradapp.blogspot.com/2006/06/nested-synchronization-and-harmonic.html"&gt;nested synchronization and harmonic cadences&lt;/a&gt;). But they should be as few and as short-lived as possible, preferably living no longer than the time it takes to complete a fine-grained task or to integrate several fine-grained tasks.&lt;br /&gt;&lt;br /&gt;Even when there are no sub-codelines of a branch, there can still be un-integrated (unsynchronized) work-in-progress in the form of long-lived or large-grained tasks with changes that have not yet been checked-in or synced-up with the codeline. Keeping tasks short-lived and fine-grained (e.g., on the order of minutes &amp;amp; hours instead of hours &amp;amp; days) helps ensure the codeline is continuously integrated and synchronized with all the work that is taking place.&lt;br /&gt;&lt;br /&gt;Another (possibly less obvious form) of unsynchronized work is when there is a discrepancy between the latest version of code checked-in to the codeline, and the latest version of code that constitutes the "last good build." Developer's lives are "simpler" when the latest version of the codeline (the "tip") is the version they need to use to base new work off of, and to update their existing workspace (a.k.a. "sandbox").&lt;br /&gt;&lt;br /&gt;When the latest "good" version of the codeline is not the same (less recent) than the latest version, it can be less obvious to developers which version to use and become less likely that they use/select it correctly. Some use "floating tags" or "floating labels" for this purpose where they "move" the LAST_GOOD_BUILD tag from its previous set of versions to the current set of versions for a newly passed/promoted build. Sometimes the developers always use this "tag" and never use the "tip" (except when they have to merge their changes to the codeline of course).&lt;br /&gt;&lt;br /&gt;Even with floating tags however, it is still simpler and more desirable when the last good version IS the latest version. Even if the latest version is known to be "broken", the lag between "latest" and "last good" version of a codeline can be a source of waste and complexity in the effort required to build, verify and promote a version to be "good" (and can introduce more complexity when having to merge to "latest" if your work has only been synchronized with "last good").&lt;br /&gt;&lt;br /&gt;Plus, this lag-time often leads many a development shop to separate merging (and integration &amp;amp; test) responsibilities between development and so called integrators/build-meisters, where the best developers can attempt is to sync-up their work with the "last good build" and then "submit" that work to a manually initiated build rather than being directly responsible for ensuring the task is "done done" by being fully integrated and passing all its tests.&lt;br /&gt;&lt;br /&gt;Such separation often leads to territorial disputes between roles and build/merge responsibilities. This in turn often leads to adversarial (rather than cooperative and collaborative) relationships and isolated, compartmentalized (rather than shared) knowledge for the execution and success of those responsibilities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;So there we have it! Four rules of simple codelines.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Simple Codelines should:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Correctly build, run (and pass) all the tests&lt;/li&gt;&lt;li&gt;Contain no duplicate work/work-products&lt;/li&gt;&lt;li&gt;Transparently contain all the changes we needed to make (and none of the ones we didn't)&lt;/li&gt;&lt;li&gt;Minimize the number and length of sub-branches and unsynchronized work/changes&lt;/li&gt;&lt;/ol&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Sometimes there are legitimate reasons why some of the rules need to be bent, and there are important &lt;a href="http://www.scmpatterns.com/"&gt;SCM patterns&lt;/a&gt; to know about in order to do it successfully. But any time you do that, &lt;i&gt;it makes your codeline less simple&lt;/i&gt;. So you want those scenarios to be few and far between, and to keep striving for the goal of &lt;a href="http://bradapp.blogspot.com/2006/05/simple-aint-easy-myths-and.html"&gt;simplicity&lt;/a&gt;. (Other &lt;a href="http://www.scmpatterns.com/pubs/IEEESW_2003-03.pdf"&gt;SCM patterns&lt;/a&gt;, such as &lt;i&gt;Mainline&lt;/i&gt;, can help you refactor your codelines/branches to be more simple.)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2780499931279476850?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2780499931279476850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2780499931279476850&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2780499931279476850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2780499931279476850'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/06/four-rules-for-simple-codeline.html' title='Four Rules for Simple Codelines'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5501118105195252664</id><published>2008-06-12T00:57:00.002-05:00</published><updated>2008-07-06T09:59:37.238-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Traceability'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Traceability Matrix in an Agile Project</title><content type='html'>&lt;span style="font-family: georgia;"&gt;&lt;a href="http://www.infoq.com"&gt;InfoQ.com &lt;/a&gt;summarized an email-list discussion thread on the subject of using a &lt;a href="http://www.infoq.com/news/2008/06/agile-traceability-matrix"&gt;Traceability Matrix in an Agile Project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I contributed quite a lot to the thread, and InfoQ apparently included many of the key things I said along with the related URLs to articles I've written. (Thanks guys!)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5501118105195252664?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5501118105195252664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5501118105195252664&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5501118105195252664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5501118105195252664'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/06/traceability-matrix-in-agile-project.html' title='Traceability Matrix in an Agile Project'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1193185714173540715</id><published>2008-06-08T00:06:00.007-05:00</published><updated>2008-12-03T00:46:27.906-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Project-Mgmt'/><title type='text'>Iterative and Incremental redefined redux</title><content type='html'>&lt;span style="font-family:georgia;"&gt;The agile community has written much about this in the past year or so:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://c2.com/cgi/wiki?IterativeVsIncremental"&gt;Iterative vs Incremental&lt;/a&gt;&lt;/em&gt; - from the first (and original) Wiki Web&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/s.asp?F=S13178_COL_2"&gt;&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;a href="http://www.stickyminds.com/s.asp?F=S13178_COL_2"&gt;The Neglected Practice of Iteratation&lt;/a&gt;&lt;/em&gt; - by Jeff Patton&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jan-so.blogspot.com/2008/01/difference-between-iterative-and.html"&gt;&lt;em&gt;Difference between Iterative and Incremental Development&lt;/em&gt;&lt;/a&gt; - nice visual depiction &lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.agilar.org/blog/2008/04/no-waterfall-trap/"&gt;No Waterfall Trap&lt;/a&gt;&lt;/em&gt; -- an even better visual depiction of the difference between iterative and incremental &lt;/li&gt;&lt;li&gt;&lt;a href="http://alistair.cockburn.us/"&gt;&lt;strong&gt;Alistair Cockburn&lt;/strong&gt;&lt;/a&gt; (pronounced "Coh-burn") has written several papers on the subject: &lt;ul&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.stsc.hill.af.mil/crosstalk/2008/05/0805Cockburn.html"&gt;Using Both Incremental and Iterative Development&lt;/a&gt;&lt;/em&gt; -- Crosstalk, May 2008 &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stickyminds.com/BetterSoftware/magazine.asp?fn=cifea&amp;amp;id=108"&gt;&lt;em&gt;Iterative and Incremental Development: How &amp;amp; Why you should be doing BOTH&lt;/em&gt;&lt;/a&gt; -- Better Software, April 2008 &lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://alistair.cockburn.us/index.php/Incremental_means_adding%2C_iterative_means_reworking"&gt;Incremental means adding, Iterative means reworking&lt;/a&gt;&lt;/em&gt; -- Jan 2008 (I dont care for this definition, but the article has lots of good references/resources) &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf"&gt;Iterative and Incremental Development: A Brief History&lt;/a&gt;&lt;/em&gt; -- by Craig Larman and Victor Basili, IEEE Computer, June 2003 &lt;/li&gt;&lt;/ul&gt;Apologies in advance for being a "stick in the mud" on this one - I'm not particularly happy with the definitions so far. I searched around some more on the WWW and came across one I like a lot that I think better meets our needs.&lt;br /&gt;&lt;br /&gt;It is from the paper &lt;a href="http://www.ibm.com/developerworks/rational/library/mar05/bittner/"&gt;&lt;em&gt;What is Iterative Development? (part 1)&lt;/em&gt;&lt;/a&gt;, by Ian Spence and Kurt Bittner,&lt;br /&gt;&lt;blockquote&gt; &lt;u style="font-style: italic; font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;&lt;strong&gt;Iterative and Incremental Development&lt;/strong&gt;:&lt;/u&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;A style of development that involves the iterative application of a set of activities to evaluate a set of assertions, resolve a set of risks, accomplish a set of development objectives, and incrementally produce and refine an effective solution:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-style: italic; font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;&lt;li&gt;It is &lt;em&gt;iterative&lt;/em&gt; in that it involves the successive refinement of the understanding of the problem, the solution's definition, and the solution's implementation by the repetitive application of the core development activities.&lt;a href="http://www.ibm.com/developerworks/rational/library/mar05/bittner/index.html#notes"&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;It is &lt;em&gt;incremental&lt;/em&gt; in that each pass through the iterative cycle grows the understanding of the problem and the capability offered by the solution. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Several or more applications of the iterative cycle are sequentially arranged to compose a project. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;Sadly, development can be iterative without being incremental. For example, the activities can be applied over and over again in an iterative fashion without growing the understanding of the problem or the extent of the solution, in effect leaving the project where it was before the iteration started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;It can also be incremental without being truly iterative. For example, the development of a large solution can be broken up into a number of increments without the repetitive application of the core development activities.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt;To be truly effective the development must be both iterative and incremental. The need for iterative and incremental development arises out of the need to predictably deliver results in an uncertain world. Since we cannot &lt;/span&gt;&lt;em style="font-style: italic; font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;wish&lt;/em&gt;&lt;span style="font-style: italic; color: rgb(102, 51, 0);font-family:trebuchet ms;" &gt; the uncertainty away, we need a technique to master it. Iterative and incremental development provides us with a technique that enables us to master this uncertainty, or at least to systematically bring it sufficiently under control to achieve our desired results.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I like that this definition separated iterative from incremental and then defines them together. I would summarize it as follows (but I like the above better, even if it is longer):&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;blockquote style="color: rgb(0, 0, 102); font-style: italic;"&gt;&lt;strong&gt;Iterative development&lt;/strong&gt; is the cyclical process of repeating a set of development activities to progressively elaborate and refine a complete solution. The “unit” of iterative development is an “&lt;em&gt;iteration&lt;/em&gt;”, which represents one complete cycle through the set of activities.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Incremental development&lt;/strong&gt; is the process of developing and integrating the parts of a system in multiple stages, where each stage implements a working, executable subset of the final system. The “unit” of incremental development is an “&lt;em&gt;increment&lt;/em&gt;”, which represents the executable subset of the system resulting from a particular stage&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;strong style="font-family: georgia;"&gt;&lt;br /&gt;Iterative and Incremental development&lt;/strong&gt;&lt;span style="font-family:georgia;"&gt; is &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Tahoma;font-size:100%;"  &gt;therefore ...&lt;br /&gt;&lt;/span&gt;&lt;blockquote style="font-style: italic; color: rgb(0, 0, 102);"&gt;&lt;span style=";font-family:Tahoma;font-size:100%;"  &gt;the application of an iterative development lifecycle to successively develop and refine working, executable subsets (increments) of a solution that evolves incrementally (from iteration to iteration) into the final product.&lt;/span&gt; &lt;ul  style="font-family:georgia;"&gt;&lt;li  style="font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;Each &lt;em&gt;iteration&lt;/em&gt; successively elaborates  and refines the &lt;em&gt;understanding&lt;/em&gt; of the problem, and of the solution's definition &amp;amp; implementation by learning and adapting to feedback from the previous iterations of the core development lifecycle (analysis, design, implementation &amp;amp; test).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Each &lt;em&gt;increment&lt;/em&gt; successively elaborates and refines the &lt;em&gt;capability&lt;/em&gt; offered by the solution in the form of  tangible working results that can be demonstrated to stakeholders for  evaluation.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;span style="font-family:georgia;"&gt;An &lt;strong&gt;Agile Iteration&lt;/strong&gt; is a planned, time-boxed interval (typically measured in weeks) whose output is a working result that can be demonstrated to stakeholders:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;ul&gt;&lt;li&gt;Agile Iterations focus the whole team on collaborating and communicating effectively for the purpose of rapidly delivering incremental value to stakeholders in a predictable fashion. &lt;/li&gt;&lt;li&gt;After each iteration, the resulting feedback and data can be examined, and project scope &amp;amp; priorities can be re-evaluated to adapt the project's overall performance and optimize its return-on-investment &lt;/li&gt;&lt;/ul&gt;So in addition to the non-agile-specific definitions above, we see that &lt;span style="font-weight: bold;"&gt;Agile iterations are &lt;span style="font-style: italic;"&gt;adaptive&lt;/span&gt;&lt;/span&gt;, in that they use the previous results and feedback to learn, adjust and recalibrate for the next iteration. And &lt;span style="font-weight: bold;"&gt;Agile increments are &lt;span style="font-style: italic;"&gt;tangible&lt;/span&gt;&lt;/span&gt;, in that they can be executed and made accessible to stakeholders for demonstration and evaluation.&lt;br /&gt;&lt;br /&gt;That's my story and I'm sticking to it!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1193185714173540715?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1193185714173540715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1193185714173540715&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1193185714173540715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1193185714173540715'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/06/iterative-and-incremental-redefined.html' title='Iterative and Incremental redefined redux'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4986788325117368715</id><published>2008-06-02T02:10:00.002-05:00</published><updated>2008-07-06T09:46:28.500-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CM'/><category scheme='http://www.blogger.com/atom/ns#' term='Version-Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The Laws of Codeline (Thermo)Dynamics</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Some of the discussion with my co-authors on our &lt;a href="http://http//www.cmcrossroads.com/content/view/10487/641/"&gt;May 2008 CM Journal article on Agile Release Management&lt;/a&gt; spurred some additional thoughts by me that I hope to refine and work into a subsequent article later this year.&lt;br /&gt;&lt;br /&gt;Release Management is about so much more than just the code/codeline (and it being "shippable") it's not even funny. Some other articles to reference and mention some key points from are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.acmqueue.com/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=424"&gt;Breaking the Major Release Habit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cmcrossroads.com/content/view/6737/135/"&gt;Release Management - Making it Lean and Agile&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Kevin Lee has written some GREAT stuff on Release Management that relates to Agile. The best is from the first and last chapters of his book on "The Java™ Developer's Guide to Accelerating and Automating the Build Process" but bits of pieces of it can also be found at:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.buildmeister.com/whitepapers/AgileSCMInTheEnterprise.pdf"&gt;Agile SCM in the Enterprise&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.buildmeister.com/viewarticle.php?id=8"&gt;Software Release Management Best Practices&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.buildmeister.com/viewarticle.php?id=26"&gt;Agile Software Delivery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.buildmeister.com/viewarticle.php?id=4"&gt;Architecting the Build Process&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;ANY discussion about Release Management also needs to acknowledge that there is no single "the codeline",  not just because I may have different codelines (Development-Line plus Release-Line) working toward the same product-release, but ESPECIALLY because no matter how Agile you are, the reality is that you will typically need to support MULTIPLE releases at the same time (at the very least the latest released version and the current under development version, but often even Agile projects need to support more than one release in the field)&lt;br /&gt;&lt;br /&gt;So, when dealing with multiple release-line, and any "active development lines" for each of those, and the overall mainline, we really should say something overall about how to manage this "big picture" of all these codelines across multiple releases and iterations:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;What is the relationship between development line, release-line and release-prep codeline?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;How do the above three "lines" relate to "mainline"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;What is the relationship between the different release-lines for the different supported releases&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;What is the overall relationship between the mainline and the release-lines (and if the mainline is also a release-line, which release is it?)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:georgia;"&gt;The above questions and the ability to give some big picture "advice" on relating it all together (the stuff of pattern &lt;span style="font-style: italic;"&gt;languages&lt;/span&gt;) is &lt;span style="font-weight: bold;"&gt;precisely&lt;/span&gt; where Laura Wingerd's writing on "channeling the flow of change" and her chapter on "&lt;a href="http://www.oreilly.com/catalog/practicalperforce/chapter/ch07.pdf"&gt;How Software Evolves&lt;/a&gt;" fits in! It tells us&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;The overall Mainline model&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;The different types of codelines ("line" patterns), and what kinds of builds take place on each of them&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;The relationships of those to the mainline&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;When+Why to branch (and from which "types" of codelines)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;When+Why to merge across codelines (as a general rule)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;These are where Laura's rules for "the flow of change" apply. And her concept of "change flow" is very much applicable to the Lean/Agile concept of "flow of value". The Tofu scale and "change flow" rules/protocol have to do with order+flow of codeline policies across the entire branching structure when it comes to making decisions about stability -vs- speed. One codeline's policy might make a certain tradeoff, but it is the presence of multiple codelines and how they work together, and how their policies define the overall flow of change across codelines, that forms the "putting it all together" advice that is key to release management across multiple releases+codelines.&lt;br /&gt;&lt;br /&gt;In some way's you could make an overall analogy to the Laws or Thermodynamics and the realities of codeline management. Software and codelines tend, over time, to grow more complex and, if unchecked,&lt;br /&gt;"Entropy" (instability) quickly becomes the most dominating force to contend with in their maintenance. See&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;"&lt;a href="http://www.manageability.org/blog/stuff/the-8-laws-of-software-evolution"&gt;The 8 'Laws' of Software Evolution&lt;/a&gt;"&lt;http: org="" blog="" stuff="" evolution=""&gt;, and ...&lt;/http:&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;http: org="" blog="" stuff="" evolution=""&gt;"&lt;a href="http://www.manageability.org/blog/stuff/laws_of_software_complexity"&gt;The Laws of Software Complexity&lt;/a&gt;"&lt;/http:&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:georgia;"&gt;&lt;http: org="" blog="" stuff="" evolution=""&gt;&lt;br /&gt;The "entropy" (instability) doesnt just happen within a codeline. It can actually get far more hideous when it happens across codelines via indiscriminate branching from, or merging to, other codelines. This is what happens when you don't respect the principles and rules of "change flow" (from Wingerd) which ultimately stem from the rules of smooth and steady (value-stream) flow from Lean.&lt;br /&gt;&lt;br /&gt;The Laws of Thermodynamics are about energy, entropy, and enthalpy. In the case of release management and codelines ...&lt;br /&gt;&lt;/http:&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;http: org="" blog="" stuff="" evolution=""&gt;&lt;span style="font-style: italic;"&gt;energy &lt;/span&gt;relates to effort &amp;amp; productivity&lt;/http:&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;http: org="" blog="" stuff="" evolution=""&gt;&lt;span style="font-style: italic;"&gt;entropy &lt;/span&gt;relates to stability/quality versus complexity&lt;/http:&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;http: org="" blog="" stuff="" evolution=""&gt;&lt;span style="font-style: italic;"&gt;enthalpy &lt;/span&gt;relates to "order" (i.e., in the sense of structure and architecture as Christopher Alexander uses the term "order"). It is the "inverse" of entropy.&lt;/http:&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:georgia;"&gt;&lt;http: org="" blog="" stuff="" evolution=""&gt;&lt;br /&gt;We could call them them "&lt;span style="font-weight: bold; font-style: italic;"&gt;Laws of Codeline Dynamics&lt;/span&gt;" :-)&lt;br /&gt;&lt;br /&gt;Energy misspent degrades flow, creates waste, and hurts productivity/velocity. In traditional development, we often see "fixed scope" with resources and schedule having to vary in order to meet the "scope" constraint. IN Agile development we deliberately "flip" that triangle upside down (see the picture in the article at &lt;http: com="" articles="" p="703792"&gt; &lt;a href="http://www.informit.com/articles/article.aspx?p=703792"&gt;here &lt;/a&gt;under the title "The Biggest Change: Scope versus Schedule - Schedule Wins").  So we are fixing "resources" and "schedule" and allowing scope to vary.&lt;br /&gt;&lt;br /&gt;This might be one way of viewing the law of conservation of energy. If we fix resources and time (and insist on "sustainable pace" or "40hr work week") then we're basically putting in the same amount of effort over that time-box, but the key difference is how much of that effort results in "giving off energy" in the form of waste ("heat" or "friction") versus how much of that energy directly adds value. Both "Value" and "Enthalpy" degrade or depreciate over time, and adding more energy (effort) doesnt necessarily mean value is increased.&lt;br /&gt;&lt;br /&gt;To make sure that energy goes toward adding value (and minimizing waste) we need to focus on the flow of value, and hence the flow of change/efforts to create value (the latter is one reasonable definition of a "codeline" or a "workstream"). to ensure a smooth, steady, and regular/frequent flow, there are certain rules we need to impose and regulate stability within and across codelines to better manage all those releases.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Laws_of_thermodynamics"&gt;&lt;span style="font-weight: bold;"&gt;Zeroth Law of Thermodynamics&lt;/span&gt;&lt;/a&gt; (from Wikipedia)&lt;br /&gt;&lt;/http:&gt;&lt;/http:&gt;&lt;/span&gt;&lt;blockquote style="font-style: italic; color: rgb(153, 51, 153);"&gt;&lt;span style="font-family:georgia;"&gt;- If two thermodynamic systems are each in thermal equilibrium with a third, then they are in thermal equilibrium with each other.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:georgia;"&gt;Translation to codelines ... this law of "thermal equilibrium" is a law of "codeline equilibrium" of sorts. (Does this mean If two codelines are are "in equlibrium" with a third codeline, then they are "in sync"? and with each other? here "in sync" doesnt mean they have the same frequency, it means their is some synchronization pattern regarding their relative stability and velocity. In Lean Terms, this would refer to "nested synchronization" and "harmonic cadence"). This might imply the "mainline" rule/pattern or one of Wingerd's rules of change-flow.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;First Law of Thermodynamics&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic; color: rgb(153, 51, 153);"&gt;- In any process, the total energy of the universe remains the same.&lt;/blockquote&gt;This is the statement of conservation of energy for a thermodynamic system. It refers to the two ways that a closed system transfers energy to and from its surroundings - by the process of heating (or cooling) and the process of mechanical work.&lt;br /&gt;&lt;br /&gt;This relates to effort &amp;amp; changes expended resulting in the creation of value and/or the creation of waste. We have activities that add value (which we hope is development), activities that preserve value (which is what much of SCM attempts do, given that it doesnt directly create the changes, but tries to ensure that changes happen and are built/integrated with minimal loss of energy/productivity/quality), and then we have activities (or portions of  activities) that create waste (and increase entropy rather than preserving or increasing enthalpy/order)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Second Law of Thermodynamics&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic; color: rgb(153, 51, 153);"&gt;- In any isolated system that is not in equilibrium, entropy will increase over time&lt;/blockquote&gt;So this is the law of increasing instability/complexity/disorder. The "key" to preventing this from happening is achieving and then maintaining/preserving "equilibrium". How do we achieve such equlibrium? we do it with the "release enabler" patterns for codeline management (which help ensure "nested synchronization" and "harmonic cadence" in addition to achieving a balance or equilibrium between stability and velocity (to smooth out flow).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Third Law of Thermodynamics&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote style="color: rgb(153, 51, 153);"&gt;&lt;span style="font-style: italic;"&gt;- As temperature approaches absolute zero, the entropy of a system&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;approaches a constant minimum.&lt;/span&gt;&lt;/blockquote&gt;In our case, "Temperature" could be regarded as a measure of "energy" or "activity". As the energy/activity of a codeline approaches zero (such as a release in the field that youve been supporting and would LOVE to  be able to retire that codeline sometime real soon), it's instability approaches a constant minimum.&lt;br /&gt;&lt;br /&gt;This is perhaps another more polite way of saying something we already said in our article on "&lt;a style="font-style: italic;" href="http://www.cmcrossroads.com/content/view/6752/534/"&gt;The Unchangeable Rules of Software Chang&lt;/a&gt;e", namely that "absolute stability" means &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;dead&lt;/span&gt;&lt;/span&gt;  (as in, "no activity"), and should serve as a reminder that our goals is not the prevention of change in order to achieve some ideal "absolute stability", for such an absolute would mean the project not just "done" but "dead".&lt;br /&gt;&lt;br /&gt;On the other hand, it also speaks to us as a guideline for when it is safe to retire old codelines, and when to change their policy in accordance with their "energy level"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4986788325117368715?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4986788325117368715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4986788325117368715&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4986788325117368715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4986788325117368715'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/06/laws-of-codeline-thermodynamics.html' title='The Laws of Codeline (Thermo)Dynamics'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-565576242089515650</id><published>2008-05-26T09:04:00.002-05:00</published><updated>2008-07-06T09:09:59.103-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Version-Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>An Agile Approach to Release Management</title><content type='html'>&lt;span style="font-family: georgia;"&gt;My Agile SCM co-authors Rob Cowham, Steve Berczuk, and myself have written an article for the &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.cmcrossroads.com/component/option,com_magazine/func,show_edition/id,181/Itemid,641/"&gt;May CM Journal&lt;/a&gt;&lt;span style="font-family: georgia;"&gt; on &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.cmcrossroads.com/content/view/10487/641/"&gt;&lt;span style="font-style: italic;"&gt;An Agile Approach to Release Management&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;We're relatively pleased with the article, and all collaborated together quite well.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-565576242089515650?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/565576242089515650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=565576242089515650&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/565576242089515650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/565576242089515650'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/05/agile-approach-to-release-management.html' title='An Agile Approach to Release Management'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-5790293582281891571</id><published>2008-05-19T01:54:00.002-05:00</published><updated>2009-06-17T09:31:53.949-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>BOOK: Software Teamwork - Taking Ownership for Success</title><content type='html'>&lt;span style="font-family:georgia;"&gt;&lt;a href="http://http//www.agilejournal.com/content/view/788/186/"&gt;My review&lt;/a&gt; of Jim Brosseau's &lt;b&gt;Software Teamwork: Taking Ownership for Success&lt;/b&gt; is available in the &lt;a href="http://www.agilejournal.com/component/option,com_magazine/func,show_edition/id,68/Itemid,186/"&gt;May issue of the Agile Journal&lt;/a&gt;. It is nothing less than &lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;outstanding!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I found &lt;strong&gt;&lt;a href="http://www.amazon.com/Software-Teamwork-Taking-Ownership-Success/dp/0321488903http:/www.amazon.com/Outside-Software-Development-Successful-Stakeholder-based/dp/0131575511"&gt;Software Teamwork&lt;/a&gt;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;to be an immensely helpful, intensely practical, profusely insightful field guide to improving team outcomes and changing team behaviors by focusing on interpersonal action and personal leadership. This book belongs on any software team-leader's bookshelf, along with Jean Tabaka's &lt;a href="http://www.amazon.com/Collaboration-Explained-Facilitation-Software-Development/dp/0321268776"&gt;Collaboration Explained&lt;/a&gt; and Murray Cantor's &lt;a href="http://www.amazon.com/Software-Leadership-Guide-Successful-Development/dp/0201700441"&gt;Software Leadership&lt;/a&gt;.&lt;strong&gt;  &lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;Other articles in this issue on the theme of "&lt;span style="font-style: italic;"&gt;Challenges with Distributed Agile&lt;/span&gt;" are:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/content/view/783/186/"&gt;Softening Iterations - Setting up for success&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/content/view/782/186/"&gt;Overcoming Resistance to Change with Distributed Agile&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/content/view/781/186/"&gt;Agile Adoption Patterns&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.agilejournal.com/content/view/786/186/"&gt;KPIs for Agile Teams&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-5790293582281891571?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/5790293582281891571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=5790293582281891571&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5790293582281891571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/5790293582281891571'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/05/book-software-teamwork-taking-ownership.html' title='BOOK: Software Teamwork - Taking Ownership for Success'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-1524023058667622554</id><published>2008-05-13T00:47:00.000-05:00</published><updated>2008-07-06T08:54:21.063-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version-Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Distributed Version-Control Guide on InfoQ.com</title><content type='html'>Nice little guide on&lt;a href="http://www.infoq.com/"&gt; InfoQ.com&lt;/a&gt; about &lt;a href="http://www.infoq.com/articles/dvcs-guide"&gt;Distributed Version Control&lt;/a&gt; - that's twice in two months that the "&lt;a href="http://www.infoq.com/agile"&gt;agile&lt;/a&gt;" section of &lt;a href="http://www.infoq.com/"&gt;InfoQ.com&lt;/a&gt; has had a decent article on the subject!&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-1524023058667622554?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/1524023058667622554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=1524023058667622554&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1524023058667622554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/1524023058667622554'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/05/distributed-version-control-guide-on.html' title='Distributed Version-Control Guide on InfoQ.com'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-9041091865949434728</id><published>2008-05-06T01:39:00.003-05:00</published><updated>2008-07-06T08:46:32.942-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>From PMBoK to Agility</title><content type='html'>&lt;span style="font-family: georgia;"&gt;I recently learned that &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.sligerconsulting.com/"&gt;Michelle Sliger&lt;/a&gt;&lt;span style="font-family: georgia;"&gt;, author of the wonderful 4 part series of articles on &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://tinyurl.com/vvnjc"&gt;Relating PMBoK to Agile Practices&lt;/a&gt;&lt;span style="font-family: georgia;"&gt;, is co-authoring a book with Stacia Broderick entitled the &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://http://www.amazon.com/Software-Project-Managers-Agility-Development/dp/0321502752"&gt;Software Project Manager's Bridge to Agility&lt;/a&gt;&lt;span style="font-family: georgia;"&gt;.  You can even download an excerpt from her website.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;I'm looking forward to this book a great deal, judging by the &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.sligerconsulting.com/agile-sofware-development-article-presentation.htm"&gt;excellent articles and presentations&lt;/a&gt;&lt;span style="font-family: georgia;"&gt; of hers that I've read.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-9041091865949434728?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/9041091865949434728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=9041091865949434728&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/9041091865949434728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/9041091865949434728'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/05/from-pmbok-to-agility.html' title='From PMBoK to Agility'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2357922952340444564</id><published>2008-04-30T00:59:00.002-05:00</published><updated>2008-05-27T09:14:32.833-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CM'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: Implementing ITIL Configuration Management</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I started reading through the book &lt;a href="http://www.informit.com/store/product.aspx?isbn=0132425939"&gt;&lt;b&gt;Implementing ITIL Configuration Management&lt;/b&gt;&lt;/a&gt;, by Larry Klosterboer. I'm really not what I'd consider an expert on &lt;a href="http://www.blogger.com/en.wikipedia.org/wiki/ITIL"&gt;ITIL&lt;/a&gt; nor &lt;a href="http://en.wikipedia.org/wiki/IT_Service_Management"&gt;IT Service Management&lt;/a&gt;, but I've had more than my fair share of exposure to it and am certainly no "slouch" in that area either.&lt;br /&gt;&lt;br /&gt;This book looks to be an overview of ITIL and to how it applies to configuration management. From there one can extrapolate how much of it relates to CM for not just IT assets and infrastructure but to the software development environment and to software development itself.&lt;br /&gt;&lt;br /&gt;The book includes coverage of the following (from the back cover):&lt;/span&gt;&lt;br /&gt;   &lt;ul&gt;&lt;li&gt;Assessing your current configuration management maturity and setting goals for improvement&lt;/li&gt;&lt;li&gt;Gathering and managing requirements to align ITIL with organizational needs&lt;/li&gt;&lt;li&gt;Describing the schema of your configuration management database (CMDB) &lt;/li&gt;&lt;li&gt;Identifying, capturing, and organizing configuration data&lt;/li&gt;&lt;li&gt;Choosing the best tools for your requirements&lt;/li&gt;&lt;li&gt;Integrating data and processes to create a unified logical CMDB and configuration management service&lt;/li&gt;&lt;li&gt;Implementing pilot projects to demonstrate the value of configuration management and to test your planning&lt;/li&gt;&lt;li&gt;Moving from a pilot to wide-scale enterprise deployment&lt;/li&gt;&lt;li&gt;Defining roles for deployment and ongoing staffing&lt;/li&gt;&lt;li&gt;Leveraging configuration management information: Reporting and beyond&lt;/li&gt;&lt;li&gt;Measuring and improving CMDB data accuracy&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;To take the next step, and for a REALLY thorough treatment of how IT service management and CM comes full circle to embrace all of enterprise architecture and software development, I highly recommend Charles Betz' book &lt;b&gt;&lt;a href="http://www.amazon.com/Architecture-Management-Resource-Planning-Governance/dp/0123705932/"&gt;Architecture and Patterns for IT Service Management, Resource Planning, and Governance: Making Shoes for the Cobbler's Children&lt;/a&gt;&lt;/b&gt;. As I mentioned in a &lt;a href="http://blog.bradapp.net/2007/02/book-on-erp-for-it.html"&gt;blog-entry early last year&lt;/a&gt;, this book "really ought to be required reading for anyone that fancies themselves a 'CM professional' (especially Software CM) or an 'Enterprise Architect.'"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2357922952340444564?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2357922952340444564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2357922952340444564&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2357922952340444564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2357922952340444564'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/04/book-implementing-itil-configuration.html' title='BOOK: Implementing ITIL Configuration Management'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-3323920071044471515</id><published>2008-04-22T01:26:00.000-05:00</published><updated>2008-05-27T08:59:05.809-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Three Pivotal Practices to Eliminate Waste</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I received my program for the &lt;i&gt;&lt;a href="http://www.sqe.com/bettersoftwareconf/"&gt;Better Software Conference &amp;amp; Expo&lt;/a&gt;&lt;/i&gt; this coming June 9-12 in Las Vegas (alas, I will be unable to attend). The description for the keynote that will be given by &lt;a href="http://www.rallydev.com/jeantabakabio.html"&gt;Jean Tabaka&lt;/a&gt; caught my eye. Jean Tabaka is an Agile Coach from &lt;a href="http://www.rallydev.com/"&gt;Rally Software Development&lt;/a&gt; and the author of &lt;a href="http://www.amazon.com/Collaboration-Explained-Facilitation-Software-Development/dp/0321268776" target="_blank"&gt;&lt;b&gt;Collaboration Explained: Facilitation Skills for Software Project Leaders&lt;/b&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Her keynote is entitled "&lt;i&gt;&lt;a href="http://www.sqe.com/bettersoftwareconf/Keynotes/Default.aspx"&gt;Attacking Waste in Software: Three Practices We Must Embrace Now&lt;/a&gt;&lt;/i&gt;" and the abstract is as follows:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);font-family:times new roman;" &gt;&lt;br /&gt;&lt;blockquote&gt;One of the seven principles of Lean Thinking is “eliminate waste.” Eliminating waste means minimizing the cost of the resources we use to deliver software to our stakeholders. Jean Tabaka proposes three pivotal practices that we must embrace to aggressively attack waste in software delivery —- &lt;i&gt;Software as a Service (SaaS)&lt;/i&gt;, &lt;i&gt;Community&lt;/i&gt;, and &lt;i&gt;Fast Feature Throughput&lt;/i&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Software as a Service (SaaS)&lt;/i&gt;&lt;/b&gt; eliminates waste by deploying software-based services without the cost inherent in traditional software delivery—materials, shipping, time delay, and more.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Community&lt;/i&gt;&lt;/b&gt; involves stakeholders working together to create products rather than competing among themselves for limited resources. Community eliminates waste by democratizing software development to obviate the need for multiple systems with the same functionality.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Fast Feature Throughput&lt;/i&gt;&lt;/b&gt; refers to development methods that embrace change and quickly deliver value to customers. It eliminates waste by responding to market pull with short, incremental delivery cycles.&lt;/li&gt;&lt;/ol&gt;When IT and all software organizations embrace these practices, they will eliminate waste within their organizations, reduce the waste that consumes our entire industry, and ultimately support the broad 21st century global mandate to manage our scarce resources.&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;I can't help but think how these same "pivotal practices" apply equally well to Agile CM, resulting (presumably?) in &lt;i&gt;Software CM as a Service (SCMaaS)&lt;/i&gt;, &lt;i&gt;Community&lt;/i&gt;, and &lt;i&gt;Rapid Change-Flow&lt;/i&gt; (where the latter refers to both quickness and responsiveness of change assessment and approval, as well as to development velocity as the changes flow through codelines and become integrated, built, promoted and released).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3323920071044471515?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3323920071044471515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3323920071044471515&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3323920071044471515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3323920071044471515'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/04/three-pivotal-practices-to-eliminate.html' title='Three Pivotal Practices to Eliminate Waste'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4080531802960055802</id><published>2008-04-15T01:33:00.005-05:00</published><updated>2009-07-21T11:26:04.589-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CM'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>Rise of the Development Environment Architect</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Peter Eeles and I must be subconsciously on the same page. Because at the same time I was blogging about &lt;a href="http://bradapp.blogspot.com/2008/02/software-architecture-views-and.html"&gt;Software Architecture Views and Perspectives&lt;/a&gt; and &lt;a href="http://bradapp.blogspot.com/2008/02/software-architecture-quality.html"&gt;Software Architecture Quality Attributes&lt;/a&gt; and their direct applicability to SCM/ALM solution architecture (and software process in general), Peter was working on an article for IBM developerworks entitled &lt;a style="font-style: italic;" href="http://www.ibm.com/developerworks/rational/library/edge/08/apr08/eeles/"&gt;The Rise of the Development Environment Architect&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: verdana; font-style: italic; color: rgb(51, 51, 51);"&gt;[Development] environments present challenges; and, interestingly, these challenges are similar to those of the systems they support. For example, development environments have to deliver against the required functionality and properties (such as performance and usability), often have to coexist with legacy systems (such as, in the case of a development environment, existing methods and tools), and have to acknowledge other constraints (such as the distributed nature of development teams, and existing skills and infrastructure).&lt;br /&gt;&lt;br /&gt;All in all, creating a well-oiled development environment that accelerates, rather than hinders, project performance is a science unto itself. This is why IBM® Rational® has spent many years specifically developing a services capability that understands the challenges faced by organizations that 1) want to improve developer productivity, and 2) regard their development organization as a strategic differentiator, rather than simply a cost center.&lt;br /&gt;&lt;br /&gt;Our experience has led the Rational team to define a role within the software development lifecycle called the "development environment architect." In October 2007, one hundred of Rational's most experienced development environment architects from across the globe gathered together in the first conference dedicated to this role to share their experiences. This article is a result of that conference and the discussions that took place.&lt;br /&gt;&lt;br /&gt;As you read the concepts presented here, you may well question whether the development environment architect should be a role itself, or whether the individual or team who normally functions in the software or systems architect role should simply add consideration of the development environment to their list of architectural concerns. I believe that both propositions are valid. Furthermore, whenever the role of the "architect" is discussed, it is always qualified with the domain under consideration; thus we speak of a "building architect," "software architect," "systems architect," "enterprise architect," etc. The development environment is simply one of these domains, and one that is not traditionally a concern for the "software architect" role. I therefore believe that the "development environment architect" role is one that hasn't been emphasized before -- hence this article.&lt;br /&gt;&lt;br /&gt;This article has several audiences and objectives. It is relevant to organizations undertaking an improvement to their development environment and who need to understand the value of a development environment architect to help guide their initiative. It is also relevant to those who are responsible for the technical content of the development environment -- i.e., development environment architects -- because this article introduces this responsibility as a role not previously defined. Finally, this article may supplement material contained within a development environment, in helping communicate its content, the role of its architect, and the benefits of having such a role in place.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/rational/library/edge/08/apr08/eeles/"&gt;Read the full article here&lt;/a&gt;. I may blog later about the similarities and differences between the sort of architecture that Eeles describes versus my &lt;a href="http://blog.bradapp.net/2006/12/dimensions-and-views-of-scm.html"&gt;4+2 Views Model of SCM/ALM Solution Architecture&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Update - July 2009: Peter gave a &lt;a href="ftp://ftp.software.ibm.com/software/uk/itsolutions/developer/rsdc/keynotes/am08-the-rise-of-the-development-environment-architect.pdf"&gt;keynote presentation on this topic at RSDC2008&lt;/a&gt; (PDF slides)&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-4080531802960055802?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/4080531802960055802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=4080531802960055802&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4080531802960055802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/4080531802960055802'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/04/rise-of-development-environment.html' title='Rise of the Development Environment Architect'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-2904385965412635035</id><published>2008-04-09T00:11:00.005-05:00</published><updated>2008-05-12T09:59:29.172-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: Outside-in Software Development</title><content type='html'>&lt;span style="font-family:georgia;"&gt;My review of &lt;b&gt;&lt;a href="http://www.blogger.com/Outside-in%20Software%20Development"&gt;Outside-In Software Development&lt;/a&gt;&lt;/b&gt; is in this month's edition of &lt;a href="http://www.agilejournal.com/"&gt;The Agile Journal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;span style="font-family: times new roman;"&gt; Kessler and Sweitzer's &lt;/span&gt;&lt;strong style="font-family: times new roman;"&gt;&lt;a href="http://www.amazon.com/Outside-Software-Development-Successful-Stakeholder-based/dp/0131575511"&gt;Outside-in Software Development&lt;/a&gt; &lt;/strong&gt;&lt;span style="font-family: times new roman;"&gt;should resonate deeply with all those who genuinely value the principle of customer collaboration in the Agile Manifesto, and with anyone who has played the role of Product Manager for a software project. This &lt;/span&gt;&lt;a style="font-family: times new roman;" href="http://www.joltawards.com/press/020408.htm"&gt;2008 Jolt award Finalist&lt;/a&gt;&lt;span style="font-family: times new roman;"&gt; is &lt;/span&gt;&lt;em style="font-family: times new roman;"&gt;not&lt;/em&gt;&lt;span style="font-family: times new roman;"&gt; a book about eliciting or prioritizing requirements (or "user stories") for an Agile project. This book goes beyond mere user-stories and their ranking or velocity to focus on uncovering the underlying needs and goals of your stakeholders and understanding what truly adds value for the customer and the business.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;...  I think Outside-in Software Development is a profoundly important book for anyone in the Agile or Lean "camps" because it addresses and embraces the often neglected pieces of the customer-relationship puzzle that emerge from the stakeholders' perspective, often after the software is released. It shows us how many of those same Lean and Agile values of collaboration, responsiveness, waste-elimination, and respect for people can be successfully applied to the users' experience with our software, and to the stakeholders' experience with ourselves in the service of realizing the very business value we strive to deliver.&lt;/span&gt; &lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.agilejournal.com/content/view/778/33/"&gt;Read the full review&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-2904385965412635035?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/2904385965412635035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=2904385965412635035&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2904385965412635035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/2904385965412635035'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/04/book-outside-in-software-development.html' title='BOOK: Outside-in Software Development'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-3284810152556271228</id><published>2008-04-02T09:29:00.005-05:00</published><updated>2008-05-12T10:00:00.881-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>BOOK: Programming Groovy and Groovy Recipes</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I just received an advance copy of &lt;b&gt;&lt;a href="http://www.pragprog.com/titles/vslg/programming-groovy"&gt;Programming Groovy&lt;/a&gt;&lt;/b&gt; from the &lt;a href="http://www.pragprog.com/titles"&gt;Pragmatic Programmer's Bookshelf&lt;/a&gt;. This complements their work that came out last month on &lt;a href="http://www.pragprog.com/titles/sdgrvr"&gt;&lt;span style="font-weight: bold;"&gt;Groovy Recipes&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;From the &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;b&gt;&lt;a href="http://www.pragprog.com/titles/vslg/programming-groovy"&gt;Programming Groovy&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; book webpage:&lt;br /&gt;&lt;blockquote style="font-family: times new roman; font-style: italic; color: rgb(102, 0, 0);"&gt;Groovy brings you the best of both worlds: a flexible, highly productive, agile, dynamic language that runs on the rich framework of the Java Platform. Groovy preserves the Java semantics and extends the JDK to give you true dynamic language capabilities⎯programming in Groovy feels like you’re using an augmented Java. Programming Groovy will help you learn and take advantage of the latest version of this rich dynamic language, so you can be a more productive Java Platform developer.&lt;/blockquote&gt;From the &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;a href="http://www.pragprog.com/titles/sdgrvr"&gt;&lt;span style="font-weight: bold;"&gt;Groovy Recipes&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; book webpage:&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;blockquote style="font-family: times new roman; font-style: italic; color: rgb(102, 0, 0);"&gt;If you’re a busy Java professional who needs quick solutions to everyday problems, then Groovy Recipes is for you. The Groovy language and Grails web framework give you seamless integration with your legacy Java code while adding the flexibility and dynamism of a scripting language and giving you modern, agile, time-saving techniques. Groovy allows you to write code the way you always thought you should—you’ll never look at Java the same way again.&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;For those who like Ruby and Rails and the ability to access other Java frameworks and APIs, but also really want their Java-like syntax (and hence more than just JRuby), these are &lt;i&gt;the&lt;/i&gt; books to read. &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; even has its own answer to Rails called "&lt;a href="http://grails.codehaus.org/"&gt;Grails&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;See also:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://dev2dev.bea.com/pub/a/2006/10/introduction-groovy-grails.html"&gt;An Introduction to &lt;b&gt;Groovy&lt;/b&gt; and &lt;b&gt;Grails&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dzone.com/links/groovy_with_grails_javas_fight_back_to_ruby_on_ra.html"&gt;&lt;b&gt;Groovy&lt;/b&gt; with &lt;b&gt;Grails&lt;/b&gt; – Java’s fight back to Ruby on Rails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://groovy.dzone.com/"&gt;Groovy Zone | Everything for the Groovy &amp;amp; Grails developer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://aboutgroovy.com/"&gt;AboutGroovy.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;                 &lt;a href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=mastering+grails"&gt;                     &lt;i&gt;Mastering Grails&lt;/i&gt;                 &lt;/a&gt;:         Read more in this series to gain a further understanding of Grails and all you can         do with it. &lt;/li&gt;&lt;li&gt;&lt;a href="http://groovy.codehaus.org/"&gt;Groovy homepage&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;                 &lt;a href="http://grails.codehaus.org/"&gt;Grails homepage&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;                 &lt;a href="http://grails.org/doc/1.0.x/"&gt;Grails Framework Reference Documentation&lt;/a&gt;:         The Grails bible.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;                 &lt;a href="http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=practically+groovy:"&gt;                     &lt;i&gt;Practically Groovy&lt;/i&gt;                 &lt;/a&gt;:         This developerWorks series is dedicated to exploring the practical uses of Groovy         and teaching you when and how to apply them successfully.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;                 &lt;a href="http://grails.org/plugins"&gt;Grails Plugins&lt;/a&gt;: Documentation for all         Grails plug-ins. &lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr/&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10280668-3284810152556271228?l=bradapp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradapp.blogspot.com/feeds/3284810152556271228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10280668&amp;postID=3284810152556271228&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3284810152556271228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10280668/posts/default/3284810152556271228'/><link rel='alternate' type='text/html' href='http://bradapp.blogspot.com/2008/04/book-programming-groovy-and-groovy.html' title='BOOK: Programming Groovy and Groovy Recipes'/><author><name>Brad Appleton</name><uri>http://www.blogger.com/profile/15136106921504315995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://www.bradapp.net/bradapp.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10280668.post-4232682024902177505</id><published>2008-03-31T01:33:00.004-05:00</published><updated>2011-02-03T09:26:28.709-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Six-Sigma'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='SCM-Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Design/Arch'/><title type='text'>Software Process-Line Architecture and Common Processes</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Extending the analogy of &lt;a href="http://blog.bradapp.net/2008/03/software-process-architecture-views-and.html"&gt;software architecture views and quality attributes for software process architecture&lt;/a&gt;, I'd like to spend some time discussing how &lt;a href="http://blog.bradapp.net/2008/03/software-product-line-architecture-and.html"&gt;software product lines&lt;/a&gt; relate to software process architecture and "common processes" across an enterprise.&lt;br /&gt;&lt;br /&gt;Many organizations strive for standard common processes, often as part of a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CMM&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CMMI&lt;/span&gt;-based process improvement. All too often I have seen the mantra of "common process" misused and abused to make the practitioners serve the process instead of the other way around.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b style="font-style: italic;"&gt;&lt;blockquote&gt;Processes don't create great software. People and Teams do!&lt;/blockquote&gt;&lt;/b&gt;And while the process needs to meet the needs of the business and the needs of the customer, it has to first and foremost serve the needs of the practitioners so that they in turn may better serve the needs of the business to deliver operational business value.&lt;br /&gt;&lt;br /&gt;Many in management seem to have the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;mis&lt;/span&gt;-impression that "common process" means "no tailoring" and everyone does everything the same way across products and projects throughout the organization. Process variation across products and projects is regarded as something to eschewed and stamped out, beating the offenders into compliance with top-down dictates and mandates and sanctions. If everyone does everything the same way then the people are more or less "plug-and-play replaceable" and can quickly and easily be reallocated to another project or product with zero learning-curve and associated start-up costs.&lt;br /&gt;&lt;br /&gt;This is a dangerous myth that causes irreparable harm to process improvement and common/standard process efforts. Anything that focuses on individuals and interactions as subservient to common processes and standard tools  is doomed to fail, and those organizations often end-up with the processes they deserve (along with many disgruntled, frustrated workers).&lt;br /&gt;&lt;br /&gt;The purpose of such common processes and tools is &lt;i&gt;not&lt;/i&gt; to be a rigid restrictive &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;straightjacket&lt;/span&gt; for replaceable people. The intended purpose is to recognize that such people are &lt;i&gt;irreplaceable&lt;/i&gt; and to provide a flexible knowledge framework to guide and enable them as the help each other collaborate to learn, grow, and lead in the discovery, practical application and effective execution of practices and improvements that are the best fit for a particular product, product, community and business-environment.&lt;br /&gt;&lt;br /&gt;The intended purpose common software processes is quite simply that of process and knowledge reuse! And as such it shares many of the same fundamental problems and solutions as that of software reuse. Indeed it could even be argued that software process reuse is but a special case of software reuse. And current prevailing industry wisdom on the subject suggests that software product-lines show the greatest promise of leveraging software reuse for greatest business value.&lt;br /&gt;&lt;br /&gt;In software reuse, we seem to recognize that "one size does not fit all." We acknowledge that even though different products, components, and platforms may share common features, that each one may have different project parameters and environments with different quality attributes and engineering-tradeoffs that need to be "preferred" and optimized that particular application: d
