Which came first, the chicken or the egg?

I have noticed that there seems to be a focus first on the technicalities and then on the semantics. Take Indigo (or WCF) for example. There has been sooo much talk about its technical aspects, but very little talk about how to design for it. I'm pretty sure that when the technicalities have been sorted, it's time for the semantic side. I'm not thinking about technical semantics, but rather business semantics.

Another example is annotations (or attributes as it's called in .NET). Up until now it's been mostly considered a technical tool for describing technical aspects. Erik Doernenburg will be giving a talk at SPA about how the "tool" can be used for domain modeling.

Perhaps it all starts with a customer need, then it goes into tech mode, and then back again (a few years later) to the customer need?