<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
  <channel>
    <title>
      James Shore
       (Blog only)
    </title>
    <link>http://www.jamesshore.com</link>
    <description>The Art of Agile</description>
    <language>en</language>
    <copyright>Copyright 2000-2006, James Shore</copyright>
    <generator>Blosxom v2.0</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    
<item>
  <title>Estimation and Fluency</title>
  <link>http://www.jamesshore.com/Blog/Estimation-and-Fluency.html</link>
  <category>/Blog</category>
  <pubDate>Mon, 25 Feb 2013 00:02:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Estimation-and-Fluency.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;25 Feb 2013&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;Martin Fowler recently asked me via email if I thought there might be a relationship between &lt;a href=&quot;http://www.agilefluency.com&quot;&gt;Agile Fluency&lt;/a&gt; and how teams approach estimation. This is my response:&lt;/p&gt;

&lt;p&gt;I definitely see a relationship between fluency and estimation. I can't say it's clear cut or that I have real data on it, but this is my gut feel:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;p&gt;&lt;strong&gt;&quot;Focus on Value&quot;&lt;/strong&gt; teams tend to fall into two camps: either &quot;estimation is bad Agile&quot; or &quot;we're terrible at estimating.&quot; These statements are the same boy dressed by different parents. One star teams can't provide reliable estimates because their iterations are unpredictable, typically with stories drifting into later iterations (making velocity meaningless), and they have a lot of technical debt (so even if they took a rigorous approach to &quot;done done&quot; iterations, there would be wide variance in velocity from iteration to iteration, so their predictions' error bars would be too wide to be useful).&lt;/p&gt;&lt;/li&gt;

	&lt;li&gt;&lt;p&gt;&lt;strong&gt;&quot;Deliver Value&quot;&lt;/strong&gt; teams tend to take a &quot;we serve our customer&quot; attitude. They're very good at delivering what the customer asks for (if not necessarily what he wants). Their velocity is predictable, so they can make quite accurate predictions about how long it will take to get their current backlog done. Variance primarily comes from changes to the backlog and difficulty discussing needs with customers (leading to changes down the road), but those are manageable with error bars. Some two-star teams retain the &quot;estimation is bad Agile&quot; philosophy, but any two-star team with a reasonably stable backlog should be capable of making useful predictions.&lt;/p&gt;&lt;/li&gt;
	
	&lt;li&gt;&lt;p&gt;&lt;strong&gt;&quot;Optimize Value&quot;&lt;/strong&gt; teams are more concerned with meeting business needs than delivering a particular backlog. Although they can make predictions about when work will be done, especially if they've had a lot of practice at it during their two-star phase, they're more likely to focus on releasing the next thing as soon as possible by reducing scope and collaboratively creating clever shortcuts. (E.g., &quot;I know you said you wanted a subscriber database, but we think we can meet our first goal faster if we just make REST calls to our credit card processor as needed. That has ramifications x, y, z; what do you think?&quot;). They may make predictions to share with stakeholders, but those stakeholders are higher-level and more willing to accept &quot;we're working on business goal X&quot; rather wanting than a detailed timeline.&lt;/p&gt;&lt;/li&gt;
	
	&lt;li&gt;&lt;p&gt;I'm not sure how this would play out with &lt;strong&gt;&quot;Optimize for System&quot;&lt;/strong&gt; teams. I imagine it would be the same as three-star fluency, but with a different emphasis.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

    
    
  </description>
</item>
<item>
  <title>Analysis of Hacker News Traffic Surge on Let's Code TDJS Sales</title>
  <link>http://www.jamesshore.com/Blog/Analysis-of-HN-Traffic-Surge.html</link>
  <category>/Blog</category>
  <pubDate>Mon, 25 Feb 2013 00:01:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Analysis-of-HN-Traffic-Surge.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;25 Feb 2013&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;A few weeks ago, my new screencast series, &lt;a href=&quot;http://www.letscodejavascript.com&quot;&gt;Let's Code: Test-Driven JavaScript&lt;/a&gt;, got mentioned &lt;a href=&quot;http://news.ycombinator.com/item?id=5211877&quot;&gt;on Hacker News&lt;/a&gt;. Daniel Markham asked that I share the traffic and conversion numbers. I agreed, and it's been long enough for me to collect some numbers, so here we are.&lt;/p&gt;

&lt;p&gt;To begin with, Let's Code TDJS is a bootstrapped venture. It's a screencast series focused on rigorous, professional JavaScript development. It costs money. $19.95/month for now, $24.95/month starting March 1st, with a seven-day free trial.&lt;/p&gt;

&lt;p&gt;Let's Code TDJS isn't exactly a startup--I already have a business as an independent Agile consultant--but I'm working on the series full-time. I've effectively &quot;quit my day job&quot; to work on it. I'm doing this solo.&lt;/p&gt;

&lt;p&gt;I launched the series last year &lt;a href=&quot;http://www.kickstarter.com/projects/188988365/lets-code-test-driven-javascript&quot;&gt;on Kickstarter&lt;/a&gt;. Thanks in large part to a mention on &lt;a href=&quot;http://news.ycombinator.com/item?id=3977240&quot;&gt;Hacker News&lt;/a&gt; and then even more from Peter Cooper's &lt;a href=&quot;http://javascriptweekly.com/&quot;&gt;JavaScript Weekly&lt;/a&gt;, the Kickstarter was a huge success. It raised about $40K and attracted 879 backers. That confirmed the viability of the screencast and also gave me runway to develop the show.&lt;/p&gt;

&lt;p&gt;(By the way, launching on Kickstarter was fantastic. I mean, sure, it was nailbiting and hectic and scary, and running the KS campaign took *way* more work than I ever expected, but the results were fantastic. As a platform for confirming the viability of an idea while simultaneously giving you seed funding, I can't imagine anything better for the bootstrapper.)&lt;/p&gt;

&lt;p&gt;Anyway, the Kickstarter got a reasonable amount of attention. I tossed up a signup page for people who missed it, and by the time I was ready to release the series to the public, I had a little over 1500 people on my mailing list.&lt;/p&gt;

&lt;p&gt;I announced the series' availability on February 4th. First on Sunday via Twitter, and then on Monday morning (recipient's time) via the mailing list. That's about 4,200 Twitter followers and 1,500 mailing list recipients.&lt;/p&gt;

&lt;p&gt;Before we get into the numbers, I should tell you that I don't use Google Analytics. I don't track visitors, uniques, pageviews, none of that. I'm not sure what I would do with it. What I &lt;em&gt;do&lt;/em&gt; track is 1) number of sales and 2) conversions/retention. That's it.&lt;/p&gt;

&lt;p&gt;So, I announced on the weekend of the fourth. There was a corresponding surge in sales. Here's how many new subscriptions I got each day, with Monday the 4th counting as &quot;100x.&quot; (So if I got 100,000 subscriptions on Monday--which, since you don't see me posting from a solid gold throne, you can assume I didn't--then I would have gotten 48,000 on Sunday.)&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Sunday: 48x&lt;/li&gt;
	&lt;li&gt;Monday: 100x&lt;/li&gt;
	&lt;li&gt;Tuesday: 33x&lt;/li&gt;
	&lt;li&gt;Wednesday: 25x&lt;/li&gt;
	&lt;li&gt;(Total: 206x.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;82% of these subscribers converted to paying customers. 15% cancelled the trial and 3% just didn't pay. Although I collect credit card information at signup, those subscribers' credit card didn't process successfully.&lt;/p&gt;

&lt;p&gt;A week and a half later, just after midnight my time (PST) on Wednesday the 13th, the series was posted &lt;a href=&quot;http://news.ycombinator.com/item?id=5211877&quot;&gt;to Hacker News&lt;/a&gt; by Shirish Padalkar. It was on the front page for about a day, and was near the top of the front page for the critical morning hours of every major European and US time zone. It peaked at #7. That led to a shorter, sharper surge.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Wednesday: 140x&lt;/li&gt;
	&lt;li&gt;Thursday: 23x&lt;/li&gt;
	&lt;li&gt;(Total: 163x, or 79% of the email's surge.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;83% of these subscribers converted from the free trial. 14% cancelled and 4% didn't pay. The only real difference between the two surges was that a lot more of the HN subscribers cancelled at the last moment. About half actually cancelled &lt;em&gt;after&lt;/em&gt; their credit card failed to process and they got a dunning email. It makes me wonder if HN tire-kickers are more inclined to &quot;hack the system&quot; by somehow putting in a credit card that will can be authorized but cannot be charged. A debit card with insufficient funds would do the trick.&lt;/p&gt;

&lt;p&gt;Another interesting data point is that &quot;background&quot; subscriptions--that is, the steady flow of subscriptions since February 2nd, &lt;em&gt;other&lt;/em&gt; than traffic surges--averages 10x per day. (That is, on an average day, I get one tenth the subscriptions I got on Monday the 4th). However, the conversion rate for those &quot;background&quot; subscriptions is 95%. I'm not sure why it's so much higher. Perhaps those subscriptions are the result of word-of-mouth recommendations? That would make sense, since I'm not advertising or doing any real traffic generation yet.&lt;/p&gt;


&lt;h3&gt;My conclusions:&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;p&gt;For this service, a mention on HN is about equivalent to a mailing list of 1,200 interested potential customers and 3,330 Twitter followers. That's actually less than I would have expected.&lt;/p&gt;&lt;/li&gt;
	
	&lt;li&gt;&lt;p&gt;The conversion behavior of HN'ers is about the same as the mailing list. I would have expected the mailing list to convert at a higher rate, since they've already expressed interest. But it's essentially the same.&lt;/p&gt;&lt;/li&gt;
	
	&lt;li&gt;&lt;p&gt;Both surges led to significantly less conversions than word-of-mouth subscribers. Don't get me wrong--from my research, I'm led to believe that ~83% is excellent. But 95% is frikkin' amazing.&lt;/p&gt;&lt;/li&gt;
	
	&lt;li&gt;&lt;p&gt;HN'ers are more likely to cancel a free trial at the last moment and use credit cards that authorize but cannot be charged.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally--thanks to everyone who subscribed! I hope this was interesting. You can &lt;a href=&quot;https://news.ycombinator.com/item?id=5283474&quot;&gt;discuss this post&lt;/a&gt; on Hacker News. I'm available to answer questions.&lt;/p&gt;

&lt;p&gt;(If you're curious about the series, you can find a &lt;a href=&quot;http://www.letscodejavascript.com#demo&quot;&gt;demo video here&lt;/a&gt;.)&lt;/p&gt;

    
    
  </description>
</item>
<item>
  <title>Let's Code: Test-Driven JavaScript Now Available</title>
  <link>http://www.jamesshore.com/Blog/Lets-Code-JavaScript-Now-Available.html</link>
  <category>/Blog</category>
  <pubDate>Mon, 11 Feb 2013 00:01:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Lets-Code-JavaScript-Now-Available.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;11 Feb 2013&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;I'm thrilled to announce that &lt;a href=&quot;http://www.letscodejavascript.com&quot;&gt;Let's Code: Test-Driven JavaScript&lt;/a&gt; is now open to the public!&lt;/p&gt;

&lt;p&gt;I've been working on this project for over nine months. Over a thousand people have had early access, and reactions have been overwhelmingly positive. Viewers are saying things like &lt;strong&gt;&quot;truly phenomenal training&quot;&lt;/strong&gt; (Josh Adam, via email), &lt;strong&gt;&quot;highly recommended&quot;&lt;/strong&gt; (Theo Andersen, via Twitter), and &lt;strong&gt;&quot;*the* goto reference&quot;&lt;/strong&gt; (anonymous, via viewer survey).&lt;/p&gt;

&lt;p&gt;Up until last week, the show was only available to Kickstarter backers. Now I've opened it up to everyone. &lt;a href=&quot;http://www.letscodejavascript.com&quot;&gt;Come check it out!&lt;/a&gt; There's a &lt;a href=&quot;http://www.letscodejavascript.com/#demo&quot;&gt;demo video&lt;/a&gt; below.&lt;/p&gt;


&lt;h3&gt;About Let's Code: Test-Driven JavaScript&lt;/h3&gt;

&lt;p&gt;&lt;/p&gt;

&lt;object width=&quot;630&quot; height=&quot;380&quot;&gt;
&lt;param value=&quot;http://www.youtube.com/v/XDfOFZQDz8g&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot; name=&quot;movie&quot; /&gt;&lt;param value=&quot;window&quot; name=&quot;wmode&quot; /&gt;
&lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;embed width=&quot;630&quot; height=&quot;380&quot; wmode=&quot;window&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.youtube.com/v/XDfOFZQDz8g&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot;&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;If you've programmed in JavaScript, you know that it's an... interesting... language. Don't get me wrong: I love JavaScript. I love its first-class functions, the intensive VM competition between browser makers, and how it makes the web come alive. It definitely has its good parts.&lt;/p&gt;

&lt;p&gt;It also has some not-so-good parts. Whether it's browser DOMs, automatic semicolon insertion, or an object model with a split personality, everyone's had some part of JavaScript bite them in the ass at some point. That's why test-driven development is so important.&lt;/p&gt;

&lt;p&gt;Let's Code: Test-Driven JavaScript is a screencast series focused on rigorous, professional web development. That means test-driven development, of course, and also techniques such as build automation, continuous integration, refactoring, and evolutionary design. We support multiple browsers and platforms, including iOS, and we use Node.js on the server. The testing tools we're using include NodeUnit, Mocha, expect.js, and Testacular.&lt;/p&gt;

&lt;p&gt;You can learn more on the &lt;a href=&quot;http://www.letscodejavascript.com&quot;&gt;Let's Code TDJS home page&lt;/a&gt;. If you'd like to subscribe, you can &lt;a href=&quot;http://www.letscodejavascript.com/v3/subscribe&quot;&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

    
    
  </description>
</item>
<item>
  <title>Come Play TDD With Me at CITCON</title>
  <link>http://www.jamesshore.com/Blog/Come-Play-TDD-with-Me-at-CITCON.html</link>
  <category>/Blog</category>
  <pubDate>Tue, 18 Sep 2012 00:01:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Come-Play-TDD-with-Me-at-CITCON.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;18 Sep 2012&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;&lt;a href=&quot;http://www.citconf.com/&quot;&gt;CITCON&lt;/a&gt;, the Continuous Integration and Testing Conference, is coming up this weekend in Portland, and I'm going to be there and recording episodes of &lt;a href=&quot;http://www.jamesshore.com/Blog/Lets-Play/&quot;&gt;Let's Play TDD&lt;/a&gt;! I'm looking for people to pair with during the conference.&lt;/p&gt;

&lt;p&gt;If you're interested, check out the &lt;a href=&quot;https://github.com/jamesshore/lets_play_tdd&quot;&gt;current source code&lt;/a&gt; and watch of a few of the &lt;a href=&quot;http://www.jamesshore.com/Blog/Lets-Play/&quot;&gt;most recent videos&lt;/a&gt;. Then, at the conference, come to my &quot;Let's Play TDD&quot; session and volunteer to pair! It should be a lot of fun.&lt;/p&gt;

&lt;p&gt;There are still a few slots open at the conference, so if you haven't registered, &lt;a href=&quot;http://www.citconf.com/portland2012/register.php&quot;&gt;there's still time&lt;/a&gt;. I hope to see you there!&lt;/p&gt;

    
    
  </description>
</item>
<item>
  <title>Acceptance Testing Revisited</title>
  <link>http://www.jamesshore.com/Blog/Acceptance-Testing-Revisited.html</link>
  <category>/Blog</category>
  <pubDate>Sat, 08 Sep 2012 00:01:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Acceptance-Testing-Revisited.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;08 Sep 2012&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p class=&quot;aside&quot;&gt;I recently had the chance to reconsider my position on acceptance testing, thanks to a question from Michal Svoboda over on the discussion forums at my &lt;a href=&quot;http://letscodejavascript.com&quot;&gt;Let's Code: Test-Driven Javascript&lt;/a&gt; screencast. I think this new answer adds some nuances I haven't mentioned &lt;a href=&quot;http://www.jamesshore.com/Blog/Alternatives-to-Acceptance-Testing.html&quot;&gt;before&lt;/a&gt;, so I'm reproducing it here:&lt;/p&gt;

&lt;p&gt;I think &quot;acceptance&quot; is actually a nuanced problem that is fuzzy, social, and negotiable. Using tests to mediate this problem is a bad idea, in my opinion. I'd rather see &quot;acceptance&quot; be done through face-to-face conversations before, after, and during development of code, centering around whiteboard sketches (earlier) and manual demonstrations (later) rather than automated tests.&lt;/p&gt;

&lt;p&gt;That said, we still need to test the behavior of the software. But this is a programmer concern, and can be done with programmer tests. Tools like Cucumber shift the burden of &quot;the software being right&quot; to the customer, which I feel is a mistake. It's our job as programmers to (a) work with the customer, on the customer's terms, so we build the right thing, and (b) make sure it actually works, and keeps working in the future. TDD helps us do it, and it's our responsibility, not the customer's.&lt;/p&gt;

&lt;p&gt;I don't know if this is very clear. To rephrase: &quot;acceptance&quot; should be a conversation, and it's one that we should allow to grow and change as the customer sees the software and refines her understanding of what she wants. Testing is too limited, and too rigid. Asking customers to read and write acceptance tests is a poor use of their time, skill, and inclinations.&lt;/p&gt;

&lt;p&gt;I have more here:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.jamesshore.com/Blog/The-Problems-With-Acceptance-Testing.html&quot;&gt;The Problems with Acceptance Testing&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.jamesshore.com/Blog/Alternatives-to-Acceptance-Testing.html&quot;&gt;Alternatives to Acceptance Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    
    
  </description>
</item>
<item>
  <title>Lack of Fluency?</title>
  <link>http://www.jamesshore.com/Blog/Lack-of-Fluency.html</link>
  <category>/Blog</category>
  <pubDate>Fri, 10 Aug 2012 00:00:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Lack-of-Fluency.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;10 Aug 2012&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;Dave Nicolette has written a &lt;a href=&quot;http://davenicolette.wordpress.com/2012/08/09/lack-of-fluency/&quot;&gt;thoughtful critique&lt;/a&gt; of my article with Diana Larsen, &lt;a href=&quot;http://martinfowler.com/articles/agileFluency.html&quot;&gt;Your Path through Agile Fluency&lt;/a&gt;. I'm going to take a moment to respond to his points here.&lt;/p&gt;

&lt;p&gt;Dave's lays out his core criticism thusly:&lt;/p&gt;

&lt;blockquote&gt;
	&lt;p&gt;The gist of the article appears to be that we can effect organizational improvement in a large company by driving change from the level of individual software development teams.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He spends the rest of his article elaborating on this point, and particularly making the point that most software is built in IT (rather than product) organizations, where software teams have little ability to drive change.&lt;/p&gt;

&lt;p&gt;It's a well-made argument, and I agree with it. Organizational change &lt;em&gt;does&lt;/em&gt; require top-down support, and software teams in IT &lt;em&gt;do&lt;/em&gt; have little ability to drive bottom-up change.&lt;/p&gt;

&lt;p&gt;Just one problem: I don't see why Dave presents this as a criticism. Our article isn't about using software teams to drive organizational change.&lt;/p&gt;

&lt;p&gt;Our essay describes how teams progress through stages of Agile fluency. It's based on what we've seen in 13 years of applying Agile and observing others' Agile efforts. We've developed the fluency model over the last year and a half. Along the way, we've reviewed it with dozens of people in all sorts of roles--team members, managers, executives, and consultants. The feedback has been clear: the model reflects their experiences. I doubt it's perfect, but the fluency model reflects reality to the best of our ability.&lt;/p&gt;

&lt;p&gt;This model isn't about how organizations grow. It's about how &lt;em&gt;teams&lt;/em&gt; grow. (There's probably room for an article about organizational Agile fluency, but that's for another time.) And this is what we see:&lt;/p&gt;

&lt;p&gt;1. Teams learning Agile first get good at focusing on the business perspective. User stories and the like. (That's not to say that every team using user stories is successfully focusing on the business perspective!) This requires some cultural changes at the team level.&lt;/p&gt;

&lt;p&gt;2. &lt;em&gt;If&lt;/em&gt; the team has been working on improving their development skills, they get good at this next. It takes longer than the first stage because there's a lot to learn. I'm talking TDD, refactoring, and so forth. Some teams don't bother.&lt;/p&gt;

&lt;p&gt;3. Typically, by this point, the team has been feeling the pain of poor business involvement for a while. &lt;em&gt;Sometimes&lt;/em&gt;, in organizations that support it, the team gets good at the business side of things next. It takes longer than the previous stage because &quot;getting good at it&quot; means involving people outside the team. Most organizations are set up with &quot;business&quot; and &quot;software&quot; in different parts of the org chart, and this &quot;third star&quot; of fluency typically (but not always) requires them to be merged into cross-functional teams.&lt;/p&gt;

&lt;p&gt;We don't say how to make this happen, just that it's a prerequisite for three-star fluency, and that these sorts of changes to organizational structure are difficult and require spending organizational capital. It can be top-down or bottom-up. (Really, it has to be both.) We also say that it may not be worth making this investment. Two-star fluency could be enough.&lt;/p&gt;

&lt;p&gt;4. Finally, in a few companies, the team's focus extends beyond its product/projects to helping to optimize the overall system. This requires an organizational culture that likes its teams to advise on whole-company issues. Again, we don't say how to achieve this, just that it's a prerequisite for four-star fluency, and that we've only seen it happen in small companies, and typically companies that have this as an organizational value from the beginning. We again emphasize that more stars aren't necessarily worth the investment.&lt;/p&gt;

&lt;p&gt;So, to recap: Dave argues that the individual software teams in IT cannot drive bottom-up organizational change. I agree. Organizational change must occur if you want to achieve three- or four-star fluency, but our article doesn't describe how to do so. It just says it's necessary.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://martinfowler.com/articles/agileFluency.html&quot;&gt;Our original article&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://davenicolette.wordpress.com/2012/08/09/lack-of-fluency/&quot;&gt;Dave Nicolette's critique&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    
    
  </description>
</item>
<item>
  <title>Your Path through Agile Fluency</title>
  <link>http://www.jamesshore.com/Blog/Your-Path-Through-Agile-Fluency.html</link>
  <category>/Blog</category>
  <pubDate>Tue, 07 Aug 2012 00:00:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Your-Path-Through-Agile-Fluency.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;07 Aug 2012&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;&lt;em&gt;Agile methods are solidly in the mainstream, but that popularity hasn't been without its problems. Organizational leaders are complaining that they're not getting the benefits from Agile they expected. This article presents a model of Agile fluency that will help you achieve Agile's benefits. Fluency evolves through four distinct stages, each with its own benefits, costs of adoption, and key metrics.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Your Path through Agile Fluency&lt;/h3&gt;
&lt;h4&gt;A Brief Guide to Success with Agile&lt;/h4&gt;

&lt;p class=&quot;subheading&quot;&gt;by Diana Larsen and James Shore&lt;/p&gt;

&lt;p&gt;For over twelve years, we&amp;rsquo;ve been leading and helping teams transition to Agile. The industry has changed a lot in that time. When we started in 1999, methods with names like Scrum, Extreme Programming, and Crystal were gaining visibility under the banner &amp;ldquo;lightweight methods.&amp;rdquo; Programmers looking for faster, simpler, and more effective ways of working were the primary drivers.&lt;/p&gt;

&lt;p&gt;Throughout the next decade, Agile grew. In 2001, prominent members of the &amp;ldquo;lightweight methods&amp;rdquo; community met in Utah, coined the term &amp;ldquo;Agile&amp;rdquo; and created the Agile Manifesto. In 2005, the XP/Agile Universe and Agile Development conferences merged to form the Agile Alliance&amp;rsquo;s &amp;ldquo;Big&amp;rdquo; Agile conference.&lt;/p&gt;

&lt;p&gt;The community grew, too. From a programmer-centric, Extreme Programming focus in the early days, to a more inclusive approach in the mid-2000s, to a project management and Scrum focus in more recent years. What was once a grassroots effort among early adopters is now solidly in the mainstream.&lt;/p&gt;

&lt;p&gt;Growth hasn&amp;rsquo;t been without its problems. Programmers, once the drivers of Agile adoption, are increasingly turning away from what they see as a bloated, ineffective project management methodology. Agile luminaries are posting articles such as Martin Fowler&amp;rsquo;s &amp;ldquo;Flaccid Scrum&amp;rdquo; (2009). Organizational leaders are complaining that they&amp;rsquo;re not getting the benefits from Agile that they expected.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;ve been helping teams transition to Agile since the beginning. We&amp;rsquo;ve learned a lot over the years about what it takes to achieve the benefits promised by Agile. In this paper, we share what we&amp;rsquo;ve learned.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://martinfowler.com/articles/agileFluency.html&quot;&gt;Read the rest of this article at MartinFowler.com&lt;/a&gt;.&lt;/p&gt;

    
    
  </description>
</item>
<item>
  <title>Let's Play TDD #201: From Mock-Based to State-Based</title>
  <link>http://www.jamesshore.com/Blog/Lets-Play/Episode-201.html</link>
  <category>/Blog/Lets-Play</category>
  <pubDate>Thu, 28 Jun 2012 00:01:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Lets-Play/Episode-201.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;28 Jun 2012&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/Lets-Play/"&gt;James Shore/Blog/Lets-Play&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;The source code for this episode &lt;a href=&quot;https://github.com/jamesshore/lets_play_tdd/tree/2562570330e94e2f06f3183291c7d1727cbec540&quot;&gt;is available here&lt;/a&gt;. Visit the &lt;a href=&quot;http://www.jamesshore.com/Blog/Lets-Play/&quot;&gt;Let's Play archive&lt;/a&gt; for more episodes!&lt;/p&gt;

&lt;object width=&quot;630&quot; height=&quot;380&quot;&gt;
&lt;param value=&quot;http://www.youtube.com/v/oDgwIefJHn8&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot; name=&quot;movie&quot; /&gt;&lt;param value=&quot;window&quot; name=&quot;wmode&quot; /&gt;
&lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;embed width=&quot;630&quot; height=&quot;380&quot; wmode=&quot;window&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.youtube.com/v/oDgwIefJHn8&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot;&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;Many thanks to &lt;a href=&quot;http://blog.jonesed.net/&quot;&gt;Danny Jones&lt;/a&gt; for figuring out the HD Youtube embed code.&lt;/p&gt;

    
    
  </description>
</item>
<item>
  <title>Let's Play TDD #200: To Kill a Mock</title>
  <link>http://www.jamesshore.com/Blog/Lets-Play/Episode-200.html</link>
  <category>/Blog/Lets-Play</category>
  <pubDate>Tue, 26 Jun 2012 00:01:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Lets-Play/Episode-200.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;26 Jun 2012&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/Lets-Play/"&gt;James Shore/Blog/Lets-Play&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;The source code for this episode &lt;a href=&quot;https://github.com/jamesshore/lets_play_tdd/tree/ac0057f56e2777e0e9b9e6a31ed4d4e16742be8b&quot;&gt;is available here&lt;/a&gt;. Visit the &lt;a href=&quot;http://www.jamesshore.com/Blog/Lets-Play/&quot;&gt;Let's Play archive&lt;/a&gt; for more episodes!&lt;/p&gt;

&lt;object width=&quot;630&quot; height=&quot;380&quot;&gt;
&lt;param value=&quot;http://www.youtube.com/v/dJOKf3ZENEo&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot; name=&quot;movie&quot; /&gt;&lt;param value=&quot;window&quot; name=&quot;wmode&quot; /&gt;
&lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;embed width=&quot;630&quot; height=&quot;380&quot; wmode=&quot;window&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.youtube.com/v/dJOKf3ZENEo&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot;&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;Many thanks to &lt;a href=&quot;http://blog.jonesed.net/&quot;&gt;Danny Jones&lt;/a&gt; for figuring out the HD Youtube embed code.&lt;/p&gt;

    
    
  </description>
</item>
<item>
  <title>Let's Play TDD #199: Constructor Cleanup</title>
  <link>http://www.jamesshore.com/Blog/Lets-Play/Episode-199.html</link>
  <category>/Blog/Lets-Play</category>
  <pubDate>Thu, 21 Jun 2012 00:01:00 PST</pubDate>
  <guid isPermaLink="true">http://www.jamesshore.com/Blog/Lets-Play/Episode-199.html</guid>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;21 Jun 2012&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://www.jamesshore.com/Blog/Lets-Play/"&gt;James Shore/Blog/Lets-Play&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;The source code for this episode &lt;a href=&quot;https://github.com/jamesshore/lets_play_tdd/tree/ca3f9bbc2c979e9bcb8fdc818c4fa09fcc0be689&quot;&gt;is available here&lt;/a&gt;. Visit the &lt;a href=&quot;http://www.jamesshore.com/Blog/Lets-Play/&quot;&gt;Let's Play archive&lt;/a&gt; for more episodes!&lt;/p&gt;

&lt;object width=&quot;630&quot; height=&quot;380&quot;&gt;
&lt;param value=&quot;http://www.youtube.com/v/NQgwC0pLFQA&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot; name=&quot;movie&quot; /&gt;&lt;param value=&quot;window&quot; name=&quot;wmode&quot; /&gt;
&lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;embed width=&quot;630&quot; height=&quot;380&quot; wmode=&quot;window&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.youtube.com/v/NQgwC0pLFQA&amp;amp;ap=%2526fmt%3D22&amp;amp;hd=1&amp;amp;fs=1&quot;&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;Many thanks to &lt;a href=&quot;http://blog.jonesed.net/&quot;&gt;Danny Jones&lt;/a&gt; for figuring out the HD Youtube embed code.&lt;/p&gt;

    
    
  </description>
</item>
  </channel>
</rss>