

With each upgrade, things needed to change to adhere to new ux, but the api needed to stay compatible to allow existing apps to still run on the new platform.

On top of that, like you said, Android has gone through a lot of overhauls/upgrades in terms of gui. In general you (and the Android api devs) had to jump through hoops to make Java perform well. The use of ints instead of enums, minimal object creation by stuffing multiple states into a single object, all to gain a bit of performance. The choices made back then do not make sense now. The original G1 was really lowend compared to other devices of that time, but compared to now it's absurd. Initially Android was focused on making Java perform on lowend hardware. Android is a mess to develop in because their api is a bit of a mess. The worst for me is dealing with new systems.figuring out which magic checkbox I have to check to make the damn thing do what it's supposed to do!!! You have to commit to constantly figuring out new/better ways of doing the same thing and accept that code you wrote a year ago will look like shit when you read it again trying to fix a bug that has somehow gone unnoticed all this time. I understand the frustrations you feel, but that is a big part of being a developer. Net you have lots of different ways of accomplishing the same thing, data access? ADO.Net, Linq to SQL, Entity Framework, Entity Framework Code First! Web development you have tons of options and different browsers that may or may not support what you are wanting to do or they do support it just in a completely different way than everyone else.

But look at other modern platforms and you'll see a lot of the same.

Generally it's just growing pains that you are seeing. The problem here is you picked a platform that has been around for years (and in many ways is being phased out ASP.Net -> MVC.net) which itself was built on an established platform (ASP) to compare to a relatively new platform (though it was built in someways on existing platforms as well). Development in general is a mess, though Android definitely has a lot going on.
