Significant Software Development Developments of 2016

Significant Software Development Developments of 2016
Significant Software Development Developments of 2016
With the new year still fresh, let's look back at what happened in 2016, including a roller coaster ride for Java loyalists, a big focus on security, and more.

This post is my personal and opinionated assessment of some of the most significant developments related to software development in 2016. This is my tenth year for this annual post and my previous years' assessment are available for 2015 , 2014 , 2013 , 2012 , 2011 , 2010 , 2009 , 2008 , and 2007 . As with these previous years' assessments, this assessment of 2016's major developments in software development are obviously biased, opinionated, and limited to my perspective.

10. Tumultuous Year for Java

Java and the JVM are used by a significant percentage of software developers worldwide. With the increasing adoption of Java 8 and the enthusiasm Java 8 has helped to reinvigorate among Java developers, Java SE and the JVM seem well positioned for the future. Unfortunately, Java EE faced more issues in 2016. 2016 saw the rise of the Java EE Guardians in response to a lack of news from Oracle regarding the future of Java EE. Oracle eventually did respond in advance of JavaOne 2016 with plans for Java EE 8 being more cloud and microservices oriented. Oracle has also stated that their survey of Java EE developers has shown that REST and HTTP/2 support are of prime importance.

Even Java SE did not survive 2016 unscathed. In this last month of 2016, an article appeared in The Register called Oracle finally targets Java non-payers - six years after plucking Sun stated, "Java SE can be free, although Java SE Advanced Desktop, Advanced and Suite are not. ... There's also no way to separate the paid-for Java SE component products from the free Java SE umbrella at download as Oracle doesn't offer separate installations – they're all bundled together and that leads to confusion and mistakes down the line when paid-for features are unexpectedly used." Several articles and posts have tried to add clarifying details, but all of these together do leave the impression that it's a licensing situation that is more difficult than it should be. Other posts on the subject include Java SE Offerings , The Sky Is Falling: Oracle (Might) Want Your Money for Java SE in 2017 , and Java Champions response to The Register Article on Java SE usage .

9. DevOps

Although the DevOps concept has been around for a while now, it's gained popularity with the "suits" (management) and the term is thrown around in all types of contexts. Software product vendors emphasize how their products continue to DevOps and software development requisitions and job listings are filled with references to experience with DevOps.

8. Angular 2

The Angular community also provided a react-native-renderer library in 2016 for using "Angular 2 and React Native to build applications for Android and iOS." There is also now a dedicated AngularDart team that supports the Dart implementation of Angular that is, as of 2016, separate from the TypeScript/JavaScript code base. Before this, the Angular 2 codebase was entirely TypeScript and was compiled to Dart.

7. Internet of Things (IoT)

The term "Internet of Things" (IoT) has been around for a while and even discussed in mainstream media for a while, but the concept seems to come up in many different technology-related articles and posts in 2016. Because the IoT concept is related to Big Data and Cloud Computing, it is not surprising that it becomes a more prevalent topic as those related topics become increasingly prevalent. The rise of IoT also brings with it significant new privacy and security risks while also bringing convenience to users.

The post IoT 2016 in review: The 8 most relevant IoT developments of the year talks about the increasing presence of consumer IoT with products such as Amazon Echo . This article also discusses the "biggest overall [IoT] story" of 2016: "IoT Security attack on Dyn servers ," a story which is part of my reasoning for Software Security being the #1 story/development of 2016 for software developers.

The CRN slideshow The 10 Biggest Internet Of Things Stories Of 2016 states that "2016 was an even bigger year for IoT" and outlines their perspective on the biggest IoT stories on 2016. Their top story for the year is IoT Devices Compromised In DDoS Attack .

Big Data remains, well, "big," in 2016. In 2016: The Year in Big Data , Tim Spann writes that "2016 has been an interesting year" in which "Big Data got big general interest when various machine learning algorithms were predicting who may become president (and were a bit off)." Spann also writes that 2016 was a year in which Big Data experienced "new advances in tools, an expanded focus on IoT, and new ways of ingesting and manipulating data." The post 5 Leading Developer Stories of 2016 emphasizes, " Big Data's Big Numbers Became Impossible to Ignore in 2016.

4. Cloud Computing

Cloud Computing remained a hot topic in 2016. In the article Why the cloud? In 2016, it was the lure of the new , Eric Knorr writes that "incredible new features all pre-provisioned and waiting for you in the cloud" was the primary reason for enterprises moving to the cloud in 2016. Knorr writes about the cloud offerings' support for machine learning, IoT platforms, serverless computing, and containers management. The IBM blog post The top 10 Thoughts on Cloud articles of 2016 , states, "Much of the cloud computing news of 2016 focused on exponential growth in need and demand, which will reach into the following year and beyond."

Related to both Cloud Computing and Big Data is the concept of Fog Computing , which also seems to be slowly gaining momentum in 2016.

3. Microservices

Although I see "Docker", "containers", "Big Data", "Cloud Computing" and similar terms all over the software development blogosphere, I don't think there's a more prevalent topic in that sphere than " microservices ." Bilgin Ibryam has written that microservices are a commodity and concludes, "In the Microservices world things are moving from uncharted to industrialized direction. Most of the activities are not that chaotic, uncertain and unpredictable. It is almost turning into a boring and dull activity to plan, design and implement Microservices. And since it is an industrialized job with a low margin, the choice of tool, and ability to swap those platforms plays a significant role."

The microservices architecture approach has been used by enough organizations over enough time now to start sharing lessons learned and best practices. In fact, many of the underlying ideas behind microservices have existed for much longer than the term itself . In the post Working with microservices framework still a challenge in 2016 , Tom Nolle writes, "Technology innovation is often hampered by fast-moving waves of hype that confuse senior management with benefit claims that can't be met early in a technology's evolution. Microservices really took off as a concept in 2016 and have been vulnerable to premature expectations." Knoll writes about some positive developments in microservices that helped mitigate this: association with private clouds and with containers and the move toward statelessness in microservices. Knoll also writes about misuse of microservices contributing to a negative experience with them.

2. Docker and Containers

Without putting much effort into verifying it, it felt like I could not browse software development headlines on related social media sites such as DZone without seeing at least one (and often many more) story on Docker or other Linux containers. Serdar Yegulalp 's InfoWorld article 2016: When Linux containers became mainstream states, "In truth, 2016 wasn't The Year of the Container. That was 2015, when the possibility and promise of containers came along and knocked IT for a loop. But not everyone wanted creative disruption. Many folks wanted dependable, reliable infrastructure, and they saw in containers a method to do so that had never been done before. The good news was that despite all the momentum around containers in 2016, major parts of the ecosystem began to stabilize. The novelty's worn off, but in a good way - it means there's now more attention on how to do containers right, not merely to do them at all."

1. Software Security and Software Outages

I really, really wanted to not have this be the #1 software development in 2016 after having a version of this in the top two spots in recent years ( 2012 , 2013 , 2014 , and 2015 ). Unfortunately, the events of 2016 made it impossible for me to bump software security related issues from the #1 spot of developments in software development.

The Norton Protection Blog features the post Data Breaches That Made Headlines in 2016 . This post references and summarizes several data breaches including the 2012 LinkedIn breach ( 117 million released sensitive credentials in 2016), 2012 DropBox breach ( 68 million credentials exposed in 2016), and the 2013 Yahoo! breach ( 1 billion accounts breached ). In the post Yahoo Announces Breach of One Billion Accounts , Nadia Kovacs writes, "2016 seems to be the year of the 'mega-breach' with us reporting on eight major breaches involving well-known companies. Big data is big money for attackers, so they set their sights on companies that tend to hold large amounts of personally identifiable data on their customers." It's interesting that the three large breaches I referenced actually occurred in previous years, but the magnitude of the breaches was discovered with the release of the sensitive data in 2016.

The CRN slideshow The 10 Biggest Security Stories Of 2016 starts on the first slide, "Every year, cybersecurity continues to play an even bigger role in both business and consumer decisions. In 2016, new issues around the election, public-private tug of wars over encryption technologies and major attacks brought security even further into the forefront than in years past." That slideshow also references the U.S. presidential election , the Yahoo! breach , and the distributed denial of service (DDoS) attack on Dyn as most significant security stories in 2016.

Fahmida Y. Rashid 's recent InfoWorld article asks, "Do developers really care about security?" We obviously need to care. I would love to see Software Security not be my #1 development in software development in 2017 and not even be in my top ten, but it's difficult for me to see that happening .

Honorable Mention

The following did not make my top 10 but nevertheless saw major developments in 2016.

Kotlin

There's no shortage of programming languages targeting the Java Virtual Machine as their runtime and some of them ( Scala , Groovy , Clojure , Ceylon , etc.) seem to have found success with JVM developers. Without any empirical basis for it, my feeling is that Kotlin may have enjoyed the most coverage and percentage rise in adoption in 2016. This could just be perspective, but JetBrains ' purchasing of advertisements on key software development websites and evangelism of its employees and fans/customers seem to have contributed to Kotlin being mentioned time and time again on the software development sites (especially those with JVM focus).

Scala 2.12.0 (and Scala 2.12.1 ) was released in 2016 with the Scala 2.12 compiler "completely overhauled to make use of the new VM features available in Java 8." Scala 2.12 requires JVM 8 runtime because "Scala 2.12 is all about making optimal use of Java 8's new features." A less rosy outlook on Scala 2.12 can be found in the post New Scala Release Falls flat .

The Scala Center at EPFL was announced in 2016 as "an open source foundation for Scala" that "will engage with developers in the open-source community in the effort to improve the language, its tools and its documentation" and "will also help developers learn the language through massive open online courses, seminars, and other activities."

I don't actively develop with C++ anymore, but do find it interesting to see what's happening in that still very active world from time-to-time. Bartlomiej Filipek has posted C++ Status at the end of 2016 .

Fragility of Open Source

Like me, most developers I know are generally positive about open source and the possibilities it enables. We have benefited numerous times from a wide variety of open source products. However, nothing is perfect and open source has its own issues. We were reminded of this somewhat dramatically in 2016 when Azer Koçulu liberated all of his modules from NPM after a trademark dispute over kik (now known as hek ). It was actually unpublishing of left-pad from NPM that caused the ruckus.

Simon Phipps 's article Uproar: MariaDB Corp. veers away from open source talks about MariaDB taking MaxScale from open source to proprietary via a "Business Source License."

One interesting note about these stories related to open source issues is that each of these has been addressed through steps that take advantage of the code in question being open source. Because these projects were open source, others in the community were able to fork the projects when they did not like their direction or replace the essential code when removed code broke things.

.NET Core was released in 2016 . The .NET Blog post Announcing .NET Core 1.0 describes .NET Core as "a cross-platform, open source, and modular .NET platform for creating modern web apps, microservices, libraries and console applications" that is "available on Windows, OS X and Linux!"

There is a decent chance that C# 7.0 will place C# on my Top Ten list at this time next year. Many of the features of the forthcoming C# 7.0 are available now in Visual Studio "15" Preview 4 , released in August 2016. Numerous articles in late 2016 have pointed to C# 7.0 and include What's New in C# 7.0 , C# 7 - What to Expect , and New Features in C# 7 . VisualStudio 2017 is also forthcoming.

Python 3.6.0 was released in late 2016 as was Python 2.7.13 . The Python repository moved to GitHub instead of GitLab in 2016. Much more detailed information on Python in 2016 can be found in Dibya Chakravorty 's post Python year in review 2016 . I have been watching from time to time the debate about Python 2.x versus Python 3.x in attempt to learn lessons from breaking backwards compatibility and found it interesting in Chakravorty's post that the following was stated, "The debate between Python 2 and 3 is never ending, but the PSF had declared that Python 2.7 will reach end of life in 2020 ."

Progressive Web Apps

There's been a lot of buzz out of Google about progressive web apps . The author of the post What are Progressive Web Apps? opens that post with the only slightly exaggerated, "By now, you’ve probably heard that Progressive Web Apps are the future of all mankind. They’ll bring world peace, end hunger, save the rainbows and unicorns, bring balance to the force, and a whole lot more. In the process, they might even push the mobile web forward, bring parity to web and native apps, and help mobile developers reach more users beyond the confines of the app stores." That same post provides more clarification of progressive web apps, "On the whole, Progressive Web Apps describe a collection of technologies, design concepts, and Web APIs that work in tandem to provide an app-like experience on the mobile web."

JavaScript

JavaScript continues to be a widely used language, in large part because of its ability to run in web browsers (and on mobile devices) and on the server. Craig Buckler has written in the post JavaScript: 2016 in Review and concludes, "it's increasingly difficult to keep pace with the latest trends, frameworks and recommendations. Developers struggle when faced with a plethora of options to evaluate. My advice: don’t try to keep up . It's impossible. Whatever system you bet on today will be superseded by something better tomorrow. ... There's only one absolute certainty: JavaScript itself. Learn the language first and keep building on your knowledge. Your experience will help you understand how each framework operates so you can make an informed choice. That choice may be to forego frameworks altogether." This quote tells how far JavaScript has come ; the last thing I would have wanted to do when starting with JavaScript many years ago was to use it without a framework to hide all of the idiosyncrasies and corners of the browser DOMs.

The JS Foundation was formed in 2016 as a Linux Foundation Project "to drive broad adoption and ongoing development of key JavaScript solutions and related technologies." In an example of rebranding (see item below for other rebranding efforts in 2016), the JS Foundation was created from the jQuery Foundation .

React and React Native

Although JavaScript, like Java and other programming languages, seems to have countless frameworks, React seems to me to be the one getting the most attention in the JavaScript community when not counting Angular. The project facebook/react currently has a very slight edge over angular/angular.js in terms of stars rating on GitHub.

Software Development Tools Companies' Rebranding

2016 seems to be another Year of Rebranding for many software development tools makers and continues the trend from 2015 :

Conclusion

Much happened in the world of software development in 2016. In this post, I have looked at a small subset of these developments. I may add a few more honorable mention items in the next week or two, but wanted to get this published as soon as possible.