New programming languages and frameworks being created constantly. In just the past few years I’ve watched the emergence of Scala, Clojure, Node JS, CoffeeScript and Go. gSchool runs a 24 week intensive developer training program where we turn novices into employable junior developers, and in that amount of time, we can only really explore one language in-depth. So, how do we choose this language? I imagine this decision is familiar to both people who want to get into code as well as companies needing to choose the technology stack for their next project.
I believe that in order to become a good developer, you need to learn at least one language in-depth. In the early 2000s when Java started gaining popularity beyond applets, it seemed like Java was positioned as the “one language to rule them all” with its write once, run anywhere mantra. So in 2002, if you had to learn a language, Java was a safe bet. In the past few years, however, as new languages have emerged, each one seems to be trying fill a specific niche and to become the “right tool for the job.” That means that developers increasingly need to be able to function in several different languages and frameworks over the course of their careers. So for gSchool we stopped asking which technology to choose, and started asking “which technology do we start with, and how we prepare our students to change languages easily?”
Throughout all of these technology changes, one thing remains constant: humans write code (at least until the singularity occurs, that is). So while we were evaluating languages, we also looked into the communities of people surrounding different languages and frameworks, including local meetups, conferences and job opportunities. We also know that seasoned developers have a disciplined workflow, are adept at communicating with both technical and non-technical members of the team, and are able to quickly and accurately break down large problems into smaller, more manageable ones. So we wanted to pick a technology stack that is simple enough to grasp that we could run multiple in-class projects so that students could practice these non-technical skills to the point that they form good habits.
Ultimately we decided to start with Ruby, and the associated web framework Ruby on Rails, not because we think it’s a better technology stack than ones in say Scala or Go or Java, but because we think it’s a fantastic community for our students as they learn to write code. Ruby on Rails developers are in high demand right now in the front range, Ruby meetups are regularly standing-room-only events, and I’m constantly surprised at how generous and friendly Ruby developers in this area are to newcomers.
During our application process several students have asked me if I think that Ruby on Rails jobs will still be so in-demand in five years, or if I think Ruby on Rails is “the best” way to write code. I’ve heard similar questions from startups and business owners trying to choose which technology to use. My answer to both is simple: technology will always evolve, and good developers are always a safe bet, because they will be able to evolve as well.
This focus on developers over technology is becoming apparent in the industry as well. Twitter started out on Ruby on Rails, and over the past few years they have converted some of their most performance-critical code to include Scala. But instead of laying off their Ruby developers en-masse, they created a Scala school to help experienced developers make the switch. When Facebook realized that their PHP code wasn’t optimized for serving such high traffic, they could have changed to a programming language more well-suited for their scale. But instead they decided to allow developers to keep writing in PHP and found a way to convert it to C++ in order to optimize their server resources.
Choosing a tech stack is seldom easy, but it became easier for us once we stepped back from just comparing bits and bytes and looked at the entire tech ecosystem.