Posts Tagged ‘test-driven-development’

Process Improvement on “borrowed time”

Thursday, October 19th, 2006

<meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="willem ende" /><meta name="CREATED" content="20061019;9374500" /><meta name="CHANGED" content="16010101;0" /><br /> <style type="text/css"> <!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } --> </style> <p class="western" style="margin-bottom: 0in">I liked <a href="http://emmanuelgaillot.blogspot.com/">Emmanuel Gaillot</a>’s <a href="http://emmanuelgaillot.blogspot.com/2006/10/borrowing-first-5-minutes.html">Borrowing the First 5 minutes</a> a lot. You can almost see the <a href="http://wiki.systemsthinking.net/Systemsthinking/DiagramOfEffects.html">Diagrams of Effects</a> in the words, so I decided to draw some (<a href="http://wiki.systemsthinking.net/Systemsthinking/SystemsThinkingSteps.html">systems thinking step</a> 1: tell story). I’ve made a bunch of them, hoping that it makes the thought process easily traceable.</p> <p class="western" style="margin-bottom: 0in">The first two diagrams are on the problem</p> <p class="western" style="margin-bottom: 0in"> <p class="western" style="margin-bottom: 0in"><img alt="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure1.png" src="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure1.png" /></p> <blockquote> <p class="western" style="margin-bottom: 0in">The more pressure you’re under to deliver, the less you care about the quality of the software you’re releasing. Unfortunately, the less the quality is, the more rework you’ll have to do. And of course, more rework means more schedule slippage, ergo more pressure to deliver the next bit.</p> </blockquote> <p>Lower quality means more rework, more rework means more slippage, more slippage leads to more pressure, which in turn leads to lower quality - a vicious circle.</p> <p class="western" style="margin-bottom: 0in">and the first analysis:</p> <p><img alt="The image “http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure2.png” cannot be displayed" src="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure2.png" /></p> <blockquote><p>Here’s the catch: changing your work process means that first, you’ll have to slow down.</p></blockquote> <p>Improving your process will (hopefully) in time lead to higher quality (the || indicate a delay). In the short run, process improvement is likely to cost time and cause noteable slippage.</p> <p>The first two were easy to draw, as the cycles and arrows are literally in the text. Emmanuel offers five solutions, drawing diagrams for them required more interpretation. And that is what I like about DOE’s: they require another mode of thinking, and open different perspectives on the problem or proposed solution.</p> <p class="western" style="margin-bottom: 0in"> <p class="western" style="margin-bottom: 0in">So in the third step, two interventions are added. As Emmanuel says,accepting pressure is a choice and there is always something you can do to improve.</p> <p class="western" style="margin-bottom: 0in"><img alt="The image “http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure4.png” cannot be displayed, because it contains errors." src="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure4.png" /></p> <p>So two ‘interventions’ are added to the diagram. The intervention from Slippage to Pressure means that you can choose to accept the slippage as a fact of life. Calmness will save you! Maintaining a clear head will increase your chances of actually delivering. The other intervention, between improved process and slippage, indicates there might be a way to improve the process without causing noticeably more slippage. If you can not find such a way, <a href="http://www.easycomp.org/cgi-bin/OrgPatterns?TakeNoSmallSlips">take no small slips</a> .</p> <p>After the third DOE, I notice I forgot something. The assumption is that ‘ordinary’ rework will increase quality. I’ve been in places where rework caused quality to remain insufficient for release. Rework without sufficient safeguards will introduce new defects, so instead of improving quality by removing defects, the number of defects increased…</p> <p class="western" style="margin-bottom: 0in"> <p class="western" style="margin-bottom: 0in">I’ve used the techniques Emmanuel mentions in recommendation #2 - <em>Don’t try to deny all the pressure at once</em> - before (usually up-front with moderate pressure, though). Writing a test for a defect and doing (if even a little) pair-work would be the kind of safeguards that ensure your rework is a quality improvement.</p> <p class="western" style="margin-bottom: 0in"><img width="477" style="cursor: -moz-zoom-in" alt="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure5.png" src="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure5.png" /></p> <p class="western" style="margin-bottom: 0in"> <p class="western" style="margin-bottom: 0in">If we take the steps from #2 as our improved process, and draw Pair Rework, new Tests per Defect and Hasty Rework as variables, we get a choice of which activities to perform when Quality is insufficient.</p> <p class="western" style="margin-bottom: 0in">Hasty Rework is likely to decrease quality (<a href="http://www.xpday.net/Xpday2006/HasteMakesWasteOhNoItDoesNot.html">haste makes waste</a>), a new Test per Defect will focus the repair work, and prevent the defect from re-appearing in the future. Assuming these tests are programmed (not done by hand), collected in a test-suite, and re-run regularly.</p> <p class="western" style="margin-bottom: 0in">Pair rework ensures knowledge about the defect and its’ repair is spread, and that errors made in repairing are caught before the fix is released.</p> <p class="western" style="margin-bottom: 0in">Looking at diagram 3, we may notice these suggestions all work on the defects directly. How can we come up with suggestions like these, and new ideas to improve the process? <a href="http://www.toyota.co.jp/en/vision/traditions/mar_apr_06.html">Ask ‘why’ five times about every matter</a>. Which gives me energy to write about, at another time. The DOE helps to see at which level you are working, and gives inspiration for other levels.</p> <p class="western" style="margin-bottom: 0in">In proposal #3, Emmanuel recomends to <em>watch for improvement</em> and in #4 to <em>reinvest</em> . I’ve combined them in a new DOE - managing the process improvement process is at another level of abstraction than what we had before. Since the timings are measureable, they are drawn as ellipses rather than clouds - clouds are for observables:</p> <p class="western" style="margin-bottom: 0in"><img alt="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure6.png" src="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure6.png" /></p> <p class="western" style="margin-bottom: 0in"> <p class="western" style="margin-bottom: 0in">The Process Improvement Effectiveness depends in part on the time you spent on it; if you spend no time on PI then the process is unlikely to improve, but after some point, more time spent will not increase the effectiveness. Effective PI will reduce the mean time to solve a defect (I refuse to use the word bug, as that suggests the defect magically came<br /> into life in the code…) .</p> <p class="western" style="margin-bottom: 0in">Emmanuel suggests in #, that once you’ve had some success, you might call for some guidance.</p> <p class="western" style="margin-bottom: 0in"><img width="493" style="cursor: -moz-zoom-in" alt="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure7.png" src="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure7.png" /></p> <p>Getting an Expert in will increase the effectiveness of your process improvement. It also might save you time spent on PI per defect, as the expert can quickly guide you to what to do and what not. Guidance will improve the quality of your work, save time on improvement, and (not drawn) if you get a hands-on kind of person in, he or she may directly contribute to repairing defects as well - and often with more awareness of possible root causes as well .</p> <p>Proposition #5 is about <em>spiraling up</em> - what to do when you’ve gained so much time through process improvement that</p> <blockquote><p>your managers will start noticing that it takes you significantly less time to do stuff</p></blockquote> <p><img width="493" alt="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure8.png" style="cursor: -moz-zoom-in" src="http://www.willemvandenende.com/images/2006/forblogging/accept_the_pressure8.png" />At first management may not notice the change in Mean time to solve defect, then when they notice, they’ll celebrate, hopefully after making sure you are not reducing time by cutting corners…</p> <p>Then it is time to <em>negotiate . </em>Together with your management you can choose to divide the gained time between increasing throughput (solve more defects per week) and training (drawn here as a higher investment in Expert Guidance).<br /> Do not increase throughput implicitly - you’ll lose the time you’ve gained, and you lose an opportunity to share your gains with other teams around you.</p> <p class="western" style="margin-bottom: 0in"> <p>The diagrams have worked for me, it helped me better understand what <a href="http://emmanuelgaillot.blogspot.com/">Emmanuel</a> was exactly writing about and spin off some more ideas, some of which ended up in this post, others as <a href="http://me.andering.com/2006/02/15/five-seconds-to-fieldstone/">fieldstones</a>.</p> <p>I hope they have worked for you, and I’m looking for feedback (<a href="http://wiki.systemsthinking.net/Systemsthinking/SystemsThinkingSteps.html">systems thinking steps 10 and 11</a>: get feedback from presenting to a group, and adjust the diagrams).</p> </div> <p class="postmetadata">Tags: <a href="http://me.andering.com/tag/agile/" rel="tag">agile</a>, <a href="http://me.andering.com/tag/systems-thinking/" rel="tag">systems-thinking</a>, <a href="http://me.andering.com/tag/test-driven-development/" rel="tag">test-driven-development</a><br /> Posted in <a href="http://me.andering.com/category/people-systems/" title="View all posts in people & systems" rel="category tag">people & systems</a> | <a href="http://me.andering.com/2006/10/19/process-improvement-on-borrowed-time/#comments" title="Comment on Process Improvement on “borrowed time”">3 Comments »</a></p> </div> <div class="navigation"> <div class="alignleft"></div> <div class="alignright"></div> </div> </div> <div id="sidebar"> <ul> <li id="pages" class="widget widget_pages"> <h2 class="widgettitle">Pages</h2> <ul> <li class="page_item page-item-2"><a href="http://me.andering.com/about/" title="About the author">About the author</a></li> </ul> </li> <li id="search" class="widget widget_search"> <form id="searchform" method="get" action="http://me.andering.com"> <div> <input type="text" name="s" id="s" size="15" /><br /> <input type="submit" value="Search" /> </div> </form> </li> <li id="text-1" class="widget widget_text"> <h2 class="widgettitle">Subscribe</h2> <div class="textwidget"><ul><li><a class="rsswidget" title="Syndicate this content" href="http://www.agilealliance.org/feed/rss2_events/"> <img width="14" height="14" alt="RSS" src="http://me.andering.com/wp-includes/images/rss.png" style="border: medium none ; background: orange none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: white;"/></a> <a href="/feed">Posts by RSS feed</a></li> <li><a href="http://www.experienceagile.eu/newsletter">eXperience Agile newsletter</li></ul></div> </li><li id="rss-4" class="widget widget_rss"><h2 class="widgettitle"><a class='rsswidget' href='http://www.experienceagile.eu/event/feed' title='Syndicate this content'><img style='background:orange;color:white;border:none;' width='14' height='14' src='http://me.andering.com/wp-includes/images/rss.png' alt='RSS' /></a> <a class='rsswidget' href='http://www.experienceagile.eu/event/feed' title='November 20, 2008 - November 20, 2009'>Public courses</a></h2><ul><li><a class='rsswidget' href='http://www.experienceagile.eu/en/node/141' title='Start: 11/26/2008 - 00:00 End: 11/28/2008 - 17:00 We are planning an eXperience Agile course near Eindhoven, the Netherlands on November 26 through 28. Three days of fun learning and experiencing Agile Software Development. One of the few courses that goes in-depth in both Agile planning practices as well as technical practices. See the course page for a full description. '>eXperience Agile in Tilburg, 26-28 November</a></li><li><a class='rsswidget' href='http://www.experienceagile.eu/en/node/160' title='Start: 12/16/2008 - 00:00 End: 12/16/2008 - 17:00 Join us for this new 1 day hands-on workshop on refactoring legacy software on 16 December. You will apply a number of techniques to break unwanted dependencies in code and learn know how to start making changes and adding tests simply and responsibly. '>Refactoring Legacy Software, 16 December</a></li><li><a class='rsswidget' href='http://www.experienceagile.eu/en/node/161' title='Start: 12/17/2008 - 09:00 End: 12/17/2008 - 17:00 Join us for this new 1 day hands-on workshop on Responsibility Driven Design and Mock Objects on 17 December. In this hands on workshop, you will learn how to use techniques like mock objects and CRC cards (Class-Responsibility-Collaborators) to achieve highly cohesive, loosely coupled, adaptable software. '>Responsibility Driven Design with Mock Objects, 17 December</a></li></ul></li> <li id="text-222680211" class="widget widget_text"> <div class="textwidget"><div id="dopplr-blog-badge-for-WillemVanDenEnde"><script type="text/javascript" src="http://www.dopplr.com/blogbadge/script/418c59acd5a2ec055b50265a311b8e2f?div-id=dopplr-blog-badge-for-WillemVanDenEnde"></script></div></div> </li><li id="linkcat-73" class="widget widget_links"><h2 class="widgettitle">Business</h2> <ul> <li><a href="http://www.experienceagile.eu/" title="experiential, hands-on training courses on Agile Software Development, in collaboration with Westgeest consultancy">eXperience Agile</a></li> <li><a href="http://www.livingsoftware.nl/" title="Mentoring, Coaching and (Agile) Software Development, also my holdin">Living Software B.V.</a></li> <li><a href="http://www.satirworkshops.com/" rel="me" title="Workshops and training courses, based on the work of Virginia Satir and others">Satir Workshops</a></li> <li><a href="http://www.wyrdweb.eu/" title="web design, hosting, web application development and more… your professional presence on the web">Wyrd Web</a></li> </ul> </li> <li id="tag_cloud" class="widget widget_tag_cloud"><h2 class="widgettitle">Tags</h2><a href='http://me.andering.com/tag/agile/' class='tag-link-17' title='54 topics' rel="tag" style='font-size: 22pt;'>agile</a> <a href='http://me.andering.com/tag/agile-open/' class='tag-link-28' title='22 topics' rel="tag" style='font-size: 13.5471698113pt;'>agile-open</a> <a href='http://me.andering.com/tag/announcement/' class='tag-link-81' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>announcement</a> <a href='http://me.andering.com/tag/architecture/' class='tag-link-31' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>architecture</a> <a href='http://me.andering.com/tag/books/' class='tag-link-36' title='1 topic' rel="tag" style='font-size: 8pt;'>books</a> <a href='http://me.andering.com/tag/branding/' class='tag-link-16' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>branding</a> <a href='http://me.andering.com/tag/business_value/' class='tag-link-60' title='5 topics' rel="tag" style='font-size: 9.05660377358pt;'>business_value</a> <a href='http://me.andering.com/tag/change/' class='tag-link-40' title='1 topic' rel="tag" style='font-size: 8pt;'>change</a> <a href='http://me.andering.com/tag/citcon/' class='tag-link-41' title='1 topic' rel="tag" style='font-size: 8pt;'>citcon</a> <a href='http://me.andering.com/tag/community/' class='tag-link-22' title='26 topics' rel="tag" style='font-size: 14.6037735849pt;'>community</a> <a href='http://me.andering.com/tag/conference/' class='tag-link-23' title='29 topics' rel="tag" style='font-size: 15.3962264151pt;'>conference</a> <a href='http://me.andering.com/tag/continuous-testing/' class='tag-link-9' title='1 topic' rel="tag" style='font-size: 8pt;'>continuous-testing</a> <a href='http://me.andering.com/tag/course/' class='tag-link-77' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>course</a> <a href='http://me.andering.com/tag/courses/' class='tag-link-79' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>courses</a> <a href='http://me.andering.com/tag/cultural-patterns/' class='tag-link-65' title='11 topics' rel="tag" style='font-size: 10.641509434pt;'>cultural-patterns</a> <a href='http://me.andering.com/tag/culture/' class='tag-link-44' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>culture</a> <a href='http://me.andering.com/tag/event/' class='tag-link-80' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>event</a> <a href='http://me.andering.com/tag/fieldstone/' class='tag-link-21' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>fieldstone</a> <a href='http://me.andering.com/tag/france/' class='tag-link-27' title='1 topic' rel="tag" style='font-size: 8pt;'>france</a> <a href='http://me.andering.com/tag/individuals-and-interactions/' class='tag-link-39' title='1 topic' rel="tag" style='font-size: 8pt;'>individuals-and-interactions</a> <a href='http://me.andering.com/tag/leadership/' class='tag-link-38' title='1 topic' rel="tag" style='font-size: 8pt;'>leadership</a> <a href='http://me.andering.com/tag/multinational-mammoth/' class='tag-link-34' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>multinational-mammoth</a> <a href='http://me.andering.com/tag/open-space/' class='tag-link-11' title='17 topics' rel="tag" style='font-size: 12.2264150943pt;'>open-space</a> <a href='http://me.andering.com/tag/passion/' class='tag-link-18' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>passion</a> <a href='http://me.andering.com/tag/people/' class='tag-link-15' title='34 topics' rel="tag" style='font-size: 16.7169811321pt;'>people</a> <a href='http://me.andering.com/tag/presentation/' class='tag-link-30' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>presentation</a> <a href='http://me.andering.com/tag/qcon/' class='tag-link-78' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>qcon</a> <a href='http://me.andering.com/tag/quality/' class='tag-link-33' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>quality</a> <a href='http://me.andering.com/tag/refactoring/' class='tag-link-74' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>refactoring</a> <a href='http://me.andering.com/tag/retrospectives/' class='tag-link-14' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>retrospectives</a> <a href='http://me.andering.com/tag/risk/' class='tag-link-19' title='1 topic' rel="tag" style='font-size: 8pt;'>risk</a> <a href='http://me.andering.com/tag/ruby/' class='tag-link-29' title='1 topic' rel="tag" style='font-size: 8pt;'>ruby</a> <a href='http://me.andering.com/tag/scenario-planning/' class='tag-link-62' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>scenario-planning</a> <a href='http://me.andering.com/tag/sensemaking/' class='tag-link-45' title='8 topics' rel="tag" style='font-size: 9.84905660377pt;'>sensemaking</a> <a href='http://me.andering.com/tag/social-software/' class='tag-link-13' title='1 topic' rel="tag" style='font-size: 8pt;'>social-software</a> <a href='http://me.andering.com/tag/software-architecture/' class='tag-link-32' title='1 topic' rel="tag" style='font-size: 8pt;'>software-architecture</a> <a href='http://me.andering.com/tag/spam/' class='tag-link-35' title='1 topic' rel="tag" style='font-size: 8pt;'>spam</a> <a href='http://me.andering.com/tag/systems-thinking/' class='tag-link-25' title='26 topics' rel="tag" style='font-size: 14.6037735849pt;'>systems-thinking</a> <a href='http://me.andering.com/tag/testing/' class='tag-link-7' title='3 topics' rel="tag" style='font-size: 8.52830188679pt;'>testing</a> <a href='http://me.andering.com/tag/tools/' class='tag-link-24' title='9 topics' rel="tag" style='font-size: 10.1132075472pt;'>tools</a> <a href='http://me.andering.com/tag/unconference/' class='tag-link-10' title='16 topics' rel="tag" style='font-size: 11.9622641509pt;'>unconference</a> <a href='http://me.andering.com/tag/web-20/' class='tag-link-12' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>web-2.0</a> <a href='http://me.andering.com/tag/workshop/' class='tag-link-37' title='2 topics' rel="tag" style='font-size: 8.2641509434pt;'>workshop</a> <a href='http://me.andering.com/tag/writing/' class='tag-link-20' title='4 topics' rel="tag" style='font-size: 8.79245283019pt;'>writing</a> <a href='http://me.andering.com/tag/xp/' class='tag-link-26' title='1 topic' rel="tag" style='font-size: 8pt;'>xp</a></li><li id="categories-1" class="widget widget_categories"><h2 class="widgettitle">Categories</h2> <ul> <li class="cat-item cat-item-3"><a href="http://me.andering.com/category/bookmarks/" title="View all posts filed under bookmarks">bookmarks</a> </li> <li class="cat-item cat-item-4"><a href="http://me.andering.com/category/people-systems/" title="View all posts filed under people & systems">people & systems</a> </li> <li class="cat-item cat-item-8"><a href="http://me.andering.com/category/public-courses/" title="View all posts filed under public courses">public courses</a> </li> <li class="cat-item cat-item-7"><a href="http://me.andering.com/category/testing/" title="View all posts filed under testing">testing</a> </li> <li class="cat-item cat-item-1"><a href="http://me.andering.com/category/unfiled/" title="View all posts filed under unfiled">unfiled</a> </li> <li class="cat-item cat-item-5"><a href="http://me.andering.com/category/wrestling-with-programs/" title="View all posts filed under wrestling with programs">wrestling with programs</a> </li> </ul> </li><li id="rss-1" class="widget widget_rss"><h2 class="widgettitle"><a class='rsswidget' href='http://www.systemsthinking.net/rss20.xml' title='Syndicate this content'><img style='background:orange;color:white;border:none;' width='14' height='14' src='http://me.andering.com/wp-includes/images/rss.png' alt='RSS' /></a> <a class='rsswidget' href='http://www.systemsthinking.net/' title='Systems Thinking aggregator - http://www.systemsthinking.net/'>systemsthinking.net</a></h2><ul><li><a class='rsswidget' href='http://blog.nayima.be/2008/11/19/xp-day-benelux-2/' title='Preparing for XP Days Benelux Thursday, the XP Days Benelux start. The first sessions start at 10:00; the conference organisation is about done by then. Once the conference gets going, there’s not a lot of work for the organisers. From then on, the session presenters and participants have to do their bit. We’re not kidding when we say that “the focus of this conference is on practical knowledge, real-world experience, and active participation of everyone”. Bigger and better than ever before At least it’s bigger than before. The number of participants has grown steadily from 85 in the first year to more than 150 this year. We’ve always set a cap on the number of participants: 30 participants per track. That (plus or minus 10) is about the number of participants with whom you can have really interactive session. Better? We’ll know from the retrospective if we’ve improved on last year. See you there Or if you can’t be there, follow the conference via the FriendFeed XP Days Benelux room or read our presenter and attendees’ blogs. More later.'>Pascal Van Cauwenberghe: XP Day Benelux - 2</a></li><li><a class='rsswidget' href='http://blog.nayima.be/2008/11/13/being-professional-pt-3/' title=' A simple question Agile Coach: OK. A professional takes responsibility and is an openminded lifelong learner. P: Yes. A professional knows what to do and does it. Agile Coach: That sounds a bit mercenary. It somehow feels wrong to me. Is there no more to being professional? P: (Embarrassed silence. Then) Let me think about it and I’ll have the answer by next week. Is that ok for you? Agile Coach: Yes. I want to become a good professional. What is the acceptance test for “a professional”? How can we recognise one? What are the essential characteristics of a professional? Acceptance criteria #3: A professional acts ethically according to values A professional acts according to a Code of Ethics The ACM and IEEE have a Code of Ethics for Software Engineers. Here is the short version: Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: 1. PUBLIC - Software engineers shall act consistently with the public interest. 2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment. 5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues. 8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. Copyright (c) 1999 by the Association for Computing Machinery, Inc. and the Institute for Electrical and Electronics Engineers, Inc. Read the the full version Read the short and the long version. Replace ‘Software engineer’ by I. Does this code of ethics apply to you? A professional acts according to a set of Values Daniel Dennett shows in “Darwin’s Dangerous Idea” that we don’t have the time or resources (or even the techniques) to completely analyse our ethical dilemmas. Rules and values offer convenient shortcuts to quickly resolve dilemmas in a reasonably good way. That’s why I try to act according to a set of Agile Values.They act as warning lights for potential problems. Communication Of course, we talk a lot, write and read a lot of documents. But do we communicate well? Do all stakeholders of our project talk the same language, use the same metaphors and have a common vision? Do we verify if we understand others, for example by using the “9 boxes” interview technique? Collaboration Of course, we’re all in the same room (except for the testers and the systems engineers and the support team and…). But do we all really collaborate? Do we have common goals across the whole value chain, including partners and suppliers? Are we all aligned towards that common goal? Do we succeed and fail as a team or am I rewarded for personal successes? Feedback Of course, we always work with short iterations. But have we built in mechanisms to give us rapid and regular feedback? Do we steer our project based on the feedback? How long can we afford go “steady as she goes”? Is our feedback cycle shorter than that? What do we do when our feedback mechanisms give us bad news? Simplicity Of course, we know about YAGNI and DTSTTCPW. But do we really work to keep things simple? Do we invest the refactoring time and effort to keep our software simple and malleable? Do we reflect and adapt our processes to keep them simple, lean and efficient? Do we relentlessly strive to make everything simpler? Quality Of course, we know that “Quality is Free“. But do we really believe that? Do we keep our standards for quality high when we’re under pressure — especially when we’re under pressure? Are we tempted to take shortcuts and “fix it later”? Do we support each other to resist the pressure to do things “slow & dirty”? Do we welcome issue reports and perform root cause analysis so that we can implement Jidoka and Poka Yoke? Respect Of course, we all respect each other. That goes without saying, which is why this value was left out of the original Agile values. But then why do we still see deathmarches? Do we respect the value that each team member brings to the project? Do we respect the ‘other’ teams with whom we have to collaborate? Trust Of course, we trust each other. But, do you really trust everyone on the team to make correct changes to your code? Do the developers really trust their management’s judgments and decisions? Do managers trust their team’s estimates and technical choices? Do we trust the onsite customer’s choices and priorities? Do we trust that everyone on the team will take responsibility? Always? Transparency Of course, we’re transparent; you just have to come look at our whiteboard and burndown chart. But do we really make all information visible, including the bad news? Do we really share the project risks with everybody involved, including the customer? Do I Pass the Test? There are few people who would dispute the ‘goodness’ of these values or the code of ethics guidelines, yet they’re hard to follow. We’ve all seen people who’ve compromised these guidelines under pressure. We’ve all been in situations where we were at least tempted to compromise or lacked the courage to stand up for our values. I certainly have. Read the the full version of the code of ethics and ask yourself: do I pass all of those acceptance tests? What can I do today to improve my ’score’? What small step can I take today to become more professional?'>Pascal Van Cauwenberghe: Being professional - pt. 3</a></li><li><a class='rsswidget' href='http://blog.nayima.be/2008/11/09/being-professional-pt-2/' title=' A simple question Agile Coach: OK. A professional takes responsibility. P: Yes. Many projects go wrong because so few people really take responsibility. Agile Coach: Blaming is much easier, isn’t it? Is there more to being professional? P: (Embarrassed silence. Then) Let me think about it and I’ll have the answer by next week. Is that ok for you? Agile Coach: Yes. I want to learn more about becoming professional. What is the acceptance test for “a professional”? How can we recognise one? What are the essential characteristics of a professional? Acceptance criteria #2: A professional is openminded and a lifelong learner Other people might have good ideas too Recently I heard a bunch of “Agilistas” dismiss CMMi offhand. I know of CMMi implementations and training that were poorly done and resulted in not much more than extra overhead. Some people don’t understand the spirit and only know the letter. I’ve seen the same with Agile. Despite flawed implementations, CMMi contains a bunch of interesting ideas and techniques. The spirit of CMMi is compatible with my Agile values. At another Agile gathering hackles were raised when a presenter dared to suggest that the Lean practice of “Standardized Work” might be usefully applied to IT work. “We’re not production workers!” they cried. Others dismissed practices because they would be used by “evil managers” to create “plug-compatible programmers”. My hackles went up when a session presenter recently dismissed first all managers then all salespeople as ignorant and evil. A professional can’t afford a closed mind. Other discplines, other approaches and other professions have interesting ideas. The most interesting training I ever followed was a sales training. I like conferences where I can see and meet presenters with different backgrounds and ideas. For example, I like the diversity in subjects and delivery of the Benelux XP Days, but I worry that there are few sessions that present something I disagree with. I wonder why there are so few sessions that explain what went wrong with Agile. I seek to perceive more than I seek to be perceived. I seek and find value wherever I can. Mistakes are a learning opportunity We’re trained to dislike and avoid mistakes. However, mistakes do happen. How we react to them allows us to see who the professionals are. A professional says “Thank you!” to a bug reporter. When we learn of a mistake we get the opportunity to do some deep learning and improvement. We learn from the answer to two questions: “Why didn’t we detect this problem earlier?” What’s wrong with our tests? Why wasn’t this case covered? How can we detect this type of issue sooner? How can we improve our tests? If we do this consistently, we implement “Jidoka” so that we’re alerted immediately when something goes wrong and can fix the problem while it’s still cheap to correct. “Why did we make this type of mistake?” What is the root cause of the problem? What is it that allows this type of problem to occur? How can we change our work or methods so that this type of problem can’t occur? If we do this consistently, we implement “Poka Yoke” or mistake-proofing because the cheapest issue to fix is the one that doesn’t happen. I welcome reported mistakes as a learning opportunity. Continuous Improvement Standardized Work documents the best way we know of doing something. Tomorrow we’ll do better. It’s important to celebrate today’s successes. But we know we can do better next time, if we learn and improve. A professional always looks for ways to do things better. Thinking tools like Systems Thinking, Theory of Constraints, Lean and Agile help me to make sense of the situation, see places to intervene and find creative ways to make things better. Personal Agility tools like Congruence, Agile Fairytales and other games allow me to become a better person, colleague, friend and coach every day. I have done my best today; I can do better tomorrow. Invest in learning All of this improvement and learning costs time, effort and money. Companies and people facing difficult times fear they have none of these three. Yet, when the going gets tough the smart keep learning. A professional invests in learning. I meet new people at work, conferences, training and talks. I learn something from each person I meet. Every situation has interesting angles that make me see new things. Books, both fiction and non-fiction, make me travel to different worlds, introduce me to new people, new ideas. I read about a subjects that are outside of my normal expertise and work. For example, this year I read about physics, evolution, consciousness, free will and philosophy and I re-read fairytales. I set aside time and money to keep learning. I will keep learning for the rest of my life.'>Pascal Van Cauwenberghe: Being professional - pt. 2</a></li><li><a class='rsswidget' href='http://blog.nayima.be/2008/11/07/simblogging-aye-2008-retrospective/' title=' ‘SimBlogging‘ offers a his and hers viewpoint where Pascal and Portia timebox-blog as a pair on the same topics simultaneously What Went Well I finally got to see Heathrow Terminal 5, where I met up with Portia. We got an upgrade on our ticket thanks to the friendly British Airways lady at the checkin desk. A good start. 10 hours later, in Phoenix, the heat, sun, blue skies, pools, palm trees and cacti are a bit of a shock after grey, dreary and wet Brussels and London. Our “Mirror Mirror on the Wall… Why Me?” Agile Fairytale BOF was met with enthusiasm and we kept playing the game during dinner and drinks, resulting in plenty of “Aha! moments”. We played the “Quality vs Speed” game that looks at the tradeoff between releasing early and finding/fixing bugs. We managed to win thanks to our clear, simple and adaptive process built upon our shared team principles of “Quality AND Speed”. We might have done better if we had collaborated with the other teams, but at least we shared our process with the others. During the retrospective we discussed if the model of the game is still relevant to Agile projects. When we work with short timeboxes and give priority to DONE stories (without known bugs), the main tradeoff is one of time vs scope. And then we can apply the Business Value principles, which is another game altogether. Several other sessions provided new learning or illustrated material I already knew: Experiencing the coping stances and congruence by sculpting the stances. Selling ideas to management (or anyone else for that matter) where we experimented with different techniques to sell ideas to a manager. I got to play the manager, which is always fun. I tried to be helpful and sympathetic to the person who came to me with their idea, but I failed to help the “seller”. Clearly, management is not as easy as it sounds. In the “Just Enough Leadership” session we got to experiment with the “wisdom of the crowds” to see if a team came up with better rankings. The session included collected metrics, including one measure of correlation between individual and team scores that might indicate who led the team. We didn’t go very deep into the metrics, but correlation does not mean causation. In our team, we switched leader very quickly. We led by example: someone said “Lets…” and the others followed. If you have a good idea, there isn’t any need for endless debate to come to a consensus. Go for it and see if you’re followed, because a leader is defined by their followship. Although “I’m an Introvert”, I enjoyed the many discussions and talks with photographers, magicians, testers, jokers, would-be Evil Queens, managers, bloggers, stars and coaches from many countries that make up the audience of the AYE conference. We ended our travels in Phoenix with a visit to the Heard Native American museum, where we learned more about the Inuit and Pueblo people with their “Katsina” and scary ogres. Complaints with recommendations The AYE “conference“, is a 5 day training course with 5 trainers. Either make it a conference with a set of diverse presenters who bring different perspectives or call it training. The conference kicks off with the warmup tutorial (also known as the “Steve and Don show”) which explains the basic tools and terminology and MBTI types. Many participants wrote their MBTI type on their nametags. Is this a way to advertise “this is how I am and want to be treated”? The emphasis on MBTI types throughout the conference is a bit too strong for my taste. I see MBTI types as preferences, not something “that I am” and that can’t be changed. I would recommend: ensuring that there is a clear disclaimer about MBTI, that these are preferences, that this is a default that we will fall back on when we are stressed. Our MBTI type is not a fixed pattern that determines how we work and act. working with mixed teams, instead of by MBTI type, so that we can be more effective by exploiting the diversity of the team, one of the lessons of the “Mirror Mirror on the Wall… Why Me?” Agile Fairytale. '>Pascal Van Cauwenberghe: SimBlogging: AYE 2008 Retrospective</a></li><li><a class='rsswidget' href='http://www.estherderby.com/weblog/2008/11/conditions-for-change.html' title='I attended an Organizational Change BoF last evening at the AYE conference. Among other things, we talked about why it is that some managers fail to act when there are many signs of big problems.I see three conditions that are prequisites for change (at any level):People have to recognize the situation. One person at the group told a compnay that was losing billions, but kept cancelling projects that produced revenue, and funded projects that failed. The problem was obvious to anyone who *could* see. But the senior managers had a mental model of operating as a monopoly, and updated neither their mental models nor their corporate accounting systems. So they didn't see it.People have to believe it is possible to change the situation in some way. If people don't believe it's possible to change, they are paralyzed. THere are some things can't be changed, that are out of the sphere of influence or control. People often forget that even when they can't change external circumstances, they can change their response.People need to have some idea of how to shift the situation. WHen people have no earthly idea how to shift the situation, they become paralyzed. So paralyzed that they don't seek help in the form of new ideas or expertise. Or they grasp at the first silver bullet that's offered (which often makes the situation worse). Or they do nothing.So how do you create the conditions for change in your organization? Stay tuned. I'll be blogging about that in the next weeks.'>Esther Derby: Conditions for Change</a></li></ul></li> <li id="recent-comments" class="widget widget_recent_comments"> <h2 class="widgettitle">Recent Comments</h2> <ul id="recentcomments"><li class="recentcomments"><a href='http://ericlefevre.net/wordpress/2008/10/21/more-about-coding-dojo-at-citcon-amsterdam/' rel='external nofollow'>Eric Lefevre-Ardant on Java & Agile » More about Coding Dojo at CITCON Amsterdam</a> on <a href="http://me.andering.com/2008/10/21/as-a-programmer-i-want-to-go-to-a-coders-dojo-so-that-i-can-improve-my-skills/#comment-35540">As a programmer, I want to go to a coders dojo so that I can improve my skills.</a></li><li class="recentcomments"><a href='http://me.andering.com/2008/09/12/iterative-and-incremental-rebranding/' rel='external nofollow'>me.andering » Blog Archive » Iterative and Incremental rebranding</a> on <a href="http://me.andering.com/2007/10/29/systemsthinking-for-every-day-use-a-tale-of-web-site-traffic/#comment-34503">Systemsthinking for every day use - a tale of web site traffic</a></li><li class="recentcomments"><a href='http://the-soa.blogspot.com' rel='external nofollow'>Kevin</a> on <a href="http://me.andering.com/2006/05/17/customer-oriented-architecture/#comment-33770">Customer Oriented Architecture</a></li><li class="recentcomments">Posywillos on <a href="http://me.andering.com/2006/05/22/moo-cow/#comment-33078">Moo Cow</a></li><li class="recentcomments"><a href='http://me.andering.com' rel='external nofollow'>Willem van den Ende</a> on <a href="http://me.andering.com/2008/06/08/agile-open-its-also-for-structured-people/#comment-31416">Agile Open - it’s also for “structured” people ;)</a></li></ul> </li><li id="rss-2" class="widget widget_rss"><h2 class="widgettitle"><a class='rsswidget' href='http://www.agilealliance.org/feed/rss2_events/' title='Syndicate this content'><img style='background:orange;color:white;border:none;' width='14' height='14' src='http://me.andering.com/wp-includes/images/rss.png' alt='RSS' /></a> <a class='rsswidget' href='http://agilealliance.org/' title='Articles, Books, and News about Agile software development processes.'>Agile Alliance Events</a></h2><ul><li><a class='rsswidget' href='http://agilealliance.org/show/2203' title='Planning is important for all projects, even agile ones. Unfortunately, we?ve all seen so many worthless plans that we?d like to throw planning out altogether. But let?s not give up yet. It is possible to create a project plan that looks forward six to nine months yet is accurate and useful. This one-day course will give you insight as to some common reasons traditional planning approaches fail and introduce you to some practices that really do work.'>Agile Estimating and Planning with Mike Cohn</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2204' title='This two?day course provides deep insight into the principles of Scrum by the Co?Creator of Scrum. It allows participants to assess their Scrum implementations using the practices that produce the best Scrum teams worldwide.'>CSM Scrum in Practice, the next step - Jeff Sutherland</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2202' title='Agile Swiss is pleased to announce the first XP Day Suisse. This conference targets any managers, developers and testers that are interested in Agility and more specifically in eXtreme Programming. Sessions will mainly be in French.'>XP Day Suisse 2009, Edition Francophone</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2200' title='This workshop is aimed at exploring and understanding the customer role on Agile projects. It will answer several common questions about this role, like: What’s an agile customer? What’s the role of the agile customer? Why is this role so important? Is the agile customer one person or a team? What traits should an agile customer have? Why does the role break down? There will be a highly interactive breakout session that will bring different perspectives on the topic from the participants experience and tries to deepen the understanding of this important issue.'>APLN Dallas Chapter Meeting </a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2194' title='I am very excited to announce the first public offering of my 2-day experience-based Agile Testing class. This is the same class that I have been successfully presenting privately, onsite, for clients for the last two years. The 1-day version of this class that I presented as a tutorial at the STAREast and STARWest conferences sold out and was very well-received. See the registration page for information and registration, or read on… WHAT Agile Testing a 2-day experience-based class with Elisabeth Hendrickson and Dale Emery (in which there will be lots of exercises, demonstrations, and discussions, and absolutely no slideshows, and no long, boring lectures) WHEN Wednesday and Thursday, Dec 10 and 11, 2008 WHERE Carr America Conference Center Pleasanton, California HOW MUCH $995 if registering on or before Nov 15 $1295 if registering after Nov 15 20% group discount if registering 2 or more people simultaneously DESCRIPTION When a software development organization adopts Agile practices, the testing practices must become Agile as well. But what does that mean? This 2-day experience-based class provides participants with an in-depth understanding of how testing changes when a team adopts Agile methods. On the first day, we run an in-depth simulation that gives participants the opportunity to experience an Agile transition. In the simulation, participants drive process changes to increase Agility, reflecting and adapting their working agreements to increase communication, collaboration, feedback, and visibility. By the end of the first day, participants have a clear understanding of the Agile values and principles, and what transitioning to Agile means for testing. During the second day we cover concrete Agile Testing practices such as Acceptance Test Driven Development (ATDD), Test Driven Development (TDD), Agile test automation techniques, and Exploratory Testing. Space is limited! In order to ensure the class is as interactive and experience-based as possible, participation is limited to 25 people. TOPICS The characteristics of a truly Agile team Driving development with tests: Acceptance Test Driven Development (ATDD) and Test Driven Development (TDD) Agile test automation practices Exploratory Testing on Agile projects Lightweight test documentation Agile test management practices INTENDED AUDIENCE Everyone who is either currently on an Agile team or who has an interest in learning how testing is done in Agile. That includes: Business Stakeholders such as Scrum Product Owners, XP Customers, and business analysts. Developers of all kinds including programmers, architects, designers, and database specialists. QA and Test specialists including testers, test automators, quality assurance specialists, quality managers, and quality engineers. Managers, Leads, and Coaches, and anyone else managing, leading, or coaching the efforts of anyone on an Agile team. This class is intended to help everyone on an Agile team learn how testing activities fit into Agile methods. Because everyone on an Agile team typically ends up doing some kind of testing, everyone on an Agile team can benefit from this class. No specific technical knowledge is assumed.() () It is worth noting, however, that you will see actual, real code on day 2. But it’s written in Ruby and is highly readable and we are sure you’ll be able to follow along just fine even if you are not a programmer. If you are a programmer and are interested in going into the technical details of ATDD and TDD in greater depth than we can cover in the class, we are happy to provide more technical detail during breaks or after class ends. We love this stuff. We live, eat, breathe, and sleep software development. And we are test obsessed. So we are really really happy to talk about this stuff with anyone who enjoys talking about it. TO REGISTER Please visit https://www.regonline.com/at121008 Thanks! Elisabeth Hendrickson Quality Tree Software, Inc.'>Agile Testing Class</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2195' title='SDT Conf is focused on providing agile practitioners a platform to meet face-to-face and discuss/demonstrate simple design & testing principles/approaches. The conference will use Open Spaces to structure conversation, improve understanding, facilitate brainstorming and help innovate. 4th annual SDTConf will be hosted by Pittsburgh Supercomputing Center. This is a free conference. Position Paper is your price of admission. Please add your position paper to our wiki'>Simple Design and Testing Conference</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2185' title='Part 1 Agile Boot Camp Topics: object oriented programming SOLID principles design patterns dependency injection team design on whiteboard IDE tools and quickly navigating a codebase test driven development mocking pair programming refactoring pain driven development domain driven design ORM contributing to open source projects harnessing the community for extreme growth and continuous learning foundations of Agile You’ve learned the .NET Framework – now learn the principles and tools to use it effectively. This intermediate curriculum will lead developers to work-changing techniques and create momentum towards continuous improvement in an ever-changing field. With a focus on object orientation and software engineering practices refined in real projects, students will discover principles and patterns to manage software complexity. By the end of the course students will have eliminated a reliance on leaky-abstraction APIs by ? understanding software design concepts and principles ? understanding and practicing test-driven development ? practicing working in an effective team ? implementing designs using object oriented techniques and design patterns ? understanding object-relational mapping ? drive future growth through exposure to advanced topics Day 1 getting started ? lab 1: check out the project and run a unit test ? module: Intro ? module: TDD basics ? lab 2: writing your first failing unit test ? lab 3: writing the code that makes it pass ? demo: working with resharper LUNCH object oriented programming ? module: SOLID ? lab 4: interfaces, facade ? lab 5a: strategy pattern ? lab 5b: command pattern ? extra curricular lab: playing with structuremap Day 2 team design & advanced tdd ? quick mini-lab involving structuremap ? module: dependency injection / ioc ? lab6: configuring structuremap ? demo: testing with mock objects ? lab7: rhino mocks ? team design on whiteboard LUNCH refactoring & pair programming ? lab8: more tests, enumeration base class, specification pattern, .net 3.5 feature in the code ? module: refactoring ? demo: refactoring legacy code ? lab 9: pair tasks involving refactoring ? extra curricular: student-driven discussion and demo Day 3 ? lab 10: “refactor this” challenge ? module: DDD basics, terminology ? lab 11: repositories, using provided nhibernate stuff (HSB, DTB, etc.), specification pattern ? module: foundations of Agile LUNCH ? module: nhibernate ? demo: querying nhibernate ? lab 12: downloading source, creating patch for open source project ? student-driven discussion, demos'>Agile Boot Camp - Part 1</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2184' title='This advanced agile curriculum will cover everything involved in developing software in .NET, from setting up a new project and defining the architecture to implementing functionality in a loosely-coupled and testable manner. We will immerse ourselves in domain-driven design, test-driven development, design patterns, object-relational mapping, inversion of control (IoC), pair programming, automated builds, and continuous integration (CI). Students will discover which practices cause projects to fail and which practices help projects succeed. The course will include a strong focus on solid principles and values that can be applied to any .NET project. With a solid understanding of Agile values and object-oriented programming, students will emerge from the training with a refocused view on software development and the tools to immediately bring value back to their companies. All developers will take back working code developed during the course using the techniques and practices taught. Included: - 3 days of fast-paced, immersive training - Morning bagels and lunch each day - 1 C# JetBrains Resharper license Day 1: - Automated codebase onboarding - Fundamental principles of leading an agile team - The Onion Architecture - Domain Driven Design - Test-Driven Development - Enhancing an existing system using pair programming Day 2: - Agile estimation and planning - Team tasking - Automated database migrations using Tarantino and Redgate SQL Compare - Applying Day 1 through trainer-driven user stories - Agile retrospective Day 3: - Object-relational mapping using NHibernate - Deep into Inversion of Control and IoC containers - Branching/merging and source code structure - Pushing the limit on DDD Ubiquitous Language - Automated builds - Stubs, mocks, and what to use when - Introducting Extreme Programming in your team'>Agile Boot Camp - Advanced</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2183' title='Part 1 Agile Boot Camp Topics: object oriented programming SOLID principles design patterns dependency injection team design on whiteboard IDE tools and quickly navigating a codebase test driven development mocking pair programming refactoring pain driven development domain driven design ORM contributing to open source projects harnessing the community for extreme growth and continuous learning foundations of Agile You’ve learned the .NET Framework – now learn the principles and tools to use it effectively. This intermediate curriculum will lead developers to work-changing techniques and create momentum towards continuous improvement in an ever-changing field. With a focus on object orientation and software engineering practices refined in real projects, students will discover principles and patterns to manage software complexity. By the end of the course students will have eliminated a reliance on leaky-abstraction APIs by ? understanding software design concepts and principles ? understanding and practicing test-driven development ? practicing working in an effective team ? implementing designs using object oriented techniques and design patterns ? understanding object-relational mapping ? drive future growth through exposure to advanced topics Day 1 getting started ? lab 1: check out the project and run a unit test ? module: Intro ? module: TDD basics ? lab 2: writing your first failing unit test ? lab 3: writing the code that makes it pass ? demo: working with resharper LUNCH object oriented programming ? module: SOLID ? lab 4: interfaces, facade ? lab 5a: strategy pattern ? lab 5b: command pattern ? extra curricular lab: playing with structuremap Day 2 team design & advanced tdd ? quick mini-lab involving structuremap ? module: dependency injection / ioc ? lab6: configuring structuremap ? demo: testing with mock objects ? lab7: rhino mocks ? team design on whiteboard LUNCH refactoring & pair programming ? lab8: more tests, enumeration base class, specification pattern, .net 3.5 feature in the code ? module: refactoring ? demo: refactoring legacy code ? lab 9: pair tasks involving refactoring ? extra curricular: student-driven discussion and demo Day 3 ? lab 10: “refactor this” challenge ? module: DDD basics, terminology ? lab 11: repositories, using provided nhibernate stuff (HSB, DTB, etc.), specification pattern ? module: foundations of Agile LUNCH ? module: nhibernate ? demo: querying nhibernate ? lab 12: downloading source, creating patch for open source project ? student-driven discussion, demos'>Agile Boot Camp - Part 1</a></li><li><a class='rsswidget' href='http://agilealliance.org/show/2186' title='This advanced agile curriculum will cover everything involved in developing software in .NET, from setting up a new project and defining the architecture to implementing functionality in a loosely-coupled and testable manner. We will immerse ourselves in domain-driven design, test-driven development, design patterns, object-relational mapping, inversion of control (IoC), pair programming, automated builds, and continuous integration (CI). Students will discover which practices cause projects to fail and which practices help projects succeed. The course will include a strong focus on solid principles and values that can be applied to any .NET project. With a solid understanding of Agile values and object-oriented programming, students will emerge from the training with a refocused view on software development and the tools to immediately bring value back to their companies. All developers will take back working code developed during the course using the techniques and practices taught. Included: - 3 days of fast-paced, immersive training - Morning bagels and lunch each day - 1 C# JetBrains Resharper license Day 1: - Automated codebase onboarding - Fundamental principles of leading an agile team - The Onion Architecture - Domain Driven Design - Test-Driven Development - Enhancing an existing system using pair programming Day 2: - Agile estimation and planning - Team tasking - Automated database migrations using Tarantino and Redgate SQL Compare - Applying Day 1 through trainer-driven user stories - Agile retrospective Day 3: - Object-relational mapping using NHibernate - Deep into Inversion of Control and IoC containers - Branching/merging and source code structure - Pushing the limit on DDD Ubiquitous Language - Automated builds - Stubs, mocks, and what to use when - Introducting Extreme Programming in your team'>Agile Boot Camp - Advanced</a></li></ul></li><li id="calendar" class="widget widget_calendar"><h2 class="widgettitle"> </h2><div id="calendar_wrap"><table id="wp-calendar" summary="Calendar"> <caption>November 2008</caption> <thead> <tr> <th abbr="Monday" scope="col" title="Monday">M</th> <th abbr="Tuesday" scope="col" title="Tuesday">T</th> <th abbr="Wednesday" scope="col" title="Wednesday">W</th> <th abbr="Thursday" scope="col" title="Thursday">T</th> <th abbr="Friday" scope="col" title="Friday">F</th> <th abbr="Saturday" scope="col" title="Saturday">S</th> <th abbr="Sunday" scope="col" title="Sunday">S</th> </tr> </thead> <tfoot> <tr> <td abbr="October" colspan="3" id="prev"><a href="http://me.andering.com/2008/10/" title="View posts for October 2008">« Oct</a></td> <td class="pad"> </td> <td colspan="3" id="next" class="pad"> </td> </tr> </tfoot> <tbody> <tr> <td colspan="5" class="pad"> </td><td>1</td><td>2</td> </tr> <tr> <td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td> </tr> <tr> <td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td> </tr> <tr> <td>17</td><td>18</td><td>19</td><td id="today">20</td><td>21</td><td>22</td><td>23</td> </tr> <tr> <td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td> </tr> </tbody> </table></div></li><li id="archives" class="widget widget_archive"><h2 class="widgettitle">Archives</h2> <ul> <li><a href='http://me.andering.com/2008/10/' title='October 2008'>October 2008</a></li> <li><a href='http://me.andering.com/2008/09/' title='September 2008'>September 2008</a></li> <li><a href='http://me.andering.com/2008/08/' title='August 2008'>August 2008</a></li> <li><a href='http://me.andering.com/2008/07/' title='July 2008'>July 2008</a></li> <li><a href='http://me.andering.com/2008/06/' title='June 2008'>June 2008</a></li> <li><a href='http://me.andering.com/2008/05/' title='May 2008'>May 2008</a></li> <li><a href='http://me.andering.com/2008/04/' title='April 2008'>April 2008</a></li> <li><a href='http://me.andering.com/2008/03/' title='March 2008'>March 2008</a></li> <li><a href='http://me.andering.com/2008/02/' title='February 2008'>February 2008</a></li> <li><a href='http://me.andering.com/2008/01/' title='January 2008'>January 2008</a></li> <li><a href='http://me.andering.com/2007/12/' title='December 2007'>December 2007</a></li> <li><a href='http://me.andering.com/2007/11/' title='November 2007'>November 2007</a></li> <li><a href='http://me.andering.com/2007/10/' title='October 2007'>October 2007</a></li> <li><a href='http://me.andering.com/2007/09/' title='September 2007'>September 2007</a></li> <li><a href='http://me.andering.com/2007/08/' title='August 2007'>August 2007</a></li> <li><a href='http://me.andering.com/2007/06/' title='June 2007'>June 2007</a></li> <li><a href='http://me.andering.com/2007/05/' title='May 2007'>May 2007</a></li> <li><a href='http://me.andering.com/2007/02/' title='February 2007'>February 2007</a></li> <li><a href='http://me.andering.com/2007/01/' title='January 2007'>January 2007</a></li> <li><a href='http://me.andering.com/2006/11/' title='November 2006'>November 2006</a></li> <li><a href='http://me.andering.com/2006/10/' title='October 2006'>October 2006</a></li> <li><a href='http://me.andering.com/2006/09/' title='September 2006'>September 2006</a></li> <li><a href='http://me.andering.com/2006/08/' title='August 2006'>August 2006</a></li> <li><a href='http://me.andering.com/2006/07/' title='July 2006'>July 2006</a></li> <li><a href='http://me.andering.com/2006/06/' title='June 2006'>June 2006</a></li> <li><a href='http://me.andering.com/2006/05/' title='May 2006'>May 2006</a></li> <li><a href='http://me.andering.com/2006/04/' title='April 2006'>April 2006</a></li> <li><a href='http://me.andering.com/2006/03/' title='March 2006'>March 2006</a></li> <li><a href='http://me.andering.com/2006/02/' title='February 2006'>February 2006</a></li> <li><a href='http://me.andering.com/2006/01/' title='January 2006'>January 2006</a></li> <li><a href='http://me.andering.com/2005/12/' title='December 2005'>December 2005</a></li> <li><a href='http://me.andering.com/2005/11/' title='November 2005'>November 2005</a></li> <li><a href='http://me.andering.com/2005/10/' title='October 2005'>October 2005</a></li> <li><a href='http://me.andering.com/2005/09/' title='September 2005'>September 2005</a></li> <li><a href='http://me.andering.com/2005/08/' title='August 2005'>August 2005</a></li> <li><a href='http://me.andering.com/2005/06/' title='June 2005'>June 2005</a></li> <li><a href='http://me.andering.com/2005/05/' title='May 2005'>May 2005</a></li> <li><a href='http://me.andering.com/2005/04/' title='April 2005'>April 2005</a></li> <li><a href='http://me.andering.com/2005/03/' title='March 2005'>March 2005</a></li> <li><a href='http://me.andering.com/2005/02/' title='February 2005'>February 2005</a></li> <li><a href='http://me.andering.com/2005/01/' title='January 2005'>January 2005</a></li> <li><a href='http://me.andering.com/2004/08/' title='August 2004'>August 2004</a></li> <li><a href='http://me.andering.com/2004/07/' title='July 2004'>July 2004</a></li> <li><a href='http://me.andering.com/2004/06/' title='June 2004'>June 2004</a></li> <li><a href='http://me.andering.com/2004/05/' title='May 2004'>May 2004</a></li> <li><a href='http://me.andering.com/2004/02/' title='February 2004'>February 2004</a></li> <li><a href='http://me.andering.com/2003/12/' title='December 2003'>December 2003</a></li> <li><a href='http://me.andering.com/2003/11/' title='November 2003'>November 2003</a></li> </ul> </li> <li id="meta" class="widget widget_meta"> <h2 class="widgettitle">Meta</h2> <ul> <li><a href="http://me.andering.com/wp-login.php">Log in</a></li> <li><a href="http://me.andering.com/feed/" title="Syndicate this site using RSS 2.0">Entries <abbr title="Really Simple Syndication">RSS</abbr></a></li> <li><a href="http://me.andering.com/comments/feed/" title="The latest comments to all posts in RSS">Comments <abbr title="Really Simple Syndication">RSS</abbr></a></li> <li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li> </ul> </li> <li id="akismet" class="widget widget_akismet"> <h2 class="widgettitle">Spam Blocked</h2> <div id="akismetwrap"><div id="akismetstats"><a id="aka" href="http://akismet.com" title=""><div id="akismet1"><span id="akismetcount">41,862</span> <span id="akismetsc">spam comments</span></div> <div id="akismet2"><span id="akismetbb">blocked by</span><br /><span id="akismeta">Akismet</span></div></a></div></div> </li> </ul> </div> <hr /> <div id="footer"> <!-- If you'd like to support WordPress, having the "powered by" link somewhere on your blog is the best way; it's our only promotion or advertising. --> <p> me.andering is proudly powered by <a href="http://wordpress.org/">WordPress</a> <br /><a href="http://me.andering.com/feed/">Entries (RSS)</a> and <a href="http://me.andering.com/comments/feed/">Comments (RSS)</a>. <!-- 35 queries. 1.066 seconds. --> </p> </div> </div> <!-- Gorgeous design by Michael Heilemann - http://binarybonsai.com/kubrick/ --> </body> </html>