Geeks only (you have been warned)
Regardless of how fun and friendly a development environment may be, the bullshit accompanying it can ruin everything. For example, and completely at random, let’s compare iPhone development to Qt development.
X-Code (the iPhone/Mac dev IDE) is at the usable and comfortable end of my IDE spectrum. Objective C is by far my favourite programming language, and the Apple run-time systems are luxurious (mmmm…Quartz and OpenGL). The IDE is free (as in beer).
Qt provides an IDE even less objectionable than X-Code, that will let you build, test, debug and produce code on multiple devices. It prefers C++ (which I generally hate), but makes it usable, secure, and viable, via its own well-designed API. BTW – the boost/STL advocates out there are free to go and fuck right off with the .NET developers. It’s also free (as in beer and speech).
Where the iPhone experience fails (IMO) is with all of the extra crap you have to do to run an app on it: developer profiles, provisioning profiles, distribution profiles etc, etc, are a tortuous pastime, even for someone like me who knows and loves encryption. It’s a tremendous hassle and provides almost zero advantages. It also provides a million unhelpful and foggy error messages that are totally impossible to understand unless you were in the team that developed the API.
For example, who cares if my app does evil things to people’s phones when the OS itself is so poorly protected that simply visiting a website can silently cause your phone to be utterly hacked by someone else.
[anyone wishing to point out that other OS’s are/have been affected by similar bugs need to realise that I am slagging off the TSA-style security theatre of the apple code-signing bullshit which is still vulnerable to perfectly ordinary attack vectors]