I recently read a blog post by Avdi Grimm about setting realistic expectations for a programming language roadmap. As a developer, constantly learning new skills is a must. While there are a ton of interesting languages to learn (and I would love to learn them all) I had to be realistic and split them into a priority listing.
Ruby on Rails
So this is one I use daily for my professional work. Ruby on Rails is an amazing framework that has a ton of functionality and features built into it. With that said there are a ton of features I have never used or have never come across the situation to use. Because of this some of my learning will be directed at learning some of these outlier features to help improve my overall understanding of the Rails ecosystem.
I've already started learning more about eager loading and associations in terms of ActiveRecord so far this year. Additionally, I've picked up a habit of reading RailsGuides when I have downtime or am waiting in line for something.
While Rails is built on top of Ruby, I am a firm believer that knowing the base language of a framework enables you to make better informed design decisions when it comes to development. Additionally, I learned Rails while learning Ruby and going back to the basics is always a good practice to get into.
I've decided on a curriculum for myself which includes reading two different books: "Eloquent Ruby" and "Learn Ruby the Hard Way". "Eloquent Ruby" is expertly written by Russ Olsen. I'm about half way through it and I can't recommend it enough.
"Learn Ruby the Hard Way" gives basic language challenges to complete and asks you to research and determine the solution online, instead of laying out the answer. This will allow me to continue getting familiar with the various documentation, as well as, learning more efficiently through practice.
This was a tough choice. There were a number of languages that were on my peripheral for this slot. I had been considering Haskell, Scala, or Rust (which I still may pick one up at some point).
The reason I decided on Elixir was three fold. Elixir has some very similiar syntax to ruby, which helps continue my learning. The amount of buzz and blog posts written about Elixir. And finally my friend, James Wheaton (http://jameswheaton.me/), and I decided to start learning Elixir together. Always a good idea to learn alongside a fellow developer.
This will be combined with my Elixir learning. Phoenix is a web framework that utilizes Elixir.
A lot of companies have recently started leveraging Meteor.js. It is an awesome node framework that has a lot of potential. It runs both on the front-end and back-end simulataneously.
Additionally, Node has become nearly ubiquitous in many job descriptions and seems it will continue for quite some time. The technology works well by itself and integrates nicely into other systems. Learning more about Meteor.js is a way for me to keep my knowledge level up with Node.js.
Got a roadmap of your own? Have a language you think is important to learn for 2016? Let me know in the comments.