As a hacker/software engineer/developer/coder or whatever else you like you call yourself, your current worth in the job market is often determined primarily by your level of experience with a particular technology or language; fashions do prevail and if you're not in the right place at the right time it's all too easy to be overlooked. This is far from an ideal situation, but ensuring you have at least a reasonable understanding of a subset of myriad prevalent technologies will not only help when applying for jobs, but will also aid you in becoming a well rounded developer.
The Problem With Fashions
Programming is more than just knowing the ins and outs of a particular language and framework, it is an art form unto itself. When you start a new project you have a blank canvas, an empty directory eagerly awaiting your code statements and algorithms that (hopefully) mesh to form an elegant solution. Like an artist painting on canvas, there is no one way to develop an application; there are an infinite number of ways it can be built and that's where experience, creativity and some lateral thinking turn out to be the skills that you rely on.
In my opinion, turning down a candidate for a Salesforce developer role because they don't have any experience of Apex even though they're excellent in C++ would be absurd, a good programmer would be able to pick up the new technology in days. Sure the finer details and some platform specifics will take longer but the lost time would be negligible as their programming skills should transcend the boundaries of the frameworks being used.
Knowing What's Out There
On the other hand, with so many new frameworks and languages appearing all the time, it does pay to try and stay on top those closely related to the area you work in. You may not think you have a need for them right now, but you don't use a hammer to cut a 2x4, and you shouldn't use one tool for every development project undertaken (unless perhaps they're all in the same domain); you probably wouldn't want to use Prolog to build an OpenGL game for mobile devices.
Having at least a cursory knowledge of the tools available will be advantageous to you when it comes to selecting the right tool for the job, and the best way to pick up such knowledge is to find excuses to try things out.
Find Excuses to Learn new Things
|Working with various tools on Heroku|
Over the last week or so I've been prototyping a solution which required a mobile application, some easily accessible web services and some kind of cloud data storage. I used the opportunity to play around with a few technologies I'd known of for a while but had no idea of how to use them or what they were really good for.
For the web server side of things I knew I wanted to use Heroku and so looked at what languages I could use there, quickly settling on Node.js (using Express) and using Redis as a storage mechanism. For the mobile side I wanted to use certain hardware features but wanted to keep the code reasonably portable, so a hybrid approach seemed best and I settled on Phone Gap. After quick comparison of various frameworks decided to use AngularJS to hook up the interface elements.
As Matthew Botos quickly pointed out this effort was somewhat worthy of @HipsterHacker, but in a short space of time I've learned a fair amount about some new tools available to me—even if I've not actually hung them on my belt*—and this newfound knowledge will help me make better informed decisions over what to use for tasks in the future.
@LaceySnr @dancinllama Phone Gap & Angular.js on the mobile, Node.js with Redis on Heroku, and nForce to SFDC = @HipsterHacker turducken!
— Matthew Botos (@BotosCloud) August 15, 2013
Increasing Your Worth
For me, half of the fun of programming is in getting something working, and the satisfaction of doing so is only heightened when that something is built in a technology that's new to me: the sheer joy of getting the end to end process of my prototype working at 3am (I was a slightly wrapped up in it) was akin to the first time I typed PRINT "Hello" into a BASIC interpreter. If you enjoy programming then hobby projects just to experiment with tools can be worth a lot to you and your career.
As a developer, little else counts as much as experience, but if you want the pick of the best opportunities then the actual worth of experience is highly dependant on the breadth of it. 10 years of practice with one language is great if that's all you ever want to work with, but if not you might have a hard time convincing anybody else you can adapt should you want to try your hand at anything else. If you at least know a little about what tools are pervasive in your chosen domain, such as their benefits/drawbacks with respect to a specific scenario, you'll open up a lot more doors.
*Building things quickly is a great way to learn about what a tool is suited for and covering the basics, but it's not a substitute for learning the best practices and methodologies when working with that tool. I'm sure some hardened Node.js guys would be horrified at some of my code acrobatics in this particular prototype.