Neil McAllister wonders whether web developers have too many options:

No one Web developer can excel at all of these technologies; the development methodologies behind some of them are virtual opposites. The pressure on developers, therefore, is to specialize. But how do you choose one tool to be your bread and butter from a field this broad?

McAllister tries to answer his own question though:

Experienced systems programmers will tell you that computer languages really are all the same, and that learning Python is trivial if you already know Java.

Which is partially correct, but not quite.

Web development has become an arena of conflicting philosophies and dogma. Every language, platform and framework has zealots, barking their ideology from up on high and beneath them often sit hoardes of nodding yes-man. Divisions and fractures are as rampant as within political circles. The search for the “one true way” damns us to needlessly jump from one bandwagon to another. For the last four years, it was the sacred cow of the model-view-controller paradigm. Over the last year or so, functional programming has become the hipper than hip thing to be apart of. Not to disparage either method, as each has aspects of brilliance.

As a community, it often seems that we are ever upgrading our hammer while looking at the exact same nails.

For me, dogmatism is the sign of stupidity. The belief, whether expressed or implied, that someone has found the “silver bullet” ignores the hundreds of other silver bullets available at a moment’s Google. Ruby, Python, PHP, jQuery, YUI, Prototype, SproutCore; All of these solve a certain class of problems in elegant ways. Each fails to solve one problem or another with equal elegance. Because philosophy plays such a major role in platform design, and philosophies are nothing if not subjective and narrow, no single solution will ever be “the solution”. Failing to recognize that causes the countless and endless debates that take place across newsgroups, blog comments and email lists.

McAllister mentions in passing the real answer to this question:

The most agile developers, however, are those who approach programming with a firm grounding in computer science.

Better stated, the better developer understands the fundamentals and can adapt his knowledge to any platform. While preference and efficiency should come into play, it should not be an overriding dogma. You may know you’re fast in PHP, but maybe the solution would come faster in Python, Ruby, or even Lisp. But you’d only know that if you studied one of them.

Instead of specializing in one platform, it seems easier to instead specialize on the problem of development, working with several different philosophies, dependent on the constraints and problems of the project. Understanding the basic technologies in deeper ways than merely the abstraction a single platform presents you.

The abundance of choice is not a concern, it is an asset. It provides our community with a more varied, more specialized toolbox, allowing us to select the optimal platform for the problem in front of us. We’re not confined to looking at any one problem from only a single perspective. We are not building a tower of babel; We’re building a great library.

As for his final question:

(D)oes keeping up with the latest trends in Web development feel like treading water?

No. It feels like an education.