<?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>The Web Gambit &#187; agile</title>
	<atom:link href="http://webgambit.com/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://webgambit.com</link>
	<description>Thoughts on Software Development from Karthik Hariharan</description>
	<lastBuildDate>Sun, 07 Mar 2010 16:06:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Thoughts on Headspring&#8217;s Agile/XP boot camp</title>
		<link>http://webgambit.com/2008/02/02/thoughts-on-headsprings-agilexp-boot-camp/</link>
		<comments>http://webgambit.com/2008/02/02/thoughts-on-headsprings-agilexp-boot-camp/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 12:05:00 +0000</pubDate>
		<dc:creator>Karthik Hariharan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.webgambit.com/?p=64</guid>
		<description><![CDATA[I recently had a chance to attend Headspring System&#8217;s Agile/Extreme Programming boot camp for Advanced .NET developers led by Jeffrey Palermo in Austin, TX.&#160; I had wanted to learn the proper techniques to approach agile development on the .NET platform from an expert and when I found out about this course, I eagerly signed up.
The [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had a chance to attend Headspring System&#8217;s Agile/Extreme Programming <a target="_blank" _tesavedurl="http://www.headspringsystems.com/training/" href="http://www.headspringsystems.com/training/">boot camp</a> for Advanced .NET developers led by <a _tesavedurl="http://codebetter.com/blogs/jeffrey.palermo/" href="http://codebetter.com/blogs/jeffrey.palermo/">Jeffrey Palermo</a> in Austin, TX.&nbsp; I had wanted to learn the proper techniques to approach agile development on the .NET platform from an expert and when I found out about this course, I eagerly signed up.</p>
<p>The three day course covered best practices in regards to Agile design and process while incorporating multiple deep dives into Jeffrey&#8217;s tools of choice when doing development.&nbsp; The exercises followed a format of first explaining how a normal development process becomes more agile and then having the hands on experience of implementing that process with different tools and concepts.&nbsp; Jeffrey explained how simple things like source control can become more agile through regular branching and merging and he demonstrated how to do this with <a target="_blank" _tesavedurl="http://tortoisesvn.net/" href="http://tortoisesvn.net/">TortoiseSVN</a>.</p>
<p>While a lot of software development training is often presented very academically, Headspring&#8217;s was very hands-on and really pushed everyone to pick up the processes and tools very quickly, just as you would in the real world.</p>
<p>On day one, upon entering the classroom we were told to check out a <a target="_blank" _tesavedurl="http://subversion.tigris.org/" href="http://subversion.tigris.org/">Subversion</a> repository hosted on Google Code that would house the code for the application that we would be extending over the next few days.&nbsp; This application was a Work Order management system designed using <a target="_blank" _tesavedurl="http://domainlanguage.com/ddd/index.html" href="http://domainlanguage.com/ddd/index.html">Domain-Driven Design</a> and built using a <a target="_blank" _tesavedurl="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx" href="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx">Model-View-Presenter</a> implementation with <a target="_blank" _tesavedurl="http://www.nhibernate.org/" href="http://www.nhibernate.org/">NHibernate</a> serving as the <a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Object-relational_mapping" href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a> between our entities and the database.&nbsp; The application also had a suite of both automated Unit Tests and Integration Tests which were regularly run as part of it&#8217;s <a target="_blank" _tesavedurl="http://nant.sourceforge.net/" href="http://nant.sourceforge.net/">NAnt</a>-based automated build script.&nbsp; If you&#8217;re curious to see the system, download the Visual Studio 2008 solution <a target="_blank" _tesavedurl="http://code.google.com/p/headspringtraining20080130/source/checkout" href="http://code.google.com/p/headspringtraining20080130/source/checkout">here</a>.</p>
<p>Over the next two days, we extended and refactored this Work Order system to support new features and workflows by first writing <a target="_blank" _tesavedurl="http://www.nunit.org/" href="http://www.nunit.org/">NUnit</a> tests and then designing interfaces around the problem domain. By focusing our whiteboarding sessions on separating the concerns into smaller pieces that each group could begin implementing, the whole class of fifteen students was able to work as a team to successfully build and test the new features in a just a few hours.&nbsp; Along the way we touched on many concepts like <a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Inversion_of_control" href="http://en.wikipedia.org/wiki/Inversion_of_control">Inversion of Control</a> by using <a target="_blank" _tesavedurl="http://structuremap.sourceforge.net/" href="http://structuremap.sourceforge.net/">StructureMap</a> and reliable, targeted <a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Refactoring" href="http://en.wikipedia.org/wiki/Refactoring">Refactoring</a> by using <a target="_blank" _tesavedurl="http://www.jetbrains.com/resharper/" href="http://www.jetbrains.com/resharper/">Resharper</a>.</p>
<p>Finally, we ended the class with a review of all of the concepts and tools that were used during the exercises and we identified some of the design patterns that were implemented by the final solution.</p>
<p>I really appreciated that Jeffrey tailored the exercises as per the class&#8217;s feedback.&nbsp; Many of the attendees wanted to see more detail on NHibernate so Jeffrey dedicated a lot of time to going over some best practices around NHibernate mappings and he demonstrated ways to optimize the queries produced by it.</p>
<p>There was a obviously a lot more to this course than I could possibly cover in a single blog post. If all of this content sounds interesting to you, I would highly suggest signing up for one of Headspring&#8217;s <a target="_blank" _tesavedurl="http://codebetter.com/blogs/jeffrey.palermo/archive/2008/01/25/january-headspring-training-sold-out-opening-two-more-dates.aspx" href="http://codebetter.com/blogs/jeffrey.palermo/archive/2008/01/25/january-headspring-training-sold-out-opening-two-more-dates.aspx">upcoming sessions</a> if you are looking for some practical guidance to help you hit the ground running with Agile development.</p>
<p>One final note: If you are considering taking this course, I would recommend familiarizing yourself somewhat with the following tools beforehand: <a target="_blank" _tesavedurl="http://tortoisesvn.net/" href="http://tortoisesvn.net/">TortoiseSVN</a>, <a target="_blank" _tesavedurl="http://www.nunit.org" href="http://www.nunit.org">NUnit</a>, and <a target="_blank" _tesavedurl="http://www.jetbrains.com/resharper/" href="http://www.jetbrains.com/resharper/">Resharper</a>.&nbsp; Also, I would recommend having at least a basic understanding of <a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Test-driven_development" href="http://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a>, <a target="_blank" _tesavedurl="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx" href="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/default.aspx">Model-View-Presenter</a>, and <a target="_blank" _tesavedurl="http://en.wikipedia.org/wiki/Inversion_of_control" href="http://en.wikipedia.org/wiki/Inversion_of_control">Inversion of Control</a>. The course moves very quickly and you will have an easier time keeping up if you at least have some working knowledge of these tools and concepts prior to attending the course.</p>
<p>Thanks again to both Jeffrey Palermo and <a _tesavedurl="http://lostechies.com/blogs/jimmy_bogard/" href="http://lostechies.com/blogs/jimmy_bogard/">Jimmy Bogard</a> for a great training experience and chance to inundate them with questions as I am known to do!</p>
]]></content:encoded>
			<wfw:commentRss>http://webgambit.com/2008/02/02/thoughts-on-headsprings-agilexp-boot-camp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
