On the Ruby front, v2.0 is somewhere on the horizon, along with Rails v4.0. Rails ended the year with a bang via a major SQL injection vulnerability that caused a lot of uproar.
While Java remained stagnant at Java 7, the Java Plug-in became one of the top security threat vectors on computers with the Department of Homeland Security making an unprecedented recommendation to disable Java.
The only major excitement in the Java space came from the flourishing ecosystem of new JVM-based languages. Groovy and Grails both matured, releasing v2.0 of each framework, with Scala and the Play Framework following suit.
I see four trends which are going to drive the evolution of technology this year:
1. Big Data
Every client I’ve talked to has brought up Big Data. Everyone is trying to capitalize on the vast stores of data they collect to make better business decisions. The best technologies in this space are all open technologies, and most are Apache Foundation projects. These include:
The biggest challenge, for most people, is a lack of skill sets in Big Data. Making effective use of these tools requires a different mindset from the classic SQL / CRUD development approach. Everyone is going to be scrambling to find people skilled at Big Data, and I suspect a lot of classic Java developers will be trying to add some Big Data skills to their resumes.
While not a subset of Big Data, the NoSQL movement is what usually powers it. Distributed, schema-less, persistence technologies like Cassandra, MongoDB, HBase, and others are what will make Big Data possible via their ability to reliably shard large datasets across multiple server instances.
2. Cloud Computing
The buzz around Cloud computing is actually bigger than the buzz around Big Data. While Amazon AWS is considered a thought leader on Cloud computing, there are plenty of other big players jumping into this space, including Microsoft with Azure, Rackspace with the Rackspace Cloud, VMware with CloudFoundry, and RedHat with OpenShift. There are also numerous upstarts. Heroku remains a developer favorite, while DigitalOcean is setting a new bar for low-cost, high-performance Cloud hosting.
While the Cloud offers great uplift for cost savings and scalability, the whole Cloud computing paradigm is still at the toddler stage. This year, I’m expecting to see a great deal of start-ups dealing with the Cloud management problem space. This includes: configuration, deployment, monitoring, security, and support/DevOps. While it’s cheap and easy to get a Cloud server up and running with Linux, businesses will still need to worry about the care-and-feeding of these environments.
The level of abstraction will also be an area for differentiation, with businesses having to decide if they want to deal with (1) higher-level, but more expensive, Platform as a Service (PaaS) offerings, or (2) cheaper, but higher touch, Infrastructure as a Service (IaaS) solutions.
Developers should be looking to add Cloud skills to their repertoires. This should include the basic skills of configuring and provisioning a Cloud server instance, as well as, basic security configuration. The AWS re:Invent Conference videos are a great source for learning about Cloud architecture.
3. Distributed Computing
The pendulum is swinging. The past decade has seen the rise of the vertically-scaled “Application Server” at the center of the enterprise universe. While there are some great open source stacks in this area, like Apache Tomcat and JBoss, the big players are expensive vendor ware stacks like, IBM’s WebSphere and Oracle’s WebLogic. The saying used to be, “nobody ever got fired for buying IBM.” In the coming era of distributed computing, the mantra is going to become “nobody ever got fired for buying IBM, because we shot them first.”
The era of the monolithic, vertically-scaled application server is going to start giving way to a new era of asynchronous, concurrent, distributed computing deployed to the Cloud. Successful, scalable, high-volume websites are rediscovering the power of distributed computing. Cohesive, specialized application tiers are deployed in their own environments, allowing for finely tuned horizontal scaling based on the needs of the application. They are also geographically dispersed for high availability.
An example of this new trend is what Twitter is now doing. This fascinating blog post describes the core Twitter stack. It is a combination of distributed computing, service discovery, fine-grained monitoring, and Big Data.
A side effect of the shift back to distributed computing will be a rise in popularity of languages better adapted to this asynchronous, distributed paradigm. Scala, a JVM-based language, is one of the leading next-generation languages for this new worldview. Twitter’s high performance stack is built on Scala. Even Groovy is integrating stronger support for asynchronous and concurrent programming via the GPars library.
Developers who wish to stay current need to learn about concurrent, distributed design. Scala is a great place to start, and I’m even expecting to see a revival of Functional Programming, which will provide another paradigm to dealing with this new distributed world.
4. Responsive Design
The first question anyone creating a website in 2013 should ask is “How will it look on a tablet?” The days of designing sites for Internet Explorer and hoping that they somewhat work on a tablet or smartphone are over. The tail is going to start wagging the dog. Websites will be designed primarily with the tablet as a target, but designed in such a way that the same experience carries over seamlessly to the desktop.
Two examples of this are USA Today and Mashable. Both have redesigned their sites as more tiles-centric layouts with large touch or click targets that render nearly identically on the tablet and the desktop.
Other content-rich sites have gone even further, such as A List Apart. Their new design can almost be called “un-design” in its simplicity and cross-device support.
Powering all this tablet-centric site development is responsive design. Responsive design provides designers and web developers with the ability to render the same content differently based on device capabilities through CSS customizations. Nearly every site I worked on last year had responsive design as a key requirement and it will only continue to become more important.
What this means for developers is two-fold. First, anyone developing for the web today needs to become familiar, and even proficient, with responsive design. There are some great resources out there – Responsive Web Design. The Next Web has a great article on design trends we can expect to see in 2013 and responsive design is listed as #1. Second, coding techniques that don’t carry over to the tablet must die. The primary technique to discontinue is the use of plugins (Flash, Silverlight, etc.) to render content. HTML5 is here and using plugins is a disservice to your users. It also means to stop using mouse-only design techniques, which do not carry over to the tablet. This includes hover effects and right-click actions like context menus.
The well-designed site in 2013 will provide a seamless, fully-functional experience across devices and developers need to be learning the skills to make it happen.
The Road Ahead
The year ahead is going to be a tough one for developers and enterprises who haven’t kept up with the times. All four of the trends listed above are going to cause disruption to the classic enterprise software development mindset. Competition over resources talented in these skills is going to be fierce.
The upside for developers at all levels is the promise for a bright future, if they’re willing to invest in the skills and knowledge necessary for success in these areas. Employers won’t be asking for the magic “10-years of Big Data” experience because it doesn’t exist. We’re approaching a new Wild West in technology that will provide great opportunities for those who choose to embrace it.
From the perspective of the enterprise, CIOs and CTOs need to be sweating about these trends. Staffing and training will be one of the biggest challenges. Companies should be looking for strong, reliable partners to guide them safely through the disruption of these trends and to help make them successful.
At Credera, we have the people and talent to partner with companies who need to successfully implement modern, scalable technology solutions. You can reach us firstname.lastname@example.org or follow us on Twitter at @CrederaOpen.