I left the Microsoft development world because I got sick and tired of Visual Studio. I still remember the gray screen of death, which would appear anytime you click any option in Visual Studio. Now, I have the same feelings for Xcode.
I have been development iOS apps since 2010 and without any doubt the current version of Xcode (8.2) is the worst version I have experienced. I used to make fun of Android Emulator for taking eternity to launch, now that feature is also available in Xcode.
The option for “Reset Content and Settings” which restores the simulator to its original state is insanely slow. I can be clean shaved before I execute the reset and when it is completed I will have a full grown beard. The subsequent builds and runs have also taken a big hit in terms of speed and performance.
Crashes have dramatically increased in Xcode. As an iOS Instructor I not only experience my own crashes but also my students. On an average I experience 10–15 crashes per day. Here is a small video I made which shows that Xcode 8.2 even crashes when taking a simple screenshot.
Apart from the crashes I think we can have small quick wins in Xcode like not displaying the debugging dump in the output window. Yes, I do realize that I can set some flags and not display that information but is that too much to ask from developers.
Swift is a relatively new language but I would definitely like to see some basic Xcode refactoring support for Swift language. No Swift refactoring support is like going to a Burger shop and finding out they don’t serve fries OR maybe Swift is a step child of Xcode.
Integration with third party frameworks like Vapor is also not straight forward. The basic template will work smoothly, but as soon as you add other dependencies like VaporSQLite you will run into trouble.
In order to get rid of the above error you will need to run “vapor clean” and also remove derived data from Xcode. I have talked to Vapor team about this issue and they confirmed that the issue is within Xcode.
Swift Playgrounds is a great tool for learning as well as teaching Swift language, when it works. During my lectures I have to restart Xcode countless number of times because Swift Playgrounds decided not to update the results.
Storyboards is another area which acts in mysteries ways. Today, a student came to me with a problem he was having to drag and drop a UILabel inside the UITableViewCell. Xcode was not even allowing to drop the control inside the cell. My workaround and advice to the student was to simply use document outline to drop controls inside UITableViewCell control.
The incidents I discussed above are not isolated incidents. A quick look at Twitter feed will reassure that the above problems are real and must be fixed.
For developers Xcode is the only tool that let’s us create the products of our imagination. We, the developers would be truly grateful if Apple can spend the time and energy to provide care for this great tool.