Microsoft has never been able to achieve the same level of UX consistency as Apple (or any other major software vender for that matter). The usual excuse is that Microsoft cannot control the way other developers write applications and although they produce style guidelines they cannot enforce them. This is certainly a valid point but I think Microsoft make problems for themselves.
Take as an example the Ribbon control, a recent innovation that started out in Office 2007. This is a recent control and so there is really no excuse for getting it wrong. So how many implementations of the ribbon would you expect there to be? Let us count them…
1, Office 2007 has the original.
2, Windows 7 has a different implementation.
3, Visual C++ now has a ribbon MFC classes.
4, WPF has a version written in managed code.
No wonder they need 100,000 developers at Microsoft when they duplicate so much work. Although they did cheat with the Visual C++ version as they bought it from a component vendor. Versions 1, 2 and 3 all have different code bases even though they all use C++ for the core implementation. I will cut them some slack on the WPF version as it needs to be written in a managed language and not C++.
Now add into the mix all the different ribbon controls from venders, including myself, for Window Forms, WPF, Silverlight and C++ and you’re talking about a massive level of coding duplication. Still, keeps us all in work I suppose.