Given that this was many months ago since I switched to Digital Ocean, here are some of my grievances (my memory is fuzzy so I'll give you a little more than 10):

- Switching accounts on anything Google is still a nightmare
- The console doesn't preserve scroll position as new items come in
- Asks every time to try the new beta console instead of remembering (which brings the page load count up to three separate pages, just to navigate to the console home page)
- Very often gets stuck on the three dots loading screen forever
- Upgrading to Google for Work Support took several hours of time after I paid to give me access to the support web page -- after I paid, it still said I needed to upgrade to access that page for several hours delay (meanwhile users could not access my site due to 502 errors, it was down, and I had to beg the _billing support_ to help redirect my support request to the regular support team, even though I already paid -- later on, Google admitted fault to both the delay and the downtime)
- 5xx error codes do not show up in the Developer Console logs (which meant I could only tell that my users were getting these 502s from before was actually issuing test requests myself, there was no way for me to know even remotely how many of my individual users were impacted/affected)
- Increasing daily budget/quotas is all over the place (billing page is buried), no warnings, they just pull the plug
- Blocked in China
- StackDriver monitoring requires (yet another) Google account auth
- Logs are thrown out right away (not preserved over a long enough period)
- No easy way to search and filter the logs/console
- Too many dashboards
- The menu items "Datastore" and "Storage" are poorly named and easily confused for two very separate concepts -- and then there is a "SQL" menu item that is separate from the "SQL" within the "Data store"
- No input validation when editing individual "datastore" items
- StackDriver completely replaced the old monitoring functionality (shudders)
- URL fetching in Python using requests still doesn't work
- If your credit card expires, there's a warning triangle icon in the dashboard UI, but going to the billing page does not show any errors

And the biggest headache of all:
- Per-row duck typing on data store when entering data into web UI (enter a 0 in one row and a 0.4 in the other, and then one is automatically inferred to have type int, the other type float, without the user having ANY say in the matter); but then per-column strict typing in the Python API -- if you try to grab the 0 as a float value, it crashes and throws an exception so ONE row in a column you intended to be floats can crash because it misses a decimal place (the rest are okay though, so in practice, you'll have one "special user" who always crashes, but then everyone else using your app is okay)

Here's the kicker though: Entering a 0.0 in the web UI gets rounded and "coerced" to an int so you CAN'T even provide a float value in the web UI that was a whole number (no way to say, I really want this 4.0 to be a float -- they literally don't let you do this at all; instead, they round it and call it an int); and then, of course, Python API would crash because it's not a float, and you couldn't manually override/specify it (but you had to provide types to each column in Python land, forcing every row in a column to have the same type, even though the web UI doesn't care about types, let alone consistently enforcing the same rule that each row in a column must have the same type, ahhhh!!! and Python isn't even strongly typed so these are all artificial constraints in their very own ORM library!)

Not sure if I'm at 10 yet, it's been six months or so since I used it, so my memory is fuzzy. Then, I could've easily listed 20 more.

On the other hand, the web UI does load a lot faster now than it did six months ago, so good job with that! Before it would often take 30+ seconds to load on my San Mateo office's gigabit fiber.