After a few years with Xcode 3, my first impressions of Xcode 4 were mixed. At first, I thought the redesign was unnecessarily rigid and proscriptive. I missed Interface Builder's floating windows and object palettes, and I couldn't find a convincing reason for the enforced three-way window split in the editor.
Over time, I realized my first impressions were wrong. Software tools for developers, like software tools for users, should work hard to make life easier. The venerable old GCC compiler toolchain that ran under the hood of Xcode 3 was developed at a time when the command line was the only available UI. Although some developers still love the command line, it's an unforgiving environment that penalizes simple mistakes. It can be powerful, but it's also literal-minded and not at all transparent.
Many development environments, including Xcode 3, have taken this same approach but applied it in a visual environment. The test of a good tool is that it anticipates your needs to the point where it disappears, leaving you with a clear canvas for your imagination.
Xcode 4's designers have taken a step toward this by asking how to simplify or eliminate some of the tedious and repetitive work that was necessary in the past. Xcode 4 doesn't accomplish this aim completely—some promising early ideas were removed in the final release—but many of the features are simpler and more responsive than their equivalents in Xcode 3. As a result, the development process is faster, simpler, and more productive.
The first goal of this book is to introduce the new features to users who were used to older ways of working and to bring new users up to speed with the essential features of Xcode. Newcomers should start at the front of the book and work their way through it in order. The sequence of the earlier chapters is designed to be a practical primer for Xcode development, not just a list of features and changes.
A second goal is to introduce some of the more complex features in more detail. Many newcomers use Xcode in a simple click-bang way, missing out on the power and flexibility hidden under the surface. The less-obvious features are easy to skip, but exploring them can open up new possibilities for testing, debugging, project management, and build control. Some tools, such as Instruments, have further hidden layers of their own that would require a further book the size of this one to explore fully.
Because space is limited, this book doesn't dig into every feature to the deepest possible level. But new Xcode 4 users and experienced Xcode 3 users should find creative inspiration here, as well as a good store of tips and techniques that can push them through the essentials of basic development and into the deeper possibilities of managed testing and build design.