<?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>One Man's Walk in work &#187; agile</title>
	<atom:link href="http://onemanswalk.com/work/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://onemanswalk.com/work</link>
	<description>jeremy lightsmith on agile, ruby, and consulting</description>
	<lastBuildDate>Wed, 04 May 2011 04:29:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creating Change</title>
		<link>http://onemanswalk.com/work/2007/03/30/creating-change/</link>
		<comments>http://onemanswalk.com/work/2007/03/30/creating-change/#comments</comments>
		<pubDate>Fri, 30 Mar 2007 05:25:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[facilitation]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	on a recent e-mail thread, a friend asked for advice when introducing agile.  here&#8217;s a cleaned up version of my response to him.

	Solve THEIR problems, don&#8217;t push your own agenda

	if you go to people and tell them agile is the key, they won&#8217;t listen to you.  instead, go to people and listen to [...]]]></description>
			<content:encoded><![CDATA[	<p>on a recent e-mail thread, a friend asked for advice when introducing agile.  here&#8217;s a cleaned up version of my response to him.</p>

	<h2>Solve <span class="caps">THEIR</span> problems, don&#8217;t push your own agenda</h2>

	<p>if you go to people and tell them agile is the key, they won&#8217;t listen to you.  instead, go to people and listen to <em>their</em> problems.  propose and implement solutions to their biggest and worst one or two.  check back with them and make sure they are happy (or at least happier)  rinse and repeat.  if something in the &#8220;agile&#8221; toolset doesn&#8217;t scratch an itch they have, then you shouldn&#8217;t be using it.  be flexible in everything except your values.  be compromising.  if they see you give in to what they suggest, they will be more willing to give in to what you suggest.</p>

	<p>obviously a retrospective is a great vehicle for this.  if you can get the team as a group to admit to problems that they <span class="caps">NOT YOU</span> are worried about, then the solutions you come to will also be owned by the team.</p>


	<h2>Start with individuals, not the &#8220;team&#8221;</h2>

	<p>as an outsider, which we are as consultants, it&#8217;s very, very hard to convert an entire team to our way of thinking.  it&#8217;s hard to know what they all think, and the more you push, the more it becomes <span class="caps">YOU</span> vs <span class="caps">THEM</span>.  not good.  it&#8217;s much better if you can identify the change agents in the team, find the connectors, the mavens, and the salespeople (see <a href="http://en.wikipedia.org/wiki/The_Tipping_Point" title="">The Tipping Point</a> ) and talk to them.  it&#8217;s much easier to convince one person, one on one that you have some good ideas, and that you might be able to solve some of their problems.  do this first, and instead of 1 vs 10 it becomes 2 vs 9 or even 3 vs 7, <span class="caps">MUCH</span> better odds.  if you can do this with the most influential people, then convincing the rest of the team almost takes care of itself.</p>

	<p>this of course works the other way around, too.  the most influential people on the team can easily turn the entire team against you, so you have to make sure that you are listening to them.  addressing their problems and concerns, and making them feel heard.  this is of course good advice for the whole team, but it&#8217;s so much easier when it&#8217;s one person at a time, you might as well start there.</p>


	<h2>Ask for help, and dish out the credit</h2>

	<p>it&#8217;s a funny thing, but when you ask someone for help, you usually get it.  and believe me, if you&#8217;re trying to introduce agile, you&#8217;ll need all the help you can get.  the easiest help to get is advice that is asked for one on one.  ask your boss what the social makeup of the team is.  ask those teammates for advice on what the team needs.  ask someone to give a part of a presentation to management.</p>

	<p>from their perspective, it&#8217;s a great thing to be asked for help.  it means the person asking respects your opinion about something.  it also means that they now owe you something and you&#8217;re less likely to hesitate if you need help from them.  it means that you take ownership of the thing that you helped create.</p>

	<p>if you can manage to make people look good in exchange for your efforts, not only will you spread out the work, but you&#8217;ll win yourself friends.</p>


	<h2>Read the <a href="http://www.geraldmweinberg.com/books.html" title="">Secrets of Consulting</a></h2>

	<p>&#8216;Nuff said.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2007/03/30/creating-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stand ups as Huddles</title>
		<link>http://onemanswalk.com/work/2006/12/20/stand-ups-as-huddles/</link>
		<comments>http://onemanswalk.com/work/2006/12/20/stand-ups-as-huddles/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 18:22:04 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	We&#8217;ve been talking about stand ups here at ThoughtWorks.

	I&#8217;m actually not a big fan of the traditional yesterday &#8211; today &#8211; issues format.  I find that too often it becomes a status meeting &#8211; this is what I did yesterday, doing more of the same today, and no issues.

	Instead of a status meeting, I [...]]]></description>
			<content:encoded><![CDATA[	<p>We&#8217;ve been talking about stand ups here at ThoughtWorks.</p>

	<p>I&#8217;m actually not a big fan of the traditional yesterday &#8211; today &#8211; issues format.  I find that too often it becomes a status meeting &#8211; this is what I did yesterday, doing more of the same today, and no issues.</p>

	<p>Instead of a status meeting, I like to treat it as a planning meeting.  I prefer to think of a stand up like a huddle in American football.  The point is to focus on today, and figure out a game plan that makes the most sense.  Who needs to pair with whom?  Who&#8217;s tackling what stories?</p>

	<p>I find the signal to noise ratio is much higher in the latter format as is the energy.  It&#8217;s fine to mention anything from yesterday that is especially pertinent or interesting to the team, but I think the focus should be on today.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2006/12/20/stand-ups-as-huddles/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pictures From India</title>
		<link>http://onemanswalk.com/work/2004/03/02/pictures-from-india/</link>
		<comments>http://onemanswalk.com/work/2004/03/02/pictures-from-india/#comments</comments>
		<pubDate>Tue, 02 Mar 2004 00:00:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[consulting]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	Are you doing offshore or do you have a team that is spread across different locations?

	Walking around the TW chicago office, I noticed a very cool trend.  The teams that had offshore parts had pictures of their offshore teamates on the wall with names.  It&#8217;s a small simple thing that I think would [...]]]></description>
			<content:encoded><![CDATA[	<p>Are you doing offshore or do you have a team that is spread across different locations?</p>

	<p>Walking around the TW chicago office, I noticed a very cool trend.  The teams that had offshore parts had pictures of their offshore teamates on the wall with names.  It&#8217;s a small simple thing that I think would have made a difference on my last project, at least to me.</p>

	<p>I&#8217;m a very visual person, and I relate a lot better to someone if I have a picture of them in my head.</p>

	<p>So go&#8230;take pictures of people and stick them up on walls!</p>
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2004/03/02/pictures-from-india/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concentrate On The Few</title>
		<link>http://onemanswalk.com/work/2004/01/21/concentrate-on-the-few/</link>
		<comments>http://onemanswalk.com/work/2004/01/21/concentrate-on-the-few/#comments</comments>
		<pubDate>Wed, 21 Jan 2004 00:00:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[facilitation]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	I think I&#8217;m learning.

	I was talking to a fellow ThoughtWorker about a TDD workshop I might be doing next week.  We talked about the project, expectations (theirs and the client&#8217;s), the history of the project, etc.

	What I did that I haven&#8217;t done before is I started asking about who the influencers on the team [...]]]></description>
			<content:encoded><![CDATA[	<p>I think I&#8217;m learning.</p>

	<p>I was talking to a fellow ThoughtWorker about a <span class="caps">TDD</span> workshop I might be doing next week.  We talked about the project, expectations (theirs and the client&#8217;s), the history of the project, etc.</p>

	<p>What I did that I haven&#8217;t done before is I started asking about who the influencers on the team were.  Taking my cue from the default.TheTippingPoint, who are the experts that everyone trusts (mavens)?  Who are the people who sway people&#8217;s opinions (salesmen)?  In a workshop (and ideally the day before) those are the people that I need to concentrate on, because they&#8217;ll make my job a lot easier or harder.</p>

	<p>A situation where it&#8217;s 1 person addressing 12 is a lot harder than where it&#8217;s 3 people addressing 10.  Spend a couple hours w/ people individually, and you have a good chance of changing the former situation to the latter &#8211; at the same time showing those individuals that you respect them and need their help.  Pick the mavens and the salesmen to be those 2 people and you&#8217;re set.</p>


 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2004/01/21/concentrate-on-the-few/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>If You Can&#8217;t Test It</title>
		<link>http://onemanswalk.com/work/2003/12/18/if-you-cant-test-it/</link>
		<comments>http://onemanswalk.com/work/2003/12/18/if-you-cant-test-it/#comments</comments>
		<pubDate>Thu, 18 Dec 2003 00:00:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[consulting]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	&#8220;If you can&#8217;t test it&#8230; it&#8217;s not science, it&#8217;s philosophy, and that&#8217;s a real problem&#8221; &#8211; Joseph Lykken on String Theory

	&#8220;Agile with no refactoring == waterfall with no design phase&#8221; &#8211; John Perkins, default.ThoughtWorks
 ]]></description>
			<content:encoded><![CDATA[	<p>&#8220;If you can&#8217;t test it&#8230; it&#8217;s not science, it&#8217;s philosophy, and that&#8217;s a real problem&#8221; &#8211; Joseph Lykken on String Theory</p>

	<p>&#8220;Agile with no refactoring == waterfall with no design phase&#8221; &#8211; John Perkins, default.ThoughtWorks</p>
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2003/12/18/if-you-cant-test-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tdd Is Only One Piece Of The Puzzle</title>
		<link>http://onemanswalk.com/work/2003/11/07/tdd-is-only-one-piece-of-the-puzzle/</link>
		<comments>http://onemanswalk.com/work/2003/11/07/tdd-is-only-one-piece-of-the-puzzle/#comments</comments>
		<pubDate>Fri, 07 Nov 2003 00:00:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	I posted this to the serverside in a thread about a TDD article by Dan North (http://www.sys-con.com/story/?storyid=37795&#038;DE=1)

	As Dan says, TDD is a tactical thing. When you&#8217;re in the middle of coding, it helps keep you from adding unnecessary complexity, and it let&#8217;s you see how your code is going to be used even before it [...]]]></description>
			<content:encoded><![CDATA[	<p>I posted this to the serverside in a thread about a <span class="caps">TDD</span> article by Dan North (http://www.sys-con.com/story/?storyid=37795&#038;DE=1)</p>

	<p>As Dan says, <span class="caps">TDD</span> is a tactical thing. When you&#8217;re in the middle of coding, it helps keep you from adding unnecessary complexity, and it let&#8217;s you see how your code is going to be used even before it is.</p>

	<p>However, that&#8217;s only part of the story. The other pieces are <em>enough</em> design (up front or otherwise), and merciless refactoring later.</p>

	<p>If you don&#8217;t continuously think about where you&#8217;re going and how things fit together, and if you don&#8217;t keep your code clean by refactoring constantly, all the testing in the world is not going to give you a good architecture. To come up with a good overall system architecture, especially on large projects, you do have to think at least a little about what direction you&#8217;re going to go in ahead of time. The beauty of good unit testing is that it&#8217;s not a big deal when you&#8217;re wrong (because you will be, even if you&#8217;re right today, you&#8217;ll be wrong when you get those new requirements.)</p>

	<p><span class="caps">TDD</span> helps you design the detailed stuff right the first time, and enables you to fix the bigger stuff later.</p>

	<p>In a system with very low duplication and high automated test coverage, you don&#8217;t have to get it right the first time, because changing your mind later is about as expensive as changing it earlier. If you haven&#8217;t worked on such a system, you should, it&#8217;s such a different experience. No matter how dramatic a change you make, in a few seconds you know if you broke anything.</p>

	<p>Only unit testing can give you a system like this, because any other testing introduces duplication. Say you have 500 automated end to end tests with 95% test coverage. Let&#8217;s forget the fact that it takes you an hour to run them all. Suddenly there are changes to the code that you can no longer make, because they would break so many of the tests that the team couldn&#8217;t afford the time to fix them all. So crud in the code builds up, or the tests get thrown away. Either way, <span class="caps">BAD</span>.</p>

	<p>Unit tests on the other hand can be and should be as fine grained as possible so that most changes no matter how radical don&#8217;t affect many tests. You can use techniques like mocking to help in this. Ideally, a test should test exactly one method/class/small chunk of functionality, and it shouldn&#8217;t break if anything else changes.</p>

	<p>And <span class="caps">TDD </span><em>does</em> scale. I&#8217;ve seen teams of 30 developers with suites of 1000&#8217;s of unit tests that run in less than a minute. And their code stays maleable. When people think of a way to make it better, they can. In fact I wouldn&#8217;t work on a team that size if people weren&#8217;t writing tests, because the code would deteriorate into spaghetti.</p>

	<p>For the record, I also am a huge advocate of having testers and other types of testing: acceptance, integration, end-to-end, functional, exploratory, etc. These all can come in very handy and find holes in your product, unit tests and requirements.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2003/11/07/tdd-is-only-one-piece-of-the-puzzle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Out Of Your Teams Way</title>
		<link>http://onemanswalk.com/work/2003/07/24/getting-out-of-your-teams-way/</link>
		<comments>http://onemanswalk.com/work/2003/07/24/getting-out-of-your-teams-way/#comments</comments>
		<pubDate>Thu, 24 Jul 2003 00:00:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[facilitation]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	I just had the best experience.

	A team without buy-in

	I&#8217;m currently coaching a project along w/ fellow ThoughtWorker, Zak Tamsen.
It&#8217;s still pretty early, just a couple week long iterations into it.  The
problem that we were having was lack of buy in from the team.  It&#8217;s probably
our own fault for not setting stuff up at [...]]]></description>
			<content:encoded><![CDATA[	<p>I just had the best experience.</p>

	<h2>A team without buy-in</h2>

	<p>I&#8217;m currently coaching a project along w/ fellow ThoughtWorker, Zak Tamsen.<br />
It&#8217;s still pretty early, just a couple week long iterations into it.  The<br />
problem that we were having was lack of buy in from the team.  It&#8217;s probably<br />
our own fault for not setting stuff up at the start of the project, but it<br />
felt very much like we were telling a team of 8 people what to do (write tests,<br />
pair, do this, do that), and they were saying back, &#8216;No, we don&#8217;t wanna&#8217;.<br />
The harder we tried to fix it, the more it felt like we were playing Mommy to<br />
the team.</p>

	<p>Then we left for a few days which included our <span class="caps">IPM</span>.</p>

	<h2>The tipping point</h2>

	<p>When we came back it was fixed.  In our absence, the leaders of the team had stepped<br />
up to lead the team.  They had run the <span class="caps">IPM</span>, they had had meetings about how to<br />
get the team on board, they had started taking what had been our responsibility<br />
on themselves.  Now instead of 2 outside !ThoughtWorkers trying to &#8220;convert&#8221; 8<br />
people, we now have an increasingly cohesive team where 5 people have bought in<br />
and assumed leadership roles.</p>

	<p>Now we had talked to the leaders of the team to try to make this happen before,<br />
but with us there, they had been perfectly comfortable to sit back and let us drive.<br />
It was the act of us getting out of the way that made them step up.  If<br />
a system <span class="caps">CAN</span> heal itself, it&#8217;s important to let it heal itself &#8211; TheSecretsOfConsulting.</p>

	<p>As a coach, I should be trying to teach my team how to<br />
fish, not treating them to the fish that I can catch.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2003/07/24/getting-out-of-your-teams-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What About Acceptance Testing</title>
		<link>http://onemanswalk.com/work/2003/06/16/what-about-acceptance-testing/</link>
		<comments>http://onemanswalk.com/work/2003/06/16/what-about-acceptance-testing/#comments</comments>
		<pubDate>Mon, 16 Jun 2003 00:00:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	So XP has always talked about the &#8220;two&#8221; kinds of testing : Unit and Acceptance.  I am starting to question the validity of having two nice and neat forms of testing, both of which are fully automatable.  I am spending this week with the likes of Brian Marick, James Bach, Cem Kramer, Lisa [...]]]></description>
			<content:encoded><![CDATA[	<p>So XP has always talked about the &#8220;two&#8221; kinds of testing : Unit and Acceptance.  I am starting to question the validity of having two nice and neat forms of testing, both of which are fully automatable.  I am spending this week with the likes of Brian Marick, James Bach, Cem Kramer, Lisa Crispin, and Brett Pettichord, and my eyes are being opened <img src='http://onemanswalk.com/work/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Apparently while I haven&#8217;t been paying attention, some very smart people have been working on the testing side of software just as much as we&#8217;ve been working on the development side of software, as I learned in &#8220;Testing 101&#8221;</p>


	<p>Testing 101&#8212;&#8212;In a very late night testing 101 discussion with Cem and James, we learned about several &#8220;missions&#8221; of testing :<br />
<strong>Missions</strong></p>
	<ul>
		<li>valueable bug finding</li>
		<li>change detection</li>
		<li>ship decision support</li>
		<li>contract fulfillment verification</li>
		<li>&#8230;</li>
	</ul>

	<p>and according to Cem, there are 11 different &#8220;styles&#8221; of testing<br />
<strong>Styles</strong></p>
	<ul>
		<li>claims based testing</li>
		<li>regression</li>
		<li>exploratory/heuristic</li>
		<li>scenario</li>
		<li>user</li>
		<li>state model based</li>
		<li>high volume</li>
		<li>risk-focused</li>
		<li>domain</li>
		<li>stress</li>
		<li>function</li>
	</ul>

	<p>A couple of the more interesting styles were exploratory and scenario testing.</p>

	<p>Exploratory testing is a systematic directed way of approaching a program to find <span class="caps">VALUEABLE</span> bugs.  It&#8217;s not easy, and it does find bugs that are not found by automated tests.  This isn&#8217;t new, and someone, tester, developer, or analyst always does occasional exploratory tests on projects I&#8217;ve been on.  Why?  Because it finds bugs.  What&#8217;s interesting is that we try to fool ourselves into thinking this these tests not necessary just because they are not automated.  Some tests are actually better as occasional exploratory tests, like bringing a user in to see what they do.  Like thinking about the riskiest bugs, then seeing if the existing tests would catch them.  Like directed testing at new areas of the app where automated tests probably have holes.  Like scenario testing (below)</p>

	<p>Scenario testing questions the spec that you are writing against.  It&#8217;s one more way of helping a customer to accurately represent all the stake holders of a project.  This is really cool, and is a check that would probably have gone a long way toward making several projects I&#8217;ve been on more successful</p>

	<p>A very interesting thing I heard from these testers was that they thought many function and domain tests belonged in developer unit tests, as a more appropriate place for them.  This makes sense to me, if a tester wants a domain test for X why not pair with a developer on it?</p>


	<p>How do acceptance tests fit into all of this?&#8212;&#8212;Acceptance testing&#8217;s primary missions are communication &#038; bug prevention.  When they are automated, their secondary goal is change detection.  The primary style of acceptance testing is claims based testing, because in XP not only do they test against the spec, but they <span class="caps">ARE</span> the spec  They may also be function tests.</p>

	<p>This leaves a <span class="caps">LOT</span> of ground uncovered.  For instance, bug finding.  Acceptance tests will (hopefully) prevent entire categories of bugs, most noteable those that involve developers not understanding customer requirements.  But once that happens, what about other bugs?  I&#8217;ve never had a project yet where we trusted our acceptance tests completely, and I would think it foolish to do so.</p>

	<p>I have always used all my old acceptance tests as my regression test suite, but the problem with this is that it doesn&#8217;t scale.  No matter how well you factor your tests, once you pass a certain point, test times start growing uncontrollably, and certain categories of changes start to break hundreds of tests.  What if your regression tests didn&#8217;t <span class="caps">HAVE</span> to be your acceptance tests?  What if they were a more carefully selected smaller subset?</p>

	<p><span class="caps">BUT</span></p>

	<p>Acceptance tests are good.  By straddling the fence between customer and developer, they bring the two worlds together, They provide an executable spec.</p>

	<p>More later&#8230;</p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2003/06/16/what-about-acceptance-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

