Wednesday, 10 August 2011

Apples and Pears

I bought a MacBook Air the other day. What a breath of fresh air.

I've been a fanboi now for a little over a year, having bought my iPhone 4 from the Apple store in Brighton the day after it was announced - I was initially taken aback by the £500 price tag but if you look, they are still being sold on Apple's website for £510 and you will need to pay £300-£400 on ebay for one second hand. Add in a £15 per month tariff and my costs are well under £30 a month. I could probably write a whole blog post on that subject alone ..

Anyway, the MacBook Air. Did you guess that I like it?

I should point out that my 'work' laptop is an i7-based affair running Windows 7 with all the corporate junk you'd assume - disk encryption, virus checker, domain membership and associated policy restrictions, firewall, etc. etc.

I spent most of the weekend using the Mac - browsing, downloading, using iWork, trying to understand Xcode and reading the Objective-C getting started guide. It was a pleasant experience, but I have to say that it didn't particularly impress me - it (as they say) "just worked" and I got on with what I wanted to do.

It wasn't until Monday morning when I arrived at work and resumed my hibernated work laptop that I was shocked. It took forever to get started .. I just sat there whilst it resumed first, then took the best part of 2 minutes to present the desktop. And then I needed to fire up Outlook which, predictably, seemed to take another 2 minutes .. and then it needed to download all the emails from the weekend.

Whilst all this was going on, I powered up the Mac. It turned on instantly (perhaps a few seconds) and was ready to go. If I were able to, i'd have been in my email and being productive a good 10 minutes before the PC.

I am sure it's an unfair comparison in some respects, i'm sure the PC is doing more work *somewhere* and i'm sure that, given the same OS and SSD drive, the i7-based laptop could perform better. But life isn't fair and i'm not really interested in making a PC go 'as fast' as a Mac. I just want to use the Mac.

The performance difference is enough alone, but looking at the way the hardware and OS works together it makes the experience even better - a massive touchpad and gestures with Lion just mean that you can really get productive. I was looking for the 'virtual desktop' feature in Windows 7 tonight - it isn't there. Infact, it was a power toy for a while but seems to have disappeared. Why on earth? Apple have just made it work beautifully and for the first time since I first used virtual desktops on a Sun SparkStation i'm using them again .. intact the whole experience with the Mac reminds me of the opposite experience when I moved from Sun workstations to PC's .. the PC felt clunky back then and i'm sad to say that it feels clunky right now.

Remind me again why i'd want to use Windows?

Friday, 4 February 2011

Housebuilding

We all know the analogy - developing software is like building a house. This patronising explanation typically followed immediately by the follow-up that we need to get the foundations right before we start building any of the walls, let alone start plastering, wiring or putting the roof on.

But just how valid is this comparison and does this help or hinder? One would suspect the former, and it would seem reasonable, given the obvious pitfalls of not thinking through the solution in its entirety before cutting code. I mean; consider the effort required to convert a large system between .Net and Java if you discovered that you needed the portability that the JRE offers? Or the sheer hassle in migrating from Access to Oracle because you thought it was a 2-user system and it turned out to be 1000-user?

Clearly there needs to be some forethought, but is it really comparable to getting to the roof trusses and realising that your foundations weren't deep enough? Or that your 4 bedrooms don't fit onto the 2-bedroom foundations that you've laid? In both these cases you'd effectively have to go back to scratch and start again. But converting from Access to Oracle? Well certainly it's a lot of work, but if you've architected the system properly - separation of concerns, etc. then why would you need to change your GUI code? Or the logic you've coded in the middle tier to assess claims, or the link to the third party system for payment processing?

Ok, so perhaps not quite the same thing, but still - something that we should avoid? Fools rush in/etc.

But there is more that the analogy doesn't consider. And these things are significant - how about continuous integration? How does that fit with housebuilding? Or the agile concept of features and 'done', or test driven development? These are all development techniques that seek to test as much as possible as early as possible, identify defects as soon as they are introduced and improve estimation. We all know these are sensible but how does this correlate to housebuilding? Perhaps we should be recommending that a building builds all the way to the roof in one thin turret so that we can 'test' that the roof is watertight (an 'habitable room' feature)? Or that he builds scaffolding to the exact size and shape before laying bricks (TDD)?

It doesn't make sense. And these are good examples of why development - even green field in this case - is fundamentally different from house building. When you start to look at brown field the comparison is even less valid.

So we're going to build an extension every month. When is the last time you asked a builder to do that? Ok, you might argue that some product evolution is more like wallpapering every so often, or re-painting the skirting boards. But that isn't my experience and I'd attribute this pattern more to legacy, regulatory-driven or end-user customised COTS packages. For line of business applications challenged with keeping up with the business or commercial offerings keeping pace with competition, there's a significant amount of change and IT have to be able to accommodate this change regardless of the 'structural' impact to the system.

So one week it might be some wallpapering, but more than likely it's converting the single garage to a double, adding toilets, enlarging rooms, etc. And then there is the case of the upgrade to particular components - I'm not sure the last time Ikea released a v2.0 of their 'kitchen' and forced everyone to upgrade, but that's what happens ..

So the more I consider the analagy the more I think we need to take it with a pinch of salt. And any decisions based fundamentally upon it should be very carefully considered.