It used a C++ dialect called Symbian C++, basically Hungarian notation everywhere, special semantics how objects were created (Two-phase creation), strings could not be used directly, ARM trap errors instead of exceptions, and so on.
They also rebooted the SDK multiple times, initially Code Warrior based, then a set of Eclipse CDT plugins, then they rebooted it and created another Eclipse attempt called Caride.
They eventually added POSIX support (PIPS), but just nowadays with Android, due to lack of updates, not every device could take apps that made use of PIPS.
Then came Qt, but it was pretty much WIP by the time the burning platform memo came to be.
Also, it was a great OS for tinkerers because it wasn't hard to gain access to the OS files and play around with stuff, install sis and jar files, modify signatures (alright, that's a bit shady but I was ten, give me a break) and whatnot, but I imagine the lack of a central app store until much later did the platform no good either, because apps were slightly hard to find for a general user, and carriers (where I lived) often scammed users by offering free jar apps picked from the web on their portals for absurd amount of money.
Plus it had ask-on-use permissions built-in before the iPhone was even a thing.
There was also UIQ. Used by Sony Ericsson on their P series, and Motorola in various models.