Another year is upon us. Having been in the technology space for two decades, it is fascinating to look where we’re headed relative to where we have already been. History often repeats itself, and we hope we learned from our prior mistakes.
This year is proving to be no different. What was old is new again. Below are five major trends I see unfolding in 2014.
1. The Year of Java
Java may be the new COBOL, but it is getting a serious injection of youthful vigor with the release of Java 8 early this year. The core Java language is finally getting some of the great features we’ve traditionally had to use other JVM languages to take advantage of.
The most anticipated is the ability to create Lambda functions. This is going to fundamentally change how people write Java code going forward, although it won’t do much for legacy projects. With Lambdas and the new Stream API, Java is going to allow a more functional style of programming.
While Java 8 will give people fewer reasons to use other JVM languages, it is also going to make those other JVM languages even stronger. Groovy and Scala will no longer have to use compiler trickery to work their magic, which should result in a big bump in performance.
Java is sitting in the ideal spot of being both one of the most widely deployed languages in enterprises and also one of the best performing languages. Java sweeps most of the top spots in the TechEmpower benchmarks, but the stagnated API has left developers looking for better options on their new projects. Java 8 is going to address the API stagnation, and it should put Java 8 on any developer’s shortlist for new development.
Another factor that will make next year the Year of Java is Scala. The company behind Scala, Typesafe, has assembled an impressive set of technologies that are well placed to write distributed, reactive applications. This stack includes the Scala language, the Play framework, Akka, and Spray. While Scala’s syntax isn’t for everyone, those that invest in this stack are going to have a powerful and elegant toolbox at their disposal.
For an overview of the awesome new features in Java 8, you can check out the three-part blog series here on the Credera blog:
TechEmpower also has a great post about the features of Java 8.
A lot of organizations have dabbled with NodeJS. Even ecommerce companies as large and conservative as Walmart are getting on board with NodeJS with their WalmartLabs team.
NodeJS isn’t a free ride though. In a lot of ways, NodeJS is like Java in its infancy. It provides an outstanding baseline for development but lacks the hard-earned industry best practices for writing maintainable software. NodeJS embraces the micro-framework mindset of pulling together a grab bag of minimalist, best-in-breed libraries for a given project rather than starting with a large, monolithic library which sandboxes the development effort.
Successful enterprise NodeJS development will require embracing consistent patterns and higher-level frameworks so you don’t end up with one-off, un-maintainable solutions. KrakenJS from PayPal is an example of a higher-level framework that will improve the consistency and learn-ability across projects.
3. SQL Makes a Comeback
NoSQL has been the darling of the industry this past year, but I’m expecting that the industry will be getting past the honeymoon phase and realize NoSQL shouldn’t be the default answer for persistence.
While there are definitely big data problems out there that require new thinking and technologies beyond the classic relational database, most enterprise data problems will still be best solved by the proper usage of a relational database technology.
One of the biggest barriers to using relational databases has been cost. Oracle and SQL Server have astronomical price tags associated with them. Fortunately, the open technology community has solid, high-performance alternatives such as PostgreSQL, MariaDB, and Percona. Even SQLite can be an option for smaller applications that still need the power of a relational model.
One of the strongest reasons for using a relational database is SQL. It gives developers a powerful, well-supported language for querying data. Queries are the Achilles’ heel of NoSQL technology. Each product has its own specific way of querying data, with each of them best suited to asking certain questions. SQL provides a consistent, well-known syntax that makes it well suited for queries, reporting, and ETL.
While NoSQL will continue to work well for certain types of problems, I’m expecting more enterprise developers to re-embrace SQL and relational databases as a default option for data persistence.
4. Microsoft Becomes the SharePoint Company
Like many developers, I started out with a Microsoft technology stack prior to working with open technologies. Microsoft has done some great things in the technology space, but unfortunately there is not a lot of sunshine coming out of Redmond these days.
In 2013, when someone talked about doing a .NET project, they usually meant SharePoint customization. The Microsoft ecosystem is now dominated by SharePoint and Office, with classic, custom enterprise development becoming a second-class citizen.
Given Microsoft’s history of shifting and deprecating various technologies, I don’t see this year being a good year to be a .NET developer. While C# is a great language, I’m expecting Microsoft to drift farther from typical enterprise software development, with the job of .NET development being more about SharePoint and Office integration and less about custom application development.
Organizations heavily invested in the .NET ecosystem don’t have many options, but organizations with heterogeneous environments should think hard before starting green field development in .NET.
5. The Pendulum Swings to Distributed Computing
The history of enterprise computing has been guided by the unseen pendulum swinging between centralized versus distributed computing. The past decade has been dominated by the centralized model, with large application servers scaling vertically on large computers.
The distributed nature of cloud computing is shifting the pendulum back the other way. This shift has been building up the past year or two, and it will accelerate this year. To achieve strong horizontal scalability, applications will increasingly be implemented as thin micro-services that are aggregated with messaging or RPC.
AMQP with RabbitMQ and Apache Thrift will both be bedrock technologies for this generation’s distributed computing. Higher-level frameworks like Spring Integration and Akka will tie this all together.
The big question will be whether we’ve learned the lessons from our prior era of distributed computing with CORBA. It’s going to require a renewed emphasis on strong enterprise architecture and design to build reliable, loosely coupled systems.
This blog post from the Twitter team provides an interesting example of how the new distributed model is going to be implemented. Twitter has the kinds of scalability problems most enterprises have nightmares about, so it is fascinating to peek under their hood to see how they are solving them with distributed computing.
What to Do?
For a successful technology leader, the answer to “what to do?” is usually always the same: embrace evolutionary change that drives business value. Stagnant applications are a liability to any business. There are plenty of applications still stuck on IE6 or Java 6 because leaders ignored change.
For the coming year, the key takeaways are:
Embrace Java 8 – it’s going to change how we do Java today.
Evaluate Scala and the Typesafe ecosystem. This is how we’ll be building apps in the future.
Stay pragmatic about NoSQL. It is not a silver bullet, and in most cases a classic relational database using SQL will be the best answer.
Distributed computing is back. You’re going to have to contend with it, so embrace it through explicit enterprise architecture rather than a triage of rogue departmental initiatives.
Be careful of .NET. Microsoft is going through a weird, post-PC transition and it’s not clear who the survivors are going to be. I would not be building a new system with a 10-year lifespan on .NET right now.
If you have questions or comments, feel free to post in the comment section below or contact us at firstname.lastname@example.org. You can also follow us on Twitter at @CrederaOpen or connect with us on LinkedIn.