You're an amateur - that's why your app gets 1-star ratings

You keep complaining about ungrateful users that give your app a low ratings. It's not their fault, you brought this upon yourself.

I've looked at your app and collected a list of what you did to make it so:

This is what you did to the app

You made it ugly - It's ugly because you didn't hire neither an interaction designer nor a graphic designer. You sketched it out yourself and there was no real app design.

You made it slow - It's slow because you didn't follow best practices, you didn't check for memory leaks, you didn't use threads, you didn't check the battery consumption, and you didn't do any profiling. It worked fine on your octo-core.

You made it unreliable - It's unreliable because instead of using platform or 3rd-party libraries, you had to write everything yourself. Your own JSON parser, your own image loader, your own animator. You did this because you couldn't be arsed to learn someone else's code, and you know you can make it better.

You made it require a pristine network connection - it requires a flawless connection since you didn't test it on bad networks. You didn't even KNOW there existed captive portals (you still don't). You couldn't be bothered to buy an SSL certificate so HTTPS is out. You didn't know about HTTP caching, so you wrote your own mechanisms instead.

The feedback you didn't listen to

You ignored user feedback - you ignored it because you didn't follow up on replies in the app stores, nor did you reply to emails or Twitter questions. You didn't call any of your users and ask them what they thought. You didn't send out questionnaires, you didn't ask for feedback. Heck, you didn't even include a way to get feedback.

You didn't monitor the usage patterns - You didn't monitor since you didn't know how. You hadn't heard of Google Analytics or Mixpanel or the plethora of libraries that adds this capability with a one-liner. And you believed you understood the user anyway, so who needs that?

You didn't monitor the app - You didn't monitor the app because you didn't know how. You didn't know that every crash that ever happened on any device could be captured, packaged, and added to a database for you to later dig into. You hadn't heard of Crittercism or HockeyApp and since the app "worked for you" you didn't see the value.

You didn't monitor the server - You didn't monitor because you didn't know how. You didn't know there were tools that could monitor and store the CPU load, the network load, the ping time, the transfer time, and test this from all corners of the world
over all sorts of network connections. You didn't know of Pingdom, Runscope, New Relic and all the others.

The things you did To the server

You made it slow - You made it slow because you didn't write benchmarks to test the endpoints. You didn't even write unit tests to see that the server even worked. You didn't know there existed benchmark tools like ApacheBench and And honestly, it worked fine for you. You didn't realize that the servers ping, processing, and transfer time directly translates into how snappy your app feels. You didn't know of ETag or Last-Modified and other proper caching strategies.

You made it dumb - You made it dumb because you wanted a simple job when implementing it. You put the load on the app instead. You didn't provide filtering or fetch more, and for complex operations you returned 202 and made the app retry a few times.


You thought app development was a simple activity where one man can whip together an app, publish it, and get rich. You're an amateur. That's why you get the 1 star ratings. Or, you're a professional and just had yourself a good laugh :D

And yes, we've made all the mistakes I've mentioned above, and we learned the hard way.