Have you ever thought about your lifecycle? Not the lifecycle of your applications, your lifecycle. Of course not! You’re born, you’re a kid, you move out, get married, reproduce, retire, and die. It’s pretty much a given barring the unforeseen car crash or whatever, so you don’t really think about it. I’ll bet though, that you spend a lot more time thinking about your lifestyle. What sort of house would you like to move to? Which car would you like to drive? Where do you want to go at the weekend? Which supermodel would you like to date? Spent plenty of time thinking about that hey?

Your lifestyle is a big part of you, and how you interact with the world around you – it’s a major part of what makes you unique. You can be totally introverted, hugely driven or extremely slobby. Or all three. It’s probably a big part of where you are today (apologies to any members of the royalty reading).

So what the heck does this have to do with development? The phrase Application Lifecycle Management is huge in the world of software with any number of tools, approaches and techniques associated with it. As far as I can tell though the whole thing is getting to the same point as our own lifecycles. Let me guess, with your applications for any given change you will:

  • Plan it;
  • Build it;
  • Test it (calm down TDD boys!);
  • Deploy it;
  • Repeat.

It’s the same as when I first started developing in 1999! Sure you may have much more robust tools, you might continually deploy or whatever but it’s still the same. It’s time to concentrate on your application’s lifestyle. How is it going to live its life? I assume that from the previous list you don’t want it to be introverted or slobby, but there are plenty of choices to be made. Will it be open or closed, will it be enthusiastic, motivated or a rock of stability? Will it be extravagant or thrifty? These sorts of qualities should infuse your application the same way they would your own personality.

Look at stack overflow. It is built on openness and enthusiasm. Just as its content changes all day every day so its features are constantly under review and flux. It’s the mate who gives you inspiration and knows the newest stuff, but sometimes talks too much.

What about the MSDN library? It’s nothing if not a rock – it describes what it needs to and rarely changes, it’s the dependable knowledgeable friend who’s always at home (but who you might not want to spend all that much time with!)

Hopefully what this approach could encourage is a bit of consistency in your solutions for product features. If you’re going to be flamboyant with one feature, you damn straight ought to do the same with the rest – it’s not often you’ll see someone driving a porche but wearing tatters. If you want to regularly release small chunks of functionality then this should be happening regularly – so you’ll need to keep thinking of things to create or change.

I realise that this post contains more than a little irreverence, but it is also a useful exercise to apply to your own creations. So rather than spending all your time thinking about your application’s lifecycle, take the time to really think about who your application is and how you can help him achieve his lifestyles aims. I guarantee you’ll get a better product as a result.