<?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>Chris Taylor&#039;s Blog</title>
	<atom:link href="http://lostechies.com/christaylor/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/christaylor</link>
	<description>Just another LosTechies site</description>
	<lastBuildDate>Wed, 12 Oct 2011 02:33:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Conclusion &#8211; A Response to “Traps &amp; Pitfalls of Agile Development – A Non-Contrarian View”</title>
		<link>http://lostechies.com/christaylor/2009/02/10/conclusion-a-response-to-traps-amp-amp-pitfalls-of-agile-development-a-non-contrarian-view/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/conclusion-a-response-to-traps-amp-amp-pitfalls-of-agile-development-a-non-contrarian-view/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:48:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[I.T. Management]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/conclusion-a-response-to-traps-amp-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx</guid>
		<description><![CDATA[So, I offer my final thoughts after responding to this entry by Sean Landis.&#160; Previous entries in this series are: Part One Part Two Part Three Part Four Part Five Philosophy vs Implementation Developing software is hard. Developers know that.&#160;&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/conclusion-a-response-to-traps-amp-amp-pitfalls-of-agile-development-a-non-contrarian-view/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So, I offer my final thoughts after responding to <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=246513">this entry by Sean Landis</a>.&nbsp; Previous entries in this series are:</p>
<ul>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part One</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Two</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Three</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-four-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Four</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-five-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Five</a> </li>
</ul>
<p><b>Philosophy vs Implementation</b></p>
<p>Developing<br />
software is hard. Developers know that.&nbsp; Product owners, even if they<br />
understand that, still may not understand the full implications of that<br />
reality. Agile attempts to bridge that gap and does a pretty darn good<br />
job, in my humble opinion.&nbsp; </p>
<p>However, as with all good ideas,<br />
philosophy and implementation can be world&rsquo;s apart.&nbsp; Some people<br />
criticize Agile as being some sort of Utopian Ideal or non-attainable<br />
Nirvana.&nbsp; In conversations I have had, I have made analogies to the<br />
essential core of social philosophies that seem to promise a lot but<br />
fail to recognize certain realities of humankind.&nbsp; Those very<br />
philosophies, with noble and lofty ideals, have often failed in their<br />
implementation.&nbsp; But, that does not necessarily mean we abandon the<br />
heart of those ideals.</p>
<p>In software we can afford the luxury of<br />
pressing on toward the ideal that Agile offers without causing the<br />
downfall of a government or social system (at least, I hope so!).&nbsp; We<br />
should not just abandon it because it is not perfect, has been<br />
misunderstood in the past or has been misapplied with abysmal results<br />
somewhere else. There have been tremendously successful software<br />
projects that owe their success to Agile and which, in my opinion,<br />
would not have been as successful with a more &ldquo;traditional&rdquo; approach. </p>
<p><b>Be Agile With Agile</b></p>
<p>The<br />
fundamental analogy behind Extreme Programming (an Agile variant) is<br />
that of driving a car.&nbsp; You get in the car, back out of the drive way<br />
and begin heading toward your destination.&nbsp; You have a map, you know<br />
where you are going, but along the way you make necessary corrections,<br />
keeping your goal in mind.&nbsp; Your steering drifts to the right, you<br />
correct; you run into a construction zone, you detour around it &#8211; all<br />
the while keeping the goal in mind.&nbsp; </p>
<p>That is a fitting<br />
analogy for our approach toward this broad term, &ldquo;Agile&#8221;.&rdquo;&nbsp; Just as we<br />
correct ourselves along the way on an Agile project, we could take the<br />
same tack with our understanding of Agile itself.&nbsp; Let&rsquo;s learn from our<br />
mistakes in implementation, continue to refine our understanding of<br />
what Agile means, adjust our course along the way and press on toward<br />
the goal of writing higher quality software that serves our customers<br />
in more efficient and meaningful ways.</p>
<p>&nbsp;</p>
<p>[Original version of this was posted 1/16/2009 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/conclusion-a-response-to-traps-amp-amp-pitfalls-of-agile-development-a-non-contrarian-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Part Five &#8211; A Response to “Traps &amp; Pitfalls of Agile Development – A Non-Contrarian View”</title>
		<link>http://lostechies.com/christaylor/2009/02/10/part-five-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/part-five-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:37:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[I.T. Management]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/part-five-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx</guid>
		<description><![CDATA[This is the last of a five-part series (sans conclusion) I&#8217;ve written in response to this entry by Sean Landis.&#160; Previous entries in this series are: Part One Part Two Part Three Part Four The format I have been following&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/part-five-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is the last of a five-part series (sans conclusion) I&rsquo;ve written in response to <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=246513">this entry by Sean Landis</a>.&nbsp; Previous entries in this series are:</p>
<ul>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part One</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Two</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Three</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-four-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Four</a> </li>
</ul>
<p>The<br />
format I have been following is to list the primary pitfall, then toss<br />
out some ideas of my own.&nbsp; Without further ado, I&rsquo;ll just jump right<br />
back in.</p>
<p><b><b>Pitfall </b>10</b>: Too much power can be granted to the product owner when it comes to steering the product.</p>
<p><b>My opinion</b>:<br />
Not a pitfall at all. The product owner MUST steer the product.&nbsp; If<br />
there is too much power in the hands of one individual regarding what<br />
the product does, that is a business issue not a development issue.&nbsp;<br />
The product owner knows their business and what they need.&nbsp; </p>
<p>The<br />
checks and balances regarding how a business operates and how its tools<br />
need to behave is not up to the development team.&nbsp; Yes, we should be<br />
&ldquo;partners&rdquo; with the business to help provide technology solutions that<br />
fulfill a business need. But, we should not be the traffic cops of a<br />
business process, or lack thereof.&nbsp; </p>
<p>Accountability is not<br />
erased in Agile development (in fact, one could argue accountability is<br />
enhanced); just the methods by which information is shared and revealed<br />
has shifted somewhat.&nbsp; If this pitfall displays itself on an Agile<br />
team, it would be hard to convince me the issue did not exist under a<br />
different process, as well.</p>
<p><b><b>Pitfall </b>11</b>:<br />
Agile is too programmer-centric leaving it unclear how to balance work<br />
across an organization. There is a need for better documentation and<br />
coaching for non-development participants.</p>
<p><b>My opinion</b>:<br />
I agree and disagree that this is a pitfall of Agile.&nbsp; In Agile all<br />
interested teams are to be intimately involved in the development<br />
process all the way through.&nbsp; Yes, this means a lot of people spending<br />
time in the development lab (or I.T. department) but a truly Agile team<br />
is composed of interested members from all affected disciplines, not<br />
just developers.&nbsp; If business users, product owners, business analysts,<br />
etc., are not involved along the way that is a result of not properly<br />
implementing Agile, not Agile itself.</p>
<p>Coaching for<br />
non-development participants is a responsibility of the Agile coach,<br />
manager, architect and, yes, even individual developers.&nbsp; If this does<br />
not occur, again, it&rsquo;s not because of Agile. It&rsquo;s due to a breakdown in<br />
its implementation.</p>
<p>Documentation IS a real issue for some<br />
teams.&nbsp; Since having started in Agile development, I have not had to<br />
address this problem because my business partners have been satisfied<br />
with &ldquo;just enough&rdquo; documentation, so I have limited input to this very<br />
real difficulty others face.</p>
<p>What I can say is that <a href="http://behaviour-driven.org/">Behaviour-Driven Development (BDD)</a><br />
is an area to explore in terms of its attempts to shorten/close the gap<br />
between requirements gathering and implementation in code.</p>
<p>Agile<br />
does not eschew documentation, however.&nbsp; And I think that is one<br />
additional misunderstanding.&nbsp; On my teams we still use UML, use cases,<br />
wire frames, etc.&nbsp; It&rsquo;s just that the expectation of where the final<br />
repository of all the information resides shifts to the xUnit test<br />
cases and the actual code.&nbsp; Not all business management is comfortable<br />
with this and I wish I had an answer for those struggling in this area.</p>
<p>My<br />
hope would be that if the product owner, upper management, or whoever<br />
is driving the need for something such as an IEEE Software Requirements<br />
Specification, will work at understanding the pros and cons of their<br />
stance, be willing to relax their position for the good of the project<br />
and work at developing a relationship of trust with the development<br />
team such that documentation enhances, rather than hinders, the<br />
development effort.</p>
<p><b>Conclusion</b>: </p>
<p>In an<br />
earlier post, I spoke about how Agile developers must act like adults<br />
(then I went on to layout some thoughts on what I really mean by<br />
that).&nbsp; In reality, all participants in the process must do that.&nbsp;<br />
Product owners and business partners need to understand Agile core<br />
philosophies and be willing to adopt them.&nbsp; It is for their own good:<br />
they will get better software than if they don&rsquo;t.</p>
<p>Even though a<br />
lot of Agile practices focus on the technical team, Agile really is a<br />
social discipline that encompasses everyone with an interest in the<br />
final product.&nbsp; When the product owners can understand how important<br />
they are to the success of a project, I know the divide between &ldquo;The<br />
Business&rdquo; and &ldquo;Development&rdquo; can be bridged.&nbsp; I&rsquo;ve seen it happen.</p>
<p>&nbsp;</p>
<p>[Original version of this was posted 1/16/2009 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/part-five-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Part Four &#8211; A Response to “Traps &amp; Pitfalls of Agile Development – A Non-Contrarian View”</title>
		<link>http://lostechies.com/christaylor/2009/02/10/part-four-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/part-four-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:36:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[I.T. Management]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/part-four-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx</guid>
		<description><![CDATA[I continue tossing my obtuse bits into cyberspace here, as a follow-up to the previous three entries: Part One Part Two Part Three This series is being written in response to Sean Landis&#8217; this blog entry.&#160; I&#8217;ll get right back&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/part-four-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I continue tossing my obtuse bits into cyberspace here, as a follow-up to the previous three entries:</p>
<ul>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part One</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Two</a> </li>
<li><a href="/blogs/agilecruz/archive/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Three</a> </li>
</ul>
<p>This series is being written in response to <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=246513">Sean Landis&rsquo; this blog entry</a>.&nbsp; I&rsquo;ll get right back to it&#8230;</p>
<p><b><b>Pitfall </b>7</b>:<br />
Agile can be hard on the product owner who has a lot of<br />
responsibility&#8230;&lt;snip&gt;&hellip;This role can become a bottleneck<br />
because it is unable to &#8220;feed&#8221; the development team fast enough.</p>
<p><b>My opinion</b>:<br />
true.&nbsp; But, pardon me if I am being too blunt: they want the product so<br />
shouldn&rsquo;t they be willing to put in the time and energy to make sure<br />
they get what they need?&nbsp; And if they are not motivated enough to do<br />
what is necessary to support the development of their product, maybe<br />
they ought to question the exigency of the software request in the<br />
first place?</p>
<p>One of the primary problems Agile attempts to<br />
address is the lag time between requirements and working software so<br />
the product owner can see very quickly how the developers are<br />
implementing their understanding of the business needs.&nbsp; </p>
<p>Better<br />
that the owner take the time now to help the developers adjust to<br />
changing business needs or misunderstood requirements than to wait 6,<br />
12, 24, 36 months to find out the product has more problems than<br />
solutions.&nbsp; That will be much less costly, both in true costs and<br />
opportunity costs, than waiting until The Big Day to find out things<br />
aren&rsquo;t working as expected. </p>
<p>Of course, it is easy to write<br />
this.&nbsp; Not necessarily so easy for the product owner to do.&nbsp; This is<br />
why upper management support of Agile is critical (it you&rsquo;re working in<br />
a larger company).&nbsp; They will have the commitment and authority to<br />
allocate the resources needed.&nbsp; Remember, an Agile team consists of a<br />
LOT more than just developers.</p>
<p><b><b>Pitfall </b>8</b>: Agile is over-hyped, thus leading to unrealistic expectations.</p>
<p><b>My opinion</b>: true, kind of. For starters, see my response to <a href="http://agilecruz.blogspot.com/2009/01/response-to-traps-pitfalls-of-agile_07.html">Pitfall 3 in this post</a>.&nbsp; </p>
<p>The<br />
main point I&rsquo;d like to make here, as with several other pitfalls, this<br />
may be true but is not exclusive to Agile.&nbsp; Rather it is a result of<br />
how well Agile speaks to our needs as software professionals.</p>
<p>I<br />
remember several other methodologies that, in their heyday, suffered<br />
from the same criticism: the Rational Unified Process, for example.&nbsp;<br />
This does not mean some of their techniques were irrelevant.&nbsp; Rather, I<br />
see the hype that surrounded some of these as evidence the aims of each<br />
methodology spoke to issues at the heart of pain in many people&rsquo;s<br />
experience with building software; and, thus, it was easy to glom on to<br />
a new technique with fervor in hopes that FINALLY the pain point will<br />
be eliminated.&nbsp; </p>
<p>Let me also add that we, as Agile developers,<br />
coaches, managers, architects, etc., have a responsibility to<br />
realistically communicate the benefits of Agile in a way that does not<br />
set unrealistic expectations.&nbsp; Agile will hold its own if we approach<br />
it with a level head.&nbsp; Agile effectively addresses most common software<br />
development pain points but it is NOT a silver bullet.&nbsp; We must be<br />
careful to give the proper impression when advocating for it.</p>
<p><b><b>Pitfall </b>9</b>: A variation of The Blame Game can arise.</p>
<p><b>My opinion</b>:<br />
This is absolutely true, and I wish I had an answer for this.&nbsp; The<br />
characteristics that describe an Agile team are not always found in the<br />
organization as a whole.&nbsp; </p>
<p>The approach I have taken is to let<br />
others know up front, in a non-threatening way, that if the project is<br />
developed as efficiently as we hope, they may need some help in<br />
adjusting their processes, too.&nbsp; That way I attempt to defuse the blame<br />
early by letting others know they might see throughput issues outside<br />
of development.&nbsp; I try to paint this in a good light: we&rsquo;re all<br />
interested in the same end goal and shifting bottle necks are natural,<br />
so don&rsquo;t be alarmed.&nbsp; So far, I have avoided the blame game.</p>
<p><b>Conclusion</b>:</p>
<p>For<br />
many folks, Agile turns traditional and well-loved, if dysfunctional,<br />
processes on their heads.&nbsp; We cannot forget how high the stakes are for<br />
some of our customers and how important we are in helping them meet<br />
their business goals.</p>
<p>Let us be patient as we can with the<br />
business/product owners, working to help them understand that the<br />
quality of our deliverable will be proportional to everyone&rsquo;s<br />
willingness to invest time in the process.&nbsp; Let us be careful to<br />
communicate clearly with the product owners and set realistic<br />
expectations, regardless of methodology.&nbsp; </p>
<p>And if Agile<br />
reveals a bottleneck in a business process 3 steps removed from the<br />
developers, isn&rsquo;t that a good thing?&nbsp; Hopefully, we can help prepare<br />
our organization for that eventuality, receiving buy-in up front and,<br />
thus, reducing negative political fallout.&nbsp; I realize that is not not<br />
always possible, but let us aspire to that Ideal and continue working<br />
to mature the process.</p>
<p>&nbsp;</p>
<p>[Original version of this was posted 1/13/2009 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/part-four-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Part Three &#8211; A Response to “Traps &amp; Pitfalls of Agile Development – A Non-Contrarian View”</title>
		<link>http://lostechies.com/christaylor/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:37:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[I.T. Management]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx</guid>
		<description><![CDATA[In the previous two installments (Part One and Part Two), I wrote about Pitfalls 1 through 5 of Sean Landis&#8217; this blog entry.&#160; I continue with Pitfall 6 here. Pitfall 6: Agile teams have a tendency to focus on tactical&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the previous two installments (<a href="/blogs/agilecruz/archive/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part One</a> and <a href="/blogs/agilecruz/archive/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">Part Two</a>), I wrote about Pitfalls 1 through 5 of <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=246513">Sean Landis&rsquo; this blog entry</a>.&nbsp; I continue with Pitfall 6 here.</p>
<p><b><b>Pitfall </b>6</b>: Agile teams have a tendency to focus on tactical accomplishments at the expense of strategic goals.</p>
<p><b>My opinion</b>: true, kind of.&nbsp; This is true on all types of teams I&rsquo;ve been on, Agile or not.&nbsp; The place I believe this statement <b><span style="text-decoration: underline">might</span></b> be relevant to Agile is in the word &ldquo;tendency&rdquo;. </p>
<p>My<br />
first response is to play somewhat of a Devil&rsquo;s advocate and ask, &ldquo;So<br />
what?&rdquo;&nbsp; As long as the software does what it&rsquo;s supposed to do, is<br />
maintainable and makes the business happy, why not leave the strategic<br />
thinking up to the business experts?</p>
<p>However, what if a lack of<br />
understanding of strategic goals on the part of the developers and<br />
architects affects design, which in turn does affect extensibility and<br />
maintainability?&nbsp; Now, we have an issue, and an issue to which I<br />
believe Agile could be prone because of many proponents&rsquo; emphasis on<br />
the principle affectionately termed &ldquo;YAGNI&rdquo; (You Ain&rsquo;t Gonna Need It).</p>
<p>A<br />
lot has been written about YAGNI and I don&rsquo;t claim to have read it all<br />
nor want to rehash it all here.&nbsp; Let me just offer two cents and how I<br />
believe it relates to this pitfall.</p>
<p>If we are not careful, we<br />
can end up practicing YAGNI as a knee-jerk reaction to<br />
&ldquo;design-up-front&rdquo;.&nbsp; We must take care it does not infect our planning<br />
and design of software.&nbsp; Very often our understanding of the overall<br />
strategic goals, especially from a business-value perspective, helps<br />
inform architecture and design. We must be careful not to overlook this<br />
fact.&nbsp; </p>
<p>At my previous company, we supported and extended a<br />
system used to help originate mortgage loans.&nbsp; From the get-go, the<br />
system was built around the concept of a Loan Application.&nbsp; Once<br />
committed to a design that was Loan-Application-centric (by I don&rsquo;t<br />
know how many millions of lines of code), it became evident to the<br />
developers that the Loan Application really had a parent concept of a<br />
Loan Package.&nbsp; The Loan Package could contain one or more Loan<br />
Applications.&nbsp; </p>
<p>I cannot describe to you the incredible<br />
gymnastics we had to perform to retrofit the system to deal with Loan<br />
Packages.&nbsp; Refactoring was a monumental effort that we were not given<br />
time to address.&nbsp; To me, this was a clear example of the truth of this<br />
pitfall, and a clear example of how YAGNI could get you in trouble.&nbsp; </p>
<p>Had<br />
the developers known the business concept of associating multiple loans<br />
with a single property early on in the process (which might have<br />
surfaced had they know the strategic direction of the business), we <span style="text-decoration: underline">may</span> have avoided this problem.</p>
<p>However,<br />
I don&rsquo;t think Agile is responsible for this; I have seen the exact same<br />
problem many times over many years in a number of different types of<br />
shops.&nbsp; This is an age-old problem, one of which Agile is actually<br />
trying to address.</p>
<p>On the other hand, I do think a YAGNI<br />
mindset is very helpful, especially when practicing TDD/BDD.&nbsp; If you<br />
work even half-way through <a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=pd_bbs_sr_1">Kent Beck&rsquo;s Extreme Programming Explained</a>,<br />
for example, you will see how YAGNI, when practiced with TDD, helps<br />
evolve a design in a simple, yet elegant way.&nbsp; In that context, YAGNI<br />
makes sense.&nbsp; </p>
<p>However, I have seen proponents of YAGNI go so<br />
far with the concept that they kept themselves blinded to important<br />
issues that were just over the horizon that, when discovered, cost a<br />
lot in terms of refactoring, redesign, etc.&nbsp; It is my humble opinion<br />
that too much YAGNI can be almost as bad as too much upfront design.<br />
YAGNI is good, but must be balanced. Achieving that balance is hard and<br />
very often comes only through experience, trial and error.&nbsp; Part of<br />
learning that balance is to realize the contexts in which YAGNI makes<br />
sense.</p>
<p>Agile or not, management has a responsibility to provide<br />
leadership on maintaining the proper balance here and provide for a<br />
process by which every relevant practitioner has an appropriate<br />
understanding of the strategic goals the project is designed to support.</p>
<p>Last<br />
point: the intimate relationship Agile practitioners develop with the<br />
product ownership team can provide quite a bit of opportunity to<br />
understand the strategic placement of the project simply because of the<br />
continual dialogue that occurs.&nbsp; Inevitably, in my experience, business<br />
context is very often communicated as a natural part of these<br />
interactions.&nbsp; Not always, but often.</p>
<p><b>Conclusion:</b></p>
<p>Short and sweet: be careful with YAGNI and understand the business your software is being built to support.</p>
<p>I<br />
remain a firm proponent of Agile methodologies because, in my<br />
experience, they work and work well &ndash; better than other methodologies<br />
I&rsquo;ve participated in.&nbsp; To me, Agile is NOT the issue.&nbsp; Managing<br />
ourselves and the software-unfriendly human tendencies that we struggle<br />
with in our profession, no matter the process or methodology, is the<br />
issue.</p>
<p>[Original version of this was posted 1/12/2009 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/part-three-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Part Two &#8211; A Response to “Traps &amp; Pitfalls of Agile Development – A Non-Contrarian View”</title>
		<link>http://lostechies.com/christaylor/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:36:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[I.T. Management]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx</guid>
		<description><![CDATA[In my last installment, I began giving my initial thoughts on this blog entry by Sean Landis.&#160; In this entry, I will continue to toss my cookies into cyberspace by addressing what Mr. Landis describes as pitfalls 3, 4 and&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In my <a href="/blogs/agilecruz/archive/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx">last installment</a>, I began giving my initial thoughts on <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=246513">this blog entry</a><br />
by Sean Landis.&nbsp; In this entry, I will continue to toss my cookies into<br />
cyberspace by addressing what Mr. Landis describes as pitfalls 3, 4 and<br />
5.</p>
<p><b><b>Pitfall </b>3</b>: Agile methodologies misunderstood may lead to team burnout due to an irrational culture of urgency.</p>
<p><b>My opinion</b>:<br />
I was already burned out BEFORE I started learning Agile (and I&rsquo;m very much still<br />
learning).&nbsp; I actually found Agile to be refreshing because it<br />
recognizes our human limitations without giving us excuses to indulge<br />
in those limitations. </p>
<p>The key word here is &ldquo;misunderstood.&rdquo;&nbsp;<br />
To expect all things to be fully understood is ignorance, but to NOT<br />
work at reducing misunderstanding is foolish.</p>
<p>Agile can easily<br />
be misunderstood, mainly because the attraction to it is so high after<br />
being introduced to it (if you&rsquo;re like me).&nbsp; If we&rsquo;re not careful, we<br />
can become too zealous too early about its promise because it addresses<br />
fundamental psychosocial issues most of us have faced in our technical<br />
career.&nbsp; It speaks to our gut, to our yearning for something other than<br />
the burnout, frustration, etc., we have all experienced before.&nbsp; </p>
<p>However,<br />
as with any idea, we must take a rational approach (dare I say, act<br />
like adults?) and carefully assess how Agile might address the needs of<br />
our organization today.&nbsp; Our adoption of Agile must be measured, giving<br />
consideration to the current processes, abilities and mindsets of team<br />
members, the business climate we are in, etc.&nbsp;&nbsp; We should seek out the<br />
advice and experience of others who have gone before us and try to<br />
understand Agile in a broader context so as to reduce misunderstanding<br />
and minimize the duration of unrealistic expectations.</p>
<p>Additionally,<br />
I agree that an &ldquo;irrational culture of urgency&#8221;,&nbsp; is a reality in Agile<br />
development, but think this is due to the natural human tendency to NOT<br />
do what Agile says to do: adjust development load up or down based upon<br />
actual delivered software in each iteration/sprint.&nbsp; </p>
<p>When we<br />
are not allowed to adjust as we go along, we diverge from Agile.&nbsp; My<br />
experience is that I had less stress working on a highly efficient<br />
Agile team than ever before.&nbsp; And there were times we could not adjust<br />
&ndash; we just HAD to get it done due to business constraints.&nbsp; However,<br />
I&rsquo;ve worked more long hours on traditional teams than on Agile teams<br />
due to the fact that our enterprise team worked hard to manage along<br />
Agile guidelines.&nbsp; It really did work.</p>
<p><b><b>Pitfall </b>4</b>:<br />
Agile requires more team and individual discipline, commitment and<br />
openness than a dysfunctional organization may be able to bear.</p>
<p><b>My opinion</b>:<br />
true.&nbsp; I think part of this stems from misunderstanding on the part of<br />
all or some participants.&nbsp; And this also goes back to the issue of<br />
acting like adults.&nbsp; </p>
<p>However, I don&rsquo;t think working in a<br />
dysfunctional organization should preclude us from adopting some Agile<br />
practices.&nbsp; Again, we need to keep in mind the capabilities of our<br />
organization.&nbsp; We may not be able to adopt Agile hook, line and sinker<br />
right off the bat.&nbsp; But, we could incrementally adopt Agile practices<br />
that make sense and that our other team members understand and have<br />
bought into.&nbsp; In my experience, some Agile adoption has been much<br />
better than none. </p>
<p>I very often must take a long-term approach: my company<br />
does not have to adopt all Agile processes today (however, if it can, that would be ideal).&nbsp; Over time, more and<br />
more Agile processes will make their way in but ONLY as they make sense<br />
to the entire organization.&nbsp; Zealous preaching and legalistic<br />
assertions against those who don&rsquo;t understand or agree will make things<br />
worse than being good-natured and making a case for Agile, patiently<br />
addressing contrary concerns.&nbsp; Yes, there is a need and a drive to adopt all Agile practices in order to be &#8220;truly agile&#8221;.&nbsp; However, we can shoot ourselves in the foot if we don&#8217;t have patience and, thereby lose the &#8220;war&#8221; for Agile in our enterprise by turning those who are skeptical against even the hint of Agile.&nbsp; Remember: honey attracts more bees than<br />
vinegar.</p>
<p>We may not get everything we want with this approach<br />
(then again, we might!), but in a contrary environment we will usually<br />
get more with this approach then if we don&rsquo;t display humility and a<br />
willingness to compromise.</p>
<p>Let me not be misunderstood though: even if we night need to take an incremental<br />
approach toward adopting Agile, we must not lower the bar in terms of<br />
what defines Agile.&nbsp; Here is an important post to keep in mind along<br />
these lines: <a href="http://www.xprogramming.com/xpmag/jatAgileIsIsNotMayBe.htm"><span class="title">Agile: Is, Is Not, May Be</span></a> by Ron Jeffries.</p>
<p>In the end, if we&rsquo;re really<br />
stuck in a situation in which all contrariness squashes our attempts:<br />
well, that is quite a pickle.&nbsp; It does happen.&nbsp; Agile may not be for<br />
every organization.&nbsp; We are then left with the task of deciding how<br />
important Agile is to us and making the difficult decision to stay or<br />
move on, frankly. </p>
<p><b><b>Pitfall </b>5</b>: The high visibility on agile teams causes poor performers to stand out.</p>
<p><b>My opinion</b>: absolutely true.&nbsp; Agile takes courage. </p>
<p>I<br />
believe this aspect of Agile is a good thing. If we are to behave like<br />
adults, poor performers should be discovered and provided the<br />
opportunity to grow.&nbsp; And we, as their team mates, need to be patient<br />
and understanding of their situations.&nbsp; </p>
<p>This does not mean<br />
that we abide by someone who is intentionally lazy or unwilling to<br />
learn; however, we all have our own unique strengths and weaknesses.&nbsp;<br />
It is incumbent upon all team members to be understanding of the<br />
weaknesses of our team mates and to encourage full exploitation of<br />
their strengths.&nbsp; We should be realistic about what each of our team<br />
mates can accomplish, but not become complacent, either.&nbsp; We must hold<br />
the bar high, encouraging our team mates to reduce their weaknesses and<br />
capitalize upon their strengths.&nbsp; </p>
<p>I tell my son I am not<br />
interested in his grades so much as in whether he doing his absolute<br />
best. If he is getting straight A&rsquo;s and not doing his best, I will be<br />
concerned; but if he is getting straight C&rsquo;s and that is his best, I<br />
will be pleased.&nbsp; Either way, I am going to work to help him achieve<br />
more.&nbsp;&nbsp; Yes, grades do count, just as deliverable software counts.&nbsp; The<br />
issue is how he get there given the fact we all are human.</p>
<p>I<br />
think it is important that each one of us, when deciding whether a team<br />
mate is not cutting it, ask ourselves what is really important.&nbsp; Maybe<br />
our career goals are higher than someone else&rsquo;s and therefore we pump<br />
out more code, read more books, write more blogs and understand more<br />
than a coworker.&nbsp; That doesn&rsquo;t necessarily mean that coworker is lazy<br />
or not able to write software.&nbsp; It may just mean that they have other<br />
things in their life that provide meaning to them in the same way<br />
coding does to us.&nbsp; Maybe their code is ugly to us.&nbsp; Well, how<br />
important is the ugly code in the grand scheme of things?&nbsp; Sometimes,<br />
it really does matter.&nbsp; But, sometimes it really doesn&rsquo;t. (<b><span style="text-decoration: underline">1/15/2009 UPDATE</span></b>: I am reading <a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert Martin&rsquo;s</a> <a href="http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&amp;field-keywords=Clean+code&amp;x=0&amp;y=0">Clean Code</a> and must say that I am rethinking this statement. Nevertheless, the heart of what I&rsquo;m saying remains.)</p>
<p>So, given the scope of all of our lives and existence, what is really important?&nbsp; Having <a href="http://agilecruz.blogspot.com/2008/12/lost-good-friend.html">lost a good friend</a><br />
recently drove this point home again for me.&nbsp; Sometimes we worry about<br />
things that really are not that important in the context of our entire<br />
lives and society.&nbsp; </p>
<p>For me, what my boys think of me and the<br />
impact I can make on their lives are more important than whether I can<br />
code as good as the next guy.&nbsp; I&rsquo;ll still work to become better at my<br />
craft; but, given a choice to go fishing with my son or learn another<br />
design pattern, I hope you&rsquo;d understand that I&rsquo;ll be buying night<br />
crawlers at Walmart quicker than you can say &#8220;Dependency Injection&rdquo;.</p>
<p><b>Conclusion</b>:</p>
<p>As<br />
you might be able to infer, the last two pitfalls above strike a<br />
particular chord with me and I am sure there is much that we can debate<br />
regarding them.&nbsp; Personally, I stress humility, integrity and a<br />
servant&rsquo;s attitude over arrogance, absoluteness and condescension.&nbsp; I<br />
think life is much richer and more fulfilling when we are less<br />
judgmental and more considerate of others points of view, experiences<br />
and uniqueness.</p>
<p>&nbsp;</p>
<p>[Original version posted 1/8/2009 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/part-two-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Part One &#8211; A Response to “Traps &amp; Pitfalls of Agile Development – A Non-Contrarian View”</title>
		<link>http://lostechies.com/christaylor/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:35:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[I.T. Management]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view.aspx</guid>
		<description><![CDATA[It is with great interest that I read articles and books that deal with the &#8220;ugly&#8221; side of Agile development, especially because my current team is in the process of beginning to implement some Agile processes in our environment.&#160; The&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It is with great interest that I read articles and books that deal<br />
with the &ldquo;ugly&rdquo; side of Agile development, especially because my<br />
current team is in the process of beginning to implement some Agile<br />
processes in our environment.&nbsp; The last thing we want is to see our<br />
adoption of Agile practices fail.&nbsp; So, we are looking to take &ldquo;what<br />
works&rdquo; and implement those things gradually into a system that is<br />
ad-hoc right now.&nbsp; </p>
<p>I appreciate <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=246513">this blog entry</a><br />
by Sean Landis and write the following in response to and as a<br />
continuation of the discussion he started. </p>
<p>For this entry, I will focus on Sean&rsquo;s first two pitfalls:</p>
<p><b>Pitfall 1</b>:&nbsp; Agile teams may be prone to rapid accumulation of technical debt.</p>
<p><b>My opinion</b>:<br />
true.&nbsp; However, that is not the failure of Agile, per se, but rather a<br />
failure of the Agile community to sufficiently address this reality.&nbsp;<br />
Agile coaches need to be cognizant of this fact (mine was, actually)<br />
and stress the importance of putting refactoring work into each<br />
iteration or sprint.&nbsp; </p>
<p>This will diverge from &ldquo;pure&rdquo; Agile in<br />
the sense that a refactoring story does not provide a business<br />
deliverable.&nbsp; But, just as in traditional (or dare I say, &ldquo;legacy&rdquo;)<br />
methodologies, the business customer needs to understand the importance<br />
of addressing technical work that must be done in support of the final<br />
product.&nbsp; </p>
<p>Maybe I have misunderstood, but isn&rsquo;t one fundamental philosophy of Agile the idea<br />
that we adjust our activities to fit changing needs?&nbsp; Heck, Agile<br />
itself might need to be Agile here: adjust itself to deal with the<br />
reality of technical debt.&nbsp; Hint: take a look at Scrum.</p>
<p>With that being said, here comes The Big But: part of what Agile is about is craftsmanship.&nbsp; In fact I&#8217;d have to say that craftsmanship is a driving aspect of Agile and underpins some of its core practices, leading us to fantasize about the elimination of technical debt.&nbsp; Principles like S.O.L.I.D., Clean Code, etc., though their constituent parts have been around in some form long before Agile, are key components of at least my understanding of Agile.&nbsp; For me, it is those principles <span style="text-decoration: underline">within the context of Agile</span> that are so compelling. And these principles, practiced in concert with techniques such as Test-Driven Development and Continuous Integration, push us closer to the ideal of eliminating technical debt.&nbsp; Until we reach that perfect state of being, however, we do need to address the reality of technical debt in such a way as to repeatedly and continually produce working software.</p>
<p><b><b>Pitfall </b>2</b>: Successful Agile development presupposes team members will all act like adults.</p>
<p><b>My opini</b>on:<br />
true.&nbsp; However, I really think this is a selling point of Agile, not a<br />
pitfall (of course, it depends on your audience).&nbsp; Shouldn&rsquo;t we all act<br />
like adults whether we&rsquo;re developing software, drilling for oil or<br />
serving hamburgers?&nbsp; </p>
<p>Some of the things I think acting like an adult means:</p>
<ul>
<li>Letting go of arrogance, impatience and condescension.&nbsp; </li>
<li>Doing what you&rsquo;ll say you&rsquo;ll do </li>
<li>Taking responsibility to be the best you can be </li>
<li>Making a commitment to lifelong learning and personal growth </li>
<li>Doing your best today, realizing that tomorrow you&rsquo;ll be better </li>
<li>Helping others who aren&rsquo;t as good, smart, talented or knowledgeable as you, without being arrogant or cocky.&nbsp; </li>
<li>Taking pride in your work and assuming others are doing the same, until proven otherwise. </li>
<li>Taking pride in accomplishments to date, but being open to learning from someone who has accomplished more </li>
<li>Knowing your limitations, working to stretch beyond them but being willing to ask for help when necessary </li>
</ul>
<p>Agile<br />
&ldquo;suffers&rdquo; from this pitfall because the world suffers from this<br />
malady.&nbsp; The controls that other methodologies have to deal with this<br />
very fact of human existence are not any more effective than the<br />
emphasis on personal responsibility Agile embraces.&nbsp; </p>
<p>On a good<br />
team, Agile is self-correcting: the transparency required, the pairing,<br />
etc., all tend to place social pressure on those individuals that are<br />
not &ldquo;cutting the mustard.&rdquo;&nbsp; They either get better or end up leaving<br />
the team because they can&rsquo;t stand the scrutiny.&nbsp; </p>
<p>Maybe Agile is actually quite effective at making sure we all behave like adults.&nbsp; Is that really a bad thing?</p>
<p><b>Conclusion</b></p>
<p>I&rsquo;m<br />
really just pitching my two-cents out there for consideration.&nbsp; Next I<br />
will throw my feeble mind at Pitfalls three, four and five.&nbsp; If anything<br />
sparks ideas, views, opinions, contrary or not, please feel free to<br />
respond. </p>
<p>&nbsp;</p>
<p>[Original version of this was posted 1/7/2009 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/part-one-a-response-to-traps-amp-pitfalls-of-agile-development-a-non-contrarian-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Configure Selenium RC for Use In C# NUnit Tests</title>
		<link>http://lostechies.com/christaylor/2009/02/10/how-to-configure-selenium-rc-for-use-in-c-nunit-tests/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/how-to-configure-selenium-rc-for-use-in-c-nunit-tests/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:24:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/how-to-configure-selenium-rc-for-use-in-c-nunit-tests.aspx</guid>
		<description><![CDATA[When I set about integrating Selenium into my test suites, I found all the information I needed to do that with but had to hunt and peck through my google searches to find it.&#160; So, as a point of reference,&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/how-to-configure-selenium-rc-for-use-in-c-nunit-tests/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When I set about integrating Selenium into my test suites, I found all the information I needed to do that with but had to hunt and peck through my google searches to find it.&nbsp; So, as a point of reference, I figured I&#8217;d put what I needed to do all in one place:</p>
<p><b>Two main activities:</b></p>
<ol>
<li><span style="text-decoration: underline">Set up Selenium RC server in Windows </span>
<ul>
<li>Download latest Java SE from <a href="http://java.sun.com/">http://java.sun.com/</a> and install </li>
<li>Create a folder named Selenium under your jdk or jre bin file (example: C:Program FilesJavajre1.6.0_05bin). </li>
<li>Download latest version of Selenium RC from <a href="http://seleniumhq.org/download/">http://seleniumhq.org/download/</a> and extract into your newly created folder </li>
<li>From the Command prompt run the following commands:
<ul>
<li>cd [your jdk/jre bin directory] (example: C:Program FilesJavajre1.6.0_05bin). </li>
<li>java -jar .Seleniumselenium-server.jar -interactive </li>
<li>If you see the following messages your Selenium server is alive and kickin&rsquo;:              <br />Entering interactive mode&#8230; type Selenium commands here (e.g: cmd=open&amp;1=http:/               <br />/www.yahoo.com) </li>
</ul>
</li>
</ul>
</li>
<li><span style="text-decoration: underline">Place a reference to the ThoughtWorks.Selenium.Core.dll into your .NET test assembly</span>
<ul>
<li>This<br />
can be found under the Selenium install directory (example: C:Program<br />
FilesJavajre1.6.0_05binSeleniumselenium-remote-control-1.0-beta-2selenium-dotnet-client-driver-1.0-beta-2ThoughtWorks.Selenium.Core.dll)</li>
</ul>
</li>
</ol>
<p><b>Git &lsquo;Er Done With Some Tests</b></p>
<p>Now, you&#8217;re up and ready to start writing NUnit tests using Selenium in C#.&nbsp; By the way, you can record your tests using the <a href="http://seleniumhq.org/projects/ide/">Selenium IDE</a> and export the tests to a number of languages, including C#:</p>
<p><a href="http://lh4.ggpht.com/_vRJChorZihY/SYifk3LYrII/AAAAAAAABBI/kaiLrzC5DcE/s1600-h/SeleniumExport[1].jpg"><img style="border-width: 0px;float: none;margin-left: auto;margin-right: auto" alt="SeleniumExport" src="http://lh5.ggpht.com/_vRJChorZihY/SYh3SPcM14I/AAAAAAAABBM/qMFhuLT5gfg/SeleniumExport_thumb.jpg?imgmax=800" border="0" width="400" height="497" /></a> </p>
<p><span style="text-decoration: underline">Example Test Suite as Exported using the above</span>:</p>
<blockquote>
<p>using System;      <br />using System.Text;       <br />using System.Text.RegularExpressions;       <br />using System.Threading;       <br />using NUnit.Framework;       <br />using Selenium; </p>
<p>namespace SeleniumTests      <br />{       <br />&nbsp;&nbsp;&nbsp; [TestFixture]       <br />&nbsp;&nbsp;&nbsp; public class NewTest       <br />&nbsp;&nbsp;&nbsp; {       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private ISelenium selenium;       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private StringBuilder verificationErrors;       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [SetUp]       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void SetupTest()       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selenium = new DefaultSelenium(&#8220;localhost&#8221;, 4444, &#8220;*chrome&#8221;, &#8220;<a href="http://sparkystestserver:48/%22%29;">http://sparkystestserver:48/&#8221;);</a>       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selenium.Start();       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [TearDown]       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void TeardownTest()       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selenium.Stop();       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception)       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Ignore errors if unable to close the browser       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Assert.AreEqual(&#8220;&#8221;, verificationErrors.ToString());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }      <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Test]       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void TheNewTest()       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selenium.Open(&#8220;/Home&#8221;);       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selenium.Type(&#8220;loginname<span style="text-decoration: line-through">&#8220;</span>, <span style="text-decoration: line-through">&#8220;</span>sparky<span style="text-decoration: line-through">&#8220;</span>);       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selenium.Type(&#8220;password&#8221;, &#8220;mooseButt<span style="text-decoration: line-through">&#8220;</span>);       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selenium.Click(&#8220;ctl00_MainContent_loginButton&#8221;);       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Assert.AreEqual(&#8220;burp&#8221;, selenium.GetValue(&#8220;burpField&#8221;));       <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }       <br />&nbsp;&nbsp;&nbsp; }       <br />}</p>
</blockquote>
<p>Hope that helps!</p>
<p>&nbsp;</p>
<p>[Originally posted on 2/3/2009 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/how-to-configure-selenium-rc-for-use-in-c-nunit-tests/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Qualities that Undergird Agile/XP Development</title>
		<link>http://lostechies.com/christaylor/2009/02/10/qualities-the-undergird-agile-xp-development/</link>
		<comments>http://lostechies.com/christaylor/2009/02/10/qualities-the-undergird-agile-xp-development/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:11:00 +0000</pubDate>
		<dc:creator>Chris Taylor</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Extreme Programming]]></category>

		<guid isPermaLink="false">/blogs/agilecruz/archive/2009/02/10/qualities-the-undergird-agile-xp-development.aspx</guid>
		<description><![CDATA[&#160; The six core values of XP, as elucidated by Kent Beck in Extreme Programming Explained, 2nd Edition), provide a strong backdrop for the principles and practices he exposits in the book. But while preparing an introduction to XP/Agile for&#160;&#8230; <a href="http://lostechies.com/christaylor/2009/02/10/qualities-the-undergird-agile-xp-development/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>The six core values of XP, as elucidated by Kent Beck in <a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1226952852&amp;sr=8-1">Extreme Programming Explained, 2nd Edition</a>),<br />
provide a strong backdrop for the principles and practices he exposits<br />
in the book. But while preparing an introduction to XP/Agile for my<br />
colleagues this week, I became intrigued by something that had been<br />
lingering in my subconscious. I kept feeling like something more<br />
fundamental was necessary for me to understand in order to be able to<br />
fully explain the philosophical underpinnings of XP in a way that would<br />
make sense to my audience.</p>
<p>While reflecting on what I was feeling, I remembered something <a href="/controlpanel/blogs/joe_ocampo/default.aspx">AgileJoe</a><br />
said was one of the primary qualities he looked for in a developer:<br />
humility. Then I remembered that Kent Beck says &ldquo;the key to XP is<br />
integrity&rdquo; (p. 159) and that integrity is defined as acting in harmony<br />
with one&rsquo;s values.</p>
<p>As part of the Tae Kwon Do training my son<br />
and I went through, we had to memorize something called &#8220;The Five<br />
Tenets&#8221;, one of which was humility. The illustration provided to us<br />
showed someone kicking high on a dummy target and feeling very proud of<br />
himself; then someone came along who could kick higher. The lesson was<br />
that no matter how good you are someone else will eventually come along<br />
who is better. Be proud of accomplishments to date, but maintain a<br />
mentor&rsquo;s heart and a teachable spirit.</p>
<p>As well, I recall<br />
reading about how the Jewish sages teach that even great masters can<br />
learn from the most novice of students if the master remains attentive<br />
to the gifts and opportunities each student offers.</p>
<p>This was<br />
feeling good, so I continued down that mental pathway and set about<br />
trying to put together the &#8220;best of all possible worlds&#8221; list of<br />
qualities and attitudes that support the values XP espouses. Among a<br />
host of other things, I felt that Agile/XP development means:</p>
<ul>
<li>Taking personal responsibility for continuous self-improvement ; </li>
<li>Appreciating and encouraging the unique talents of each team member; </li>
<li>Assuming our teammates are doing their best, unless proven otherwise; </li>
<li>Holding each other accountable for demonstrating XP&rsquo;s core values; </li>
<li>Holding each other accountable for adhering to the principles and practices agreed to by the team; </li>
<li>Understanding when a team member is weak in a given area and providing support for their own self-improvement; </li>
<li>Being slow to judge and quick to encourage; </li>
</ul>
<p>As<br />
a result of this line of reasoning, I began to feel that the two most<br />
important qualities of a good Agile developer are integrity <span style="text-decoration: underline">and</span><br />
humility. Taking a look at each of the above (feel free to add more, as<br />
I&rsquo;m sure I have not thought of them all), it is easy to see how some<br />
require integrity, some humility, some both.</p>
<p>Practicing these<br />
things in a team setting, fosters a safe, non-judgmental environment.<br />
And in a safe environment, principles and practices that align with XP<br />
core values have an opportunity to flourish. Without these, true<br />
collaboration is not possible and in the end, everyone suffers.</p>
<p>But,<br />
this cannot happen by prescription. On my last team, one of the team<br />
leaders once talked about more rules when he didn&rsquo;t feel developers<br />
were switching pairs frequently enough. This caused resentment among<br />
some team members who felt like they were the best at determining when<br />
it was appropriate to switch pairing partners. That&rsquo;s a tough<br />
situation. In the end, if humility and integrity are practiced, core XP<br />
values begin surfacing and situations like these are resolved and the<br />
team moves on.</p>
<p>In my humble opinion, people who don&#8217;t practice<br />
these things in their own professional lives stifle Agile/XP<br />
development. You can&#8217;t talk Agile then criticize someone coldly when<br />
they ask a question; or talk badly about them behind their back.</p>
<p>The<br />
values, principles and practices of XP require changes in us, many of<br />
which fly in the face of traditional development practices and office<br />
political settings. XP requires an environment in which communication<br />
and feedback occur unhindered, in which failure is understood and<br />
utilized for ultimate success, in which improvement is a natural<br />
process and opportunity abounds. These and other XP principles and<br />
practices require the cultivation of an environment that is safe for<br />
all members of the team.</p>
<p>If individual team members nurture<br />
these basic attitudes of humility and integrity in their own hearts and<br />
minds, fear (and the silence and self-defensiveness it engenders in<br />
team members) is minimized. This helps till the soil and provide<br />
fertile ground in which collaboration and innovation have a place to<br />
take root.</p>
<p>&nbsp;</p>
<p>[Originally posted 12/1/2008 at http://agilecruz.blogspot.com]</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/christaylor/2009/02/10/qualities-the-undergird-agile-xp-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
