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

<channel>
	<title>Elegant Code &#187; Agile</title>
	<atom:link href="http://elegantcode.com/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 20 Jul 2010 12:52:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Scrum and the C-Word</title>
		<link>http://elegantcode.com/2010/04/29/scrum-and-the-c-word/</link>
		<comments>http://elegantcode.com/2010/04/29/scrum-and-the-c-word/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 05:14:15 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Team System]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/29/scrum-and-the-c-word/</guid>
		<description><![CDATA[There has been much deriding of both Scrum and the word “certification” in the past few months. It has become quite vogue to look down on formal training of any kind it seems, particularly among the ALT.NETerati. I get it, and I think several of the criticisms are deserved. Some aren’t.
Disclosure

I am a Professional Scrum [...]]]></description>
			<content:encoded><![CDATA[<p>There has been much deriding of both Scrum and the word “certification” in the past few months. It has become quite vogue to look down on formal training of any kind it seems, particularly among the ALT.NETerati. I get it, and I think several of the criticisms are deserved. Some aren’t.</p>
<h2>Disclosure</h2>
<ul>
<li>I am a Professional Scrum Developer Trainer. That is: I have been <em>certified</em> by Microsoft and Scrum.org to teach others about Scrum and modern engineering practices on the Microsoft platform. More information about all of that <a href="http://msdn.microsoft.com/en-us/vstudio/ff433643.aspx" target="_blank">is available here</a> and <a href="http://scrum.org" target="_blank">here</a>. </li>
<li>I teach for a living. Mostly Visual Studio ALM along with topics I believe are focused on making better software craftspeople. </li>
<li>I have watched teams get it wrong (and sometimes right) for about 20 years now. That admission makes me feel very old. </li>
</ul>
<h3>A Bit More Background</h3>
<p>Choosing to enter the Microsoft and Scrum.org program and be part of the certification process for developers was not an easy one for me. Indeed, as several people I irritated with my waffling for over 6 months will attest, it was a decision I spent a long time considering. In the end, I obviously elected to become an instructor for certification courseware and this in this post I will tell you why.</p>
<h2>On Scrum</h2>
<p>I first practiced Scrum in or around 2003/4, if memory serves. I didn’t see it done well for several years after that. </p>
<p>On paper, everything sounded just spiffy when I studied Scrum and considered bringing it to my team and organization. Who wouldn’t want the benefits it promises of frequent feedback, clear accountability, and no-nonsense shipping of product? To get started we hired Jeff Sutherland to come in and teach the original Certified Scrum Master course offered through the Scrum Alliance. I was baffled that at the end of the 2 day discussion to receive this thing called a “certification”. My colleagues and I actually joked about it at the time as being proof that we didn’t fall asleep in class. As Ken Schwaber pointed out to me <a href="http://www.pluralsight-training.net/community/blogs/pluralcast/archive/2010/03/29/pluralcast-12-the-future-of-scrum-with-ken-schwaber.aspx?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+pluralcast+%28Pluralcast+by+Pluralsight%29" target="_blank">in an interview</a> recently, we probably could have nodded off and been fine, actually.</p>
<p>My team struggled a great deal trying to use Scrum well. I won’t bother including the long list of mistakes we made, but we eventually got traction and settled into a cohesive rhythm. After we figured things out, Scrum became an amazing vehicle for delivering product, which was the original intent.</p>
<p>To my knowledge, Scrum is still used today in that organization. At the time of my departure was in fairly healthy shape. </p>
<p>Looking back on Scrum’s contribution to my professional life and its contribution to our industry as a whole, I am humbled. Scrum as an idea has done more to drive agile software development than perhaps any idea other than the original manifesto itself. TDD ranks right up there, but fewer CEOs have heard of TDD. There are a lot of reasons Scrum has won the marketing war, but the simple fact is that our profession is a better place for the presence of the Scrum framework and the people who provided stewardship to it, Ken Schwaber and Jeff Sutherland.</p>
<p>I know good and well that other techniques are very effective. Kanban is a wonderful way for many teams to operate. Feature Driven Development is a powerful model for the teams who need to formality of it. And of course, the gaping hole left by the absence Extreme Programming reminds us that zealotry has its costs. Scrum, as it advertises, is not a silver bullet. It won’t fix anything, in fact. Only people of good intent who come together and try to do something well can make that happen. Scrum can merely provide the rules of engagement.</p>
<p>Scrum is popular for several reasons. When it comes to the mechanics of the framework:</p>
<ol>
<li>It is easy to understand. </li>
<li>It is easy implement and follow the basics. </li>
<li>It can show dramatic return in a short period of time. </li>
<li>The first Scrum in an organization is a highly visible <a href="http://www.strategosinc.com/kaizen_blitz.htm" target="_blank">Kaizen Blitz</a>.</li>
</ol>
<p>With all of those benefits, Scrum is plagued by the same problems as every other process or methodology framework in the world.</p>
<ol>
<li>Human beings are the ones who try an implement it. </li>
<li>Human beings are the ones who try an implement it. </li>
</ol>
<p>Scrum is great when wielded for good. It is the lowest barrier-to-entry agile technique I know (excluding engineering practices, like TDD and CI). Teams who currently live in plan-driven organizations derive great benefit from Scrum and <em>so do the organizations themselves</em>. Scrum can be very, very effective.</p>
<p>I chose to work with Scrum.org specifically because I <strong>know from experience</strong> there are more shops out there that need to change than those who don’t. I believe most of those shops cannot handle something like Kanban. [<a href="http://elegantcode.com/2009/02/21/how-scrum-is-like-marijuana/" target="_blank">See this for more</a>] My professional life as a trainer is focused on helping developers love our craft again. Those of us who got a thrill from lighting up a pixel many years ago have just been beaten to hell and back since deciding to do this for money. Although Scrum is only one arrow in the quiver, Scrum as a great vehicle for improving people’s professional lives.</p>
<h2>On Certification</h2>
<p>Ken has readily admitted that using C-word in the beginning of the Scrum Alliance has resulted in a complete and total mess. Primarily because certification involves a demonstration of <em>something</em>, typically knowledge. Unfortunately that requirement was never required to obtain a Certified Scrum Master “credential”. We can all recognize this is not a credential in it’s current form as offered by the Scrum Alliance, but merely a roster of class attendees. ‘Nuff said.</p>
<p>I also see there is value in demonstrating knowledge through a <em>genuine</em> certification process. For example, we all take driver’s tests. I look for ASE (Automobile Service Excellence) certified mechanics to work on my car. I trust a BMW certified technician to work on my motorcycle. What is a university diploma if not a certification award?</p>
<p>In almost any field, it is impossible to certify competence. Certification can demonstrate knowledge, but not ability, talent, experience, or wisdom. It is exactly for this reason that I never got hung up on a college degree as a hiring manager but went to great lengths to try and know a person. A college degree did show me what that person experienced, though, because I basically know what it means to get a university degree. There is value in that credential because it had to be earned.</p>
<p>Given the current state of the industry, there are 3 logical progression paths for Scrum certification.</p>
<ol>
<li>Change nothing and remain a mockery.</li>
<li>Drop the certification word and idea altogether. </li>
<li>Add meat to C-word by actually testing for it. </li>
</ol>
<p>Scrum.org is taking the 3rd option and I am going for that ride. My reasons include:</p>
<ol>
<li>Working for change within a system is typically far more effective than pushing from the outside.</li>
<li>Scrum as an idea continues to help teams and individuals improve.</li>
<li>I respect the people involved in the stewardship of Scrum.org.</li>
<li>“Certification” means a demonstration of knowledge by a taking a test in this crowd. Not perfect, but a good start.</li>
<li>I believe the teams and other trainers I work with have the best interest of the craft at heart. Really.</li>
</ol>
<h2>On The Future of the Craft</h2>
<p>In the last 60 years of programming computers, we have have learned that developing in small batches and delivering incrementally works. Scrum gives us a model for doing exactly that, and it will still be helping teams until the next great thing is found. Now that I know Ken a bit better I can say that Scrum itself will likely evolve to incorporate whatever works better.</p>
<p>Ridiculing certification or Scrum may well be the in-crowd thing de jour, but I see that Scrum addresses a core need in our industry, and genuine certification has its own benefits. Lean offers some wonderful directions for us, and shows all the signs of providing a path forward. But, let’s not forget that Scrum is an inherently Lean idea.</p>
<p>But I digress. </p>
<p>Another time, perhaps.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/29/scrum-and-the-c-word/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>If Self-Documenting Code is the What, Unit Tests are the Why</title>
		<link>http://elegantcode.com/2010/04/25/if-self-documenting-code-is-the-what-unit-tests-are-the-why/</link>
		<comments>http://elegantcode.com/2010/04/25/if-self-documenting-code-is-the-what-unit-tests-are-the-why/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 19:09:04 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/04/25/if-self-documenting-code-is-the-what-unit-tests-are-the-why/</guid>
		<description><![CDATA[It is not enough to just write code that is clean and self-documenting.  Eliminating comments and replacing them with clear variable and method names, will tell the reader of your code clearly what it is doing, but it will not properly express why it is doing it.
If you recall from my original post on Elegant [...]]]></description>
			<content:encoded><![CDATA[<p>It is not enough to just write code that is clean and self-documenting.  <a href="http://elegantcode.com/2010/04/18/eliminating-comments-the-road-to-clarity/">Eliminating comments</a> and replacing them with clear variable and method names, will tell the reader of your code clearly what it is doing, but it will not properly express why it is doing it.</p>
<p>If you recall from my <a href="http://elegantcode.com/2010/04/09/what-does-elegant-code-mean-to-me/">original post</a> on Elegant code, I stated that elegant code is:</p>
<blockquote><p>Something that is simple yet effective, delivered with grace.</p></blockquote>
<p>By writing self-documenting code we are hopefully able to achieve some of the aspects of simplicity and grace, but it tells us nothing about the effectiveness of the code.</p>
<h2>Bringing the dead to life</h2>
<p><a href="http://elegantcode.com/wp-content/uploads/2010/04/zombies.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="zombies" src="http://elegantcode.com/wp-content/uploads/2010/04/zombies_thumb.jpg" border="0" alt="zombies" width="441" height="295" /></a></p>
<p>Throwing out comments is a debatable topic.  <a href="http://www.reddit.com/r/programming/comments/bsutx/">It raises quite a bit of controversy</a>, as you can see from some of the comments on my post about the subject.  The reason, perhaps, that so many people are so staunchly opposed to the idea, is because they are worried, and rightly so, that throwing out comments will reduce the documentation of what the code is doing.</p>
<p>Think about that for a second.  Is documentation of what the code is doing important?  It better be.  What we are trying to accomplish by writing self-documenting code instead of comments, is to take the vessel, which is the code itself, and make that same vessel be the documentation of what the code does.  It is by doing this that we creating a living representation of the functionality of the code.  Comments are akin to a dead representation of the functionality of the code because they do not change automatically with the code.</p>
<p>I diverge to talk about comments so that I can draw a parallel to another form of documentation which is valuable and should be considered necessary.  That other set of documentation is requirements.  Have you ever written requirements documents?  Have you ever captured requirements from the customer and put them into UML diagrams, or perhaps plopped them into some templated Word document, which is never updated again, and no one reads, because no one trusts it is correct?  Wouldn’t it be great if we would replace that dead document or set of documents, with a living one?</p>
<p>The good news is we can, and some of us have.  And I fully expect this recommendation will be just as controversial, because <strong>I am suggesting that we don’t have to write low level specifications of the system at all, instead we can write good unit tests. </strong>When we do this, we are taking a dead form of document and bringing it to life.</p>
<h2>Unit tests tell us why and how our code is effective</h2>
<p>If</p>
<pre class="csharpcode">i = 5;  // Widget count defaults to five.</pre>
<p>is replaced with</p>
<pre class="csharpcode">widgetCount = DEFAULT_WIDGET_COUNT;</pre>
<p><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>then</p>
<blockquote><p><span style="background-color: #ffffff;">1.1.5 When a new widget is created, the widget count should be increased by one.</span></p></blockquote>
<p>is replaced with</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">void</span> When_NewWidgetIsCreated_Then_WidgetCountIsIncreasedByOne()
{
     WidgetFactory.Count = 3;
     WidgetFactory.CreateNew();
     assertEquals(4, WidgetFactory.Count);
}</pre>
<p>The unit test is replacing the low level requirement, which is somewhat open to interpretation and untied to the code, with an absolute and completely tied-to-the-code, specific requirement.</p>
<p>The unit test is telling us why our code is built the way it is.  It is telling us what requirement that particular structure of code is trying to address.  <strong>It is telling us what end result that code is trying to accomplish and what the expectations are on the results of a given condition.</strong></p>
<p>The unit test is telling us how the code is to be used in order to achieve its result.  It is serving as a living reference to the syntax and use of the code we built.  <strong>Instead of providing instructions on how to use our API, we are providing a living example, and proof that it will indeed work.</strong> Examples are often much more effective than instructions anyway.</p>
<h2>What exactly are we replacing?</h2>
<p>At this point we are not trying to replace all the documentation of the system (at this point).</p>
<p>With self-documenting code, we sought to eliminate comments, and replace them with good variable and method names.</p>
<p>With unit tests, we seek to eliminate technical documentation and requirements of the system, that is targeted at a developer or technical audience.</p>
<p>We are NOT trying to eliminate high level specifications of the system, or use cases. <strong>Unit tests DO NOT replace that kind of documentation! </strong>We will talk about replacing that kind of documentation when we talk about automated functional or system tests.</p>
<p>Simply put, any kind of documentation that you would give to a developer so they understand how the system works and how to use the code or APIs, can be easily replaced by writing good unit tests.</p>
<p>Our simple goal is to replace the “dead” documentation (meaning that it does not update automatically with the thing it is documenting), with “living” documentation in the form of unit tests.</p>
<p>One last point.  I want to be clear that I am not saying that having unit tests automatically results in the ability to replace technical documentation.  Just like having long-named methods and variables doesn’t automatically replace the need for comments.  It is a matter of the quality of the unit tests that are written, just as it is a matter of the quality of the self-documenting code.</p>
<h5>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.  Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.  Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h5>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/04/25/if-self-documenting-code-is-the-what-unit-tests-are-the-why/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Shut Up, Bob</title>
		<link>http://elegantcode.com/2010/02/18/shut-up-bob/</link>
		<comments>http://elegantcode.com/2010/02/18/shut-up-bob/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 17:45:00 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/18/shut-up-bob/</guid>
		<description><![CDATA[Some of us are hurting our profession with the casual way we treat language. In the following examples, that guy is Bob.

Scenario 1

Bob: &#8220;Hey, where should we go to lunch?&#8221;

Joe: &#8220;I dunno, get in the car and we&#8217;ll decide later.&#8221;

Bob: &#8220;Yeah, we&#8217;ll just be agile about it.&#8221;

Giggle, giggle. Tee hee hee.

Scenario 2

Bob: &#8220;Hey, what are [...]]]></description>
			<content:encoded><![CDATA[<p>Some of us are hurting our profession with the casual way we treat language. In the following examples, that guy is Bob.
</p>
<h2>Scenario 1<br />
</h2>
<p>Bob: &#8220;Hey, where should we go to lunch?&#8221;
</p>
<p>Joe: &#8220;I dunno, get in the car and we&#8217;ll decide later.&#8221;
</p>
<p>Bob: &#8220;Yeah, we&#8217;ll just be agile about it.&#8221;
</p>
<p>Giggle, giggle. Tee hee hee.
</p>
<h2>Scenario 2<br />
</h2>
<p>Bob: &#8220;Hey, what are you working on?&#8221;
</p>
<p>Joe: &#8220;I&#8217;m not sure what to do, Manager X told me to … and Manager Y told me to …&#8221;
</p>
<p>Bob: &#8220;Ah, so you are being agile then?&#8221;
</p>
<p>Gales of laughter, followed by a knowing wink.
</p>
<h1>Shut Up, Bob<br />
</h1>
<p>Bob, you are causing harm. You are the reason agile has been coopted. You are undermining the efforts of your peers who are actually trying to better our profession. They are doing this for you, Bob.
</p>
<p>Your cheap joke mocks a body of knowledge and professionals who are trying improve the life of your teammates. The fact that you will spend the next 20 minutes hanging out at the water cooler and planning lunch instead of driving positive change in your team lets me know where you are coming from.
</p>
<p>When your CTO passed by and heard your little joke, it confirmed his suspicion he needs to keep the current command-and-control mechanisms in place. This also influenced his ideas of what agile really means, because all he had before is the contents of a 3 year old InfoQ article.
</p>
<p>Bob, shut up. You aren&#8217;t just hurting yourself. You are undermining all of us.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/18/shut-up-bob/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Review: The Passionate Programmer</title>
		<link>http://elegantcode.com/2009/11/29/review-the-passionate-programmer/</link>
		<comments>http://elegantcode.com/2009/11/29/review-the-passionate-programmer/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 00:43:47 +0000</pubDate>
		<dc:creator>Sean Timm</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/11/29/review-the-passionate-programmer/</guid>
		<description><![CDATA[As an Elegant Coder, I suffer the fate of sitting in front of a computer screen for large parts of my day, and I can often be found at home in front of one as well.&#160; This can promote a fairly sedentary lifestyle if one is not careful.&#160; Over the years, I have been both [...]]]></description>
			<content:encoded><![CDATA[<p>As an Elegant Coder, I suffer the fate of sitting in front of a computer screen for large parts of my day, and I can often be found at home in front of one as well.&#160; This can promote a fairly sedentary lifestyle if one is not careful.&#160; Over the years, I have been both more and less careful in this regard at various times.&#160; This has resulted in my current state – a state we will refer to (for purposes of this conversation) – as “overweight”.&#160; I’ve participated in a number of weight loss programs over the years until I finally wised up and realized that every successful program had at its heart two common factors – caloric restriction and exercise.&#160; I am now actively engaged in working both of those factors until I achieve a state we will call “fit”.&#160; However, becoming fit is not an immediate process.&#160; It is a daily process requiring both attention and discipline.&#160; I’m fond of saying, “It took me 15 years to achieve this weight.&#160; Do you expect it to be gone in 30 days?”</p>
<p><a href="http://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic/dp/1934356344%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Delegantcode-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1934356344">The Passionate Programmer: Creating a Remarkable Career in Software Development</a> by <a href="http://chadfowler.com/">Chad Fowler</a> is a book focused on helping you become fit as a developer – leading you along the path of life decisions that make the difference between a job and a remarkable career.&#160; As Chad says, “You don’t win a race by trying not to lose.&#160; And you don’t win at life by trying not to suck.”&#160; You have to be tactical, strategic, and deliberate if you want to avoid your career being “one big series of undirected coincidences.”</p>
<p>I won’t belabor all of the points you can find in this book, but I’d like to call out some things that stood out to me.</p>
<ul>
<li>Be the worst
<ul>
<li>If you’re the best, nothing is challenging and pushing you to grow/perform.&#160; Seek associations with people that are better/faster/smarter than you. </li>
<li>You’re not as bad as you assume.&#160; Give yourself the chance to discover it. </li>
</ul>
</li>
<li>Practice at your limits
<ul>
<li>Chad’s background as a musician provided opportunity to compare skill improvement to music practice.&#160; While performances are expected to be as perfect as possible, practice is raw, gritty, and doesn’t always sound good. </li>
<li>If all you’re ever doing is sitting down churning out elegant code, you’re not pushing at the edges (where all the improvement comes from). </li>
</ul>
</li>
<li>Study the work of masters
<ul>
<li>In the arts (and many other disciplines), much time is given to learning from the work of those that have gone before.&#160; In the past, this was more difficult in software development due to its proprietary nature, but the sheer volume and quality of open source projects makes this much more accessible now. </li>
<li>Existing code reflects on your own capabilities for growth and new avenues of thought. </li>
</ul>
</li>
<li>Focus on the present
<ul>
<li>If your head is always in the clouds of tomorrow, you’ll miss the daily victories. </li>
</ul>
<p> One topic Chad alluded to but didn’t build much on was approaching your career development in an Agile fashion.&#160; I thought this was a great concept, and from some comments on his blog, it looks like he’d like to build on this in the future.&#160; My takeaway was that I’d better start my sprint planning for my career.</li>
</ul>
<p>There were many other points and topics covered including interaction with peers, management, and customers.&#160; Chad includes a number of “Act on It” exercises which will challenge you to grow in the areas he covers.&#160; Overall, it was a great read with a message I needed to hear, and I’d highly recommend it.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/11/29/review-the-passionate-programmer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Agile is not Scrum</title>
		<link>http://elegantcode.com/2009/11/25/agile-is-not-scrum/</link>
		<comments>http://elegantcode.com/2009/11/25/agile-is-not-scrum/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 04:36:01 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/11/25/agile-is-not-scrum/</guid>
		<description><![CDATA[Most people who read this blog will not find the title of this post a revelation. I know firsthand, however, that this is not the case for many.
I recently had the privilege of facilitating a Birds of a Feather session at PDC. The title of our discussion was “Agile – Triumphs, Teams, Trials, and Tribulations” [...]]]></description>
			<content:encoded><![CDATA[<p>Most people who read this blog will not find the title of this post a revelation. I know firsthand, however, that this is not the case for many.</p>
<p>I recently had the privilege of facilitating a Birds of a Feather session at PDC. The title of our discussion was “Agile – Triumphs, Teams, Trials, and Tribulations” and really just provided an opportunity for attendees to share stories. The session was extremely popular. So much so, in fact, that a fire marshal showed up to remove a few people from the room. </p>
<p>Cool, eh? Here is that not-so-cool part.</p>
<p>About 35 minutes into this discussion, I realized I hadn’t heard a question or comment that wasn’t related to Scrum. I asked the room, “How many people are on an agile team that is NOT using Scrum?”</p>
<p>5 hands. Seriously, out of about 150 people of so. 5 hands.</p>
<p><em>What in the world?</em> </p>
<p>Is this simply a sign that Scrum won in the marketing wars? Is this just because some people have heard about Scrum? What’s the root cause of this?</p>
<p>Is it the C-word (certification) that goes along with the 2 day CSM course proving you didn’t die midway through class? Is it the fact that there are some MS Press books on the subject? Is it the fact that there is a soon-to-be-released Scrum Developer course endorsed by Microsoft?</p>
<p>I am not bashing Scrum, but it certainly isn’t for everyone. In fact, I find that Lean with a Kanban system is typically far more effective in medium to small organizations. I am just incredulous that Scrum is so ubiquitous in the Microsoft-stack enterprise.</p>
<p>Scrum does not define agile software development. It drives me crazy to hear someone say, “We are <em>doing</em> Agile. We have Sprints and everything.” I assure you, dear reader, 2 week time boxes does not an agile team make.</p>
<p>The other thing that really fries my chips is that something south of 20% of people who profess to be using Scrum actually are doing so. I have seen so many <a href="http://www.motionbox.com/videos/0a99deb71f13e2ca87" target="_blank">ScrumBut</a> implementations I have started to expect it in any company that claims to be using the process.</p>
<p>My standard advice for any team is to implement a process without modification for at least 3 months before they think they understand it ell enough to tune it to better fit their needs. Of course, no one does this because “we are different”. </p>
<p>Yeah, sure you are.</p>
<p>The bottom line was stated perfectly in the BOF session by <a href="http://consultingblogs.emc.com/simonbennett/" target="_blank">Simon Bennett</a>.</p>
<blockquote><p>“Don’t tell me by-the-book doesn’t work without at least reading the entire book.”</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/11/25/agile-is-not-scrum/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Why my Mom and Ted Neward Irritate Me</title>
		<link>http://elegantcode.com/2009/11/09/why-my-mom-and-ted-neward-irritate-me/</link>
		<comments>http://elegantcode.com/2009/11/09/why-my-mom-and-ted-neward-irritate-me/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 06:56:31 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/11/09/why-my-mom-and-ted-neward-irritate-me/</guid>
		<description><![CDATA[My mother is a psychologist and recently visited me us here in Idaho. We spent some time talking about the psychology behind some agile practices. Pretty cool!
Additionally, we ended up on the one mystery topic that has always eaten away at me. That mystery for me is simple:
Why does one person or team pursue excellence [...]]]></description>
			<content:encoded><![CDATA[<p>My mother is a psychologist and recently visited me us here in Idaho. We spent some time talking about the psychology behind some agile practices. Pretty cool!</p>
<p>Additionally, we ended up on the one mystery topic that has always eaten away at me. That mystery for me is simple:</p>
<blockquote><p>Why does one person or team pursue excellence relentlessly while another hits the door at 5:01 and doesn’t think about software development until tomorrow morning?</p>
</blockquote>
<p>I got into the same discussion with <a href="http://blogs.tedneward.com/" target="_blank">Ted Neward</a> at the recent P&amp;P Summit while playing pool. Heck, it was almost an argument. <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I said something stupid that night. I said, “It’s all about incentives.”</p>
<p>Wrong.</p>
<h2>One Theory: Incentives</h2>
<p>I have had the opinion for years that there must be some motivator, some technique, or some dynamic that will affect people positively to simply care. This is the whole idea behind coaching, after all. A well-versed and motivating individual comes into a team and works with them to get better results. This happens every day.</p>
<p>If this will really work, it necessarily means that people are motivated by incentive. What I mean by that conditions like salary, a great leader, wonderful co-workers, free pizza and soda (or something) will inherently motivate someone to care about excellence. </p>
<p>Certainly no one can deny that incentives like these contribute to an enjoyable workplace. Heck, I love visiting the Microsoft campus and downing those free V-8s. All of them combined though, probably cannot cause someone to ponder, read, and learn. Incentives cannot move someone to try a new coding technique just because it might be interesting.</p>
<h2>The Irritatingly Simpler Theory that is Likely True</h2>
<p>There is just something about unique about people who can’t stop trying to improve. It isn’t the great boss or the great office space that causes me to think about the finer points of TDD in the shower. It’s just because I can’t NOT do it.</p>
<p>Both my mom and Ted Neward tried to get me to see that incentives will get you behavior and results (sometimes the ones you actually want), but can’t create passion. That is something that is simply innately there or not there.</p>
<p>This isn’t to say that there is no value in the person who wants to do their bid and get fair pay for a fair day. That’s not what I’m talking about. I am talking about the fact that most genius is recognized by relentless pursuit, the kind we can’t define.</p>
<h2>The Good News</h2>
<p>OK. Uncle, I get it. The great news is there are so many of us passionate geeks out there striving to improve. You wouldn’t likely be reading this if you weren’t one. Heck, I even geek <a href="http://guild3.com" target="_blank">to work with some</a>!</p>
<p>What’s your theory? Are passionate professionals just the obsessive-compulsive ones?</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/11/09/why-my-mom-and-ted-neward-irritate-me/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>On Software, Sewing, and the Craftsman</title>
		<link>http://elegantcode.com/2009/10/29/on-software-sewing-and-the-craftsman/</link>
		<comments>http://elegantcode.com/2009/10/29/on-software-sewing-and-the-craftsman/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 20:23:09 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/10/29/on-software-sewing-and-the-craftsman/</guid>
		<description><![CDATA[My wife, Eleanor, runs a small side business making some extraordinary things with needles, thread, and cloth. She makes quilts, dresses, stuffed animals, clothes, and reupholsters furniture to round it off. She’s been honing her skills, trying new things, and improving her craftsmanship for many years. She’s very good and has some faithful clients. 
Recently, [...]]]></description>
			<content:encoded><![CDATA[<p>My wife, Eleanor, runs a small side business making some extraordinary things with needles, thread, and cloth. She makes quilts, dresses, stuffed animals, clothes, and reupholsters furniture to round it off. She’s been honing her skills, trying new things, and improving her craftsmanship for many years. She’s very good and has some faithful clients. </p>
<p>Recently, it occurred to me to ask her a seemingly innocuous question:</p>
<blockquote><p>When a client asks you to make something you’ve never made before, what do you tell them it will cost?</p>
</blockquote>
<p>“First of all,” she replied, “every single job is something I’ve never done before.”</p>
<p>Boom. I think we’re on familiar ground here.</p>
<p>I wrote some questions for her to answer in an email and this post shows her responses. Her answers appear in italics. </p>
<p>I find this a fascinating discussion of project estimation and craftsmanship.</p>
<h3>What do you do when the client doesn’t know what they want?</h3>
<p><em>There are two kinds of clients that fit into that category:&#160; </em></p>
<ol>
<li><em>Those who have some sort of unqualified vision and hazy idea of what they want, but lack the vocabulary and expertise to complete their thoughts</em></li>
<li><em>Those who want something different from what they have, and don&#8217;t really care much beyond that.</em></li>
</ol>
<p><em>Customer&#160; #1 is the most work of the two.&#160; They deserve and require time, since they are paying me for my services.&#160; It takes time sitting with these clients, talking through concepts, drawing things on paper, asking questions and offering ideas trying to get to the core of what they want, what they actually need and what&#8217;s physically possible.&#160; I have found that it takes a high level of skill to create something that is perfect to someone else.</em></p>
<p><em>Customer # 2 doesn&#8217;t happen often, but is a lot of fun!&#160; These are the rare clients that enable my inner artist to flourish and shine, with no constraints or outside demands.&#160; These are the clients want something new and shiny, but don&#8217;t have a huge list of demands. They want some sort of element of surprise.&#160; </em></p>
<p><em>Problems ensue when I think I&#8217;ve got a #2 and didn&#8217;t ask enough question to realize I was dealing with a #1.&#160; </em></p>
<h3>How do you charge your clients?</h3>
<p><em>Certain jobs have a set fee.&#160; These are tasks I&#8217;ve done for 20 years; I know how long they take, I could do them in my sleep, and they&#8217;re the same regardless of the client.&#160; On the incredibly rare occasion one of these jobs isn&#8217;t what it appeared to be, my bad and I eat the cost (and I&#8217;ll pay more attention next time!).</em></p>
<p><em>Other jobs, the custom jobs, are harder to price out.&#160; Now that I have a larger body of work, I have a better idea of how long things take.&#160; If it&#8217;s something I&#8217;ve never done, I estimate my time in my head, and then (because I&#8217;m always overly optimistic in my estimation) I double that to come up with my estimated total of time.&#160; Then I factor in&#160; what my time is worth per hour.&#160; </em></p>
<p><em>I also have to know what other professionals are charging for similar services, as it&#8217;s tough to get clients if I&#8217;m charging twice what everyone else wants for the same service.</em></p>
<h3>Do you tell them up front what a job will cost?</h3>
<p><em>If it&#8217;s not a custom job, I always tell my clients the cost up front.&#160; I may adjust the cost of a task between clients, but I don&#8217;t change the price after I&#8217;ve quoted on non-custom jobs.</em></p>
<p><em>Pricing custom jobs is a lot harder.&#160; I run my formula:&#160; estimated time, doubled, multiplied by an hourly rate.&#160; And I offer that as an estimate.&#160; I explain to my customer that it is an estimate to the best of my abilities, and that the price could fluctuate up or down.&#160; I&#8217;ve learned that I don&#8217;t want the clients who aren&#8217;t willing to work within this structure;&#160; these tend to be the people who really, really want custom work and really, really don&#8217;t want to pay custom prices.</em></p>
<h3>What do you do when it takes longer than you thought?</h3>
<p><em>I&#8217;ve found that the bigger the project, the more willing the customer is to accommodate&#160; an extended deadline.&#160; At the first sign of missing a deadline, I call the customer. It helps a lot, at this point, to be able to show my customer what I have actually accomplish already. </em></p>
<p><em>Also, if it&#8217;s something I&#8217;ve never done before, I tell the client that I&#8217;ve never done a job exactly like that one, and my time estimate is only an estimate.</em></p>
<h3>On a long or complex project, when do you consult with the client to guide your decisions?</h3>
<p><em>If it&#8217;s a client #2, I don&#8217;t usually consult with them once I&#8217;ve started the project.&#160; If I&#8217;ve come to a point where things veer wildly in opposite directions, I may have the client stop by to choose option A or B.&#160; Usually, with customer #2, I do it how I want to do it.</em></p>
<p><em>Custom jobs for a client #1 elicit a lot of phone calls.&#160; I like to check with the customer at each phase when I&#8217;m not completely sure what they&#8217;d choose;&#160; a 2 minute phone call takes a lot less time than picking 150 staples out of someone&#8217;s wingback chair.&#160; I have never had a customer be irritated with me for making sure I was meeting their needs.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/10/29/on-software-sewing-and-the-craftsman/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Team Build without Tests Lists</title>
		<link>http://elegantcode.com/2009/10/02/team-build-without-tests-lists/</link>
		<comments>http://elegantcode.com/2009/10/02/team-build-without-tests-lists/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 19:40:04 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[MSDN]]></category>
		<category><![CDATA[Team System]]></category>
		<category><![CDATA[Tools and Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/10/02/team-build-without-tests-lists/</guid>
		<description><![CDATA[Test lists drive me nuts. I recently recorded a screen cast showing how to pull of CI without the test lists. Here ya go!
Here’s a link to the screen cast.
]]></description>
			<content:encoded><![CDATA[<p>Test lists drive me nuts. I recently recorded a screen cast showing how to pull of CI without the test lists. Here ya go!</p>
<p><a href="http://www.pluralsight.com/main/screencasts/screencast.aspx?id=vsts08-continuous-integration" target="_blank">Here’s a link to the screen cast</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/10/02/team-build-without-tests-lists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Cast 32 &#8211; Tommy Norman</title>
		<link>http://elegantcode.com/2009/09/28/code-cast-32-tommy-norman/</link>
		<comments>http://elegantcode.com/2009/09/28/code-cast-32-tommy-norman/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 05:10:00 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[CodeCast]]></category>
		<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Team System]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/09/29/code-cast-32-tommy-norman/</guid>
		<description><![CDATA[At the Agile 2009 conference in Chicago, I got to meet some great people I’d previously known only in electronic form. Tommy Norman is one of those folks, as he and I have had many conversations on Twitter. Tommy is a System Architect at Compuware in Nashville, TN where focuses on Application Lifecycle Management. He [...]]]></description>
			<content:encoded><![CDATA[<p>At the Agile 2009 conference in Chicago, I got to meet some great people I’d previously known only in electronic form. Tommy Norman is one of those folks, as he and I have had many <a href="http://twitter.com/tommynorman">conversations on Twitter</a>. Tommy is a System Architect at Compuware in Nashville, TN where focuses on Application Lifecycle Management. He is also heavily into Scrum, Team System, and the <a href="http://www.nashdotnet.org/">Nashville .NET User Group</a>. When not working he enjoys being at home with his family of 5, playing guitar and baby dolls, and making music.</p>
<p>In this episode, Tommy visited with me about effectively applying Team System to some agile software development practices. This ranges from Continuous Integration to the tool aisle at your neighborhood Sears store, but I’ll leave that for you to discover.</p>
<ul>
<li><a href="http://tommynorman.blogspot.com/">Tommy’s Blog</a></li>
<li><a href="http://scrumforteamsystem.com/">Scrum for Team System</a></li>
<li><a href="http://manifesto.softwarecraftsmanship.org/">Manifesto for Software Craftsmanship</a></li>
<li><a href="http://msdn.microsoft.com/en-us/teamsystem/default.aspx">Visual Studio Team System</a></li>
</ul>
<p><a href="http://pluralsight-free.s3.amazonaws.com/david-starr/ecc/ECC_32_TommyNorman.mp3">Get the show here</a></p>
<p><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=271207118"><img src="http://elegantcode.com/cast/files/images/itunes_button.gif" border="0" alt="View in iTunes" /></a> <a href="http://feeds2.feedburner.com/elegantcodecast"><img src="http://elegantcode.com/cast/files/images/rss_podcast.jpg" border="0" alt="Any Podcatcher" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/09/28/code-cast-32-tommy-norman/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://pluralsight-free.s3.amazonaws.com/david-starr/ecc/ECC_32_TommyNorman.mp3" length="37603314" type="audio/mpeg" />
		</item>
		<item>
		<title>Code Cast 31 &#8211; Agile for Families</title>
		<link>http://elegantcode.com/2009/08/31/code-cast-31-agile-for-families/</link>
		<comments>http://elegantcode.com/2009/08/31/code-cast-31-agile-for-families/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 04:16:05 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[CodeCast]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/08/31/code-cast-31-agile-for-families/</guid>
		<description><![CDATA[This episode is a recording I made during my talk at the Agile 2009 conference in Chicago. The session, “Agile for Families, Iterating with Children”, was surprisingly popular. In addition to the slides and the audio, I am including a link to the IEEE paper that went along with this session. That’s right! There is [...]]]></description>
			<content:encoded><![CDATA[<p>This episode is a recording I made during my talk at the Agile 2009 conference in Chicago. The session, “<a href="http://agile2009.com/node/1080" target="_blank">Agile for Families, Iterating with Children</a>”, was surprisingly popular. In addition to the slides and the audio, I am including a link to the IEEE paper that went along with this session. That’s right! There is an IEEE paper about Agile at home. Awesome <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The slides from the talk are available below. The slide deck I am posting here is a bit larger than the one used in the talk. These slides include some interviews with the Starr kids that were left out of the slides at the conference for time reasons.</p>
<p>This episode is less rocket surgery, and more brain science. I hope you enjoy the show.</p>
<ul>
<li><a href="http://pluralsight-free.s3.amazonaws.com/david-starr/files/PID922221.pdf">IEEE Paper</a></li>
<li><a href="http://pluralsight-free.s3.amazonaws.com/david-starr/files/AgileForFamilies.pdf">Slide Deck in PDF</a></li>
</ul>
<p><a href="http://pluralsight-free.s3.amazonaws.com/david-starr/ecc/ECC_31_AgileForFamilies.mp3">Get the show here</a></p>
<p><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=271207118"><img border="0" alt="View in iTunes" src="http://elegantcode.com/cast/files/images/itunes_button.gif" /></a> <a href="http://feeds2.feedburner.com/elegantcodecast"><img border="0" alt="Any Podcatcher" src="http://elegantcode.com/cast/files/images/rss_podcast.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/08/31/code-cast-31-agile-for-families/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
<enclosure url="http://pluralsight-free.s3.amazonaws.com/david-starr/ecc/ECC_31_AgileForFamilies.mp3" length="44851152" type="audio/mpeg" />
		</item>
	</channel>
</rss>
