Gonzo blogging from the Annie Leibovitz of the software development world.

Category: Agile

Adapting agile in the Enterprise

I’ve created a new area on the site to house any articles, whitepapers and ideas I may have that I can share. Over the last couple of weeks I challenged myself to create a proposal at work on how to adapt teams to a more agile process of application development. With any organization, the challenge is always around change. Sure, you can throw numbers at the PTB and do a fancy song and dance about how great agile is. You can even have the organization buy into the principles and concepts. The trouble is when the rubber hits the road, it’s usually business as usual because either the teams haven’t worked in this type of collaborative environment or there’s just too much pressure to deliver and anything that may change the way things are done will shift that.

Enter my workshop proposal. It’s a fairly simple premise to seclude the team off from the rest of the organization for a controlled amount of time, provide them with whatever technical expertise you can (even if it’s outside the company), and in a very short time (no more than 2 weeks) turn them into a walking, talking, effective machine that delivers quality production code, even if it is only the first (of many) iterations. It’s like teaching a baby to walk (or in this case, monkeys using tools for the first time). You can’t expect your 8 month old to run the Boston Marathon. So don’t throw a project team together and expect them to pump out a killer-app on their first outing. You have to take baby steps. This proposal (which we’ve proven out in a few pilot scenarios) seems to be a way to do this unobtrusively. It’s had effective results and I’m certain it can work. Sure, it’s not the silver bullet any project is team is looking for but at least it’s a way to show how to get somewhere rather than a VP directive of “just do it” (which can resonate at times, but it can still be unclear as to how).

Anyways, check out my workshop paper here and feel free to adapt it to your organization.

Source control for agile development

Or rather the quandry of finding one. When it comes to version (revision) control systems, developers working in an agile environment are in a somewhat confusing situation. Which system should we use?

Microsoft’s offering is SourceSafe, and is the one most of us are probably using (probably because it comes with Visual Studio so is considered “free” and part of the package). However, not much has happened with SourceSafe since the current version was released almost 5 years ago. Why didn’t MS release SourceSafe .NET with Visual Studio .NET? Will there ever be a new version of SourceSafe? With the coming of Whidbey, things might change but that’s still a year off.

There are several reasons to look for something better than SourceSafe: It is slow. It is even slower across a VPN. It does not handle multiple users editing the same file very well. It has problems with opening and closing ss.ini, especially over a slow network. There is no SourceSafe service to restart when you need it to release ss.ini. You have to reboot the server, which is kind of nasty when you are running SourceSafe on a multi-purpose server machine. But worst of all: it corrupts the repository every now and then, and Microsft’s best practices implore us to run a corruption analyzer every week! Nice.

So what are the alternatives: The most apparent one has to be CVS, which works great over the Internet, but is a bit lacking if you want the same kind of Visual Studio integration as SourceSafe. There are a couple of SCCAPI implementations for CVS, but I haven’t found one that works very well. Igloo looks to be the most promising. There is a modern replacement for CVS as well, but naturally this one is even less compatible with VS.NET.

So what about the commercial alternatives? There is Borland‘s StarTeam and Rational/IBM‘s ClearCase, neither of which seem to support an agile environment and with ClearCase, it’s apparently a beast to understand. Then there is Merant‘s PVCS, which we’re currently using as our corporate repository but because of it’s pessimisstic locking scheme, any refactoring just can’t be done effectively. There is also a new kid on the block, SourceGear‘s Vault, appealing because it runs on .NET, less appealing because it tries to look and feel like SourceSafe.

So, in short, I’m quite undecided when it comes to which version control system to use. What I want is something that plays well with VS.NET, works efficiently across slow networks, is built on a database, is transactional and is easy to backup and restore, and support an agile development environment. If it supports multiple checkouts of the same file as well, that would be a nice bonus.

Does anybody have any good recommendations?

PS I’ve added a new commenting system to this site so you can leave feedback on each post. Enjoy!