Tools for Agile Software Development

I’ve recently tried to come up with a list of some tools that may help in agile software development, mostly because I see the need for some at work, but also inspired by choices made by the customers I work with. I’ve picked these tools because I have had the chance to use them for real work and I found out that I even like some of them. These tools help me getting work done as well as communicate with my company’s clients.

Wikis and documentation
Forget Word or OpenOffice. The nature of a wiki lets everybody on a project contribute with documentation and informational snippets. All searchable and easily cross-referenced :

  • Atlassian Confluence
    This is probably the most complete wiki system. It has the added concept of ’spaces’ with access control which lets you define who can access the information, a must where you want to use the same system for multiple companies. It also lets you define document templates for various document types.
  • Plone
    This one I’ve used for several years and although it is more a CMS than a wiki, it does the same things as Confluence. It’s support for plugins also lets you choose from a wide variety of add-on products, from blogs and wiki-oriented plugins, project management, time reporting, bug tracking and lots of other features. Recommended!

Agile project management tools
Microsoft Project sucks! There I said it! At least when it comes to agile software development projects. The only one benefiting from MS Project is the project manager (and M$, of course). Don’t misunderstand, I’ve got nothing against Microsoft, but there are some tools out there that does agile projects way better :

  • Scrumworks
    This software is lean and mean and does just what the name says : Scrum works. Tightly focused on scrum development cycles, it does nothing to get in the way of handling your scrum project. Easy to use administration, backlog lists and sprint handling is key features. Progress reports, burn-down charts are easy to read. The only thing is that the UI is somewhat “different”. I can’t put my finger on it, but it’s just different; wait - it’s the Java UI that sucks! :-) Anyway, I like Scrumworks because of it’s direct, no-nonsense approach.
  • Mingle
    Thoughtworks (TW) released version 2.0 just recently. The previous version was as lean an mean as Scrumworks and let you handle low-end middle sized projects quite easily. As of the latest version, I can’t stop thinking that TW suffered from “featuritis”; more features makes you happy! Well, I for one, thinks they are on to something but at the same time the software got somewhat bloated and the nice, new features are seemingly drowning because the UI got nothing - or at least not the same amount of attention as features. Anyway, I like Mingle. Mostly because of the “card” feature with transitions. It’s easy to use for team members and the client can understand and appreciate just that functionality. The card-trees, I’m not so sure about, but they are a nice way to visualize stories, releases, sprints, tasks etc. The real value of them probably isn’t that great, although I’ve read “standing ovations” over them.
  • Version One
    This is the one I’ve had the least experience with, but it is a powerful software package. It also is the hardest to get going in my opinion. As a “plain” developer it’s ok; you go in, report on work done and grab some new work. But for a small team, I’ve had a hard time setting it up properly. The projects needs quite much information in regards to get on working. It may only be me, but the previous two tools is more touch-and-go with respect to starting up. Feature-wise it may be one of the better tools for the job, but as I mentioned, I haven’t had any long experience with it.

Other tools, keeping you happy and agile

  • Subversion
    When doing remote work, Subversion (SVN) is the tool for version control. Comparing it with Microsoft Sourcesafe (SS) is as comparing apples and oranges. The speed you get when checking source in and out over the network is way beyond SS. Combined with TortoiseSVN or AnkhSVN (if you’re using Windows based development tools) is a winner, again in my humble opinion. It’s got the features you need; branching, merging. I’ve looked into some of the more modern, distributed revision control systems mercury (Hg), but so far I haven’t got to try them out sufficiently to say anyting sensible about them other than that they seem promising.
  • CruiseControl
    Thoughtworks again. Well, what can I say. If you get it right, you can save a lot of time doing integration stuff and you get real feedback on the build, test and coverage of your code. I said “get it right”, because I think this is some complex matter. Even in it’s most simple form I think it is hard to get it to build, test, report coverage, package and version my software, but when you’ve got through the first hours of frustration and begin to “get it right”, the reward is coming in the form of nice build-, test and coverage reports and you can have it deploy your software on your testbed, wrap it up in a nice archive, tag the source repository and lots of other stuff. If you can, my advice is to hire someone who’s done this before a couple of hundred times to help you get going. It surely will be worth it in the long run.
  • Planningpoker.com
    Finally, in my previous post, I praised Planningpoker.com. I still use it, when on projects with two or more developers. I tried to do it on my own - for myself - and found it disturbing to not agree on my own estimates with myself. :-) Anyway, it’s perfect when developers sit on different locations, heck, even when we sit in the same building. It saves the trouble of booking a meeting room (which, in some places I’ve worked, always is taken) and all the other chit-chat that normally interferes with task at hand. (I’m really not that structured either).

These tools, among many others, I use on a regular basis in various projects and settings and I’ve found they help me do my work. I’m not saying these tools are the only ones, just some I have found to keep me productive. Some of them are easy to use and some of them harder. Each of them has certain aspects of them which make them more suitable for this, while others are more suitable for that. I recommend you take a look at them, give them a go. But whatever you do, don’t let them get in the way of your real tasks. If it doesn’t fit early, it probably won’t on the long run either.

Planning Poker

Wow! Today, I got my first ever introduction and hands-on experience on applying the concept of Planning Poker for estimating tasks on a project I’m involved in. The customer and I were on the phone using http://www.planningpoker.com/ and went through estimating the tasks at hand.

Although I’ve read about planning poker and the concept of it, I’ve never actually tried it. If you would like to read more, try out Wikipedia. Anyway, the customer had done an exercise beforehand and had come up with an estimate for themselves, but since I’m the one that will be implementing the system, we did another round - and guess what : The estimates were nearly the same!

When we take my inexperience with the customer’s business domain and planning poker and factor up some of the estimates, I believe we have some quite good estimates. The short discussions when trying to establish what factors are involved in each user story is also enlightening and educating, especially for myself, with very little knowledge of the customer’s business domain.

I will most certainly use planning poker for whatever estimation work in the future - I’ve seen the light! :-)

Go to http://www.planningpoker.com/ and try it out. I’m convinced - and I believe you will be too.

Visualizing COBOL program flow with Java and SnipSnap graph and Dockable panel plugins in .Net

Some time ago we had lots of COBOL programs I wanted to update or rewrite, either in COBOL or some other language. Some says COBOL programs are self-documenting, but, I beg to differ. Well, most programs, following ANSI COBOL-85 will be fairly easy to read and understand, while others written with ‘go to’ statements will be hard to follow. So I wrote a parser in Java which in turn used the Snip-Snap Graph utility in order to visualize the flow of programs in order to quickly understand key routines and structure. I’ve turned my routines into a web-application for those interested and will post an article on the Project page soon too…

Otherwise I’ve been busy with implementing a plugin-framework around Weifen-Luo’s DockPanel Suite. For those not familiar with the DockPanel Suite, I can mention that it is a sweet, cool and elegant framework for implementing dockable window panels in .Net, just like the ones you find in Visual Studio .Net 2005 (similar functionality is also present in Eclipse and NetBeans IDEs).

What I’ve done is implementing a base class which wraps around the DockPanel Suite with some convenience methods and contains necessary logic for the plugin to be loaded dynamically in the main program. This works just fine for local applications. Now, I’d like to build support for this to be deployed as a SmartApp (Click-once). This project will be documented on my Projects page soon…

So, lots of things to come… be ready for it!

:-D 

 

Get plain old ASP running under Vista IIS

About ten years ago I developed an intranet site for the company i co-owned with some buddies of mine. The code was somewhat mediocre and buggy, but it served a purpose then. Now, I wanted to breathe new life into that old application, but now running IIS on MS Vista (at work). At first this task shouldn’t be too hard, but Vista has disabled this feature (for obvious security reasons). Enabling them wasn’t as easy as just installing support. I’ve searched the net “up and down” and for answers and came finally to this solution :
1. Create a new application pool - i called mine ‘ASP’, remember to replace ‘ASP’ with whatever you call your application pool.
2. Run these commands :

  • %windir%system32inetsrvappcmd set config /section:applicationPools /[name=’ASP’].processModel.loadUserProfile:falseicacls %windir%serviceprofilesnetworkserviceAppDataLocalTemp /grant Users:(CI)(S,WD,AD,X)
  • %windir%system32inetsrvappcmd set config -section:asp -scriptErrorSentToBrowser:true
  • %windir%system32inetsrvappcmd set config -section:asp -enableParentPaths:true

Now, you have to set your old ASP-application to use the new application pool in order for it to run correctly.

Debian and WordPress installation

Well, if anyone has tried to get WordPress up and running on a box with Debian they will know that it may go smoothly or it may wreck havoc and end up in hours of labor (as it did in my case). The solution that got me up and running came from Justin Hartman. His wiki-entry contains great, concise and to the point instructions on getting it done right. Thanx!

Hello world!

Welcome to the ‘codified’ blog. I figured that since ‘everybody’ else has a blog, I should have one too. Anyway, I think this blog will mostly contain technical articles and maybe some musings over the wonderful technological age we live in. Enjoy!