Symbian OS is currently the most popular operating systems for smart phones (read also my blog about Symbian OS versus Windows Mobile). The number of third party applications for Symbian OS is growing quite fast too. However, there are many complaints from the developers that Symbian OS development is very difficult. What I mean here is development of native applications using C++ language, not Java applications.

In fact, it is not only for third party developers. Some mobile phone manufacturers have difficulties producing Symbian OS phones because the development cost is too high and the development time is too long. Panasonic even recently announced that they will migrate from Symbian OS to Linux.

Why is Symbian OS development very difficult? Can we make it easier? If Symbian or their licensees don’t make it easier, I am afraid that Symbian OS won’t be an attractive platform any more. I have listed some items to answer that question. They are based on my 3 years programming experience in Symbian OS and 15 years programming experience in total.

  • Too many “strange” programming paradigms. Actually they are not really strange; most developers are just not used to it. Active object is an example. Many new developers don’t really know how active object works. We are more familiar with multi-threading paradigm. It took me quite some time to understand active object. The SDK documentation does not clearly explain what active object is (or the developers are too stupid to understand it).
  • The SDK documentation is very poor. Many classes and methods contain short explanations only. Many of them even don’t have explanations at all. When I read the Symbian OS documentation, the first question that will pop up in my mind is “how can I use this class/function”? Fortunately, Symbian OS documentation is still better than their licensee documentation, i.e. S60 and UIQ. S60 has the worst API Reference I have ever seen.
  • Not enough example codes. Having poor documentation might be okay if there are tons of example codes. The example codes in Symbian OS SDKs are below developers’ expectation. Just an example, ask to any Symbian OS developers, how many hours did they spend to display their “first” list boxes? They can tell you how complex it is.
  • The worst development tools. Symbian OS has the worst development tools. For example, it is so difficult to debug on the real phone. They do have emulator, but it is actually only simulator. Sometimes, a code running in the “emulator” will not run in the real phone because the compiler and generated binary files are really different.

The next question is: can we make Symbian OS development easier? There are several signs for that, but it is still a long way to have same level as Microsoft’s MSDN or Borland’s RAD tools. Symbian has migrated their “pre-historic” compiler to the compiler in Symbian 9 (which is very good news). Nokia is developing Carbide.C++, a new development tool that is supposed to be user friendly yet very powerful. Unfortunately, I am still not satisfied with the quality of Carbide.C++ beta version.

Let’s hope that Symbian and their licensee are actively improving their development platform.

Update (6-Jan-06): Some related links about Symbian OS development: