The Breathtaking Future of Software Development — It’s Already Here!
"The future is already here — it's just not very evenly distributed" — William Gibson
I recently drove a Tesla for the first time. As a kid that grew up in a car dealership (my father and grandfather both owned one) I grew up with a love of cars, speed, and pushing limits. Driving that Tesla changed everything; as a developer I'm starting to feel a experience a similar set of feelings. Developers love change — and technology provides a constant stream of bright shiny objects for us to chase. Fortunately we're being blessed by many of these objects to chase lately — to the point that the current velocity of change _around everything we do_ is starting to take my breath away! I equate it to driving a Tesla at the edge of ludicrous mode; incredibly exciting with the knowledge that one false step means sure peril. The areas that are currently exciting me are:
The Web plumbing is changing. Earlier this year the Internet Archive put out a call to help building the new distributed web. They point to a number of challenges around the current web — it's fragile, not reliable, not private, and needs a way to keep track of changes over time. Fortunately some early options are appearing about that I'm digging into, particularly Ethereum, IPFS, Blockchain, and HTTP/2. Each of these brings significant change to how we build, deploy, and scale applications.
Traditional application architectures are being challenged. SOA is dead, long live service oriented architectures! Microservices are all the rage right now, but I feel like it's a lot of hype around something we should have been doing all along. What really excites me (just ask those that have to listen to me every day) is flux, from facebook, which directly challenges model-view-controller patterns that most developers my age have leaned on forever. Additionally services like Meteor allow developers to focus on building application value while providing the architecture underpinings.
Software languages are evolving. JavaScript, JSX, Scala, Haskell, oh my! Not many things make me happier than geeking out about programming languages, so all the recent calls I've taken on them have kept me happily employed. One of the very big shifts happening in computer science is the functional programming evolution. This is not a new style, languages like Lisp have been using it for years. But the growing acceptance of event-driven programming (driven in large part by JavaScript and Node.js), the growth of Scala and similar features appearing in Java 8 and 9, and services like AWS Lambda are all bringing functional programming to the forefront. This is something that will happen, the only question is when.