Monday, May 16, 2011

Application Lifecycle Management

[Update: a couple of people have called me out on this post, and suggested that it would only work from the bottom up if you hire good developers. This is true. This entire blog is based on the philosophy that the cheapest and most efficient way to achieve any given goal in software is to hire a smaller number of better developers. If you have a different philosophy, then you may find this site more helpful http://hrb.fm/keHPzD.]

ALM is described on Wikipedia as:

“…a continuous process of managing the life of an application through governance, development and maintenance. ALM is the marriage of business management to software engineering made possible by tools that facilitate and integrate requirements management, architecture, coding, testing, tracking, and release management.”

The phrase itself is enough to make the blood run cold, but I’ve been struggling recently to justify why I think it’s a Bad Thing, and I think I’ve worked it out: it’s all about the direction in which processes are created and applied.

ALM comes from the Old World (aka I.T.), where working practices are created by Architects and applied downwards to development teams. It’s a process designed to commoditise development, and to manage human beings out of the equation. If the process is sufficiently detailed and watertight, then developers can become replaceable – which in turn allows you to find cheapers versions. 

This is lowest common denominator thinking – by creating a process that allows poor developers to work effectively, that same process will prevent good developers from doing what they’re good at. It’s mediocrity by design. Which in I.T. terms is not necessarily a bad thing – ERP, Accounting, Warehouse Management Systems – these are things that are: a.) operated in a controlled environment, b.) used by specially-trained staff, c.) defined by stability, not innovation.

None of this applies to web application development – which is defined in contrast by: a.) public access, b.) self-service, c.) continuous innovation, and pace of change. In this New World (otherwise known as The Web), companies are defined by the quality of their development staff – they are the asset, and they need be allowed to flourish, and not capped by  process.

The kicker to this is that process is still a good thing in this New World – but the new processes are designed not to prevent developers from getting things wrong, but to make it easier for them to get things right. ALM should exist in practice, but it should (in fact must) come from the bottom up – the processes are organic and designed by the developers, for the developers.

There’s no requirement for management to even be aware of these processes – they should manage by outcome, not intervention.

NB If this rings any bells with you I would recommend Orson Scott Card’s “software developers as bees” article - http://hrb.fm/lIOR0w

Monday, May 09, 2011

Web app or native - looks like HTML is winning the war.

When the iPhone launched, one of the major gripes was the lack of support for native apps. Steve Jobs launched the web-apps-look-like-native-apps program, was roundly criticised for the lack of a native SDK, and sure enough it turned out it was already in the pipeline. The App-Age was born.

(Not long after, Palm released webOS, a web-app platform from inception, and it was roundly praised for its innovative approach.)

Circle back round a few years, and the plethora of native platforms (iOS, Android, RIM, webOS, WP7) and form factors (phone, tablet) combined with the emergence of HTML5 as a "standard" (albeit one implemented (in)differently by each platform developer) means that web-apps are now back in favour.

PhoneGap in particular seems to have captured the mindshare of the mobile developer community; it will be interesting to see how this battle plays out over the coming year. Gaming aside, once local storage becomes a common feature, web apps look unstoppable.