I’m running a two-day workshop with Krzysztof Kozmic in Brisbane in April.

If you’ve ever had the privilege of maintaining a legacy application once it’s been in production for a while, you’ll likely appreciate some of the lessons on offer.

Once in a blue moon software engineers have the privilege of embarking on a new project: to do away with the old; to start over; to Do It Right This Time™. More often, software developers are saddled with existing legacy applications with poor code quality, no regression tests to speak of and frustrated, angry customers and stakeholders to boot. This downward spiral is all too common in the software industry and it would appear that there’s no way out – or is there?

What makes a legacy application? Every big ball of mud had its origins in a green-fields project. Where do we draw the distinction? And why does it matter? Isn’t every application a legacy after it’s released? How do we maintain our software so that “legacy” isn’t a bad word any more – and how can we improve our existing software to that standard?

This two-day workshop will start with the exploration of an utter disaster of a codebase. We’ll investigate how it got into that state in the first place, decide on an end goal, devise a rough strategy to get there and then fire up the compiler. We’ll finish the workshop with a well-factored, usable, maintainable application and a whole lot of appreciation for the tools available to us.

At each stage of the journey you’ll be given the opportunity to have a go at refactoring the application to the next point, after which you’ll be able to pull that completed exercise from GitHub. You will be writing code and you won’t be left behind.

You will need:

  • Laptop (WiFi key will be shared on the day)
  • Visual Studio 2012
  • SQL Server 2012 Express Edition
  • Git (download TortoiseGit if you’re unfamiliar with Git)

You will want:

  • ReSharper (trial versions are available from jetbrains.com)
  • Visual Studio 2012
  • A pair-programming partner. Partners will be arranged on the day if necessary but you’ll probably prefer to bring a colleague. If you want to go it alone, that’s fine, too.

In advance:

git clone git://github.com/Readify/MakingLegacyApplicationsAwesome.git

Further instructions for the workshop will be made available within this repository so make sure you do this before the day!

Tickets are available via the Readify event page.