More like this

Data Center



Why Nokia failed: 'Wasted 2,000 man years' on UIs that didn't work

For want of a nail, the Kingdom was lost?

Design patterns were 'reverse engineered from code'

With the arrival of Apple and others, the world had moved on. Smartphone development had to be really, really simple. Android was Java, but not Java, while Palm's WebOS called for Javascript and HTML, and Windows Phone had a neat declarative language and bits of code - not too dissimilar from WebOS. So the Trolls came up with QML, a new declarative language with Javascript knitting things together. However, "not everyone was on board," Wilcox notes, and Symbian became a battleground between three competing teams. The Symbian veterans counter-attacked with an animated framework they called Hitchcock. This didn't use Qt, and was abandoned. The Linux team, beavering away on the long-term replacement for Symbian, devised one based on Gtk. This didn't use Qt either, and was also abandoned. The Symbian stalwarts regrouped, and devised a Symbian widget library called Orbit.

Orbit absorbed huge resources within the Nokia organisation, but was a mess from the start. Wilcox writes:

From the outside it seems there was no proper requirement spec for this new framework and the engineers were incompetent. Now by that I don't mean that they're incompetent engineers – far from it. They were incompetent at designing APIs for 3rd party developers (a very specialist engineering skill) and they were incompetent at designing UIs (which most engineers are, myself included). Unfortunately they were doing both, as evidenced by the code, and the comment of one Nokia designer at a Symbian Foundation meeting who was publicly cornered into revealing that the S^4 UI design patterns had been reverse engineered from the code.

Some Nokians refused to use it.

Orbit wasn't really portable beyond Symbian. Management didn't notice

The Linux team had been developing its own however: the framework called libdui, or Direct UI. Now there were two options.

This kind of internal competition was encouraged within Nokia, and enshrined into the "company constitution" in the 2004 restructure designed by then CEO Jorma Ollila. Perhaps taking Darwinian metaphors too literally, he hoped this would avoid the creation of a bureaucracy.

Qt was supposed to unify development for Nokia devices, so source code should only be written once. But without adequate management, Nokia's engineers had gone off and created two incompatible UI APIs. Nokia was losing this vital source compatibility.

With management unaware of the implications, Nokia continued to support the two parallel UI projects. But "both teams had built the wrong thing", as Wilcox describes it. Loyal Nokia developers couldn't believe that Nokia was making the same mistake of fragmenting its APIs once again. In 2004 it had decided to fold three of its Symbian UI APIs into one – S60 – to rationalise development, a crucial decision we'll come back to in a later article.

"And here we are, five years down the road, and Nokia is making exactly the same mistake again," wrote an exasperated Sander van der Wal, a veteran Epoc developer. "I believe that 'flabbergasted' is a better description of my emotional state than 'anxious' ;-)"

Nokia didn't seem to have a grown-up in charge. When it finally got one - Sun's Rich Green was brought in as CTO last spring - he canned Orbit. (See our report Nokia ends cruel and unusual 'Symbian programming' practices). He also canned the Linux team's DirectUI effort. And while all this pointless competition and in-fighting was going on, nobody had set about modernising the Symbian UI. Nokia's product designers were left with a UX that was still almost as bad as its predecessor.

Next page: No quick fix