<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.1" -->
<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/"
	>

<channel>
	<title>Technoetic</title>
	<link>http://blog.technoetic.com</link>
	<description></description>
	<pubDate>Mon, 25 Feb 2008 04:22:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.1</generator>
	<language>en</language>
			<item>
		<title>2GX: Groovy and Grails Experience</title>
		<link>http://blog.technoetic.com/2008/02/25/2gx-groovy-and-grails-experience/</link>
		<comments>http://blog.technoetic.com/2008/02/25/2gx-groovy-and-grails-experience/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 23:38:18 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2008/02/25/2gx-groovy-and-grails-experience/</guid>
		<description><![CDATA[This weekend I attended the Groovy and Grails Experience (2GX) conference. I had done some Groovy scripting and had played with Grails a little. However, this was a good chance to dive into some more advanced topics like Groovy metaprogramming and Grail&#8217;s GORM.
My favorite talk was Glen Smith&#8217;s overview of Grails plugins for Rich UI [...]]]></description>
			<content:encoded><![CDATA[<p>This weekend I attended the Groovy and Grails Experience (2GX) conference. I had done some Groovy scripting and had played with Grails a little. However, this was a good chance to dive into some more advanced topics like Groovy metaprogramming and Grail&#8217;s GORM.</p>
<p>My favorite talk was Glen Smith&#8217;s overview of Grails plugins for Rich UI support, search, Ajax and more. It was a very informative and fun presentation.</p>
<p><img src="/wp-content/2gx.jpg" alt="2GX Panel" hspace="8" align="left"/> The speaker&#8217;s panel discussion was one of the best I&#8217;ve seen. One of the most controversial questions was about Groovy, JRuby and the relative impedance mismatch with the Java Platform. Neil Ford of Thoughtworks initially took the position that there was no impedance mismatch with JRuby. Graeme Rocher and others listed numerous examples of where JRuby was less integrated with Java compared to Groovy. Graeme commented that although JRuby can access compiled Java classes, it is much more difficult (impossible?) for Java to use JRuby classes. Groovy classes are Java classes and so they can be used relatively transparently in Java programs. </p>
<p>Speaking from experience, I&#8217;ve tried to use Java libraries (QuickFIX/J) using JRuby and it has proven much more difficult than with Groovy. One issue was insufficient (and somewhat outdated) documentation about how to integrate JRuby with Java classes outside the &#8220;java.*&#8221; packages. This was a few months ago so maybe the documentation has improved. However, with Groovy I was able to use the Java libraries within a few minutes.</p>
<p>I agreed with a point that Neil made that having some competition in the JVM dynamic language arena helps everyone. I highly respect the work the JRuby team is doing although I believe that Groovy is a better and more pragmatic dynamic language choice for Java developers.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2008/02/25/2gx-groovy-and-grails-experience/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Money:Tech Panel: Open Source and Finance</title>
		<link>http://blog.technoetic.com/2008/02/25/moneytech-panel-open-source-and-finance/</link>
		<comments>http://blog.technoetic.com/2008/02/25/moneytech-panel-open-source-and-finance/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 23:04:43 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Open Source Devel.</category>
	<category>Software Dev.</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2008/02/25/moneytech-panel-open-source-and-finance/</guid>
		<description><![CDATA[I recently had the opportunity to participate in a panel discussion at the O&#8217;Reilly Money:Tech conference. We discussed the extent that the financial technology community had embraced open source. Other members of the panel were Tim O&#8217;Reilly of O&#8217;Reilly Media, James Altucher who founded StockPickr and Graham Miller of Marketcetera. I was representing free financial [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had the opportunity to participate in a panel discussion at the O&#8217;Reilly Money:Tech conference. We discussed the extent that the financial technology community had embraced open source. Other members of the panel were Tim O&#8217;Reilly of <a href="http://www.oreilly.com/">O&#8217;Reilly Media</a>, James Altucher who founded <a href="http://www.stockpickr.com/">StockPickr</a> and Graham Miller of <a href="http://www.marketcetera.com">Marketcetera</a>. I was representing free financial open source software developers in my role as founder and project lead for the <a href="http://www.quickfixj.org">QuickFIX/J</a> project.</p>
<p>There&#8217;s no question that open source technology is used widely in financial applications, especially for middle components. However, there was also a discussion about how willing the financial companies are to open source their own technology (where &#8220;technology&#8221; might include algorithms and research rather than just software).</p>
<p><img src="/wp-content/moneytech.jpg" alt="Money:Tech Panel" align="right" hspace="8" /> I don&#8217;t believe any company intends to sacrifice a competitive advantage by converting their technology to open source. For that reason, I doubt that we&#8217;ll see financial companies releasing algorithms or proprietary research. However, financial companies are involved in open source in a variety of roles. The user role is probably most common today, but a few financial companies have contributed to open source. One example is the <a href="http://amqp.org/">Advanced Message Queuing Protocol</a> (AMQP) effort started by JP Morgan and others. This technology benefits financial software (and software from other domains) by provides a programming language-independent and vendor-independent wire protocol for message queues. For this technology to be successful it must be widely used. An open source strategy has a clear advantage here.</p>
<p>Another example is the Open Financial Market Platform (<a href="http://www.eclipse.org/ofmp/">OFMP</a>) which has recently become an Eclipse Foundation project. In this case, I&#8217;m not so clear about the benefits to the company contributing the initial code. Maybe someone from the project will comment.</p>
<p>Tim O&#8217;Reilly closed the panel with a suggestion that open source developers consider projects that make it easier to capture and process the vast amounts of unstructured data available on the net.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2008/02/25/moneytech-panel-open-source-and-finance/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Using JRuby for Java testing?</title>
		<link>http://blog.technoetic.com/2008/01/09/using-jruby-for-java-testing/</link>
		<comments>http://blog.technoetic.com/2008/01/09/using-jruby-for-java-testing/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 11:23:26 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2008/01/09/using-jruby-for-java-testing/</guid>
		<description><![CDATA[A recent article on InfoQ (Boost your Java Test with Ruby and JtestR) described a new framework for doing Java testing using JRuby. The article includes the following test case to highlight it&#8217;s features.

import java.util.HashMap

describe "An empty", HashMap do
 before :each do
  @hash_map = HashMap.new
 end
 it "should be able to add an entry [...]]]></description>
			<content:encoded><![CDATA[<p>A recent article on InfoQ (<a href="http://www.infoq.com/news/2008/01/boost-java-test">Boost your Java Test with Ruby and JtestR</a>) described a new framework for doing Java testing using JRuby. The article includes the following test case to highlight it&#8217;s features.</p>
<pre><code>
import java.util.HashMap

describe "An empty", HashMap do
 before :each do
  @hash_map = HashMap.new
 end
 it "should be able to add an entry to it" do
  @hash_map.put "foo", "bar"
  @hash_map.get("foo").should == "bar"
 end
 it "should return a keyset iterator that throws an exception on next" do
  proc do
   @hash_map.key_set.iterator.next
  end.should raise_error(java.util.NoSuchElementException)
 end
end
</code></pre>
<p>What is the point of this example? Is there really a significant difference between this example and the following JUnit4 test class?<br />
<a id="more-118"></a></p>
<pre><code>
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;

import java.util.HashMap;
import java.util.NoSuchElementException;

import org.junit.Test;

public class HashMapTest {
    private HashMap&lt;String,String> hashMap =
            new HashMap&lt;String,String>();

    @Test
    public void shouldBeAbleToAddAnEntryToIt() {
        hashMap.put("foo", "bar");
        assertThat(hashMap.get("foo"), is("bar"));
    }

    @Test(expected = NoSuchElementException.class)
    public void shouldReturnAKeysetIteratorThatThrowsAnExceptionOnNext() {
        hashMap.keySet().iterator().next();
    }

}
</code></pre>
<p>Sure, the syntax is a bit different and the Java version is slightly more verbose with it&#8217;s access specifiers and type declarations. However, the Java version runs fast enough that you don&#8217;t need to set up a Ant server to get reasonable performance from your tests (as recommended in the article for JTestR).</p>
<p>I&#8217;m not questioning that scripting can be useful in unit tests. However, I&#8217;d think that Groovy&#8217;s superior Java integration would make it a better choice for this purpose than JRuby. Does anybody know of some compelling, pragmatic examples of the relative benefit of JRuby over Groovy for Java test scripting purposes? </p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2008/01/09/using-jruby-for-java-testing/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>JUnitFactory: First Impressions</title>
		<link>http://blog.technoetic.com/2007/04/08/junitfactory-first-impressions/</link>
		<comments>http://blog.technoetic.com/2007/04/08/junitfactory-first-impressions/#comments</comments>
		<pubDate>Sun, 08 Apr 2007 16:31:04 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2007/04/08/junitfactory-first-impressions/</guid>
		<description><![CDATA[JUnitFactory is an automated unit test generation service from Agitar Software Labs. This article describes my initial experiences and impressions from using the tool to generate unit tests.
Installation
 You can use JUnitFactory through a web interface or as an Eclipse plugin. I have only used the Eclipse plugin . It was very easy to install [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.junitfactory.com/">JUnitFactory</a> is an automated unit test generation service from <a href="http://www.agitar.com/">Agitar Software Labs</a>. This article describes my initial experiences and impressions from using the tool to generate unit tests.</p>
<p><strong>Installation</strong></p>
<p><img src="http://www.junitfactory.com/factory_logo.gif" align="right"/> You can use JUnitFactory through a web interface or as an Eclipse plugin. I have only used the Eclipse plugin . It was very easy to install using the JUnitFactory Eclipse update site (<a href="http://www.junitfactory.com/get-started.jsp">more info</a>). You can also download a file if you prefer manual installation. The JUnitFactory plugin is currently only available for Eclipse, but may be available for other IDEs in the future.</p>
<p><a id="more-117"></a><strong>Generating Tests</strong></p>
<p><em>Warning: Carefully read the <a href="http://www.junitfactory.com/faq.jsp">JUnitFactory FAQ </a>before generating any tests!</em></p>
<p>I decided to generate tests for a specific class I had been modifying. When I ran the test generator, it first required me to set up a user name and password and agree that I&#8217;ve read their legal statements about security and other usage risks.</p>
<p><strong><font color="red">Do not generate tests for company code with this tool unless you have permission to upload your company&#8217;s proprietary source to a nonsecure remote server, possibly to be stored there and used for unspecified purposes. In some companies, you might lose your job for this type of security breach.</font></strong></p>
<p>This wasn&#8217;t a problem for me since I was generating tests for an open source code. I set up an account and then initiated the test generation again. Since I hadn&#8217;t read the FAQ first, I was surprised to see that hundreds of files were being uploaded to their server. JUnitFactory uploads every source and class file in your Eclipse project when it generates tests. In fact, if your project depends on other projects it will also upload all the sources and classes for those projects.</p>
<p>When test generation begins, a JUnitFactory view is displayed in Eclipse and it shows the progress of the test generation. My first impression of the Eclipse plugins are that they are well designed. I didn&#8217;t encounter any bugs when using them. </p>
<p>The test generation completed after a few minutes (the source project was small, about 50-60 classes). The Eclipse view for my test generation results is shown below. </p>
<p><img src="http://blog.technoetic.com/wp-content/junitfactory.png" alt="JUnitFactory view" /></p>
<p>As you can see the coverage wasn&#8217;t that great. There are several reasons for this poor coverage. The number after &#8220;Done&#8221; in the status column is a count of the number of suggestions from JUnitFactory about testing problems and how to improve the test coverage. The screen shown below contains typical warnings and suggestions.</p>
<p><img src="http://blog.technoetic.com/wp-content/suggestions.png"/><br />
Clicking in the second column of the JUnitFactory view will display the generated test code. Being the eager person I am, I immediately ran the tests in Eclipse JUnit test runner&#8230; and they all failed. Fortunately, the situation was quickly resolved by reading the test error messages which told me that I must run the test in the Agitar-specific JUnit test runner. I do so and all the tests passed. I&#8217;m not sure why a proprietary test runner is required. It doesn&#8217;t appear to be compatible with other plugins I have installed, like the EclEmma coverage analyzer.</p>
<p><strong>First Impressions</strong></p>
<p>One very important fact to remember is that the tests generated by JUnitFactory are not intended to be used in the way most people use unit tests. They don&#8217;t test correct behavior, for example. They test what the code does, not what it&#8217;s supposed to do. To replace Test Driven Design (TDD) and handwritten unit tests with JUnitFactory-generated would be a huge mistake.</p>
<p>Agitar suggests that the tests are best used as <em>characterization tests</em>. A characterization test can be thought of as executable documentation of the behavior (actual, not necessarily correct, behavior) of the tested software. If you are redesigning existing (legacy) software that doesn&#8217;t have tests, a characterization test suite can help you determine if the new software behaves the same as the previous implementation.</p>
<p>This sounds great in theory, but there are many practical problems. For example, it may be difficult to effectively use the legacy-based characterization tests if the OO design changes in the new code. The JUnitFactory tests are at the class-level, so if even just the class name changes in the new code you&#8217;ll need to make manual modifications to the characterization tests to run them against the new code. With a highly modified OO design, you&#8217;ll probably not be able to effectively use the legacy tests at all or only with significant effort. This problem is aggravated if the legacy software has problems like undisciplined use of method visibility. The exposed methods will generally trigger unit test generation although they are really an internal implementation detail. Of course, JUnitFactory can&#8217;t do anything about that, but it&#8217;s a practical problem to consider. If you have thousands of classes with issues like these, it would be a major effort to keep the characterization test suite consistent between legacy code and new implementations. </p>
<p>JUnitFactory looks inside the implementation of the class when generating the tests. This can result in some tests that are arguably overly implementation-dependent and will fail even with a correct reimplementation of the code. For example, it may assert that a NPE is thrown for a null method argument. This isn&#8217;t required behavior of the class. A new implementation might handle the null argument without a NPE (by returning a empty result, for example). This can be easily corrected in any specific test suite. However, in a large legacy system there could be many of these false alarms.</p>
<p><strong>Conclusions</strong></p>
<p>To quote one of the JUnitFactory announcements from a few months ago:</p>
<blockquote><p>
Remember, it&#8217;s still experimental and mostly for fun so don&#8217;t expect too much or bang on it too hard.
</p></blockquote>
<p>Overall, I thought JUnitFactory was interesting but I&#8217;m not convinced it would be useful for my day-to-day work. If I weren&#8217;t required to upload the code to their server, I&#8217;d love to try it on some work-related legacy code that we are currently reimplementing. The legacy code is EJB-based (circa 2000), has few abstractions for testing, and makes heavy use of stored procedures. My guess is that JUnitFactory wouldn&#8217;t be able to help me much in this situation. </p>
<p>JUnitFactory does provide various types of hooks for fixing testing-related problems and improving coverage through writing extra testing support code. Based on the coverage and suggestions for the project shown earlier in the JUnitFactory view, most of the classes in that project would need custom test framework extensions to get decent coverage. This was relatively well-written code. I&#8217;m guessing that practically 100% of the classes in the legacy system I described would need custom test extensions to get acceptable test coverage. That&#8217;s a huge job. And I&#8217;m wondering if the whole approach is fatally flawed anyway.</p>
<p>When reimplementing a legacy system, characterization tests at the class level are generally going to be far too low level (too sensitive to behavior-preserving design changes). Another strategy is to do characterization testing closer to the system or subsystem level and verify that externally visible behavior is consistent. JUnitFactory will not help with this type of testing.</p>
<p>Another use for JUnitFactory is to find holes in a handwritten unit test suite. However, be prepared for studying numerous, somewhat obfuscated tests, and then doing some deep reasoning about whether what you learn represents a hole in your current test suite or not.</p>
<p>I&#8217;m not sure about the practical payoff, but if you are interested in automated test generation from a research perspective, definitely try out JUnitFactory.</p>
<p>Related Links:</p>
<ul>
<li><a href="http://www.artima.com/weblogs/viewpost.jsp?thread=200725">Fun With Automated Characterization Test Generation</a>
</li>
<li><a href="http://www.sdtimes.com/fullcolumn/column-20070315-03.html">Characterization: Beyond Pure Unit Testing</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2007/04/08/junitfactory-first-impressions/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>The ScrumMaster Certification Debate</title>
		<link>http://blog.technoetic.com/2007/04/04/the-scrummaster-certification-debate/</link>
		<comments>http://blog.technoetic.com/2007/04/04/the-scrummaster-certification-debate/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 12:54:17 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
	<category>Agile</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2007/04/04/the-scrummaster-certification-debate/</guid>
		<description><![CDATA[Disclaimer: I&#8217;m not a CSM.
]]></description>
			<content:encoded><![CDATA[<p><em>Disclaimer: I&#8217;m not a CSM.</em></p>
<p><img src="http://blog.technoetic.com/wp-content/boxing.jpg"" align="right" hspace="16" alt="Boxing" /> There&#8217;s been intense online discussion recently about ScrumMaster certification. The opponents claim it is damaging the agile community and they are pressuring the Scrum Alliance to eliminate it. Although the <a href="http://www.controlchaos.com/certification/course.php">CSM certification</a> is clearly described on the <a href="http://www.controlchaos.com">Scrum web site</a>, some people believe the word &#8216;certification&#8217; is misleading and will cause managers to make false assumptions about the significance of being a certified ScrumMaster. This is a reasonable concern. However, the certification opponents have not shown that this is actually a widespread problem. Certification has benefits and potential risks, but no one has shown any net damage to the agile community. The most evidence they have currently produced to support their position are a few anecdotal stories of busy, misinformed managers who thought ScrumMaster certification meant something different than it does.</p>
<p>As an outside observer, I see no reason why the Scrum Alliance would change their position on certification based on the unsubstantiated claims by certification opponents. <a id="more-116"></a> Although some people confuse Scrum-specific certification with <i>agile certification</i> in general, these are quite distinct issues. Given the lack of evidence of any widespread problem, I believe the Scrum community should be able to make their own decisions about certification specific to their methodology. There are people who believe that Scrum is becoming synonymous with &#8220;Agile&#8221;, but I don&#8217;t believe this is true. However, I can see how this belief could cause some people to feel threatened by Scrum&#8217;s rapidly increasing adoption and associated certification programs. This could be especially true for potential competitors with their own Agile companies, services and products.</p>
<p>Some of the most intense discussion of this issue was in a long off topic thread on the <a href="http://tech.groups.yahoo.com/group/industrialxp/">Industrial XP mailing list</a>. Joshua Kerievsky, founder of <a href="http://industriallogic.com/">Industrial Logic</a>, was one of the most outspoken opponents to ScrumMaster certification. Industrial Logic describes themselves as &#8220;XP leaders since 1999&#8243;. In 2003, Industrial Logic created a fork of the XP methodology called Industrial XP (IXP). Ironically, the creation and naming of IXP has been criticized by XP thought leaders as being deceptive, divisive, and damaging to the XP community. These are similar arguments to those being directed at the Scrum certification process. However, Industrial Logic continues to market the IXP brand. Obviously, they believe they are doing more good than harm, and they probably are. It&#8217;s surprising to me that Kerievsky doesn&#8217;t recognize that this could also be the perspective of the Scrum leadership and community.</p>
<p>Another example of this, typically unsuccessful, pattern of argumentation is the opposition to the word &#8220;extreme&#8221; in Extreme Programming. Although the meaning of the extreme nature of XP has been misleading and confusing for some managers, the name has never been changed. Some believe that the name slowed down early agile adoption because some managers were concerned about having &#8220;extreme&#8221;, undisciplined, anarchic, out of control programmers on their projects. Again, I think the XP community had the right to keep the name even if it caused some minor problems. In the long run, I believe that if the name is a significant problem, then XP will fade away (or be subsumed by a more acceptably packaged methodology). It will be an organic process rather than a forced change.</p>
<p>The thought leaders involved in this debate often present themselves as experts in change facilitation. I haven&#8217;t seen much demonstration of those skills in this debate. Instead, the discussion quickly degraded into a stream of unfounded accusations, negative characterizations and frequent sarcasm. It&#8217;s understandable human behavior, given the emotional intensity of the discussion, but I would have preferred a better demonstration of respect-oriented principles of the Agile Community.</p>
<p>Eventually the discussion on the IXP list spread to the Scrum Development mailing list. The purpose of the Scrum Development list is to support new ScrumMasters rather than debate certification. However, several people attempted to continue the off topic certification discussion and were subsequently banned from the list. This resulted in the creation of two new mailing lists within a few day period. One of these lists, <a href="http://groups.google.com/group/agile-tangents/about">Agile Tangents</a>, is officially for respectfully discussing Agile topics that are off topic on other lists. It remains to be seen if this list will serve a long term purpose or will primary be a place for people banned from the Scrum Development list to vent their frustrations. As of the time of this writing, the list activity appears to be slowing down rapidly.</p>
<p>The discussion also has prompted the Agile Alliance to publish a <a href="http://groups.google.com/group/agile-tangents/about">position statement on agile certification</a>. I thought it was a very fair and balanced position. It didn&#8217;t denounce the ScrumMaster certification or ask for it&#8217;s elimination, but provided objective information that can help people make their own decisions about the significance of the certification.</p>
<p>There will always be people who are confused and misinformed. That fact alone is not a compelling argument for change in this case. There was even significant <a href="http://www.testing.com/cgi-bin/blog/2007/03/27#certification">confusion</a> about the Agile Alliance position statement although it was written very clearly.</p>
<p>My recommendation is to allow the situation to evolve organically rather than attempting forceful change. If Scrum certification does not provide value it will fade away.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2007/04/04/the-scrummaster-certification-debate/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Pragmatic Agility</title>
		<link>http://blog.technoetic.com/2007/03/29/pragmatic-agility/</link>
		<comments>http://blog.technoetic.com/2007/03/29/pragmatic-agility/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 12:41:16 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
	<category>Agile</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2007/03/29/pragmatic-agility/</guid>
		<description><![CDATA[There was an interesting discussion during the  Agile Toolkit Podcast interview with Dave of the Pragmatic Programmers. I&#8217;ve transcribed a few of the comments about agile methodologies below.

Dave Thomas: I think agile methodologies have adopted their own venom. And to that extent, I&#8217;m pulling back, away from, the individual agile methodologies. I believe very, [...]]]></description>
			<content:encoded><![CDATA[<p>There was an interesting discussion during the <a href="http://agiletoolkit.libsyn.com/"> Agile Toolkit Podcast</a> interview with Dave of the <a href="http://www.pragmaticprogrammer.com/">Pragmatic Programmers</a>. I&#8217;ve transcribed a few of the comments about agile methodologies below.</p>
<blockquote><p>
<strong>Dave Thomas:</strong> I think agile methodologies have adopted their own venom. And to that extent, I&#8217;m pulling back, away from, the individual agile methodologies. I believe very, very strongly in agility. I&#8217;m an author of the agile manifesto and I think the underlying values of agility fit far better with my world view of how software should be built. I think some of the implementations of agile methodologies are, frankly, scarey in their kind of&#8230;</p>
<p><strong>Bob Payne:</strong> dogmatic?</p>
<p><strong>Dave Thomas:</strong> dogmatic, yeah that&#8217;s a good word, that&#8217;s a mild word for some it. It&#8217;s kind of like &#8220;my way or you&#8217;re not doing it properly&#8221;, a lot of blackmail, a lot of absolutes. And to me that&#8217;s not what agility is all about. So I pull back from that. I don&#8217;t want to be associated with that.</p>
<p><strong>Bob Payne:</strong> In the past I&#8217;ve felt a number of pulls in different directions and I&#8217;ve started to realize that it is not necessarily the particular practice but what the resulting outcome is, the rhythm that it sets up.
</p></blockquote>
<p>This perspective sounds very similar to what I&#8217;ve been calling &#8220;<a href="http://blog.technoetic.com/2007/01/04/agile-without-a-name/">agile without a name</a>&#8221; or &#8220;effective software development&#8221; or what Tim Beck calls &#8220;<a href="http://pliantalliance.org/">pliant software development</a>&#8220;.</p>
<p>P.S. I highly recommend the <a href="http://agiletoolkit.libsyn.com/"> Agile Toolkit Podcast</a>. It&#8217;s a great resource to hear candid discussions about agile topics.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2007/03/29/pragmatic-agility/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Do You Write Green Software?</title>
		<link>http://blog.technoetic.com/2007/03/25/green-software/</link>
		<comments>http://blog.technoetic.com/2007/03/25/green-software/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 14:46:29 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2007/03/25/do-you-write-green-software/</guid>
		<description><![CDATA[QCon 2007 was a great opportunity to hear the architects of some of the largest Internet sites discuss the challenges they&#8217;ve had. One particularly interesting challenge was discussed by Dan Pritchett, Technical Fellow at eBay, Inc. He spoke about the challenges of providing enough power and air conditioning to eBay&#8217;s data centers. I&#8217;m not sure [...]]]></description>
			<content:encoded><![CDATA[<p><a href="qcon.infoq.com/qcon/">QCon 2007</a> was a great opportunity to hear the architects of some of the largest Internet sites discuss the challenges they&#8217;ve had. One particularly interesting challenge was discussed by <a href="http://www.addsimplicity.com/">Dan Pritchett</a>, Technical Fellow at eBay, Inc. He spoke about the challenges of providing enough power and air conditioning to eBay&#8217;s data centers. I&#8217;m not sure how accurate this statistic was, but he mentioned a 3 million watt power requirement for their northern California data center. The problem is that the local electricity provider is reaching the limits of their ability to provide that much power. This, in turn, limits ebay&#8217;s ability to scale at this physical location.</p>
<p><a id="more-114"></a> <img src="http://blog.technoetic.com/wp-content/power_lines.jpg" alt="Power lines" align="left" hspace="8"/>This problem is not unique to eBay. For example, CNet News <a href="http://news.com.com/Power+could+cost+more+than+servers,+Google+warns/2100-1010_3-5988090.html">reports </a>that &#8220;a Google engineer has warned that if the performance per watt of today&#8217;s computers doesn&#8217;t improve, the electrical costs of running them could end up far greater than the initial hardware price tag.&#8221; The Gartner group reports that IT energy costs will increase from 25-30% to 40% within 5 years. A report from Lawrence Livermore Laboratories says that data centers will be using more electricity than the 275 million televisions in the United States. The Wall Street Journal reports that one large data center can consume as much power as a small city of 30,000-40,000 people.</p>
<p>There are several ways to respond to these challenges. The most common approaches are to buy more efficient hardware or to place data centers near cheap and abundant power. This is reportedly one reason for Google&#8217;s interest in creating a data center in North Carolina. However, Dan Pritchett spoke of another option: writing more energy efficient software. He estimates that inefficient programming techniques may increase eBay&#8217;s energy consumption by 25-30%. This limits scalability of their data center given the limits of the power companies to provide energy, but it also results in huge amounts of wasted money for large data centers.</p>
<p>It&#8217;s a very interesting idea. Computationally efficient software would also generally be more energy efficient. What other techniques can we use to optimize power efficiency for &#8220;green software development&#8221;?</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2007/03/25/green-software/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>APM Tooling Survey and XPlanner</title>
		<link>http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/</link>
		<comments>http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/#comments</comments>
		<pubDate>Mon, 22 Jan 2007 12:07:51 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
	<category>Agile</category>
	<category>XPlanner</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/</guid>
		<description><![CDATA[Trail Ridge Consulting has released the results of an agile project management tooling survey performed in late 2006. Apparently, APM tools are being widely used by both small and large organizations although the primary reasons differ with the size of the organization. It was interesting to me to see that card-based approaches are use less [...]]]></description>
			<content:encoded><![CDATA[<p>Trail Ridge Consulting has released the results of an agile <a href="http://trailridgeconsulting.com/surveys.html">project management tooling survey</a> performed in late 2006. Apparently, <a href="http://blog.technoetic.com/agile-pm-tools/">APM tools</a> are being widely used by both small and large organizations although the primary reasons differ with the size of the organization. It was interesting to me to see that card-based approaches are use less often than dedicated APM tools or MS Office tools like Excel.</p>
<p>It was also interesting to see that XP has been adopted in about half as many organizations as Scrum. Of course, I&#8217;d guess that many of the Scrum shops are using at least some XP software development practices.</p>
<p><img src="http://www.xplanner.org/images/logo.jpg" alt="XPlanner" align="left" hspace="4" /> <a href="http://www.xplanner.org">XPlanner </a> was the fourth most widely used APM tool and the only open source product in the top 10 most used tools. (There is a factual error in the survey results that says ScrumWorks is also open source. The ScrumWorks Basic product is free but not open source). XPlanner is also the most used tool focusing specifically on XP. It surprised me a little to see that XPlanner is adopted somewhat more by large organizations than small organizations. It&#8217;s possible that this is an indication that the licensing fees for the commercial tools are high enough to cause some pain for large organizations. I know at least one large organization that chose XPlanner over VersionOne for this reason.</p>
<p>As the founder<sup>[1]</sup> of the XPlanner project, I&#8217;m very happy to see it so widely used even with no marketing or sales resources. </p>
<hr /><span style="font-size: 0.9em">1. <a href="http://docs.codehaus.org/display/~jacmorel">Jacques Morel</a> is now the XPlanner project management and doing a great job.</span></p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Pair Programming Benefits and Costs</title>
		<link>http://blog.technoetic.com/2007/01/21/pair-programming-benefits-and-costs/</link>
		<comments>http://blog.technoetic.com/2007/01/21/pair-programming-benefits-and-costs/#comments</comments>
		<pubDate>Sun, 21 Jan 2007 15:41:08 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
	<category>Agile</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2007/01/21/pair-programming-benefits-and-costs/</guid>
		<description><![CDATA[A new pair programming study (Arisholm et al. 2007) indicates that that the practice neither increases quality or reduces costs, in general.

&#8220;The results of this experiment do not support the hypotheses that pair programming in general reduces the time required to solve the tasks correctly or increases the proportion of correct solutions. On the other [...]]]></description>
			<content:encoded><![CDATA[<p>A new pair programming study (Arisholm et al. 2007) indicates that that the practice neither increases quality or reduces costs, in general.</p>
<blockquote><p>
&#8220;The results of this experiment do not support the hypotheses that pair programming in general reduces the time required to solve the tasks correctly or increases the proportion of correct solutions. On the other hand, there is a significant 84 percent increase in effort to perform the tasks correctly.&#8221;
</p></blockquote>
<p><img src="http://lukewelling.com/wp-content/uploads/2006/03/pairon.jpg" alt="Pair Chair" align="right" width="154" height="88"/><br />
In specific contexts, like junior programmers pairing on complex tasks, pair programming results in significant increases in quality. However, in other contexts the increase in quality, if any, comes at a high cost. The study doesn&#8217;t appear to support the conclusions described in earlier XP research. Specifically, that a team could expect &#8220;a 15% increase in development cost for a 15% improvement in quality&#8221;. This earlier study used students rather than professional programmers and the strength of some of the researchers&#8217; techniques and conclusions <a href="http://www.hacknot.info/hacknot/action/showEntry?eid=50">have been questioned</a>.</p>
<p>My own personal experience is that I enjoy pair programming for some activities and in some contexts, but not in all contexts. <a id="more-111"></a>On complex tasks, I enjoy pairing with other senior developers for collaborative problem solving. It&#8217;s not as enjoyable, but I also see benefit for the team when pairing with junior or less skilled developers for some tasks. The less skilled developer may provide the occasional useful input often I feel the collaboration is a net loss in productivity. For example, let&#8217;s say we&#8217;re working on functionality that uses several advanced technologies. If my pair is not skilled in these technologies then the pairing will probably not be a net productivity increase. You could say that it&#8217;s valuable for training the less skilled developer in these technologies. However, I&#8217;m speaking about the case where the less skilled developer has already had extensive opportunities to learn the technologies in question and has not been successful. &#8220;Training&#8221; by pair programming will generally not solve this problem, in my experience.</p>
<p>When developing simpler functionality, I see more benefit from testing and specifically from test-first and TDD techniques than pair programming. For the <em>either/or</em> types of people I generally enjoy collaboration and I&#8217;m not the type that wants to work in isolation from the team. Pair programming is only one specific form of collaboration. I&#8217;ve worked exclusively in open work areas for the last 7-8 years and worked in those environments several times before then. I like that work environment very much and although I had the option to have an office I choose to sit with the team.</p>
<p>I like Martin Fowler&#8217;s perspective on pair programming. He says &#8220;my view is that you should try it and the team should reflect on whether they feel they are more effective with pairing that without&#8221;. I&#8217;d also recommend that the team discuss in what contexts they feel they are more effective or not.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2007/01/21/pair-programming-benefits-and-costs/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Are You an Effective Software Developer?</title>
		<link>http://blog.technoetic.com/2007/01/20/are-you-an-effective-software-developer/</link>
		<comments>http://blog.technoetic.com/2007/01/20/are-you-an-effective-software-developer/#comments</comments>
		<pubDate>Sat, 20 Jan 2007 19:22:07 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
		
	<category>Software Dev.</category>
	<category>Agile</category>
		<guid isPermaLink="false">http://blog.technoetic.com/2007/01/20/are-you-an-effective-software-developer/</guid>
		<description><![CDATA[In a recent article I wrote about preferring Effective Software Development (ESD). I prefer being effective over being labeled as &#8220;agile&#8221; (whatever that might mean to you personally). This preference raises many questions for me. How do I define effectiveness? How do I know if I&#8217;m being effective or not? How can I become more [...]]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://blog.technoetic.com/2007/01/04/agile-without-a-name/">recent article</a> I wrote about preferring Effective Software Development (ESD). I prefer being effective over being labeled as &#8220;agile&#8221; (whatever that might mean to you personally). This preference raises many questions for me. How do I define effectiveness? How do I know if I&#8217;m being effective or not? How can I become more effective? Is there any way I can help those around me be more effective? As you can imagine, these questions lead to many others. </p>
<p>I like the Wikipedia description of <a href="http://en.wikipedia.org/wiki/Effectiveness">effectiveness</a>. The description defines <em>positive effectiveness</em> in terms of <em>efficacy</em> and <em>efficiency</em>. Efficacy is the ability to produce a desired effect or achieve a goal. In a software development context, that might mean the ability to produce timely business value. Efficiency is the amount of effect that can be produced with a given amount of resources such as time or number of developers.</p>
<p>I think of efficacy as a primary component of effectiveness and efficiency as a secondary component.  <a id="more-110"></a> In fact, it&#8217;s sometimes desirable to intentionally reduce efficiency to increase efficacy. This is the idea behind having &#8220;slack&#8221; resources. The demands on a team are often dynamic and having slack resources for the peak demand times can improve the team&#8217;s overall efficacy. The challenge here is to know the right amount of slack to allow when future demands are uncertain. Of course, being highly inefficient will often not be efficacious. For example, wasting time on unnecessary or valueless activities might cause us to miss schedule milestones.</p>
<p>How do I know if I or my team are efficacious? I have to identify the desired effects I want to produce or the goals I want to achieve. A few examples might be:</p>
<ul>
<li>I want to produce something useful or valuable for my employer</li>
<li>I want interesting work (learning new technologies, continually improving my skills)</li>
<li>I want to generate sufficient income for my non-work goals like hobbies, travel, or retirement.</li>
<li>I want balance between work, play, self development, and other activities</li>
</ul>
<p>Of course, this list could become quite large and would be significantly different for different people. Sometimes the goals conflict and trade offs are required. Sometimes the trade offs are guided by values, but often observing the trade offs we make is a great way to discover our deeper and possibly unconscious and conflicting values. Create your own list. Are you achieving achieving those goals? How do you know? Do you judge your efficacy based on your feelings or by some quantitative method or some combination of the two?</p>
<p>So, are you as effective as you&#8217;d like to be? If so, that&#8217;s great. Ask yourself again every a few weeks. If not, what are you able and willing to do to improve your effectiveness? You might consider whether you have sufficient feedback. Are you evaluating yourself often (think of it as a personal retrospective)? It&#8217;s difficult to accurately predict the future effects of our actions so it&#8217;s good to get feedback frequently and adjust accordingly. Rapid feedback is a form of communication that allow us to courageously take action knowing we be able to quickly adjust our actions. This is starting to sound like the values of the first edition of Extreme Programming Explained. I don&#8217;t believe that&#8217;s a coincidence. </p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.technoetic.com/2007/01/20/are-you-an-effective-software-developer/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
