6 technologies you should learn this year
Technology moves fast! If you're stuck in your cube editing Java 1.3 code or messing with PowerBuilder, you probably live in an area of the country where there's only one employer. Most of us have to figure out what we need to learn, or at least become acquainted with, just to keep our careers on track.
If you want to stay sought-after and raise your rate, you should be acquainted with the following technologies. Why listen to me? Because I get a unique bird's-eye view as a developer straddling a management, marketing, and sales roles. My informal survey says: This is the least you should familiarize yourself with by next year.
1. Hadoop. If you learn nothing else this year, make it Hadoop. You need to know what MapReduce is and how to use it. Frankly, by any measure of buzz, popularity, or demand, Hadoop dominates the market in newer technologies.
Read the JavaWorld tutorial: MapReduce programming with Apache Hadoop.
You could learn other technologies, but Hadoop is harder -- and you need more resources to get further than "hello world." One of the most difficult tasks is finding a topic simple enough to teach yourself, but not so simple that you learn nothing. Also, finding a sufficiently large data set is not as easy as you might think. There are famous ones, like a big dump of Wikipedia. Maybe you could combine it with other elements and create some kind of social graph showing who likes to edit whom. Hortonworks demonstrated a similar concept with GitHub.
Once you get your hands dirty, you'll start seeing other kinds of questions you'd like MapReduce to answer. There are multiple vendors in this space, from Hadoop-specific companies like Hortonworks to multitechnology vendors like Pivotal (VMware/EMC spinoff) and existing vendors like Oracle, who are stapling Hadoop to the side of their products. Any one of these companies is capitalized enough to fly into orbit.
2. MongoDB. Though not quite as big a juggernaut as Hadoop, MongoDB is still a big deal and far easier to learn. Document databases like MongoDB fit well with big AJAX applications or object-oriented back ends. They also scale nicely. There's more than one to try, but you should probably start with Mongo, because it will be best for you from a career perspective -- most companies are already familar with the database. The company behind MongoDB, 10gen, is extremely well-capitalized with a war chest of $81 million.
3. Scala. Concurrent programming is changing, and so are the kinds of applications we're asked to build as developers. Not long ago, all low-latency trading applications were written in C or C++; now they're written in Java.
Get a hands-on introduction to Scala: Learn Scala with Specs2Spring.
The newer techniques in highly concurrent and functional object-oriented programming often debut in Scala, then make it into Java or other popular languages years later. Scala is more than a language or "syntactic candy" -- it's an ecosystem of libraries and ideas such as Akka and Play. Whether you like Scala or hate it, you need to understand the ideas it encompasses. With Spring Framework creator Rod Johnson joining the board of Typesafe and a $20 million bank, this is one bet you can count on.
4. Node.js. I'm not saying you should become a JavaScript developer and forgo all else. I'm saying you should have a taste of event-based, nonblocking systems like Node.js and at least one dynamic language like JavaScript on the server. You could do Ruby, but you'd miss that event-based, nonblocking part. There are reasons to really dislike Node.js (it's single threaded), but there's plenty to love as well. A lot of serious people use Node.js, which has a vibrant community and wide industry support -- everyone from Microsoft to Cloudbees to VMware and beyond. Node.js's well-funded ($112 million-plus) creator, Joyent, isn't trying to productize Node.js, but Joyent's cloud offering differentiates itself with a Node.js-centric PaaS.
Have you heard of Vert.x? get a tutorial introductionto this enterprise messaging framework that is based on Node.js, but built on the JVM.
5. C/C++ or Assembly. I struggled not to leave this as Assembly -- or even C and omitting the mongrel hybrid cousin (Linus said it best in his NSFW rant). You needn't be a master of the standard lib or the STL or any such thing, but you should know how a computer actually works. You should understand how memory operate close to the metal and have some idea of how compilers function. I may not have used MASM in years, but I've continually applied the knowledge I gained from learning it. As technology grow more high-level and abstract, understanding them at a low level actually becomes more useful when developing or debugging highly scalable, high-performance systems. If you're working as a Ruby developer, no one is going to demand you know this stuff, but they may ask you to fix problems that you'll understand far better if you have this expertise. People who can think this way will prove themselves invaluable time and time again.
6. Git. Look, if you don't know Git and haven't set up a GitHub account or two, you're late to the effective and well-known developer party. You really should've learned it last year. Of course, if you're still using ClearCase in your current position, you should either be getting serious hazard pay or you should quit and get a job where you don't have to use ClearCase.
Lots of other skills are in demand, but these six are bringing the buzz. Acquiring these skills will help you become not only one of the cool kids on the block, but also one of the paid kids.
Comments
Post a Comment