The root of the problem lies in the OS and their SDK. For a while BlackBerrys were the best platform to develop for. Symbian, pain is the ass. JavaME, even worse. WM6 was a little bit better, but it still was a pretty bad WinCE fork, with all the glory of the Win32 Api. Now along comes Apple in 2008 with an extensively documented SDK, that includes all kind of high-level APIs, and an IDE with tools, that actually work.
This has never been the case in mobile development before. Although ObjC was a stranger to most people back then, it's certainly something you can learn and work with.
Next comes Google, again massive APIs, everything perfectly documented, tools that work. On top of that, the language of choice is Java and the former best platform for developer, Blackberrys, just looks severely outdated in comparison to Android.
RIM's root APIs basically didn't change since the age of monochrome-displayed Blackberrys. Over time they patched in support for colored displays, then 2-way navigation wheel, then 4-way navigation ball, and later on touchscreens. The reason the BlackBerry Storm has an extra 'click' in the screen (you could tap the screen to highlight something e.g. a button and then press the whole screen down, like a mouse button, to actually click the button), is that the whole User Interface APIs relied on onFocus and onClick events, something that comes from the times of the 2-way navigation wheel and is fundamentally incompatible with the way touch devices work.
Now in retrospect its easy to say they should have rewritten everything a couple years ago and started with a new OS from scratch, but that's a big risk to take and generally not how big companies work.
Anyway the new generation of modern smartphone OS'es is now in full swing and RIM OS is pretty much dead. Microsoft knows that, they started from scratch, Nokia knows that, they gave up on Symbian. RIM? They probably can hold on to business customers for some years, but recovery is gonna be hard.
As I understand it, before the iPhone, the real challenge that cellphone app development companies had was negotiating with the carriers. Compared with that barrier, the pain of coding to a badly-designed API was not worth caring about.
This has never been the case in mobile development before. Although ObjC was a stranger to most people back then, it's certainly something you can learn and work with.
Next comes Google, again massive APIs, everything perfectly documented, tools that work. On top of that, the language of choice is Java and the former best platform for developer, Blackberrys, just looks severely outdated in comparison to Android.
RIM's root APIs basically didn't change since the age of monochrome-displayed Blackberrys. Over time they patched in support for colored displays, then 2-way navigation wheel, then 4-way navigation ball, and later on touchscreens. The reason the BlackBerry Storm has an extra 'click' in the screen (you could tap the screen to highlight something e.g. a button and then press the whole screen down, like a mouse button, to actually click the button), is that the whole User Interface APIs relied on onFocus and onClick events, something that comes from the times of the 2-way navigation wheel and is fundamentally incompatible with the way touch devices work.
Now in retrospect its easy to say they should have rewritten everything a couple years ago and started with a new OS from scratch, but that's a big risk to take and generally not how big companies work.
Anyway the new generation of modern smartphone OS'es is now in full swing and RIM OS is pretty much dead. Microsoft knows that, they started from scratch, Nokia knows that, they gave up on Symbian. RIM? They probably can hold on to business customers for some years, but recovery is gonna be hard.