A bit of a rant on Smartphone platforms

So reports have it that the RIM/Blackberry issue which has taken Blackberries worldwide out of service, was down to "unidentified technical debt".

According to software experts at CAST, the reason for the problem is down to ‘unidentified technical debt’.  While not the same as financial debt, it is likely to have the same effect on RIM.

Now, for a normal person (ie, user of BIS), that phrase sounds technical, but really, its TOTAL BULLSHIT. Technical Debt is the term used when you are developing software, and you do something to make it work, with the intention of coming back later to make it work properly. The debt is incurred as you have to pay back the time to "received" doing the quick hack later.

For example, you might write something to iterate over a list of names. The quick way works fine for 100 names, but if it has 1000 or 10,000, then it'll take exponentially longer (eg, 1s for 100, 100s for 1000, 100,000s for 10,000 names).

And if you don't pay the debt back, it'll usually bite you - it'll make it hard to implement something new, or in this case, it'll cause your software to crash and burn. It's an extreme example, but obviously an issue for RIM.

Basically, it is a strong sign of shoddy workmanship, and exceptionally poor management rushing software out.

But my rant is more about the 4 major platforms. There are now 2 I would refuse to use (or support) and one I'd be a bit shakey about.

  • Blackberry. Read above. Have a Google around - their software has been pretty lousy for a while (Playbook?). QNX might help, once they get it going... but BIS / BES was always a massive hog on Exchange servers, usually needing a dedicated client box for it. AVOID.

  • Android. The backend is good - Google can run a server - and the core should be good (Linux), but the apps, battery life, security and UI situation is bloody awful. The store is filled with fake ware and malware. Piracy is rife. Most Android users can't get a working day (8 hours) out of the phone, even with turning off 3G, WIFI, GPS etc. And every time I use one (usually an HTC or Samsung Galaxy or S2) I feel my eyes burning at the UI. Not something I'd spend my own money one, tho I know a few people who like it (and more who hate it).

  • Windows Phone 7. Microsoft have done well with this, and those few people who have them, really like it. It should be doing a lot better than it is, and the developer story is amaizing, especially if you are already .NET developer. My only grief with it is it's based on Windows CE, which had some serious limitations. Maybe they fixed that (I hope they did!). Worth a look if you are a strong MS shop.

  • And then there is** iOS**. Of course, it's my personal favourite, which should come as no surprise. It's far, far from perfect, but so far, it's the one with the least issues for me. The UI is getting a little dated (no change since 1.0?), but iOS5 on current hardware (iPad2 / iPhone4 - my 4S gets here tomorrow), it flys. It talks to all the major back ends (IMAP, POP, iCal/CalDav, Exchange etc), and getting apps doesn't force you to risk your personal data. Obviously, I recommend it :)

One thing to remember tho, with the passing of Dennis Ritchie this week: Three out of the four OS's above run on a flavour of Unix (QNX, Linux and OSX/iOS). The other one is likely to be influenced by it (what wasn't?), and all are (I suspect) written in C or C++.

Even if you have never heard of him until now, the impact of Dr Ritchie was massive.