Funny, I see the .NET framework as a microcosm of Spolsky's criticism. The core C# language is fantastic - imho, it eclipsed Java at v2.0, C# 3 caught up with the popular OSS languages (Python et al) and since then some fantastic concurrency features have been added. But at the same time, almost every edition has completely thrown out the database library and started from scratch. Ditto remote execution. Serialization has done similar dances. Microsoft has written one great language and like 5 mediocre complete frameworks for every subject under the sun.