Well, friends, another year has come and gone, and it's time for me to put my crystal
ball into place and see what the upcoming year has for us. But, of course, in the
long-standing tradition of these predictions, I also need to put my spectacles on
(I did turn 40 last year, after all) and have a look at how well I did in
this same activity twelve months ago.>
Let's see what unbelievable gobs of hooey I slung last year came even remotely to
pass. For 2011, I said....
THEN: Android’s penetration into the mobile space is going to
rise, then plateau around the middle of the year. Android phones, collectively,
have outpaced iPhone sales. That’s a pretty significant statistic—and it means that
there’s fewer customers buying smartphones in the coming year. More importantly, the
first generation of Android slates (including the Galaxy Tab, which I own), are less-than-sublime,
and not really an “iPad Killer” device by any stretch of the imagination. And I think
that will slow down people buying Android slates and phones, particularly since Google
has all but promised that Android releases will start slowing down.
NOW: Well, I think I get a point for saying that Android's penetration
will rise... but then I lose it for suggesting that it would slow down. Wow, was I
wrong on that. Once Amazon put the Kindle Fire out, suddenly for the first time Android
tablets began to appear in peoples' hands in record numbers. The drawback here is
that most people using the Fire don't realize it's an Android tablet, which certainly
hurts Google's brand-awareness (not that Amazon really seems to mind), but the upshot
is simple: people are still buying devices, even though they may already own one.
Which amazes me.
THEN: Windows Phone 7 penetration into the mobile space will
appear huge, then slow down towards the middle of the year. Microsoft is getting
some pretty decent numbers now, from what I can piece together, and I think that’s
largely the “I love Microsoft” crowd buying in. But it’s a pretty crowded place right
now with Android and iPhone, and I’m not sure if the much-easier Office and/or Exchange
integration is enough to woo consumers (who care about Office) or business types (who
care about Exchange) away from their Androids and iPhones.
NOW: Despite the catastrophic implosion of RIM (thus creating a huge
market of people looking to trade their Blackberrys in for other mobile phones, ones
which won't all go down when a RIM server implodes), WP7 has definitely not emerged
as the "third player" in the mobile space; or, perhaps more precisely, they feel like
a distant third, rather than a creditable alternative to the other two. In fact, more
and more it just feels like this is a two-horse race and Microsoft is in it still
because they're willing to throw loss after loss to stay in it. (For what reason,
I'm not sure--it's not clear to me that they can ever reach a point of profitability
here, even once Nokia makes the transition to WP7, which is supposedly going to take
years. On the order of a half-decade or so.) Even living here in Redmon, where I would
expect the WP7 concentration to be much, much higher than anywhere else in the world,
it's still more common to see iPhones and 'droids in peoples' hands than it is to
see WP7 phones.
THEN: Android, iOS and/or Windows Phone 7 becomes a developer
requirement. Developers, if you haven’t taken the time to learn how to program
one of these three platforms, you are electing to remove yourself from a growing market
that desperately wants people with these skills. I see the “mobile native app development”
space as every bit as hot as the “Internet/Web development” space was back in 2000.
If you don’t have a device, buy one. If you have a device, get the tools—in all three
cases they’re free downloads—and start writing stupid little apps that nobody cares
about, so you can have some skills on the platform when somebody cares about it.
NOW: Wow, yes. Right now, if you are a developer and you haven't
spent at least a little time learning mobile development, you are excluding yourself
from a development "boom" that rivals the one around Web sites in the mid-90's. Seriously:
remember when everybody had to have a website? That's the mentality right now with
a ton of different companies--"we have to have a mobile app!" "But we sell condom
lubricant!" "Doesn't matter! We need a mobile app! Build us something! Go go go go
THEN: The Windows 7 slates will suck. This isn’t a prediction,
this is established fact. I played with an “ExoPC” 10” form factor slate running Windows
7 (Dell I think was the manufacturer), and it was a horrible experience. Windows 7,
like most OSes, really expects a keyboard to be present, and a slate doesn’t have
one—so the OS was hacked to put a “keyboard” button at the top of the screen that
would slide out to let you touch-type on the slate. I tried to fire up Notepad and
type out a haiku, and it was an unbelievably awkward process. Android and iOS clearly
own the slate market for the forseeable future, and if Dell has any brains in its
corporate head, it will phone up Google tomorrow and start talking about putting Android
on that hardware.
NOW: Yeah, that was something of a "gimme" point (but I'll take it).
Windows7 on a slate was a Bad Idea, and I'm pretty sure the sales reflect that. Conduct
your own anecdotal poll: see if you can find a store somewhere in your town or city
that will actually sell you a Windows7 slate. Can't find one? I can--it's the Microsoft
store in town, and I'm not entirely sure they still stock them. Certainly our local
Best Buy doesn't.
THEN: DSLs mostly disappear from the buzz. I still see no
strawman (no “pet store” equivalent), and none of the traditional builders-of-strawmen
(Microsoft, Oracle, etc) appear interested in DSLs much anymore, so I think 2010 will
mark the last year that we spent any time talking about the concept.
NOW: I'm going to claim a point here, too. DSLs have pretty much
left us hanging. Without a strawman for developers to "get", the DSL movement has
more or less largely died out. I still sometimes hear people refer to something that
isn't a programming language but does something technical as a "DSL" ("That shipping
label? That's a DSL!"), and that just tells me that the concept never really took
THEN: Facebook becomes more of a developer requirement than before. I
don’t like Mark Zuckerburg. I don’t like Facebook’s privacy policies. I don’t particularly
like the way Facebook approaches the Facebook Connect experience. But Facebook owns
enough people to be the fourth-largest nation on the planet, and probably commands
an economy of roughly that size to boot. If your app is aimed at the Facebook demographic
(that is, everybody who’s not on Twitter), you have to know how to reach these people,
and that means developing at least some part of your system to integrate with it.
NOW: Facebook, if anything, has become more important through 2011,
particularly for startups looking to get some exposure and recognition. Facebook continues
to screw with their user experience, though, and they keep screwing with their security
policies, and as "big" a presence as they have, it's not invulnerable, and if they're
not careful, they're going to find themselves on the other side of the relevance curve.
THEN: Twitter becomes more of a developer requirement, too. Anybody
who’s not on Facebook is on Twitter. Or dead. So to reach the other half of the online
community, you have to know how to connect out with Twitter.
NOW: Twitter's impact has become deeper, but more muted in some ways--people
don't think of Twitter as a "new" channel, but one that they've come to expect and
get used to. At the same time, how Twitter is supposed to factor into different applications
isn't always clear, which hinders Twitter's acceptance and "must-have"-ness. Of course,
Twitter could care less, it seems, though it still confuses me how they actually make
THEN: XMPP becomes more of a developer requirement. XMPP hasn’t crossed
a lot of people’s radar screen before, but Facebook decided to adopt it as their chat
system communication protocol, and Google’s already been using it, and suddenly there’s
a whole lotta traffic going over XMPP. More importantly, it offers a two-way communication
experience that is in some scenarios vastly better than what HTTP offers, yet running
in a very “Internet-friendly” way just as HTTP does. I suspect that XMPP is going
to start cropping up in a number of places as a useful alternative and/or complement
to using HTTP.
NOW: Well, unfortunately, XMPP still hides underneath other names
and still doesn't come to mind when people are thinking about communication, leaving
this one way unfulfilled. *sigh* Maybe someday we will learn that not everything has
to go over HTTP, but it didn't happen in 2011.
THEN: “Gamification” starts making serious inroads into non-gaming
systems. Maybe it’s just because I’ve been talking more about gaming, game design,
and game implementation last year, but all of a sudden “gamification”—the process
of putting game-like concepts into non-game applications—is cresting in a big way.
FourSquare, Yelp, Gowalla, suddenly all these systems are offering achievement badges
and scoring systems for people who want to play in their worlds. How long is it before
a developer is pulled into a meeting and told that “we need to put achievement badges
into the call-center support application”? Or the online e-commerce portal? It’ll
start either this year or next.
NOW: Gamification is emerging, but slowly and under the radar. It's
certainly not as strong as I thought it would be, but gamification concepts are sneaking
their way into a variety of different scenarios (beyond games themselves). Probably
can't claim a point here, no.
THEN: Functional languages will hit a make-or-break point. I know,
I said it last year. But the buzz keeps growing, and when that happens, it usually
means that it’s either going to reach a critical mass and explode, or it’s going to
implode—and the longer the buzz grows, the faster it explodes or implodes, accordingly.
My personal guess is that the “F/O hybrids”—F#, Scala, etc—will continue to grow until
they explode, particularly since the suggested v.Next changes to both Java and C#
have to be done as language changes, whereas futures for F# frequently are either
built as libraries masquerading as syntax (such as asynchronous workflows, introduced
in 2.0) or as back-end library hooks that anybody can plug in (such as type providers,
introduced at PDC a few months ago), neither of which require any language revs—and
no concerns about backwards compatibility with existing code. This makes the F/O hybrids
vastly more flexible and stable. In fact, I suspect that within five years or so,
we’ll start seeing a gradual shift away from pure O-O systems, into systems that use
a lot more functional concepts—and that will propel the F/O languages into the center
of the developer mindshare.
NOW: More than any of my other predictions (or subjects of interest),
functional languages stump me the most. On the one hand, there doesn't seem to be
a drop-off of interest in the subject, based on a variety of anecdotal evidence (books,
articles, etc), but on the other hand, they don't seem to be crossing over into the
"mainstream" programming worlds, either. At best, we can say that they are entering
the mindset of senior programmers and/or project leads and/or architects, but certainly
they don't seem to be turning in to the "go-to" language for projects being done in
THEN: The Microsoft Kinect will lose its shine. I hate to
say it, but I just don’t see where the excitement is coming from. Remember when the
Wii nunchucks were the most amazing thing anybody had ever seen? Frankly, after a
slew of initial releases for the Wii that made use of them in interesting ways, the
buzz has dropped off, and more importantly, the nunchucks turned out to be just another
way to move an arrow around on the screen—in other words, we haven’t found particularly
novel and interesting/game-changing ways to use the things. That’s what I think will
happen with the Kinect. Sure, it’s really freakin’ cool that you can use your body
as the controller—but how precise is it, how quickly can it react to my body movements,
and most of all, what new user interface metaphors are people going to have to come
up with in order to avoid the “me-too” dancing-game clones that are charging down
the pipeline right now?
NOW: Kinect still makes for a great Christmas or birthday present,
but nobody seems to be all that amazed by the idea anymore. Certainly we aren't seeing
a huge surge in using Kinect as a general user interface device, at least not yet.
Maybe it needed more time for people to develop those new metaphors, but at the same
time, I would've expected at least a few more games to make use of it, and I haven't
seen any this past year.
THEN: There will be no clear victor in the Silverlight-vs-HTML5
war. And make no mistake about it, a war is brewing. Microsoft, I think, finds
itself in the inenviable position of having two very clearly useful technologies,
each one’s “sphere of utility” (meaning, the range of answers to the “where would
I use it?” question) very clearly overlapping. It’s sort of like being a football
team with both Brett Favre and Tom Brady on your roster—both of them are superstars,
but you know, deep down, that you have to cut one, because you can’t devote the same
degree of time and energy to both. Microsoft is going to take most of 2011 and probably
part of 2012 trying to support both, making a mess of it, offering up conflicting
rationale and reasoning, in the end achieving nothing but confusing developers and
harming their relationship with the Microsoft developer community in the process.
Personally, I think Microsoft has no choice but to get behind HTML 5, but I like a
lot of the features of Silverlight and think that it has a lot of mojo that HTML 5
lacks, and would actually be in favor of Microsoft keeping both—so long as they make
it very clear to the developer community when and where each should be used. In other
words, the executives in charge of each should be locked into a room and not allowed
out until they’ve hammered out a business strategy that is then printed and handed
out to every developer within a 3-continent radius of Redmond. (Chances of this happening:
NOW: Well, this was accurate all the way up until the last couple
of months, when Microsoft made it fairly clear that Silverlight was being effectively
"put behind" HTML 5, despite shipping another version of Silverlight. In the meantime,
though, they've tried to support both (and some Silverlighters tell me that the Silverlight
team is still looking forward to continuing supporting it, though I'm not sure at
this point what is rumor and what is fact anymore), and yes, they confused the hell
out of everybody. I'm surprised they pulled the trigger on it in 2011, though--I expected
it to go a version or two more before they finally pulled the rug out.
THEN: Apple starts feeling the pressure to deliver a developer
experience that isn’t mired in mid-90’s metaphor. Don’t look now, Apple, but
a lot of software developers are coming to your platform from Java and .NET, and they’re
bringing their expectations for what and how a developer IDE should look like, perform,
and do, with them. Xcode is not a modern IDE, all the Apple fan-boy love for it notwithstanding,
and this means that a few things will happen:
Eclipse gets an iOS plugin. Yes, I know, it wouldn’t work (for the most part)
on a Windows-based Eclipse installation, but if Eclipse can have a native C/C++ developer
experience, then there’s no reason why a Mac Eclipse install couldn’t have an Objective-C
plugin, and that opens up the idea of using Eclipse to write iOS and/or native Mac
apps (which will be critical when the Mac App Store debuts somewhere in 2011 or 2012).
Rumors will abound about Microsoft bringing Visual Studio to the Mac. Silverlight
already runs on the Mac; why not bring the native development experience there? I’m
not saying they’ll actually do it, and certainly not in 2011, but the rumors, they
will be flyin….
Other third-party alternatives to Xcode will emerge and/or grow. MonoTouch
is just one example. There’s opportunity here, just as the fledgling Java IDE market
looked back in ‘96, and people will come to fill it.
NOW: Xcode 4 is "better", but it's still not what I would call comparable
to the Microsoft Visual Studio or JetBrains IDEA experience. LLVM is definitely a
better platform for the company's development efforts, long-term, and it's encouraging
that they're investing so heavily into it, but I still wish the overall development
experience was stronger. Meanwhile, though, no Eclipse plugin has emerged (that I'm
aware of), which surprised me, and neither did we see Microsoft trying to step into
that world, which doesn't surprise me, but disappoints me just a little. I realize
that Microsoft's developer tools are generally designed to support the Windows operating
system first, but Microsoft has to cut loose from that perspective if they're going
to survive as a company. More on that later.
THEN: NoSQL buzz grows. The NoSQL movement, which sort of
got started last year, will reach significant states of buzz this year. NoSQL databases
have a lot to offer, particularly in areas that relational databases are weak, such
as hierarchical kinds of storage requirements, for example. That buzz will reach a
fever pitch this year, and the relational database moguls (Microsoft, Oracle, IBM)
will start to fight back.
NOW: Well, the buzz certainly grew, and it surprised me that the
big storage guys (Microsoft, IBM, Oracle) didn't do more to address it; I was expecting
features to emerge in their database products to address some of the features present
in MongoDB or CouchDB or some of the others, such as "schemaless" or map/reduce-style
Overall, it appears I'm running at about my usual 50/50 levels of prognostication.
So be it. Let's see what the ol' crystal ball has in mind for 2012:
Lisps will be the languages to watch. With Clojure leading the way, Lisps
(that is, languages that are more or less loosely based on Common Lisp or one of its
variants) are slowly clawing their way back into the limelight. Lisps are both functional
languages as well as dynamic languages, which gives them a significant reason for
interest. Clojure runs on top of the JVM, which makes it highly interoperable with
other JVM languages/systems, and Clojure/CLR is the version of Clojure for the CLR
platform, though there seems to be less interest in it in the .NET world (which is
a mistake, if you ask me).
Functional languages will.... I have no idea. As I said above, I'm kind of
stymied on the whole functional-language thing and their future. I keep thinking they
will either "take off" or "drop off", and they keep tacking to the middle, doing neither,
just sort of hanging in there as a concept for programmers to take and run with. Mind
you, I like functional languages, and I want to see them become mainstream, or at
least more so, but I keep wondering if the mainstream programming public is ready
to accept the ideas and concepts hiding therein. So this year, let's try something
different: I predict that they will remain exactly where they are, neither "done"
nor "accepted", but continue next year to sort of hang out in the middle.
F#'s type providers will show up in C# v.Next. This one is actually a "gimme",
if you look across the history of F# and C#: for almost every version of F# v."N",
features from that version show up in C# v."N+1". More importantly, F# 3.0's type
provider feature is an amazing idea, and one that I think will open up language research
in some very interesting ways. (Not sure what F#'s type providers are or
what they'll do for you? Check out Don
Syme's talk on it at BUILD last year.)
Windows8 will generate a lot of chatter. As 2012 progresses, Microsoft will
try to force a lot of buzz around it by keeping things under wraps until various points
in the year that feel strategic (TechEd, BUILD, etc). In doing so, though, they will
annoy a number of people by not talking about them more openly or transparently. What's
Windows8 ("Metro")-style apps won't impress at first. The more I think about
it, the more I'm becoming convinced that Metro-style apps on a desktop machine are
going to collectively underwhelm. The UI simply isn't designed for keyboard-and-mouse
kinds of interaction, and that's going to be the hardware setup that most people first
experience Windows8 on--contrary to what (I think) Microsoft thinks, people do not
just have tablets laying around waiting for Windows 8 to be installed on it, nor are
they going to buy a Windows8 tablet just to try it out, at least not until it's gathered
some mojo behind it. Microsoft is going to have to finesse the messaging here very,
very finely, and that's not something they've shown themselves to be particularly
good at over the last half-decade.
Scala will get bigger, thanks to Heroku. With the adoption of Scala and Play
for their Java apps, Heroku is going to make Scala look attractive as a development
platform, and the adoption of Play by Typesafe (the same people who brought you Akka)
means that these four--Heroku, Scala, Play and Akka--will combine into a very compelling
and interesting platform. I'm looking forward to seeing what comes of that.
Cloud will continue to whip up a lot of air. For all the hype and money spent
on it, it doesn't really seem like cloud is gathering commensurate amounts of traction,
across all the various cloud providers with the possible exception of Amazon's cloud
system. But, as the different cloud platforms start to diversify their platform technology
(Microsoft seems to be leading the way here, ironically, with the introduction of
Java, Hadoop and some limited NoSQL bits into their Azure offerings), and as we start
to get more experience with the pricing and costs of cloud, 2012 might be the year
that we start to see mainstream cloud adoption, beyond "just" the usage patterns we've
seen so far (as a backing server for mobile apps and as an easy way to spin up startups).
Android tablets will start to gain momentum. Amazon's Kindle Fire has hit
the market strong, definitely better than any other Android-based tablet before it.
The Nooq (the Kindle's principal competitor, at least in the e-reader world) is also
an Android tablet, which means that right now, consumers can get into the Android
tablet world for far, far less than what an iPad costs. Apple rumors suggest that
they may have a 7" form factor tablet that will price competitively (in the $200/$300
range), but that's just rumor right now, and Apple has never shown an interest in
that form factor, which means the 7" world will remain exclusively Android's (at least
for now), and that's a nice form factor for a lot of things. This translates well
into more sales of Android tablets in general, I think.
Apple will release an iPad 3, and it will be "more of the same". Trying to
predict Apple is generally a lost cause, particularly when it comes to their vaunted
iOS lines, but somewhere around the middle of the year would be ripe for a new iPad,
at the very least. (With the iPhone 4S out a few months ago, it's hard to imagine
they'd cannibalize those sales by releasing a new iPhone, until the end of the year
at the earliest.) Frankly, though, I don't expect the iPad 3 to be all that big of
a boost, just a faster processor, more storage, and probably about the same size.
Probably the only thing I'd want added to the iPad would be a USB port, but that conflicts
with the Apple desire to present the iPad as a "device", rather than as a "computer".
(USB ports smack of "computers", not self-contained "devices".)
Apple will get hauled in front of the US government for... something. Apple's
recent foray in the legal world, effectively informing Samsung that they can't make
square phones and offering advice as to what will avoid future litigation, smacks
of such hubris and arrogance, it makes Microsoft look like a Pollyanna Pushover by
comparison. It is pretty much a given, it seems to me, that a confrontation in the
legal halls is not far removed, either with the US or with the EU, over anti-cometitive
behavior. (And if this kind of behavior continues, and there is no legal action, it'll
be pretty apparent that Apple has a pretty good set of US Congressmen and Senators
in their pocket, something they probably learned from watching Microsoft and IBM slug
it out rather than just buy them off.)
IBM will be entirely irrelevant again. Look, IBM's main contribution to the
Java world is/was Eclipse, and to a much lesser degree, Harmony. With Eclipse more
or less "done" (aside from all the work on plugins being done by third parties), and
with IBM abandoning Harmony in favor of OpenJDK, IBM more or less removes themselves
from the game, as far as developers are concerned. Which shouldn't really be surprising--they've
been more or less irrelevant pretty much ever since the mid-2000s or so.
Oracle will "screw it up" at least once. Right now, the Java community is
poised, like a starving vulture, waiting for Oracle to do something else that demonstrates
and befits their Evil Emperor status. The community has already been quick (far too
quick, if you ask me) to highlight Oracle's supposed missteps, such as the JVM-crashing
bug (which has already been fixed in the _u1 release of Java7, which garnered no attention
from the various Java news sites) and the debacle around Hudson/Jenkins/whatever-the-heck-we-need-to-call-it-this-week.
I'll grant you, the Hudson/Jenkins debacle was deserving of ire, but Oracle is hardly
the Evil Emperor the community makes them out to be--at least, so far. (I'll admit
it, though, I'm a touch biased, both because Brian Goetz is a friend of mine and because
Oracle TechNet has asked me to write a column for them next year. Still, in the spirit
of "innocent until proven guilty"....)
VMWare/SpringSource will start pushing their cloud solution in a major way. Companies
like Microsoft and Google are pushing cloud solutions because Software-as-a-Service
is a reoccurring revenue model, generating revenue even in years when the product
hasn't incremented. VMWare, being a product company, is in the same boat--the only
time they make money is when they sell a new copy of their product, unless they can
start pushing their virtualization story onto hardware on behalf of clients--a.k.a.
"the cloud". With SpringSource as the software stack, VMWare has a more-or-less complete
cloud play, so it's surprising that they didn't push it harder in 2011; I suspect
they'll start cramming it down everybody's throats in 2012. Expect to see Rod Johnson
talking a lot about the cloud as a result.
to care but me) is gaining all kinds of steam as a mainstream development language
(as opposed to just-a-browser language), particularly with the release of NodeJS.
That hype will continue to escalate, and by the end of the year we may start to see
a backlash against it. (Speaking personally, NodeJS is an interesting solution, but
suggesting that it will replace your Tomcat or IIS server is a bit far-fetched; event-driven
I/O is something both of those servers have been doing for years, and the rest of
language inside both servers, as Sun demonstrated years ago with their "Phobos" project--not
that anybody really cared back then.)
NoSQL buzz will continue to grow, and by years' end will start to generate a backlash. More
and more companies are jumping into NoSQL-based solutions, and this trend will continue
to accelerate, until some extremely public failure will start to generate a backlash
against it. (This seems to be a pattern that shows up with a lot of technologies,
so it seems entirely realistic that it'll happen here, too.) Mind you, I don't mean
to suggest that the backlash will be factual or correct--usually these sorts of things
come from misuing the tool, not from any intrinsic failure in it--but it'll generate
some bad press.
Ted will thoroughly rock the house during his CodeMash keynote. Yeah, OK,
that's more of a fervent wish than a prediction, but hey, keep a positive attitude
and all that, right?
Ted will continue to enjoy his time working for Neudesic. So far, it's been
great working for these guys, and I'm looking forward to a great 2012 with them. (Hopefully
this will be a prediction I get to tack on for many years to come, too.)
I hope that all of you have enjoyed reading these, and I wish you and yours a very
merry, happy, profitable and fulfilling 2012. Thanks for reading.
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. Contact
me for details