I must agree and disagree. I have been diving into apple development for the past month or so. I have several years of exp on windows, mostly c #. There are some things I like about the mac's, mostly the fact that it is unix under the hood and I can just get into a terminal and go. But there are many more things I dont like. I cannot find a way to search using wildcards. How the heck does a mature OS not have a decent search with wildcards? Also they do everything they can to obfuscate away the file system, especially in iOS, making it very difficult to find your files when you combine it with the crappy search.
Something that is developer specific that has caused many issues for me is in xcode. You need to ctrl + click and then drag to create references and actions between the interface (nib, xib) and the code files (.h, .m). This is fine if you are on a mac but I need to remote in since my windows laptop kicks the pants off the mac mini we bought for development. The laptop drives 2 24" monitors, the mini can only dream of that kind of power, and I dont want to give that up just to dev on the mac. I found a way around this by right clicking and then dragging the plus next to the appropriate hook. but this is the only way to do it. vnc will not send a ctrl + click + drag to do it the normal way.
Also reading their development guidelines is like going to church. I feel like I am being preached too and told not to try anything new. They make it sound like the end users heads are going to explode if you dont follow their advice and use the apple controls.
To sum it up. they have nice hardware that most people never get close to utilizing even 30% of and they have a lot of work to do on xcode and libraries for obj-c. I dont mind writing in low level languages if I have to, but why? I can write an app in 1/3rd the time in VS and it is just as efficient as something I wrote in obj-c, especially if you are using ARC.
It is important to understand what is going on "under the hood" but I dont want to have to write all that extra code when there is no real benefit.