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.