Asoka asks:
I need your advice, Ray. I'm at sort of a crossroads in my career right now and am looking to either move up or move on to greener pastures. I'm in a web developer position in the federal government and I've been building web apps with ColdFusion for several years. What I want to know is, what would be a better option for a developer like me who's looking to move up: (1) Learn a ColdFusion framework, gateways, and a bunch of other advanced CF stuff that I don't already know, or (2) learn PHP or another entirely different programming language. I'm sort of leaning towards the second option because I *think* it would give me greater flexibility and marketability and I want to avoid being a "one-trick-pony", especially in today's competitive IT job market. As always, thanks for your expert guidance and assistance!
So before I offer any type of career advice, I'll remind folks that I probably don't have the best history for someone who should be offering suggestions. I think I've had around 5 jobs or so over the past 10 years, which averages about a job every 2 years. My wife and kids have been understanding of this (thank goodness!) but I'm probably not the example you want to use if you specifically want to 'move up' in an organization. That being said, I'll try my best to offer some thoughts on your main question - should you advance your ColdFusion knowledge or focus on learning other languages?
The short answer is Yes. In other words, I don't think this is an either/or scenario. Advancing your knowledge of ColdFusion with frameworks and 'other stuff' tends to cover things that impact your development no matter what language you are using. Here is an example. When I picked up Model-Glue, it helped cement the concept of MVC in my brain. I had never really understood MVC until I learned Model-Glue, and more importantly, actually used it in a few sites. Then when I began to use Flex, the whole concept of the MVC was something I could bring to the table in client-side development as well. It wasn't simple for me in Flex, but I had a much better understanding of what I should be doing even if I wasn't sure at first how to do it. (Thankfully I've had a lot of experience in this at Broadchoice!.) I'm not saying everything you learn in ColdFusion will translate to other languages, but it seems like a lot of it has an impact on what you do elsewhere, which is kind of cool! (Anyone else finding that?)
As for learning other languages, that is kind of a no-brainer. Having multiple skills under your belt will definitely help out, especially in a job market where people, unfortunately, tend to look for a checklist of skills instead of good development skills. I'd easily hire a PHP person if they showed intelligence and the ability to apply their knowledge to other languages. But I'm probably in the minority there.
You didn't ask about what other language to learn, you just asked if you should learn another language, but I'd suggest that learning Flex/AIR would be a huge benefit to you. With ColdFusion on the backend and Flex/AIR on the front end, you have a powerful combination of skills. I'm not sure how much the current economy has impacted this, but from a pure greed perspective, I remember hearing quite a few outlandish salaries in regards to Flex developers. Since Flex development is fun in general, I think 'lots of money'+'fun' is something worthwhile pursuing. I'd also look into improving your JavaScript skills as well. Both Flex and JS work great with ColdFusion, but aren't tied to ColdFusion. So right there you have a nice set of skills that are portable across multiple types of backend environments.
Anyway, I hope this helps a bit!