Here's an interesting piece on the complexity that's creeping into .NET. I think it's pretty much endemic to any of the C style languages and tools, but here's where Craig Bailey really hits the nail on the head:
Now increased cost is all well and good if the problems we are solving are proportionally increased. But for companies like ours (at the small end of the scale - we only have 15 developers) the problems we are addressing are the same ones by and large. eg Customers want this database intensive web site, or that accounting interface, or that EDI network or this trading system etc.
So, assuming we are staying current with .Net skills (which we are), it is gradually costing us more to provide solutions to largely unchanging problems.
Thus my question: what is the return for us? Will we (software companies) be making more money? Well, we'll have to in order to keep the talent! Will we be making more profit? I doubt it. Will our clients be glad to be paying the higher fees we'll be charging? No, we'll employ bigger marketing teams to win them over (with the added cost that brings) or else rely on the hype to do it...
There's the problem that IBM, Sun, and Microsoft are increasingly making worse - they are trying to build solutions to huge problems. The dirty little secret is this - there just aren't that many of those problems out there. Most software projects don't need to scale to thousands and thousands of concurrent users. Most web apps don't need to withstand a constant slashditting. Most applications are, in fact, pretty mundane.
Most projects don't need an EJB infrastructure, or the MS .NET equivalent, or the huge weight of the SAP infrastructure. That's where the big vendors want to herd people though.