“The exciting convergence of technology consumption and production models” is the topic of the next book Vinnie Mirchandani is working on (his last book had a good, optimistic take on the need for innovation). He recently asked about the role of developers in all that soup – at least I think that’s what he asked. I typed up the below in response, explaining something I’ve noticed of late: this is a really good time to be a software developer. But why?
One of my development friends, John Joseph Bachir, said something refreshingly optimistic at SXSW this year: “this is a great time to be a developer.” And he’s right: there’s a mixture of (a.) technology choice and diversity, (b.) a focus on simplifying technology to provide more frequent functionality, and, (c.) a huge extension of what a “computer” is, therefore, what you can program.
Years ago, I was suspicious of the “software is in everything” line from big vendors like IBM – when that story fit nicely with Rational buying Telelogic. But, now, the broader idea of “the Internet of things” is real enough to play around with, and, for some to do something meaningful with. There’s three high-level things that are driving this, and no doubt more:
(1.) Networking is everywhere and it finally works well enough
Whether it’s Internet, cellphones/smartphones, tablets, laptops, TVs, or whatever, the chances are any device can be online all the time and people can be “always on.” I have a Withings scale that has wifi built into it, for example. There’s cheesy things like the Chumby, and it really doesn’t seem like sci-fi ridicousluness to have your appliances wired up. A friend of mine showed me at our weekly breakfast how he could use his iPhone to turn lights on and off at his home.
We’ve had the potential for all of this for years – here in Austin, IBM (again!) has been well known for a decade (or more!) for having one of those “labs of the future” where the fridge tells you when you need to buy more milk. What’s exciting here is that this networking is in common devices, not just luxury ones. For example, we’d expect BMW to have iPod syncing and fancy bluetooth, but now low-end Fords have the same technology. This week Google threw its lot in with the home automation crew with Android@Home – we’ll see if they can finally be the ones that deliver on the home-front.
That Withings scale is terribly expensive, for a scale, but the price will enviably go down. Having the network everywhere first means that consumers can do more with their devices, hopefully doing new things – like turning their porch light on if they’re staying out on a late night bender. But it also throws gas on another fire:
(2.) Open systems are now more the norm than not
The rainbow and sandals crew (kisses!) did much work to build, explain, and then execute on the idea of open source. For all of the polemics, business-driven subterfuge (you gotta make a return on that VC money somehow!), and IP-crap that open source stews in, there was a key idea that’s become part of what it means to do programming now: every component should be open, if only just enough, for you to tinker with and extend it.
Completely closed systems are aborhent to programmers and they generally think they’re crap. Compare a cable box to a Google TV (or a Roku, if you prefer). Traditional cable boxes have all these lovely ports on them like USB ports, Firewire, HDMI, and such. But you can’t do anything with them. There’s no way to hook something up and play around with it. Newer Internet-TV boxes have “app store” equivalents where you can contribute channels, apps, and otherwise get in there and do something.
Services like Facebook and Twitter are examples of open platforms as well: all of the extra “plugins” and applications built on-top of those two communities help contribute to their overall value: just look at how Zynga has built on-top of Facebook – nevermind the money Zynga is making (for the point being made here), look at all the entertainment value people get out of it.
More nerdy things like REST vs. SOA and cloud vs. enterprise architecture show how more open systems are attractive and enabling for developers. Using simple, more open, REST-based (or, at least, inspired) APIs allows developers to innovate and extend existing software faster than top-down architected SOAs. The lower priced, anyone can come use it, nature of cloud allows developers to do the same with the infrastructure they need to deliver their applications: they don’t need to wait on the more cumbersome machinations (though, largely for safety-nets) that enterprise architecture and IT hoist in front of them.
And then there’s the more straight forward open source itself: there’s so much software, from top to bottom, that’s freely available to use as components, tools, and even applications that a programmer practically has too much choice.
In short: developers have more functionality available to them than in the past, and there are more outlets for their software, more ways to reach users.
(3.) The Return of Apple
These two things and others do a lot to lay the groundwork developers need for that developer renaissance John pointed to, but it was Apple that finally made it all happen. It’s easy to be an Apple fan-boy and glowing speak of them as if they could do no wrong. What Apple did, however, was reboot our expectations of what computers could do for us. Let’s be honest, before the iPhone, people pretty much thought computers were a neusense, were difficult,
expensive, slow, and overall a dancing bear (to crib from The Inmates Are Running the Asylum): you see a bear dancing, and you think it’s amazing, you gape at it…but compared to how well even a rudely trained human could dance, the bear’s skill is total crap.
We’d lived through decades of crappy desktop, web, and phone interfaces…