Fresh developer skills you probably aren't learning, but should
- select the contributor at the end of the page -
ECMAScript 6
JavaScript may have started off as an in-browser language for making buttons clickable, but it's come a long way. So much of Web application development is moving into the JavaScript territory that you can't afford to ignore it. At the same time, JavaScript is evolving. As the language does more of the heavy lifting for complex applications, people are coming to it from other languages, and they're bringing their ideas and approaches with them.
Harmony, the next version of JavaScript, will be incorporating a wide range of new features including classes, for/of loops, new iterators, modules and arrow functions. Much of this can be used in modern browsers today. If you're already using strict mode, you understand your closures, and you're confident that you know what "this" means, it's time to go study the changes coming in ECMAScript 6 and prepare for the future.
Go
Google introduced Go in 2009, claiming the new open source language would bring the convenience and flexibility of scripting languages to the world of reliable, high-efficiency software development. Six years later, Go is at version 1.4 and it's starting to gain traction.
Whether you're a fan or a sceptic, Go has been building a solid community of followers among engineers looking for an alternative to C++. You can see the same enthusiasm at Go meetups that existed 10 years ago in the Ruby community--and a lot of the same faces, too. More companies are using Go in production, and the jobs are starting to show up. If you've been looking for a fun and powerful language with a gentle learning curve and a huge potential market, Go might be worth a shot.
React
Last year everybody was playing with Angular. Declarative JavaScript is cool, but the fundamental changes announced in Angular 2.0 have made some developers nervous about the future of the code they write today in Angular. Now, in a field of strong contenders, React is emerging as the new cool kid on the block. Coming from the engineers at Facebook, React works from end to end with JavaScript, and supports a unidirectional data flow that improves the efficiency of JavaScript for better performance and a cleaner modular code structure.
React can be slipped in on top of Angular as a view, or used to control an entire application using Facebooks's Flux architecture, or the upcoming Relay approach, slated for release later this year. (And while you're looking at Facebook technologies, keep an eye on Immutable JS.)
Vagrant and Docker
When it comes to robust distributed deployments, containerization and virtualization are where it's at. Tools like Vagrant and Docker allow you to configure reproducible and portable work environments, and then use provisioning tools ranging from simple shell scripts to Chef or Puppet to install and configure any number of machines with a click.
These new tools make it possible for both developers and designers to work in disposable and reusable environments that can be built, reset and distributed across an entire team. Even better, the same approach can be used for deployment to production boxes, so you can trust that what's serving customers in the cloud is the same as what's right on your dev machine.
Design Thinking
The concept of Design Thinking is causing a shift in how companies approach product design. If you think of design as decorating the user interface after the real work is done, you're missing out on the value designers can bring to the overall structure and experience of Web application development.
Thankfully, designers are starting to get the respect they deserve as key players on a development team. AB testing and instrumentation (to support incremental user experience design and research) are becoming integral to the development workflow. With the emergence of lean collaborative design, more companies are embracing the design-driven process of defining a problem, exploring a wide range of options, choosing a direction, and repeating the steps as necessary through product development and refinement.
If you're working in Web development, take some time to study basic user-centered design principles, and recognize how they apply to the work you're doing. Involve yourself in user testing, and pay attention to the customer experience. The more you understand the value of end-to-end design principles, the more easily you can pull your head out of the chaos of shifting technology and keep an eye on the big picture.
What are you seeing?
It's impossible to create a list like this without leaving something important out, or making controversial statements. I'm interested to hear what new developments and projects you're paying attention to right now. Everyone has a different perspective, and reality always lies somewhere in the fuzzy spaces between us.