If hitting a target is hard and hitting a moving target is even harder, then creating a new hit technology is next to impossible because the shape and nature of the target morphs as it moves. Think of building a swish new laptop just as laptops are heading out of favor, or a must-have mobile app just as smartphones plateau, or a dynamite tablet experience just as the wearable future takes hold.
It's no secret that technology trends move fast -- and the tools and means for building those technologies constantly evolve. But if you don't lift your head up every once in a while to look past the next year's projects, you could end up coding yourself down an inescapable rabbit hole.
To help you prepare for -- or at least start contemplating -- a future that's screaming across the sky faster than we can see, we've compiled a dozen predictions about how the next five years of programming will shake out. Our crystal ball is very subjective, and some of the following conjectures might not prove universal. Some won't be fully realized in five years. Others are already true, but the extent of their truth is not as well-established or widely known as it will be fairly soon. Some may surface as half-truths because some faction of coders may take a different path. Some might even be flat-out wrong.Despite all of those caveats, there's truth here in the main. Read them quickly because the future is changing faster than we know
Future of programming prediction No. 1: GPUs will be the next CPUs
Remember the days when people bragged about the CPU in their box? Now even the best CPUs rarely cost more than $200, while fancy graphics cards routinely cost $500, $600, or much more. Gamers love to brag about the power of their graphics cards, not their CPUs, and that's driving the market.
The rest of the world is slowly catching on. More and more software uses the GPUs. True, some of these early forays are inherently graphical processes, like the work of Web browsers, but increasingly we're seeing applications that have nothing to do with drawing fancy pictures being rewritten to use the parallel architecture of GPUs. Physicists use them to study matter; chemists use them to study reactions; astronomers simulate the galaxy with graphics cards; biologists crunch statistics via GPUs for population studies. And for a while this year, I heated my office by using my GPU to mine bitcoins.
Practices like these will only become more widespread. Soon better compilers will make it possible to write code and let the compiler detect when it can run effectively on the GPU. The academic tools can already do this at a limited level, but it will become more popular when it is easier for everyone to do so with any project.
Bank your bitcoins on this one coming true.
Future of programming prediction No. 2: Databases will perform increasingly
Once programmers ceded control of data to something called a "database," they stopped being "programmers" and started being "database users." This isn't a bad thing. After all, databases are engineered to be more efficient at handling data than anything a normal human programmer can create, especially under tight deadline. They're also (usually) very efficient at using RAM and juggling the memory hierarchy. Dumping numbers into a database and letting the database do its thing is more often than not the most intelligent solution to dealing with data, and it's going to get even more intelligent as the databases themselves get more intelligent with time.
That's because databases of the future are certain to do more than just store numbers. Many database systems already have sophisticated report engines (aka "business intelligence"), and these extras will only become more powerful, enabling databases to run more sophisticated algorithms on tables, search more efficiently for patterns in the data, and do much of the work currently touted by the buzzword "big data."
This power and sophistication will be driven by the cost of moving data around. Simply extracting the information from the database and handing it to a separate "big data" package will become increasingly time consuming and require much more programming. Leaving the data in the database and letting its engine perform the analysis will be much faster because it will limit the overhead of communication, as well as decrease the amount of programming necessary to extract value from the data store.
Future of programming prediction No. 4: Android on every device
When the browser doesn't win, Android is close behind. Camera designers, threatened by cellphones with good lenses, started putting Android on cameras, so now you can run Instagram on a Nikon. Does that make Nikon a computer company now? Does it even matter?
There are Android refrigerators, car stereos, watches, televisions, even headphones. Some complain that the UI is too complicated because it can do too much, but that's missing the point. The UI layer can always be simplified. If Android is running underneath, the platform will dominate.
It's going to get even more complicated. PC manufacturers are looking at the burgeoning tablet world and feeling left out. Their solution is to run Android on Windows and let people use their Android apps on their desktops, too. Some just run the stock Android emulators used by programmers, but others are looking beyond that to create brands like "PC Plus." Once Android takes over the PC, it may combine with the browser to push Windows native apps into a distant third place for mindshare on the box.
Future of programming prediction No. 5: The Internet of things --
more platforms thanever
One side effect of Android (and Linux) colonizing the world is that more and more objects will be joining the Internet of things. Android on your refrigerator will mean the opportunity to write code for the refrigerator itself, whether it's an app for displaying kid art, some calorie-counting scold, or a recipe suggestion engine for what's left inside the ice box. Who knows?
Of all the many new platforms to come, the most important will be the car. Navigation and shopping are just the beginning. When the autonomous cars roll out, there will be even more opportunities for developers to cash in on car location and information.
The key is to figure out which new features are essential to the new domains. While operating systems like Android offer a unifying core, each platform will require customized features. Robotic toys, for instance, may need content filters to provide age-appropriate content. Thermostats will want to interact with the weather forecast. Building these APIs with the right features will be key to colonizing the Internet of things.
Future of programming prediction No. 6: Open source will find new ways to squeeze us
For all of the success of open source stacks like Android, Ubuntu, or MySQL, there remains a sticky problem with finding the revenue to support development. There are plenty of good stories about how open source code has helped hackers, but there aren't very many examples of how companies built a relatively stable ecology that let the programmers buy health care or food.
The vast majority of open source companies distribute what might better be called a demonstration version under an open source license. Then some kind of secret sauce is kept locked away to give the programmers something to bargain with. It's the way of the world. Why buy the cow if you can get the milk for free? The best open source projects will find a way to tighten the screws in a comfortable way without scaring away customers.
Future of programming prediction No. 7: WordPress Web apps will abound
The biggest mistake that the Obama administration made was trying to build its insurance exchange websites from scratch. No one does that any more. Why bother when you can add a plug-in to WordPress? If you're really picky, you could work with Joomla or Drupal. The point isn't really which platform, just the fact that there are fewer and fewer reasons to create your own Web apps because so much functionality is built into the dominant frameworks.
The game gets even more interesting when you start hacking the code. WordPress has its own editor built into it, so you can do your development inside WordPress, too. There's no debugger, but you can get around that. If WordPress adds a nice database browser like PHPMyAdmin and provides a bit of basic debugging tools, development will really accelerate.