I also think that Google has found a sweet spot.
The implementation is far from perfect, but the use of z-position + color creates a really good UX IMO.
They took pretty much the only thing they got right design wise (a sense of depth applied to buttons & popups) with the first versions of the OS and used it very well.
There are still some things that need improvement though :
- Consistency. The platform is slowly becoming more consistent but there is still a way to go. We now have a design library. It is a great step in the right direction but it needs to evolve a lot. Particularly, Google apps should always use the same implementation of a widget (whether it comes from the public design lib or a private one). With the nav drawer, at first there was no common implementation in the support/design lib, so each team implemented one with small differences, for 6 months it was very maddening.
- Navigation patterns. Google encourages the use of tabs for 0-depth apps with a few options. Good, that's indeed a strong pattern. For more complex apps though, the only solution pushed by the system is the Navigation Drawer. I have got to admit that Google uses it well with all the important features accessible from the first screen and only the secondary use cases hidden in the drawer. Third party apps generally get that entirely wrong. That's not always a good pattern though and I would really like to have an alternative for complex apps pushed by the platform. (yes in most cases the response is to simplify the app, but that's not always possible.
-System navigation. the back versus up paradigm is almost always badly implemented so it might be time to just abandon it. The home + drawer idea is confusing for lambda users.