<?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>Todd Huss &#187; Agile Development</title>
	<atom:link href="http://gabrito.com/post/category/technical/agile/feed" rel="self" type="application/rss+xml" />
	<link>http://gabrito.com</link>
	<description>Anecdotes on Technology Leadership, Ruby, Java, Scala, Cloud Computing, Open-Source, SEO, and Design</description>
	<lastBuildDate>Thu, 08 Dec 2011 00:21:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Selenium Continuous Integration Runner</title>
		<link>http://gabrito.com/post/selenium-continuous-integration-runner</link>
		<comments>http://gabrito.com/post/selenium-continuous-integration-runner#comments</comments>
		<pubDate>Sat, 10 Jan 2009 20:34:47 +0000</pubDate>
		<dc:creator>Todd Huss</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://gabrito.com/?p=227</guid>
		<description><![CDATA[At Common Sense Media I wanted to get some functional testing up and running that didn&#8217;t require a lot of user training for the QA folks. I also wanted those tests to run in our Rightscale/Amazon EC2 hosted Hudson continuous &#8230; <a href="http://gabrito.com/post/selenium-continuous-integration-runner">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://seleniumhq.org/" target="_blank"><img src="http://gabrito.com/wp-content/uploads/2009/01/selenium1.png" alt="selenium" title="selenium" width="200" height="181" class="alignleft size-full wp-image-226" /></a> At <a href="http://www.commonsensemedia.org/">Common Sense Media</a> I wanted to get some functional testing up and running that didn&#8217;t require a lot of user training for the QA folks. I also wanted those tests to run in our <a href="http://www.rightscale.com/">Rightscale</a>/<a href="http://aws.amazon.com/ec2/">Amazon EC2</a> hosted <a href="https://hudson.dev.java.net/">Hudson continuous integration server</a>. As a result I&#8217;ve published the:</p>
<p><a href="http://github.com/thuss/selenium-continuous-integration-runner/tree/master"> Selenium Selenese Continuous Integration Runner</a> </p>
<p>on GitHub in the hopes that it will save other people time when trying to get their Selenese tests running from a continuous integration server. It&#8217;s very simple but one thing I battled with was that I had to patch the selenium JAR to get it to work with Firefox 3.0. It should work fine in any continuous integration server regardless if it&#8217;s <a href="https://hudson.dev.java.net/">Hudson</a>, <a href="http://studios.thoughtworks.com/cruise-continuous-integration">Cruise</a>, <a href="http://cruisecontrol.sourceforge.net/">Cruise Control</a>, <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a>, etc.</p>
<p>The functional testing products I&#8217;ve used that drive a real browser include <a href="http://www.automatedqa.com/">Test Complete (commercial)</a>, <a href="http://seleniumhq.org/">Selenium</a>, and <a href="http://wtr.rubyforge.org/">Watir</a>. I think all 3 do a good job but one thing I like about Selenium is that it&#8217;s dirt simple to get a user productive with the Selenium IDE Firefox plugin. However, that benefit is also the most limiting factor of the <a href="http://seleniumhq.org/">Selenium IDE</a> which is that to be able to re-open tests in Selenium IDE you have to save them as Selenese (which is the most limited of the testing languages that Selenium supports). Still, I think Selenese is a reasonable choice for a lot of organizations that need a moderately sophisticated functional test suite.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrito.com/post/selenium-continuous-integration-runner/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>5 things Ruby on Rails has that Java doesn&#8217;t</title>
		<link>http://gabrito.com/post/the-appeal-of-ruby-over-java</link>
		<comments>http://gabrito.com/post/the-appeal-of-ruby-over-java#comments</comments>
		<pubDate>Mon, 13 Mar 2006 16:47:09 +0000</pubDate>
		<dc:creator>Todd Huss</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://gabrito.com/post/the-appeal-of-ruby-over-java</guid>
		<description><![CDATA[After listening to this weeks Ruby on Rails podcast where Geoffrey Grosenbach interviewed Bruce Tate, it got me to thinking about why Ruby on Rails appeals to me. For me as a Java person, the real appeal of Ruby lies &#8230; <a href="http://gabrito.com/post/the-appeal-of-ruby-over-java">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
After listening to this weeks <a href="http://podcast.rubyonrails.com/">Ruby on Rails podcast</a> where <a href="http://nubyonrails.com/">Geoffrey Grosenbach</a> interviewed <a href="http://weblogs.java.net/blog/batate/">Bruce Tate</a>, it got me to thinking about why Ruby on Rails appeals to me. For me as a Java person, the real appeal of Ruby lies in Rails and here&#8217;s why:<span id="more-112"></span>
</p>
<ol>
<li><b>Rails is a one stop shop</b> with a web MVC framework that has AJAX support, an OR Mapping framework, logging framework, default directory structure, unit testing, functional testing, etc&#8230; Bottom line is that it&#8217;s much easier for someone to get productive quickly in RoR learning good practices such as TDD than in any equivalent Java setup. Heck, at work we still don&#8217;t have a good functional web testing framework for the programmers to use because after some tinkering I still couldn&#8217;t get it to start Tomcat, deploy, and run the HttpUnit tests reliably. The first time I tried Rails, the logging, mvc framework, OR Mapping, web services integration, functional tests, unit tests, etc&#8230; just worked, wow!</li>
<li><b>Rails let&#8217;s you learn things when you&#8217;re ready to</b> whereas in Java, just to get my projects off the ground, I have to understand the build system, Hibernate configuration files, web.xml, log4j configuration, my MVC configuration, etc&#8230; I still don&#8217;t know the first thing about Rake (the build system) even though I&#8217;ve built a couple small web projects in RoR and you know what, that&#8217;s a real testament to how well it does it&#8217;s job. I&#8217;m focusing on solving my business problem now, not on learning a build system! Similarly there are massive black holes in my knowledge around ActiveController, ActiveRecord, Rails&#8217; AJAX support, etc&#8230; but it hasn&#8217;t stopped me from using those features and being productive! I hope to learn the ins and outs of these components eventually but that&#8217;s in direct contrast to Java where you have to front-load tons of knowledge to be productive!</li>
<li><b>Rails recognizes that in the real world there are differences between your dev, test, and production environment</b> whereas I&#8217;ve always had to roll my own solution in Java whether it&#8217;s through JNDI or the creative use of property files. The key here is that in Rails you have all of those settings in your project under source control making it easy to lookup how a setting differs between test and production, with JNDI that information is stored on the server but it&#8217;s irrelevant because everyone does it differently anyhow.</li>
<li><b>The Rails community recognized the need for a production deployment solution and came out with Capistrana (ex SwitchTower)</b> whereas in Java with Tomcat we had to write our own from scratch that goes to our 10 application servers, takes each one out of production, deploys the WAR, performs a test, and then brings it back into production before moving onto the next server.</li>
<li><b>Jumping in on an existing Rails project should be easy because there are strong conventions</b> whereas in Java every project does almost everything a little differently. You have to learn the Ant targets, the project source layout, how dependencies are managed, how they deploy into Tomcat, and so on. Maven certainly helps address this issue in the Java space but it&#8217;s adoption rate is low compared to Ant.</li>
</ol>
<p>
That said, there are still things I really like about Java. For starters I&#8217;m an Emacs to IDE convert and nothing compares to the refactoring and code analysis capabilities of JetBrains Idea. Since Ruby is dynamically typed, no IDE will ever support the degree of refactoring we enjoy in Java. Also, once you have your Java environment setup and everything integrated and working, developing new web pages is fast. For example when I develop in Idea I can change a class or a web page and hit refresh in my browser just like I do in Ruby. Since we use JSPX and TAGX files, IDEA tells me if my XHTML is not well-formed XML&#8230; I could go on and on.
</p>
<p>
Suffice it to say that I still like Java but I&#8217;m loving that there&#8217;s some fierce competition on the block and I hope someday to have the opportunity to develop a large software project in Rails. If you still have your doubts about Ruby on Rails, read <a href="http://www.pragmaticprogrammer.com/titles/rails/index.html">Agile Web Development with Rails</a>, it&#8217;s a great book that will knock your socks off!
</p>
<p>
Related reading: <a href="http://squizlog.keithpitty.org/archives/000425.html">Keith Pitty looks at Java versus Ruby on Rails<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gabrito.com/post/the-appeal-of-ruby-over-java/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Behind Closed Doors</title>
		<link>http://gabrito.com/post/behind-closed-doors</link>
		<comments>http://gabrito.com/post/behind-closed-doors#comments</comments>
		<pubDate>Mon, 23 Jan 2006 16:40:29 +0000</pubDate>
		<dc:creator>Todd Huss</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://gabrito.com/post/behind-closed-doors</guid>
		<description><![CDATA[A great book I read recently from the Pragmatic Programmers is Behind Closed Doors: Secrets of Great Management. I highly recommend this book to anyone who is either a manager or executive or aspiring to some form of a team &#8230; <a href="http://gabrito.com/post/behind-closed-doors">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A great book I read recently from the <a href="http://www.pragmaticprogrammer.com/">Pragmatic Programmers</a> is <a href="http://www.amazon.com/gp/product/0976694026/qid=1138034042/sr=8-1/ref=pd_bbs_1/103-7873913-5440652?n=507846&#038;s=books&#038;v=glance">Behind Closed Doors: Secrets of Great Management</a>. I highly recommend this book to anyone who is either a manager or executive or aspiring to some form of a team leadership role! It lays out the day to day with a very realistic technical leadership role in an example company. It also shows how to apply some XP style planning to the prioritization and release planning process with a medium sized team.</p>
<p>My only complaint with the book is one sentence where they recommend <a href="http://gabrito.com/post/time-boxed-versus-feature-boxed-releases">feature boxed over time boxed releases</a> which I generally disagree with.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrito.com/post/behind-closed-doors/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SMART objectives in moderation please</title>
		<link>http://gabrito.com/post/smart-objectives-in-moderation-please</link>
		<comments>http://gabrito.com/post/smart-objectives-in-moderation-please#comments</comments>
		<pubDate>Fri, 13 Jan 2006 02:50:39 +0000</pubDate>
		<dc:creator>Todd Huss</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://gabrito.com/post/smart-objectives-in-moderation-please</guid>
		<description><![CDATA[As a technology manager a big part of what I do is trying to help people do their jobs well. That includes removing obstacles, being an advocate when there is a problem, making sure the team is operating efficiently, ensuring &#8230; <a href="http://gabrito.com/post/smart-objectives-in-moderation-please">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As a technology manager a big part of what I do is trying to help people do their jobs well. That includes removing obstacles, being an advocate when there is a problem, making sure the team is operating efficiently, ensuring people can usually work a normal day without overtime, and overall making sure they are happy and enthusiastic in their job.</p>
<p>Part of that process involves doing performance reviews to check-in a few times a year, get feedback from their colleagues, give raises<span id="more-84"></span>, evaluate progress, identify areas for improvement or professional development, etc&#8230; On the whole I think the review process is a good thing to formally touch base but it should be pretty light weight and not too time consuming. After all, I&#8217;d rather have my team members working on adding value to our customers than spending days writing self evaluations.</p>
<p>The discussion inevitably arises around SMART (Specific, Measurable, Achievable, Realistic, and Time bound) objectives. In some cases they are obvious and make a lot of sense to me such as X% uptime for a sysadmin or Y% unit test coverage for the programmers. However, when you start trying to make all objectives SMART it can work against the organization! Like measuring lines of code, defects filed in the bug tracking system, achieving Z hours of logged work per developer per release, etc&#8230; These are all numbers that encourage employees in the wrong direction, such as asking people not to file bugs in the bug tracking system, inflating actual hours worked, etc&#8230;</p>
<p>This comes to my final point. Trust! Many of the most meaningful objectives for an employee or organization are not SMART but that&#8217;s OK. An organization needs to trust it&#8217;s managers to be able to evaluate their people on non measurable (subjective) objectives. After all that keeps an organization or employee more agile to respond to change. Quite frankly if a manager can&#8217;t review an employee simply based on gut instinct and peer review, then there&#8217;s a problem! Don&#8217;t get me wrong, I understand the value of SMART objectives, they just need to be applied in moderation in the areas where they are appropriate!</p>
<p>Joel has also blogged on <a href="http://www.joelonsoftware.com/articles/fog0000000070.html">why you should scrap performance reviews</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrito.com/post/smart-objectives-in-moderation-please/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time boxed versus feature boxed releases</title>
		<link>http://gabrito.com/post/time-boxed-versus-feature-boxed-releases</link>
		<comments>http://gabrito.com/post/time-boxed-versus-feature-boxed-releases#comments</comments>
		<pubDate>Thu, 29 Dec 2005 10:47:20 +0000</pubDate>
		<dc:creator>Todd Huss</dc:creator>
				<category><![CDATA[Agile Development]]></category>

		<guid isPermaLink="false">http://gabrito.com/post/68</guid>
		<description><![CDATA[There are pros and cons to both approaches: 1. Feature boxed releases allow you to focus on getting the features the business side needs in the release and getting them right. However feature boxing is more easily prone to scope &#8230; <a href="http://gabrito.com/post/time-boxed-versus-feature-boxed-releases">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are pros and cons to both approaches:</p>
<p>1. Feature boxed releases allow you to focus on getting the features the business side needs in the release and getting them right. However feature boxing is more easily prone to scope creep, continually pushing the release date, and spending too much time getting a feature &#8220;just&#8221; right instead of getting it in front of customers.</p>
<p>2. Time boxed iterations continuously keep the organization focusing on what&#8217;s most important<span id="more-68"></span> and reliably get things done on a certain date at the cost of cutting features when estimates turn out to have been to low. You also spend a little less time actually implementing and more time planning, estimating, and meeting.</p>
<p>I think a preference for one or the other is largely a philosophical question. Do you value releasing early and often or correctness and completeness?</p>
<p>Having worked in both environments I strongly favor time boxed iterations because they provide a very light weight yet key form of discipline that many organizations lack including:</p>
<p>1. Getting the organization to make tough prioritization decisions early<br />
2. Nipping scope creep in the bud because when projects start to run over developers start to make noise when a deadline is looming<br />
3. It gets people thinking about breaking features down into per release iterations that they can get in front of customers quickly</p>
<p>The toughest part for many organizations is that time boxing requires a management team that&#8217;s willing to make difficult feature cutting/prioritization decisions instead of asking employees to work overtime. I think that&#8217;s why time boxing is often looked upon negatively by developers because they associate it with overtime.</p>
<p>At <a href="http://www.greatschools.net">GreatSchools</a> we do 2 week time boxed releases (although on occasion features will span a release or two) and we use Jira extensively for tracking each feature/project including estimates against actuals. So far the system has been working relatively well and has been extremely beneficial as a business planning and prioritization tool. Releasing often has also had the added benefit of forcing us to improve our processes and tools in the areas of release engineering, continuous integration, unit and functional testing, etc&#8230;</p>
<p>How do you manage releases at your organization and how has it been working for you?</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrito.com/post/time-boxed-versus-feature-boxed-releases/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

