Joel Spolsky writes a pretty scathing critique of Microsoft's Mesh initiative.  In it he says Mesh is an example of what he calls "architecture astronauts"...

I tried to coin a term for the kind of people who invented Hailstorm: architecture astronauts. "That's one sure tip-off to the fact that you're being assaulted by an Architecture Astronaut: the incredible amount of bombast; the heroic, utopian grandiloquence; the boastfulness; the complete lack of reality. And people buy it! The business press goes wild!"

The hallmark of an architecture astronaut is that they don't solve an actual problem... they solve something that appears to be the template of a lot of problems. Or at least, they try. Since 1988 many prominent architecture astronauts have been convinced that the biggest problem to solve is synchronization.

My biggest disagreement here is with his assertion that being an "Architecture Astronaut" is a bad thing.  What I think Mr. Spolsky misses is that "solve something that appears to be the template of a lot of problems" is another way of saying  "building a platform". 

A platform is a collection of tools that is used to build numerous things which means those tools, by their nature, have to be abstract.  Just as a Hammer wasn't invented just to build houses a software platform can not be tailored to one specific problem. 

Mr. Spolsky seems to be missing the fact that Application Development and Platform Development are two different things.  Application developers need to focus on solving individual problems and I'll agree that not enough do.  Platform developers on the other hand have to be broad in what they create.

In fact, I'd argue that a good platform is one that allows subsequent developers to do things that the original developers never dreamed of. 

One last point I'd like to make on this is that the coming Internet age requires every developer to think a little more like a platform developer.  Web Services allow us to create a global toolbox where the pieces of each vendors platform can be mixed and matched to provide more and more tools. 

What each application developer needs to do is look at abstracting the underlying functions of their program while solving whatever individual problem their software is designed for.  That way others can use those functions to solve completely different problems in the future (making the toolbox that much bigger).

The world is much better served if every application developer has a Minor in "Architecture Astronomics" to compliment their Major in Problem Solving.