Home arrow Blogs arrow Practical Teamwork for Agile Developers arrow Individuals and Interactions (and Tools)
Individuals and Interactions (and Tools) PDF Print E-mail
Written by Steve Berczuk   
Monday, 06 November 2006
I value Individual and Interactions over Processes and Tools, but I am wondering what I can learn from my tools.

 

The value in the Agile Manifesto I find myself citing most often in my work "Individuals and interactions over processes and tools." Too often people start with technology and tool questions and then end up with unhappy and under-performing teams as they try to make people work with "the right" tool rather than the tool that would be most productive. I  hear this a lot when it comes to version control and build tools; people start with the "what tool should I use question" before they even think about how they should work. An extreme example of this was a company I was at a few years ago which had an version management  tool that did not meet their needs at all. We didn't switch because management decided that what they really needed was a big expensive tool which was out of their budget range. So switching to a free tool like CVS did not even get on the radar. So I'm always careful to point out that you really need to think about what you do first, then pick a tool.

But what if the tool is designed for your task? can we learn something by adapting our work style (and even our software architectures) to the way that the tool works?  As I use maven for managing the build aspects of my projects I am finding some good example of how adapting your process to the right tool can be very beneficial because you are learning from a community of people who really thought through a problem. The risks is misunderstanding how close the tool's model is from your view of the world.

An example of this is how you start up an java application. Many applications ship with a script that defines the java class  path that defines all of the libraries that your application depends on. All of these dependencies are included in the maven Project Object Model file (or POM) which specifies what you need to build and test a project. Since I hate copy and paste work I wondered if there was an easy way to get the classpaths out of the POM and into a script. As it turns out, there isn't an standard way to do this. You can always build an extension to maven (one of the nice features of a good tool: extensibility), I really would prefer to use the tools that are available. What maven does let you do is to easily embed the classpath into the jar so that you can start up your application like this:

 java - jar myJar.jar

 rather than with a script that specifies the classpath. The side effect of this is that you no longer have an easy place to tell  the application where to load additional files from. Under the "script" approach you might add a new directory to the classpath. Now you need to be a bit more creative. (One way is to use classloaders.) 

By trying to adapt the architecture to fit what the tool supported we ended up with a simper, more explicit start up process. 

Even if you are not a Java developer, there are a couple of interesting points to walk away with:

  • Some tools are built for a specific application, and the creators of  those tools have thought a lot about best practices.
  • By trying to fit into the model that the tool supports you can use the tool to prevent making mistakes in your application design (even if it is a build tool and not a design tool)
  • You need to be careful that the tool really is geared towards your application otherwise you  will fall into the trap of making your work fit the tool for the wrong reasons.
  • While extensibility is a good quality of a tool, there is something to be said for laziness.
I'm thinking that my experience with maven is not the only example of this. I'll have more to say about this later.
Comments (0)add feed
Write comment


Write the displayed characters


busy
Tags: agile, scrum,
Click to add your tags...,
 
< Prev

Video News

ThoughtWorks Mingle 2.0
 
Copyright © 2006 - 2008 CMC Media, Inc. All rights reserved. All marks are trademarks of CMC Media Reproduction in whole or in part in any form or medium without the express written permission of CMC Media, Inc. is prohibited  
 
 CM Yellow Pages | ALM Expo | CM Today | Configuration Management Journal | CM Crossroads