Xcode sucks in some ways but I think you're missing a few things.
Version 4.3.0 was the biggest piece of crap and crashed all the time. The current version, 4.3.2, is stable. I've not had a single crash since it hit. And I use it 10+ hours a day.
The project file stuff isn't so bad -- don't edit the file yourself and drag stuff in. Need to move something in the project but want to keep the layout the same as on disk? Remove it from the project, move it on disk, then add it to the project again. Does it suck for version control? Hell yes it does. It's terrible in that regard.
No simulator related issues here but I've seen it fail to launch on the device b/c of some stuck process. A reboot usually fixes this but it's very rare on 4.3.2. Major pain when it happens, though.
Storyboards are an iOS 4 only feature. ARC works on iOS 4. And iOS adoption rate is very good relative to other mobile OSes. Not sure what your beef is. Backward compatibility is pretty much always ugly. Especially if you use static libs and want to go back to iOS 4.0. But you really should weigh the cost of supporting OS versions that old against your development costs and your user base. You may not need to, based on your situation.
You're making IBOutlets way too hard on yourself. Use the two up view with IB on the left and your header on the right. Ctrl + drag from your control to your header and let go. Give the outlet a name and Xcode declares the property, synthesizes it, and sets it to nil in viewDidUnload. You can do the same thing for events (right click the control and drag from the event in the context menu to your header).
Eclipse is fine but it's hardly the best IDE. Its refactoring features are nothing short of amazing but it's dog slow on modern hardware. All of its preference/settings dialogs are convoluted at best. Finding things you want to change is usually a matter of digging through trees. No fun.
When I started working with Xcode last November I was planning to jot down every one of my frustrations and make a blog post just like the OP did. However, I decided against it... must be old age sneaking up on me.
I do have one additional point: Xcode's code completion abilities are underwhelming. Emacs does a better job with hippie-expand IMHO.
For code completion I do not know how Xcode compares to the much hailed Visual Studio (I have no experience with it) but compared to Emacs + Slime + Common Lisp it is awful.
Your experience mirrors my own exactly. In fact the only point I agreed with the author was on the project file.
As you stated the latest build has been rock solid and I've honestly never had an issue with the simulator (at least in terms of connecting/running, it not noticing new resource files is another story).
The point about iOS 4/5 is very puzzling to me, pick a minimum version and program for it.
My butt... Xcode 4.3.2 is NOT stable. It repeatedly crashes when a 5.1 device is connected, especially if you try to open the organizer window. 4.3.1 does not eventhough it does not have the 5.1 SDKs. I've seen this on 3 different (and current) Macs in the past few days, so it isn't a unique situation.
Agreed, I also love the fact that XCode is project-based and Eclipse makes it difficult to switch between working on different projects - I've always felt like there must be some trick to that which I just can't figure out.
That doesn't help. Switching workspaces is cumbersome, you can't 'launch' a workspace like you can just open an xcode project, and you can't have more than one open at a time in different windows.
My partner and I started return7 with $800 (mostly design, Apple dev fee, etc.) in 2008 when the App Store opened up. BillMinder, our main app, is profitable.
Self proclaimed Apple fan here. Apple's App Store revenue is a drop in the bucket. I don't think that's the reason iOS5 is on the 3GS. iOS5 is on the 3GS because it's Apple's low end phone and still available for sale. It has to run iOS5 so folks can use their new software incentives to sell the phone itself (i.e. iCloud).
Don't sweat it. This happens to our app, BillMinder, every release. Typically pirates won't use your app long and probably wouldn't have paid for it anyway so there isn't much lost revenue. Annoying but not the end of the world.
I've often wondered why MailChimp doesn't offer more support for transactional mails. I know there is some stuff in the API but it seems bolted on (am I wrong?). I would really like to use the standard templating for email campaigns that MailChimp has, and use it for transactional mails. An API call to MailChimp with some some arguments would then send a template, the variables (dynamically) filled in, to the user.
Email campaigns are so easy in MailChimp and I'd like to maintain the look of those mails in my transactional mails. Nonetheless, you guys provide a great service!
Version 4.3.0 was the biggest piece of crap and crashed all the time. The current version, 4.3.2, is stable. I've not had a single crash since it hit. And I use it 10+ hours a day.
The project file stuff isn't so bad -- don't edit the file yourself and drag stuff in. Need to move something in the project but want to keep the layout the same as on disk? Remove it from the project, move it on disk, then add it to the project again. Does it suck for version control? Hell yes it does. It's terrible in that regard.
No simulator related issues here but I've seen it fail to launch on the device b/c of some stuck process. A reboot usually fixes this but it's very rare on 4.3.2. Major pain when it happens, though.
Storyboards are an iOS 4 only feature. ARC works on iOS 4. And iOS adoption rate is very good relative to other mobile OSes. Not sure what your beef is. Backward compatibility is pretty much always ugly. Especially if you use static libs and want to go back to iOS 4.0. But you really should weigh the cost of supporting OS versions that old against your development costs and your user base. You may not need to, based on your situation.
You're making IBOutlets way too hard on yourself. Use the two up view with IB on the left and your header on the right. Ctrl + drag from your control to your header and let go. Give the outlet a name and Xcode declares the property, synthesizes it, and sets it to nil in viewDidUnload. You can do the same thing for events (right click the control and drag from the event in the context menu to your header).
Eclipse is fine but it's hardly the best IDE. Its refactoring features are nothing short of amazing but it's dog slow on modern hardware. All of its preference/settings dialogs are convoluted at best. Finding things you want to change is usually a matter of digging through trees. No fun.