Manycore Tsunami: You cannot develop software for manycore using today’s mainstream concurrency models. I know I sound like a broken record on this, but too many people have stuck their heads in the sand and are willfully ignoring an enormous problem. Writing manycore programs is going to be the hardest technical challenge in your career: harder than understanding object-oriented or functional programming, harder than browser incompatibilities, harder than tracking down memory leaks in a C program.
Declarative Tier-Splitting: From the mind that brought you LINQ comes declarative tier-splitting, in which you write all your code for a Web application in a single location and use attributes to let the compiler know “this needs to run in the browser, that needs to run on the server.” Erik Meijer’s Volta, Microsoft’s first foray into declarative tier-splitting, has gone dark, but the concept is being kicked around by some open-source developers, and I strongly suspect that Volta is being reworked and evolved rather than being abandoned.
Multicore Smartphones with Managed Runtimes: If you think this is a trivial prediction, consider that right now the iPhone 3GS is actually deliberately underclocked to preserve battery life (the 3GS runs an 833MHz-rated Samsung S5PC100 at 600MHz). I do not anticipate a breakthrough in battery technology, and people are only going to expect to push more and more media pixels through their phones (hey, is it too late to coin the term “vexting” for transmitting short videos?). Yet pockets are only so big. I’m not a hardware guy, so I won’t Moore’s Law this and Amdahl’s Law that. Instead, I’ll just say that I expect consumer demand to trump hardware difficulty.
As to the “managed” aspect, there’s no going back from the iPhone’s App Store: Mobile development is only going to become more and more important for developers. “Available on a smartphone” is a low-priority wishlist item for most business applications today, but it won’t remain low-priority for long.
Well before the end of the decade, mobile development will be as mainstream as Web development is today, and platform manufacturers like Microsoft will have no choice to fully align mobile, Web and native development.
No Silver Bullets: I don’t think anyone will pass Fred Brooks’ benchmark of “a single development, in either technology or in management technique, that by itself promises even one order-of-magnitude improvement in productivity.” It is just too great a threshold, and Brooks was right in identifying the conception, not the implementation, as the essential challenge of development.
But I am sure that the incremental development of great tools and techniques will deliver that order-of-magnitude improvement over the course of the decade. And I am sure that the task of software development will become ever more enjoyable and satisfying. That, too, is part of its essence.
Larry O’Brien is a technology consultant, analyst and writer. Read his blog at www.knowing.net.