“It is what computers have become”. This was our proud slogan at CES 2007 fair in Las Vegas this January when we launched N800 and other Nokia products. But why is it that most serious large-scale smartphone software development today still is very labor intensive? Why do we still lack the wealth of sophisticated development productivity tools and methods that are commonplace in desktop and server system development? Why do we consider C++ a top notch programming language technology? Why don’t we have a prosperous value ecosystem of ISV:s, VAR:s and professional services? Why do I believe that we soon do not need ask these questions any more?
But wait. Don’t we have lot of evidence about ultra-modern smartphone software? We have the Symbian C++ programming model, Microsoft smartphone, QT Phone edition and their developer communities. We have Flash Lite, MIDP Java, and even AJAX making inroads in the mobile web browsers. But seriously, when you look at it these are all mere shadows of their original ancestors. We still lag tremendously in productivity and richness compared to software industry average.
For the last ten years I have personally had a big problem with this “smartphone software stone age”. I started my career as a software professional in a typical way toiling in UNIX C environment and soon learning my way through higher level languages, frameworks and IDE:s in desktop and server environments. Being a finnish computer science graduate in the late 90’s I could not resist the flow and found myself working in the R&D of Nokia Mobile Phones growth tornado. But boy, was I horrified when I realized the state of software engineering in this industry! I simply refused to go along with it. Instead of turning myself into a software caveman I’d rather choose the desperate mission to first help bringing smartphone software to the modern days. And ever since this choise I’ve been busy with work … but that is another story :-).
There are good historical reasons for the backwardness of smartphone software:
- The device industry has been concentrated to few giant players and also the name of the R&D game has been huge scale economies. It has traditionally been possible to choose quantity over quality and productivity in R&D.
- In the early 90’s the cell phone software was developed by just a handful of engineers. Software has only recently emerged on the side of hardware in R&D intensity. Product design cycles adapt and competence accumulates with lag of some years
- Smartphone hardware performance is about 10 years behind desktop PC:s. Modern operating systems, interpreted languages, virtual memory, scalable graphics and fonts etc. etc. have only recently become technically feasible.
All this being said I can’t help feeling little tickles in my back. More and more these reasons seem to step deeper into history which covers them in the darkness of mobile software middle ages. New era is slowly dawning for smartphone software - or should we rather call it pocket-size computing?