Last January I wrote a TechCrunch post predicting the major programming trends of 2016.
But in the software development world, things can change very quickly. It can be difficult to see the high-level trends clearly through all the chatter about shiny new development languages, frameworks and tools.
So, as we near the end of 2016, how accurate were my predictions?
Backend as a service
Backend as a service, or BaaS, increased in 2016, as predicted. BaaS is the practice of using third-party services to perform certain repetitive tasks for a project — tasks like cloud storage or push notification. By using these services, developers can focus on their specialty while these services do what they do best. Backend API services are thriving because frontend frameworks are changing to more easily interact with these services. Developers are also increasingly using a technique called composition, where an overall system is composed of several smaller applications. In such a system, these small applications are easily provided by third-party services.
I’m intrigued to see how software norms will progress in the coming year.
Note: In my last post I mentioned a popular BaaS named Parse. Shortly after the article ran, Facebook (its owner) announced that Parse would soon be shut down. Those using it will need to create their own Parse servers and migrate before January 28, 2017.
Easy image management and deployment
Services like Docker and Packer became a mainstay of many development teams in 2016, as predicted. These services allow engineers to quickly generate and replicate machine images called containers that bundle a piece of software with runtime, system tools and libraries, etc., guaranteeing that it has everything it needs to run in any environment. Developers can rapidly prototype a project on a lightweight virtual environment with pre-built version control, then easily deploy the new version on multiple servers. Server provisioning by hand is inherently tricky and time-consuming, so it’s no surprise that automating this process has caught on quickly.
Related tools that grew in popularity last year include Vagrant (for easily setting up development environments), and Puppet, Chef and Ansible (for configuration management). Working with container-based systems has become an integral part of the standard developer’s toolkit. I see no reason for this to slow down.
Increased reliance on functional programming languages
Functional programming languages like Haskell, Clojure and Scala grew steadily in popularity during 2016. Usage of these server-side languages is driven by explosive growth in the number of smartphones and connected devices in use, and by our increased expectations of a great experience on those devices. As our computers, tablets, smartphones and IoT gadgets become more powerful, servers become the bottlenecks to performance. Increasing a server’s ability to perform concurrent tasks makes it more responsive when interacting with a large number of connected devices. The functional programming model is (mostly) stateless, meaning that sections of software can more easily and efficiently be run in parallel across different CPU cores or machines, without needing complex synchronization. This gives the functional paradigm an inherent edge over the object-oriented approach when doing concurrent processing such as web requests.
Shift toward material design and commonality of patterns
Things were interesting in 2016 on the visual design front. Not surprisingly, Google incorporated an increasing number of material design elements across its entire portfolio — systems (ChromeOS, Android), applications (Chrome, Drive, Google Play Music), websites (YouTube, AdSense) and even web search. We see material design aspects in Android apps from Slack, Twitter, Spotify, Airbnb and Wikipedia, and in websites from Asana, Geekbench and others. That said, we didn’t see adoption in other platforms (iOS, Tizen, Windows, MacOS — only a little with Ubuntu). Developers in these other places pushed forward with styles specific to those platforms, to varying extent.
I give myself only a few points of partial credit on that particular prediction from earlier this year. If I’m allowed to recast my design prediction for 2017, then I’ll move away from traditional design paradigms altogether — toward non-visual interfaces (Amazon Alexa, Siri, Cortana, Google Home) or extra-visual interfaces (augmented reality, virtual reality).