While that’s not exactly what Matt asked - read on:
I'm currently seeking employment and I thought I'd ask you a career advice question. I would definitely consider myself a junior level CF developer. Just beginning to use CFCs and CFFuctions. Haven't played with BlueDragon, Mach II, or Fusebox, but know of them. In your opinion, what's the best way to take that next step, to become a senior level developer. I'm mostly self-taught, but I feel that it's been much slower than had I just worked and learned with other people that already were senior level developers. The reason I ask is that while seeking employment, there's been opportunities where I can be the sole developer, or where I can become part of a 'team'. While being the sole developer would be nice, I think I'm missing out by working directly with other individuals. Sure the CFUG list is nice, but I want to hear your thoughts about how you learned and your recommendation. I'm also at looking to take on PHP and .NET so these same principles would probably apply here.
First off - let me say that advancement is the kind of topic that will bring many different responses. I can speak to what helps me learn - but your experiences may be different.
Let me first talk about solo versus team. I’ve been a remote developer for around 10 years now, and while I love being home (and in lovely Louisiana), it has tended to put me more on solo projects. For the past few months though I’ve been working on a small team and I can tell you right away that I’m finding it more rewarding. It’s funny… my coworker and I have different views - which is to be expected - but since I’ve done so much solo work I’m finding it painful at times. Yet I know it is doing wonders for me and my own development. So while I may get frustrated, I’m very happy to be working with this team. (And I’m not just saying that because he reads my blog. ;) So in case it isn’t clear - I’d definitely recommend working on team projects. It is good for you both technically and socially. (Not that I need help in that regards - I’m a social butterfly. Really.)
So let me address a few other points you brought up. You mentioned that you are aware of frameworks and but aren’t using them yet. As you read my blog, you know I’m a Model-Glue kind of guy. I’m definitely pro-framework. I’d recommend you get at least familiar with one of the frameworks. Enough to at least do a simple application. Obviously the best choice is… the one that works best for you. Seriously. Don’t listen to me - try them all and stick with the one that makes you and your team most productive. (Although Model-Glue is the best and I’m not biased - seriously.)
You then mentioned PHP and .Net. Absolutely. Learn other languages. While we all know ColdFusion is the best (“dead” language or not), learning other languages increases your hirability and will help keep you employed. And… while I hate to admit it - sometimes those other languages have good ideas. I’ve long commented that I thought Dot Net’s caching system was pretty cool. In fact, I based my ScopeCache custom tag what I saw in DotNet. I’m also a big fan of DZone. When I see articles like, “How to do X in PHP”, I’ll read them. I find exposing myself to other languages helps me learn and will sometimes spark me to write the same code in ColdFusion - just to see how it’s done.
And lastly - I can’t stress enough that usefulness of writing code. While it may seem obvious - a great way to learn a language is to take on a project for fun and just code it. I’ve got a few of those “just for fun” things up at RIAForge - they somehow turned into real projects that helped others along with helping me learn the language. Learning is a never ending process. I still feel like I’m learning ColdFusion, and with 8 released, I actually feel a bit behind. (Curse Adobe for adding so many features.)
So - chime in readers. What do you think?