Bobbing for Apple
For the past 5 years, my favorite platform to develop for has been iOS. In my career, I have developed e-commerce web apps, compliance backends, video streaming engines, native windows apps, even some experimental clicker games. But iOS has always been the most satisfying.
I believe this has been attributable to a few factors:
- The target devices themselves have always been compelling (iPhone, iPad), and seeing code I wrote light them up was always very satisfying. They elevated anything I wrote to a level that felt on par with the best technology had to offer.
- The tools were awesome. Not to take away from VIM’s infinite, quirky utility, or from that trailblazer MS Visual Studio, but XCode felt like a breath of fresh air.
- The hardware was beautiful. After years of developing on off-white-metal-encased tower PCs hidden under my desk, later replaced by boring grey (Dell) or black (IBM) Windows laptops, I was now justified in buying a powerful and gorgeous MacBook Pro — I was developing for a platform (iOS) that demanded it, lucky me :)
- The audience was there. The public was just as infatuated with the iPhone and the Apple eco-system as I was, and the developer community was responding in-kind. To switch from enterprisey Windows-land to Macs, OS X, and iOS led to a superior developer experience AND was a commercially sane thing to do. Best of all worlds.
But I fear the tide is turning. The last iPhone that I felt was a bold, innovative statement was the iPhone 5s. It eschewed the larger, thumb-unreachable screens of its competitors. It had TouchID. It introduced the lightning cable which, with its reduced size and no-right-side-up orientation felt like a temporarily frustrating but justifiable step forward.
Then iPhone6 came along and felt like a me-too device. Not only that, the thing was slippery as a soap bar, so no matter how beautiful it might have been, you were afraid to not keep it in a case, rendering the design details immaterial.
Similarly, the last really innovative Mac was the MacBook Air. My 13" Air has been the best computer I’ve ever owned. The form-factor is perfect, the ports it comes with (2 USB, Mag-safe power, Thunderbolt video, Headphone jack, HDMI) felt like a miraculous feat of engineering, to fit all that stuff into such a small, yet powerful machine. The last round of MacBook Pros were a nice step up as well, though they didn’t wow me the way the MacBook Air did.
We all know about this latest update to the MacBook Pro, 4 years later. As many have said, the most compelling thing about it is the compactness. That aside, everything else feels like a distraction or an unnecessary sacrifice. I’ll probably end up getting one, and I think I’m writing this post to work through my justifications.
Then there’s Swift, Apple’s golden open source gift to the mobile development community. It took a concerted effort for me to cast aside my Objective-C persuasions and learn to love Swift. And that I have done — I now strongly prefer Swift. It is easier and faster to develop in, and a lot of times the code that you end up with just feels pretty darn good in a way that Objective-C never did (hello guard).
Unfortunately, I find myself now in Swift version limbo, not able to commit to Swift 3.0 because of some necessary dependencies not being up to snuff yet, but fearful that the code I’m writing for Swift 2.3 will soon be obsolete. XCode 8 certainly seems to be disappointed in me for continuing to use Swift 2.3, and when it soon forces me into Swift 3.0 (I know it will), I don’t look forward to porting to Swift 3.0 (as I’ve had to do from Swift 1.2, Swift 2, etc).
This has resulted in an inability for me to advocate for slowly migrating existing Objective-C apps and libraries to Swift, because it’s such a moving target. What a disappointment.
I realize these are the normal growing pains of a new technology, it’s just that the timing is particularly bad, considering the disappointing iPhone, iOS (oh yeah, I didn’t even talk about iOS and how I can’t even figure out a natural way to interact with my phone from the lock screen anymore on iOS 10), and Mac releases.
Here’s the thing: I could probably get by with my current MacBook Air for a while longer, but I believe my productivity would truly benefit from a bump up in speed, storage capacity, and even a larger screen (I’d go to the 15" Pro). However, the only way I can justify that expense is operate under the assumption that I will continue developing in large part within the Apple eco-system.
It occurs to me that the rapid proliferation of new, seemingly one-off technologies is starting to feel like the fragmented Android eco-system. As Apple eco-system developers, we’ve relatively recently been offered APIs to build for: Apple Watch, Force Touch, Apple TV, Siri, iMessage, and now Touch Bar. Sure, there’s a range of platforms in there, but the point is that it’s starting to get a little overwhelming, and also there doesn’t seem to be that feel of overall coherence and unification in place. I’m being asked to pick a horse, even though I thought I already did by picking Apple.
If I’m not alone, and other customers and developers feel similar frustrations, then we can expect a downturn in usage across the range of Apple products. Let’s not get apocalyptic here — Apple still has and will continue to have major market share for years to come.
BUT, if I want to continue to invest in my own ability to develop for and contribute to best-of-breed platforms and devices, I start to wonder if that’s going to be Apple in the just-beyond-near-term. And if not, what should I look to? Android, with Google’s latest Pixel getting rave reviews? Microsoft, with it’s Surface Studio stealing Apple’s wow-factor a day before Apple’s disappointing MacBook Pro event? Hell, maybe some PE firm can even get Blackberry back on the rails. Who knows?
My point is, the recent events have begun to sow seeds of doubt in my mind, and I don’t believe I’m alone. That being the case, do I really want to drop $4k+ (I’ve learned that if I cut costs on a lappy I always regret it about a year later) on a new MacBook Pro? More importantly, do I want to continue to invest time and effort developing for platforms and an eco-system that appears to have lost its way? I’ll probably stick around this party for now, but I’m not sure for how much longer.
Hey React Native, how’s life over there?