a16z Podcast - a16z Podcast: The Promise (and Nightmare) of Cross-Platform Software
Episode Date: June 6, 2014The announcement by Apple of its new programming language Swift is prompting developers to consider yet again how to tailor their efforts in the battle between iOS and Android. Benedict Evans and Stev...en Sinofsky discuss the questionable history of cross-platform software, and strategies for startups building apps today. How developers can build great apps on both of the largest mobile platforms. This platform question is one Sinofsky has been grappling with for a very long time, and which he also details in this post: http://blog.learningbyshipping.com/2013/07/08/juggling-multiple-platforms-and-the-bumpy-road-ahead/
Transcript
Discussion (0)
Hello and welcome to the A16Z podcast.
This is Benedict Evans. I'm here today with Steve Sinovsky.
We're going to spend a little bit more time thinking about what Apple announced yesterday at WWDC
in the context of some of the challenges that our portfolio companies face around development
and particularly cross-platform development.
So Steve, I was at WWDC yesterday.
I kind of experienced a moment where Apple started talking about a new programming language
and half of them went completely quiet and the other half went, wow, that's really,
really cool and I was in the half that was going completely quiet, I have no idea what
these people are talking about. But coming away from it, one of the things that you and I were
talking about is that Apple's doing quite a lot of stuff in one way, and Google is doing quite a lot
of stuff in another that doesn't really have an analogue on the other platform. So if you
were to look at, you know, Windows and Mac, you have a file picker, you have Windows, you have
scroll, you have a bunch of tools that basically have direct analogs on the other platform.
Whereas, as Apple does more, on the one hand, more and more stuff that's about the hardware
and Google does more and more stuff that's about the cloud, and Apple starts doing its own SDKs
that address the harder in particular ways and does iBeacon and so on, it feels like you might
be building an app that takes advantage of stuff that does, that Apple gives you, that actually
doesn't exist on Android, or vice versa.
So you can't really do an app that does the same thing on both.
What do you think about that?
Well, I mean, I think that first, good morning, everybody.
But I think that that's actually sort of this core challenge.
You know, at the heart, the goal of developing a platform, you know, has the side effect,
whether you think it's intended or otherwise, of making cross-platform development harder.
I mean, developers don't come into work every day thinking, how can we advantage our platform or not?
They actually come to work to develop new scenarios, new capabilities.
And what's fascinating, if you just look at the iOS and Android, you know, which is only two of the many platforms,
including web or Windows phone or Chrome that people are targeting,
you know,
they just have very different perspectives on the architecture,
on where to solve things.
You have Google very, very focused on cloud services and Apple
because of the nature of hardware.
You know, they focus on that seam between hardware and software.
And so that's just going to lead to a whole bunch of different features.
And so then you sit down to write an app,
and you're sort of like right away asking yourself these questions
about what to use where.
Yeah, historically, it's really super interesting because cross-platform sort of follows a very tried and true, well-understood pattern, which is early in the evolution of sort of what I would call like a meta-platform, like the new thing.
The new thing, whether it's the mainframe or the wearable or the mobile phone or the PC, all the platforms that are competing to win tend to look kind of the same.
so early in the PC era
most of the PC-ish platforms
I don't mean PC like DOS
I mean PC like thing with a microprocessor
Yeah they all had a box and a keyboard and a command line
And a command line and
the APIs were about
Drawing on a screen and black and white
And reading writing to a disc
And so they all have those
And all the vendors are trying to make those things
And then one day they all sort of make them
And then they start going
Well we have to do stuff that we want to do
and then they look to differentiate their products,
and then they look to, you know,
what's their view of the future?
And then pretty quickly, they all just start diverging.
And so then everybody was really comfortable.
Like, if you wanted to write a thing
that worked across all the early PCs,
abstracting out, like, basic graphics,
they're only like eight APIs to begin with.
And then file systems that were another eight.
And so it was pretty easy to come up with your own sort of abstraction.
And then all of a sudden, like,
the graphic system turns into, like,
a bitmap raster graphic system.
And then this whole platform thing starts all over again.
Everybody's like, okay, if we just use set pixel, then we can be cross-platform across all the raster systems.
And then all of a sudden, everybody starts doing their own visuals, their own controls, their own metaphors for windowing.
And then that kind of breaks down.
And then like really big abstract concepts happen, like networking or cross-application sharing.
And, you know, that all of a sudden it breaks down.
And we saw the same thing with the web.
You know, like the web had hopes of being.
cross-platform for everybody. And you looked at HTML and you said, oh, cool, I have to just
write a rendering engine for these 40 HTML tags. And that worked. And then all of a sudden,
people started adding other tags. And it got harder and harder and harder. And then there were
compatibility tests. And then the committee got together and said, we're going to do HTML 5. But then
right when that happened, the vendors started sort of saying, eh, we have other ideas. Like Google
had a very different idea because they were trying to build your entire computing experience
into the browser, not just the browser part of it. And so this,
pattern just keeps happening and i mean i think you can see that that inflection point very clearly now
with with um with smartphones because it feels like what happened is the original vision of seven years ago
has got built out and all the stuff that kind of should have been in that vision like you know
notifications and multitasking and so on has got done and it's all there and it's all been kind of
iterated through three or four versions and now you're kind of getting to the point we think yes
okay so we've got that platform and we've done like the stuff that should have been there but
what do we actually think about what they should look like in another first
five years time. I think the thing that was very striking about WWDC is this whole meme that
Apple doesn't get the cloud. And all the stuff that they were doing was about the cloud. All the new
features were about the cloud, but it was the cloud as a sort of invisible bit of plumbing that
drives a rich native app. Whereas, of course, for Google, it's exactly the other way around. And so
the thing I said on Twitter was that for Google, all hardware is just kind of dumb glass that links
back to their cloud. Whereas for Apple, the cloud is kind of dumb storage that supports their
platform. But the consequence of that is you have very, very different philosophies about what it is
that an app's supposed to be doing or how it's supposed to go about connecting to things or using
resources. Right. Absolutely. And then, of course, people come along and they think, like, you know,
when we talk to portfolio companies, they think about where they are today, and then they look at all
the work that's being done across the two, and they go, okay, well, we can find the 90% that is okay,
but it's actually the last 10% that makes the difference in a quality app experience on those
platforms or a quality, you know, back end and cloud experience. And so it's,
It's actually not so straightforward to even carve out like what's common anymore because what's common is essentially what the market is already defined as commoditized.
You know, like your basics of making calls and sending messages or even the basics of an app are all sort of commoditized.
And so as a startup or as a new app, what you have to do is you have to really, really focus on what your differentiation is going to be.
I mean, like, I take something like really as, as it could be either as thin or less relevant as you want it to be or it could be a huge thing, like home care.
So, you know, first, there's nothing like it on the Android platform.
So right away, if you make a device like light switches or whatever, and you're looking, you know, you probably already think, I'm going to build an app and it's going to have a big, you know, on off toggle, and I'm going to have rooms and a layout of my house and all this other stuff.
And then, you know, that looks great on Android and it looks great on iOS right this minute.
But then on iOS, you can say to Siri, hey, I'm going to bed.
Right.
Or you just, there's a whole app infrastructure for doing that, which then takes over some of.
of your UI. So if you're an established player, you're just going to stiff arm that whole thing
and hope it goes away. But while you're doing that, all of these new players are thinking,
this is such relief because now we don't have to hire a whole software team. We could go and make
Apple certified devices. We can build on the retail presence that Apple has to drive the devices.
We'll be in their stores. We'll be online. We'll be in their commercials. Like, there are actual
tangible benefits to building on the platform, like to you as a company. And so you're, you're
sort of squeezed if you think you're just going to ignore it, especially if Apple goes and
continues to double down and does more work and makes the experience better, integrates it
with Siri, integrates it at the Mac and does like a bigger, cooler dashboard. Who knows
what they're going to do? And that's just one of the things. I mean, you mentioned photos. So now
there's a way to integrate with photos in an even deeper way. So, you know, normal developers
go, oh, no big deal. I'm just going to build my own photo picker. I'll ask for permissions
to the library and I'll do my own thumbnails and enumerate the photos.
Well, except now your app doesn't look like Android or iOS,
and you could maybe try to copy them a little, but they're moving targets.
So I remember using Lotus Notes in a miserable period of my life.
And this was a period when it was kind of a poster boy for kind of questionable UI choices.
And one of the big drivers was you had the same Lotus Notes UI on every device you might own.
And the result was, A, it didn't look right on anything.
But B, just because the developer knows that it looks the same on every device, the users don't know it looks the same on every device.
Yeah.
Well, that's the whole thing.
I mean, cross-platform has always been this like dream of programmers, an empty promise from our industry, you know, and a nightmare for customers.
Because even today, like little things that you notice, like, you know, the fact that on iOS, the really marquee social apps are all just better than they are on Android.
Things like copy paste of images and sharing and integration with contacts all are much smoother and more seamless, even though Android is more extensible and open by some accounts.
And it's because that's where the focus has been on building a really great job.
And, you know, if you look back historically, like Lotus Notes was just one example.
Actually, my own first, my very first coding work at Microsoft back in the 80s, basically, was building cross platform.
And, you know, people have actually recently told me that some of that.
code still lives in the iPad OS iOS apps for Microsoft because it's this Mac.
And why did we do that library?
Well, because at the time, going back to your original thesis, you know, what
what differentiated Windows from the Mac was kind of not very much.
Like Windows were the sort of the same.
And what was weird is the feedback from Mac customers back during like that sort of
mid-90s era was that the Microsoft Mac apps were starting to diverge too much from the
the Mac platform. In fact, even very, very early on, the Microsoft Mac programs all had keyboard
shortcuts. Back when Mac software was not supposed to have keyboard shortcuts, that was a very
big quasi-religious debate about right-click and keyboard shortcuts. But Microsoft not only thought
they were just a better idea, we wanted to have them across all of the platforms consistently
because that was the value proposition, much like your Lotus Notes one. But then one day you
realize that cross-platform is a developer thing because no one person is cross-platform.
Yeah. I mean, it's a little bit different with mobile devices because you are much more
likely to go from an Android to an Android to an Android, but only every two years.
Well, every two years. Not every day. Yeah. And that still is likely to be an edge case,
although actually Apple was talking yesterday about all the people moving, which really gets
to the heart and soul of your decision framework from a business perspective as a, as a
as a startup or building a new app.
You know, because up until, like, just the past six months or so,
I think a lot of, and, you know, your expert on this,
but I think a lot of developers had a tendency to be developers
and look at these sort of broad aggregate numbers
and have big debates over aggregate share or run rate
or even fragmentation, when in fact you have to sort of drill down
when you're making a business choice.
Yeah, so, I mean, Apple, I'm guilty of this as anyone else.
I mean, they put up a chart yesterday where they said,
well, 80% of, 50% of Macs are running the latest version of Mac OS
and a much smaller proportion of PCs are running Windows 8.
But you think, okay, what is the absolute number of PCs that are running Windows 8?
I bet it's a awful lot more than the 80 million Macs that are out there.
So you have to kind of sit and think about your target market.
I mean, one can have a whole other conversation about this,
but it's one thing to say that there are, you know, as it might be a billion Android's,
Google androids as opposed to Chinese
Androids as it might be a billion
Androids in use at the moment
And there's maybe 400 million iPhones
500 million iPhones something like that
But then San Francisco is 60% iPhone
The USA is 50-50 iPhone now
Japan is over 50% iPhone now
And the rate of that chain
And that's swimming
Apple is gaining share in those markets
And then when you think
Okay Apple are only selling $600 devices
And Android is selling at a range of prices
So what is the deal?
distribution within those smartphone owners of people who really, really care about apps.
You know, the people who bought Galaxy S4 care about apps, but most of the
Android's being sold and not those devices, they're the devices you get when you go
into the store and don't care. So, you know, if you go to India or Indonesia or Vietnam or
China, you will get a load of really aggressive, highly engaged users on Android.
You go to San Francisco, you won't. You go to the USA, you're probably going to find
the two-thirds of the aggressive engaged users or an iPhone. So those aggregate market share numbers
tell you, they tell you relatively little because what they're really just telling you is,
look, everybody on earth is going to have a smartphone. And some of those people are going to be
worse more than others and some of them are going to be in different places. So when you make
those platform decisions, yes, there is that API, but it's, how does that API relate to the customers
that you want to use? Yeah. How do those development choices relate to the addressable market?
I mean, like, even if you're doing, you know, something, you know, high-end retail oriented, you know,
if you're doing an app for a high-end retail brand,
it's sort of in the U.S. market,
it's sort of a crazy idea to think you need the Android one first or best
when you already know the demographics of the iOS customer.
But conversely, you're doing a communication app
that you're likely to release in Western Europe or China first.
You'd sort of be crazy to do it on iOS first.
Yeah, so I have a slide with a kind of a pyramid and an inverted pyramid,
and the pyramid is, you know, you've got a small portion of the population
that thinks, wow, I can't wait to see what new I-Beacon apps are coming out.
You know, I can't wait to see what new intents
and what cool new stuff is going to be done on Android.
You've got a big chunk of people in the middle who don't really care,
and then you've got another big chunk of people at the bottom.
And then when you look at the new technologies,
the really new cutting-edge stuff applies to a relatively small portion of the base.
So you've got to kind of make that decision, well, you know,
if you are Tiffany's, then I-Beacon is really exciting.
if you're McDonald's, maybe not, and that applies to cross all of this stuff.
So, you know, the cutting edge, you know, in a sense, if you're going for the lowest common
denominator of customers, the lowest common denominator of development tools and of APIs
and of technologies is probably going to be the best as well.
If you're going for those specific segments, then focusing on one platform or one platform's
tool is going to work better.
Yeah, I definitely think that, you know, just sort of to wrap up, but like, you know,
certainly if I were thinking about this now, I'd be very focused on figuring out who are
customers are as the driver for this, as opposed to sort of aggregate market data or geographic
data that could really confuse you into things. But I would also say, like, we're only at
the very beginning. This really is almost at a tipping point of these platforms. And so it's very
likely that things are going to get more difficult and diverge even more, probably even more
quickly. Like, we don't even know, you know, Android's up next. Yeah, I mean, we have no idea what
Android's going to be in five years time. And, you know, my feeling yesterday was this is almost like
iOS 2.
you know there's just such a big change in philosophy and you know and this is one where I kind of
want to just you know this is not a new pattern you know developers love patterns and this is not a
new pattern we have seen this movie before so just encourage everybody to really think hard about
you know this least common denominator or trying to thread the needle because historically it's
put you at a disadvantage over time to your domain specific competitors and so if you've got the
opportunity to either focus on one platform or treat it almost like you're building two products
and really, really focus your energy on being great on both.
And I think that's just going to be the sustainable competitive advantage
for any company building mobile apps right now.
Yep.
So, Steve, thank you very much.
That was really interesting.
We're going to carry on trying to work out what we think about this.
Sure.
And also follow this one on Twitter because I bet there are some strong opinions.
And we'll also post a link to a pretty long blog post I had a while back on cross-platform development.
Thanks a lot.
Great.