<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: My Agile Worry, Part 1: Marrying Code</title>
	<atom:link href="http://josh.ev9.org/weblog/archives/369/feed" rel="self" type="application/rss+xml" />
	<link>http://josh.ev9.org/weblog/archives/369</link>
	<description>Just Another California Kid out to Get Himself Some Glory</description>
	<pubDate>Thu, 20 Nov 2008 18:40:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: Notta Blog&#187; Blog Archive &#187; My Agile Excitement, Part 1: Stories are based on Users</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-377</link>
		<dc:creator>Notta Blog&#187; Blog Archive &#187; My Agile Excitement, Part 1: Stories are based on Users</dc:creator>
		<pubDate>Thu, 24 Aug 2006 08:10:28 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-377</guid>
		<description>[...] As noted in my first agile worry, I am often scared that features of a given piece of software will be built based on reasons other than user needs. Yesterday I learned that story cards are, indeed, quite user centered. [...]</description>
		<content:encoded><![CDATA[<p>[...] As noted in my first agile worry, I am often scared that features of a given piece of software will be built based on reasons other than user needs. Yesterday I learned that story cards are, indeed, quite user centered. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Notta Blog&#187; Blog Archive &#187; Welcome to ThoughtBlogs</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-372</link>
		<dc:creator>Notta Blog&#187; Blog Archive &#187; Welcome to ThoughtBlogs</dc:creator>
		<pubDate>Fri, 18 Aug 2006 17:17:55 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-372</guid>
		<description>[...] About        &#171; My Agile Worry, Part 1: Marrying Code [...]</description>
		<content:encoded><![CDATA[<p>[...] About        &laquo; My Agile Worry, Part 1: Marrying Code [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Vincent</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-371</link>
		<dc:creator>Mike Vincent</dc:creator>
		<pubDate>Fri, 18 Aug 2006 15:25:32 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-371</guid>
		<description>I think the bottom line for me is that I do not marry my code. This is not to say I don't take great pride in the code I produce. But just as with people in an organization, nothing is irreplaceable or beyond improvement.

Myself and my code included.</description>
		<content:encoded><![CDATA[<p>I think the bottom line for me is that I do not marry my code. This is not to say I don&#8217;t take great pride in the code I produce. But just as with people in an organization, nothing is irreplaceable or beyond improvement.</p>
<p>Myself and my code included.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-370</link>
		<dc:creator>Bob</dc:creator>
		<pubDate>Fri, 18 Aug 2006 12:28:19 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-370</guid>
		<description>Developers practising agile ala XP don't do any development without stories, which come from the client.  If developers are assigned to a project when the project begins they will set up environments (i.e. CI box) for the first week while the analysts create stories with the client.  Or, almost as often, the analysts will work with the client before the developers are even assigned to the project.

In agile especially, no code is written that the customer didn't ask for.

I suggest doing a bit more research before criticising a methodology that your company advocates.</description>
		<content:encoded><![CDATA[<p>Developers practising agile ala XP don&#8217;t do any development without stories, which come from the client.  If developers are assigned to a project when the project begins they will set up environments (i.e. CI box) for the first week while the analysts create stories with the client.  Or, almost as often, the analysts will work with the client before the developers are even assigned to the project.</p>
<p>In agile especially, no code is written that the customer didn&#8217;t ask for.</p>
<p>I suggest doing a bit more research before criticising a methodology that your company advocates.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Arnold</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-369</link>
		<dc:creator>Jim Arnold</dc:creator>
		<pubDate>Fri, 18 Aug 2006 12:19:49 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-369</guid>
		<description>You raise 2 points:  the first, that code might be written before the requirements for it are understood, should not be an issue an agile project.  The first step should be to understand the problem - stories can then be written, estimated, prioritised and developed.  Ideally, developers would not be placed onto the project unless they had stories to implement (unless they are there to do exploratory work, prototypes etc).

The second point, that developers can get attached to the code they write, is mitigated by promiscuous pairing (changing partners every day) and collective code ownership.  It is not my code, it is our code.  Furthermore, requirements can change overnight, and features get cut or added regularly, so get used to it :-)

Jim</description>
		<content:encoded><![CDATA[<p>You raise 2 points:  the first, that code might be written before the requirements for it are understood, should not be an issue an agile project.  The first step should be to understand the problem - stories can then be written, estimated, prioritised and developed.  Ideally, developers would not be placed onto the project unless they had stories to implement (unless they are there to do exploratory work, prototypes etc).</p>
<p>The second point, that developers can get attached to the code they write, is mitigated by promiscuous pairing (changing partners every day) and collective code ownership.  It is not my code, it is our code.  Furthermore, requirements can change overnight, and features get cut or added regularly, so get used to it <img src='http://josh.ev9.org/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Jim</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Makice</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-368</link>
		<dc:creator>Kevin Makice</dc:creator>
		<pubDate>Fri, 18 Aug 2006 11:22:24 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-368</guid>
		<description>A new friend of a friend I will be meeting for the first time in Copenhagen on Sunday is big into Agile. I'm going to to try to have him reconcile this dilemma you describe.

The development model I like best is Rational Unified Process, for a couple reasons. First, one of the primary goals is stability. Every iteration in a development cycle should end up with something very stable to minimize errors and force advance planning. I have found through my own project work since coming to the school that this tends to leave a programmer with the perception things are slow, at least in the beginning, because you can't show as many beeps and whistles to a client (or boss) as you work on all of the hidden things that go into creating a stable platform.

The second thing I really like about it is its flexibility. It can become a very high ceremony development framework, with lots of documents and sketches, or it can easily adapt to smaller projects by asking only for the documents that support that project. A lot of corporate development seems to put the ceremony ahead of the process, or confuses it outright with process. 

Agile seems to be the same kind of framework, except that - as you point out - there is an emphasis on completing small features that may not even be required. I would think the positive spin on that is the experience the programmer gains from the process of doing so much building. But it is a prerequisite for the programmers to view these mini sessions as the equivalent of a designer's concepts - disposable and part of the process</description>
		<content:encoded><![CDATA[<p>A new friend of a friend I will be meeting for the first time in Copenhagen on Sunday is big into Agile. I&#8217;m going to to try to have him reconcile this dilemma you describe.</p>
<p>The development model I like best is Rational Unified Process, for a couple reasons. First, one of the primary goals is stability. Every iteration in a development cycle should end up with something very stable to minimize errors and force advance planning. I have found through my own project work since coming to the school that this tends to leave a programmer with the perception things are slow, at least in the beginning, because you can&#8217;t show as many beeps and whistles to a client (or boss) as you work on all of the hidden things that go into creating a stable platform.</p>
<p>The second thing I really like about it is its flexibility. It can become a very high ceremony development framework, with lots of documents and sketches, or it can easily adapt to smaller projects by asking only for the documents that support that project. A lot of corporate development seems to put the ceremony ahead of the process, or confuses it outright with process. </p>
<p>Agile seems to be the same kind of framework, except that - as you point out - there is an emphasis on completing small features that may not even be required. I would think the positive spin on that is the experience the programmer gains from the process of doing so much building. But it is a prerequisite for the programmers to view these mini sessions as the equivalent of a designer&#8217;s concepts - disposable and part of the process</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Ingles</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-367</link>
		<dc:creator>Paul Ingles</dc:creator>
		<pubDate>Fri, 18 Aug 2006 10:30:55 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-367</guid>
		<description>Firstly, welcome to ThoughtWorks!

Secondly, I fear any situation where developer start writing code before the customer figures out what they want. In my opinion, the role of a BA is to help explore this situation with the customer, and co-ordinate the generation of stories. 

There shouldn't be a situation (like the one you describe) where developers just feel what's write and offer up solutions. In a 'classic' XP team where the number of people is small, it's possible to have everybody sit down with the customer and a white board and sketch out and talk through ideas. During which the devs (at least in my experience) question the customer about what they want - the rule of the 5 whys. Attempting to understand the _actual_ problem at hand, rather than what the customer says they want. They can be subtly different.

As you say, nobody likes to throw out work, but in my experience by having these discussions earlier with _everyone_ people are less likely to make bad assumptions and spot opportunities to deliver value sooner. 

At the risk of sounding repetitive, there shouldn't be a situation where a developer just sits down and starts coding without attempting to deliver some business value - the story. The more often (and quicker) you get feedback, the more likely you'll be to not spend time writing something that isn't needed.</description>
		<content:encoded><![CDATA[<p>Firstly, welcome to ThoughtWorks!</p>
<p>Secondly, I fear any situation where developer start writing code before the customer figures out what they want. In my opinion, the role of a BA is to help explore this situation with the customer, and co-ordinate the generation of stories. </p>
<p>There shouldn&#8217;t be a situation (like the one you describe) where developers just feel what&#8217;s write and offer up solutions. In a &#8216;classic&#8217; XP team where the number of people is small, it&#8217;s possible to have everybody sit down with the customer and a white board and sketch out and talk through ideas. During which the devs (at least in my experience) question the customer about what they want - the rule of the 5 whys. Attempting to understand the _actual_ problem at hand, rather than what the customer says they want. They can be subtly different.</p>
<p>As you say, nobody likes to throw out work, but in my experience by having these discussions earlier with _everyone_ people are less likely to make bad assumptions and spot opportunities to deliver value sooner. </p>
<p>At the risk of sounding repetitive, there shouldn&#8217;t be a situation where a developer just sits down and starts coding without attempting to deliver some business value - the story. The more often (and quicker) you get feedback, the more likely you&#8217;ll be to not spend time writing something that isn&#8217;t needed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-366</link>
		<dc:creator>Tom</dc:creator>
		<pubDate>Fri, 18 Aug 2006 10:06:02 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-366</guid>
		<description>Hey Josh, 

Good point and a valid concern.  However, in my experience the scenario that you have described has never happened.  I think that there are many reasons for this, but I'll highlight just a few.  

1) In most cases, a high level story list will already have been created, so the developers will have a general idea about what is needed and what is not.  This is also a time where you need to trust your BAs, they have a pretty good idea of what the business wants and needs.  By all means ask questions about the specifics of the implementation do they need real time chat or will  email do?  But if there is a requirement for communciation of some sort your efforts are not going to be wasted.

2 &#38; 3) This scenario is where the other Agile practices come in to play.  Having collective code ownership means that no one developer is going to own a piece of code so it's not going to be such a wrench to lose it.  Having an iterative approach to development means that if the customer changes their mind, or a new requirement is discovered, the amount of work you are going to lose will be one, perhaps two weeks, but at least the customer has been able to tailor the solution to their needs.  

Now is the time that I make the mandatory reference to Kent Beck's Extreme Programming and set you a challenge - have a look through and see where any of the other practices help to mitigate the problem you have described.

Cheers, 

Tom</description>
		<content:encoded><![CDATA[<p>Hey Josh, </p>
<p>Good point and a valid concern.  However, in my experience the scenario that you have described has never happened.  I think that there are many reasons for this, but I&#8217;ll highlight just a few.  </p>
<p>1) In most cases, a high level story list will already have been created, so the developers will have a general idea about what is needed and what is not.  This is also a time where you need to trust your BAs, they have a pretty good idea of what the business wants and needs.  By all means ask questions about the specifics of the implementation do they need real time chat or will  email do?  But if there is a requirement for communciation of some sort your efforts are not going to be wasted.</p>
<p>2 &amp; 3) This scenario is where the other Agile practices come in to play.  Having collective code ownership means that no one developer is going to own a piece of code so it&#8217;s not going to be such a wrench to lose it.  Having an iterative approach to development means that if the customer changes their mind, or a new requirement is discovered, the amount of work you are going to lose will be one, perhaps two weeks, but at least the customer has been able to tailor the solution to their needs.  </p>
<p>Now is the time that I make the mandatory reference to Kent Beck&#8217;s Extreme Programming and set you a challenge - have a look through and see where any of the other practices help to mitigate the problem you have described.</p>
<p>Cheers, </p>
<p>Tom</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Yip</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-365</link>
		<dc:creator>Jason Yip</dc:creator>
		<pubDate>Fri, 18 Aug 2006 09:42:10 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-365</guid>
		<description>No feature written that doesn't have a User Story and the associated tests.  Otherwise known as You Aint Gonna Need It (YAGNI).  This is really more of a an XP than a universal Agile thing but it's close enough.

To sum up, someone has to ask for the feature before you build it.

Now this doesn't mean that you can't build a quick prototype to demonstrate a potential feature.  A recent example is just showing people what script.aculo.us makes possible.  However, developers don't prioritise features.

I do find that a sense of detachment is useful though.  Creating useful things tends to be more about removing things than adding things.</description>
		<content:encoded><![CDATA[<p>No feature written that doesn&#8217;t have a User Story and the associated tests.  Otherwise known as You Aint Gonna Need It (YAGNI).  This is really more of a an XP than a universal Agile thing but it&#8217;s close enough.</p>
<p>To sum up, someone has to ask for the feature before you build it.</p>
<p>Now this doesn&#8217;t mean that you can&#8217;t build a quick prototype to demonstrate a potential feature.  A recent example is just showing people what script.aculo.us makes possible.  However, developers don&#8217;t prioritise features.</p>
<p>I do find that a sense of detachment is useful though.  Creating useful things tends to be more about removing things than adding things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Darren</title>
		<link>http://josh.ev9.org/weblog/archives/369#comment-364</link>
		<dc:creator>Darren</dc:creator>
		<pubDate>Fri, 18 Aug 2006 08:56:18 +0000</pubDate>
		<guid isPermaLink="false">http://josh.ev9.org/weblog/archives/369#comment-364</guid>
		<description>The scenario you describe is what can happen when code is written in the absence of a business requirement (usually expressed as a user-story). Agile/lean development is about building a system that fulfills a business need. If a developer has gone off and implemented some functionality in the absence of an identified business need for it, they've departed from the process (and the point) of agile.  While an agile process does start delivering features sooner, those features are still driven by analysis, planning and design.</description>
		<content:encoded><![CDATA[<p>The scenario you describe is what can happen when code is written in the absence of a business requirement (usually expressed as a user-story). Agile/lean development is about building a system that fulfills a business need. If a developer has gone off and implemented some functionality in the absence of an identified business need for it, they&#8217;ve departed from the process (and the point) of agile.  While an agile process does start delivering features sooner, those features are still driven by analysis, planning and design.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
