Today’s sophisticated multicore chips and complex operating systems are beasts for programmers. The rush to get a product out, especially in time for the holiday season, can put a lot of stress on not only programmers but the overall consumer perception of the device.
There are three levels to multicore software, as viewed by users:
The first one is fairly easy. Creating a working device, starting with a commercial operating system (be it open or proprietary, debate for another day) is usually straightforward when a multicore processor is supported. Bleeding edge processors present some immediate challenges but usually there’s enough braincells in the vendor and the community to get something running.
Level two is more challenging. Integrating all the features, loading up apps, and testing the whole thing in one piece is the bulk of the activity for most programming teams. If a device is unstable right out of the gate and there’s no fix, users leave and don’t come back. Users forgive a stable device when they load a new app and the thing rolls over – they just remove the offending app.
Then there’s level three. Delight is such a hard thing to achieve in any relationship. Even the high and mighty occasionally miss the mark – and it’s often up to the software team to fix it.
Two cases in point:
Apple releases iOS 5, and almost instantly complaints about reduced battery life on devices ensue. Social networks light up with various remedies for users, ranging from shutting off Wi-Fi when not in use to disabling notifications. iOS 5.0.1 releases and for a lot of users, the battery problems get better, but there are still enough issues out there causing many concern, and new articles spring up saying things aren’t fixed yet. Attempts at a fix continue as we speak.
Apple controls both their hardware and software, and the iPhone 4S uses the same dual-core A5 chip found in the iPad 2, with two ARM Cortex-A9 cores and a PowerVR SGX543MP2. The problems could be in managing the wireless hardware or elsewhere.
Amazon releases the Kindle Fire tablet. None less than Jakob Nielsen, web usability guru, releases a scathing diatribe on the device. One quote in that article says a lot:
Screen updates are too slow, so scrolling can feel erratic and there’s a huge lag in response after pressing command-buttons. This breaks the illusion of direct manipulation. It’s odd that this happens; the Fire supposedly has a fast CPU and doesn’t push as many pixels as the iPad does. Must be sloppy programming.
The Kindle Fire does have a fast CPU – it’s a TI OMAP 4430 (dual core ARM Cortex-A9 at 1GHz) with integrated POWERVR SGX 540 graphics. The problem may lie in and around the touch controller – a little known Ilitek device, and there’s not a lot of info publicly available on it as the website testifies. There’s quite a bit of Ilitek related multitouch code in Android if you dig around on the Google forums.
The “sloppy programming” comment makes me feel bad for the programming team, who knows they got this touch screen controller they’d never seen, probably said “oh good there’s a driver”, rushed the release out and did their best. They too have been working feverishly on fixes, coming soon to a Kindle Fire near you. I’m guessing rapid improvements will be noted.
Multicore isn’t the culprit per se, it’s just a level of complexity and a lot of moving parts that all have to be running together (not necessarily synchronized, either). Multicore processors and their operating systems are so complex, it’s very hard to achieve past “stable” – even on perfectly good hardware – with an initial software release. Things can be thrown off track by one seemingly small piece of the puzzle, maybe just one driver that really gets in the way of happiness under certain conditions. Those conditions can be hard to reproduce and diagnose, and it can lead to long nights for programmers and bad PR left unsolved.
The “delight” level takes some soak time for inputs from users, learning from developers, and often a new system software update. These two examples should provide great lessons for device developers.
What are your thoughts? Has a software update ever fixed a device you liked, but weren’t totally delighted with? What’s your experience with these two devices so far, and have new updates made things any better?