OS/2 was developed from scratch, and was not encumbered by a legacy of DOS compatibility, 16-bit applications, and drivers like Windows was. This enabled IBM to innovate radically and more quickly. The application I wrote for my client was a multi-threaded program, written paradoxically with Microsoft's Programmer Workbench, the character-based precursor to Visual Studio.
However, this freedom from legacy code also meant there were few applications available for OS/2, and the only drivers were for IBM printers. OS/2 eventually disappeared in spite of its technological superiority at the time.
IBM's development environment was called C-Set, and, despite being a 32-bit compiler, was inferior to Programmer's Workbench. For instance, after a compilation, if you double-clicked on an error message, it would open up the source code in a separate editor window, in a proportional typeface. You could not trigger a compilation from this window. You had to make your change, save & close, then go back to the compiler window. Awkward.
There was no Resource Workshop for designing dialog boxes visually. You had to write all the statements in a text editor, and wouldn't see the appearance until compiling and running the program. This slowed down development.
While debugging, I recall trying to step into the GUI part of the application code. This locked up the computer so bad we had to re-install OS/2, a tedious process requiring 22 diskettes.
The IBM documentation was so inscrutable that even for ver. 2 of OS/2, we had to refer to Microsoft's ver. 1 manuals. IBM's support gave an interesting insight into OS/2's downfall. My client had an expensive OS/2 support contract with IBM. The client contacts were two guys in the PC support section. When I required technical support to answer some obscure and specialized questions about OS/2, it didn't make sense to get these guys involved, even though they were supposed to be the only official go-between with IBM. So I called IBM with the client's authorization, and impersonated one of the support techs. After a few calls I slipped and used my name. The IBM guy was livid and tore a strip of me, saying that as an independent contractor, I had no business blah blah. Here I was just trying to get a customer up & running.