The problem with software that works as if “by magic” is that when it’s broken, you’re practically helpless. I just ran into my first instance of that with the iPhone SDK. I can’t go into specifics here because of the NDA, but I just spent a really annoying couple of hours trying to resolve a problem where a better-worded error message would have immediately revealed the actual issue.
Hint to API implementers. Saying: “I loaded your file, but **** isn’t set correctly” is not at all the same thing as “I tried to load your file, but I couldn’t find it, and therefore **** couldn’t be set up”. Finding a typo in a textfield in Interface Builder by starting from scratch and re-building the whole interface kind of eats into the productivity advantage of using IB in the first place.
Oh, well. At least I didn’t have to burn one of my tech support incidents to have someone point out a typo for me. That would have been really infuriating.