re: engineering management
notes on software development, leading teams and changing the way we work

Mobile Is The New Desktop

Given all the hubbub around the iPad and everyone wishing for the fall of my employer’s platform, I’ve been wondering how best to express my thoughts on the current state of affairs.

Several years ago, I made the personal decision to focus on Web development. Primarily, building backend applications and Web services for browser-based clients. While I love working for Adobe, I am not really interested in Flash or AIR technically. That is probably due in part to the years I’d spent doing cross-platform development for Windows and Mac OS. Flash, in my opinion, is good in small doses. And AIR is mostly useful (to me at least) when used where people would have built a Visual Basic application 15 years ago. Even that is a weak argument as those people would build a Web application today.

At the end of the day, I grew tired of trying to keep up with Microsoft’s technology du jour. I think Joel Spolsky’s essay How Microsoft Lost the API War sums up my feelings pretty nicely:

Outside developers, who were never particularly happy with the complexity of Windows development, have defected from the Microsoft platform en-masse and are now developing for the web…None of this bodes well for Microsoft and the profits it enjoyed thanks to its API power. The new API is HTML, and the new winners in the application development marketplace will be the people who can make HTML sing.

And although at that time I came to favor the Mac as my platform of choice, I couldn’t bring myself to develop for it. I just had no desire to become a sharecropper. Using a Mac as my personal computing platform, but developing for the Web using Unix/Linux as my server OS felt right.

Last year, I attended Apple’s Worldwide Developer Conference. Although the bulk of the conference was about iPhone OS 3.0 and the bazillions of apps being developed, I mostly went to the Web/Safari tracks. All the work regarding HTML5 support seemed much more relevant. Web development was moving forward again.

STILL, everybody wanted to know how to build native iPhone apps so they could sell them in the App Store and become millionaires. Aside from games and a few other visually complex applications, I didn’t get it. Sure, the App Store solved some problems and was a great way to maybe get your app in front of millions of people. But, at what cost?

Flash forward to today. There has been plenty of griping about the App Store review process. The sheer number of apps makes it difficult to find the gems in a sea of crap. Reviews are outdated and can potentially affect sales even though the stated issues may have already been addressed. Frankly, the majority of apps I see in the App Store could EASILY have been webapps, including some that friends of mine have made.

Android and Blackberry are no better. I have no desire to develop in Java again and if I did I would use it on the server like I used to. Palm actually appears to have gotten it right with webOS but, umm…, nobody’s really buying those devices.

I tried, unsuccessfully, to write an iPhone app. I’ll admit I bit off more than I could chew at first and my own disgust for IDEs and C/C++/Objective C got in the way. Considering Objective C and Cocoa Touch (or C# and MonoTouch) are the only real ways to build a native app for the iPhone I probably won’t be building native apps anytime soon, unless MacRuby adds iPhone support. No, I won’t use the Flash iPhone Packager; see my position statement above.

The iPhone (and now, the Droid and Nexus One and insert next model smartphone here) and iPad are showing what the future holds. Mobile devices are the new personal computers. Their form factor combined with native apps, including desktop class Web browsers, make them the perfect devices for information consumption. Desktops and laptops will be relegated to mostly content creation tasks. I can easily see my son’s first computer being a tablet of some sort. And, that’s great.

As a developer, however, I STILL don’t want to get sucked into the “develop for our platform” crap that dominated the desktop era. I will readily concede that there is still a need for native applications. Heck, I still use them! I’m just not interested in writing them.

Many talk about software plus services but this is usually just a way to position rich client technology. I believe in software that complements services. iTunes is actually a good example of this, but the plethora of Twitter clients is an even better one. Twitter the Web service was valuable in and of itself, but by exposing a great API, clients could be built that made it even more valuable. I’m kinda partial to Tweetie myself.

But, Tweetie 2 is not on Android and it may never be. I’m sure I could find a reasonable substitute as I am considering buying a Nexus One. But, as a developer myself, do I want to invest time in learning iPhone development AND Android development AND Blackberry development (and maybe even Palm development). ‘Cause it’s just not the learning curve involved, but dealing with all these damn App Stores that are cropping up. You know every time Apple does something competitors copy it…badly. My head is hurting already!

No, I’ll spend my time improving my Ruby and Javascript skills. Maybe I’ll pick up Erlang and Clojure to stretch my brain a bit. I’ll DEFINITELY learn HTML5 and CSS3. But, I’ll let others tackle developing native apps for all these mobile devices; I’m sure I’ll even buy a few.

I’m sticking with The Web.