Apple is no stranger to throwing out the old and changing things around. You can build something incredible, that makes lots of money and makes many people happy, but if you let that stagnate then people start to get restless. It's how the new kid on the block comes along and steals your thunder. So you have to change. People will get annoyed and even angry, as human beings are generally averse to big changes, at least to begin with.
But change is important, change is what makes you survive. There is a wonderful quote by Darwin about natural selection:
It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the most adaptable to change.
This not only applies to life, but any competitive system. Businesses and products that adapt best to change are the ones that survive, and there is no sector that changes more quickly than technology. In the past 20 years Mac devs have seen the change from 68k to PPC, from Classic to OS X, from Carbon to Cocoa, from Quickdraw to Quartz, from PPC to Intel, from 32 bit to 64 bit, from mostly single core CPUs to up to 24 virtual cores (and the average number of virtual cores in a new Mac being 7.5). And finally we also have the change from only having the Mac to having the iOS platform to target as well.
Adapting to change
Apple has some very mature applications: Xcode, Final Cut Pro and iMovie to name a few. They're all over a decade old, in one way or another. Final Cut Pro and iMovie dated back to the late 90s, with Xcode's heritage spanning back even further. As a result they weren't built for the modern world and had many fundamental flaws. The problem is that people end up just working around these fundamental flaws and accept them as how things have to be. Often this view can spread to the developers as well, which is incredibly dangerous.
All 3 of the applications I mentioned have received major updates that have completely re-thought the fundamental problem they're trying to solve. They aren't applying more tape to hold everything together, they're tearing it all down and doing the job properly. iMovie '08 was the first of the changes, followed by Xcode 4 and Final Cut Pro X. With each version, the first reaction of most people was annoyance and anger. They were less stable and less capable than their predecessors. Apple didn't care about its users, it was dumbing everything down.
But while people complain about the things that are missing, they lose sight of the huge changes that happened to push the apps forward. Missing features can be re-implemented in the future, but getting the core foundations done both internally and in terms of workflow is far harder to do. Get those wrong and you'll be back to square one. Get them right, and not only can you add the missing features, but also features that weren't even possible before. You can redecorate your house if you don't like it, but if the foundations crumble you won't have a house at all.
Yesterday Brent Simmons posted on his blog about Xcode's pane management and how much it frustrated him. He had a lot of good points about how awkward it can be to lay things out. Now Xcode does offer solutions for these issues, mostly in the form of behaviours, but this post isn't about Brent. Michael Tsai linked to Brent's post and someone left a comment there that stuck with me:
The FCPX mentality invades all new Cupertino software. Devs aren't immune from the syndrome.
As Dear Departed Leader was fond of saying, folks like Brent who prefer 'pro' workflows will die out, after all. "No compromises" in the brave new world.
There are many people who would see this "Final Cut Pro X mentality" to be a bad thing, it leads to buggier software, less capable software and more dumbed down software. Based upon iMovie 08, Final Cut Pro 10.0 and Xcode 4.0 they might have a point, but it's incredibly short sighted. As I said in my Xcode 4 review, we shouldn't judge on what it is, but what it shows it will be. Look past the bugs and the missing features to the potential new features. Don't look at the version now, but the next version and the version after.
Consider two pieces of software we as developers are used to now: LLVM and Mac OS X. Who remembers what Mac OS 10.0 and the first version of LLVM were like? They were buggy. They were missing features. They were dumbing down! Yet now they're things we couldn't live without. While Mac OS X was buggy and lacking at first, the foundations they made are what Apple's success with the Mac, the iPhone and the iPad are built upon. The same with LLVM, which now powers most of the smarts behind the developer tools as well as technologies such as OpenGL and OpenCL. What we have now couldn't really have been built upon the classic Mac OS or GCC.
The "Final Cut Pro X mentality" isn't something to be shunned or looked down upon. It should be held up as a good attribute, a willingness to improve things in the long term, even if they may be bumpy in the short term. It may seem like they're crazy to take such a risk, and indeed Apple has had to start selling FCP Studio again and had to keep iMovie 6 and Xcode 3.2 around, but it's a trait we should all try to have. I look at these new versions and see what the future could hold and I'm excited, and so should you be. So don't put down Apple or anyone else who takes a risk on the future rather than playing it safe with what worked in the past. Instead praise them for what they're doing.
Here's to the crazy ones…