Friday, July 3, 2009

"Dangerous" Choices

Most of the material I've read lately about being successfully in the IT industry have all suggested moving away from the safer choices (Java, C#, Windows, etc.) and moving into the more emergent technologies (Rails, Grails, Mac OS X, Linux, etc). The idea is that picking a technology before it becomes widespread offers a few advantages:
  • You become an expert before others
  • If you take the risk and pick the right technology, the monetary rewards can be high; much higher than normal
  • Most of the alpha geeks are already there, and you want to be working with the best and brightest, don't you? I know I do
Being a expert in a technology field is a great thing to strive for. I also think keeping up with the technology trends and new ideas helps you become a better programmer, even if you don't ever use those technologies at work, because by using different technologies, you're forced to solve problems in new ways.

While some of the emergent technologies have been around a lot longer than they've been on anyone's radar, they have all experienced near explosive growth as of late. Despite the major strides these technologies have made, the job markets remain small. I also have trouble finding fringe jobs that pay as well as the more established offerings. Take Rails or Grails. I think they're both great technologies that have a lot to offer. But looking on Monster or Dice doesn't reveal anything worthwhile from what I can tell. So what's the problem? I think there are a few things at play here.
  • Most of the really good jobs are never advertised
  • The alpha (and beta?) geeks know each other, and are quick to fill positions through word of mouth
  • Most of the cool stuff right now is open source, so the jobs that most people do hear about are with companies that are just getting started or using open source to save money
I don't have issue with the first two points, but personally, I'm not ready to cut my salary in half just to work with some technologies that may or may not work out in the long run. If the only danger to these technologies was long term viability, that would be different. Even taking a 10-20% pay cut would be different. But not being able to find those jobs, and when I do, to take a 40-50% cut is where I have to pause.

Maybe I'm just a Gamma Geek, too far removed to know the right people. Maybe I'm looking in the wrong places. But maybe the safer choices aren't so bad.

Wednesday, July 1, 2009

Pits of Success

The latest Herding Code podcast was a rehash of some of the issues with Visual Studio discussed over Twitter. One of the main issues discussed was drag and drop coding. Why do people use it? Why do we see it in so many demos? Why aren't there more warning about using it with caution?

The responses from Alan Stevens lead me to believe that Microsoft doesn't recognize how damaging drag and drop coding can be (and how most developers have disdain for it). Alan's justification was that it you're aware that it incurs technical debt, you're ok. In other words, while it generally produces sub-optimal code, as long as the amount of time savings can be justified now for a refactoring later, it's acceptable. There are a few good reasons why it isn't:
  • It teaches a lot of developers bad practices, and those practices never get improved
  • Developers are either forced to search find an alternate means to learn a technology or reboot their current methodology to do it right
  • It creates really bad code that is hard to maintain
  • Most projects don't have the time budget for refactoring; besides, who wants to write their code poorly from the start?

What Microsoft has inadvertantly done (and continues to promote) is a method of coding that leads to failure. Instead, what they should be doing is providing a set of sensible defaults and conventios that lead to success. These practices are quite common outside of the Microsoft community; you'll find frameworks like Rails or Grails impelmented in such a way that they create a pit of success. The conventions and defaults are engineered in such a way that its easy to fall into the "trap" of doing things the right way by default.

Don't get me wrong, Microsoft makes some great products, and continues to improve their offerings (the new MVC framework is a great example). However, by continuing to teach developers bad practices, they're creating a pit of failure.

Tuesday, June 30, 2009

It's time to start writing

I've recently completed both The Passionate Programmer and Pragmatic Thinking & Learning. Both books have inspired some serious self-examiniation. They've challenged me to do more, do better, and be better.

One of the many messages they drive home is that it takes more than technical skill to write good software. While I've always agreed with their position, my eyes have been opened to how much I really haven't grown in other areas, mainly because I haven't challenged myself.

I feel like I have the technical chops to do my job and do it well, but there are so many other things to consider, such as writing and speaking. Writing for me is much easier, since public speaking scares the crap out of me.

So starting today, I'm going to be blogging on my own account. Not my employer's, but a blog that will be mine regardless of my employment status. It will also be a blog that forces me to write more than 140 characters before publishing.