>That long list makes you look unfocused and implies that you probably suck at a lot of technologies rather than being very good at a few.

Virtually everything programming-related that I've learned has contributed to a more rapid grokking things differently/deeper that I work with on a professional or personal basis.

I'm a generalist for two reasons.

1. I believe a renaissance style understanding of programming languages and informatics contributes to my ability to rapidly pick up and in a deep way grasp what's going in anything I have to work with, and

2. It's simply needed by my employers. I don't work in the corporate world anymore, although when I did contract for large companies, I worked as a .NET dev with a specialty in debugging and reversing. Now I'm a django/ajax/admin/db generalist and I enjoy it more.

I'm a generalist because it's simply what my employer needs from me.

They don't need someone who knows MS SQL Server in and out, they need someone who can make rapid decisions about what tool out of hundreds is going to be able to best fit their needs and rapidly learn how to deploy it for them.

There's really only two kinds of understanding when it comes to software. Structural, and memorization.

The first large chunk of learning a programming language or technology comes to grasping the structure of how something is built/designed and utilizing that knowledge to be able to predict how things should be implemented.

The second part, and certainly the more laborious/time-intensive is memorization. That's anything that falls out-side the "least-surprise" vector and that simply requires memorizing the intricacies of how things interact. (C++ and the English language are notorious for this)

Having a broad understanding of virtually any software concept is a form of human-caching. It's caching the common engineering tropes that underlie the things you have to work with on a regular basis, and if you know anything about deploying software stacks or how hardware works, you know that caching is everything.

Simply being a static human .NET/Rails/PHP machine might look attractive to an employer, but it leads to dangerously narrow decision making from a broader sense and could lead to problems later if the company wants to pivot to a better approach/technology.

Anecdote:

Over the past year, my company has moved 2 projects from Jboss/coldfusion to Django. We have 5 more projects to perform the same switch for. This coming week I'll be converting the svn repositories to mercurial. I've already centralized the repository infrastructure, switched them to Linode for the VPSs, will be setting up an extra off-site backup service soon, and we've switched them from Eroi to a local message sending system, saving them $150k per year on mailing costs.

All the while, I'm converting perl scripts that handle billing and commissions for another business within the company to python (for direct integration within django), have written an entire customer management frontend + backend, and I've only been here 6 months.

By all means, tell me a PHP/Rails/Whatever monkey is more valuable.

A good developer can do anything you ask of them in the web world. Exceptions being hardcore Quant type (statistics, huge databases) projects or embedded work (requires strong understanding of the principles of writing software closely mated to the hardware and knowing ANSI C in-and-out, if not the assembler for the target platform).

I mean, I wouldn't exactly expect a Rails dev to be able to tell me what the const and volatile type qualifications mean when combined and where you'd normally see them. For my part? I got 9/10 on an embedded.com C dev test, whereas the global average is 4-6/10. I've never even worked in the embedded industry.

But do I know x86 and arm assembler and could probably slap together a control system for a production line in a pinch? You bet.

I take great pride in being a programming chameleon and in learning as much as I can on my own time, I have no idea why you'd desire a person to be narrow.

You think Paul Graham got ahead because he spent 10,000 hours mastering the blub everyone else was using?