About two years ago, I decided that I wanted to code my first Android app. Although I made simple apps for iOS in the past, I wanted to make something a bit more complex. I settled on making a free Pyramid Solitaire game since I didn't think it would be too difficult to do. I assumed that it would take about a few weeks to create. Man, was I so wrong! It ended up taking an entire year just to upload the first version to Google Play. Nevertheless, it contained many horrible visual and technical bugs. Worst of all, I didn't realize that my game was crashing because I didn't include analytics software to detect what was occurring. I assumed that users would report errors to me as soon as they happened (out of about 400 crashes, only 1 ever did). As a result, my store ranking tanked and my AdMob revenue almost completely dried up.
Since that time, I've tried to improve my game and correct many of the issues. Now, if you search online you'll definitely find countless claims of people who've made tens of thousands of dollars off of their first app, and they are now giving advice to new app developers. Although I haven't yet made anywhere near that amount of money yet, I can certainly give you a few tips from lessons that I've learned the hard way.
1. Don’t use paid review/install services.
You’ll have thousands of bots spamming “Good app! 5 stars!” and it will be obvious that you paid for them. Also, app stores have algorithms that detect these spammy reviews and will automatically remove them thus you wasting money. Real, genuine feedback is extremely important for improving your app. Encourage your users to leave real feedback. While I never actually paid for reviews, I used one of those services where users install each others' apps, tried them out, then left a review. I tried to be honest in actually installing and reviewing appropriately, but it was clear to me that everyone else was just interested in getting quick and easy 5-star reviews.
You also want real users to install and use your app. The whole point in making an app is so that actual users use your app, not bots. After all of those bots have finished installing or rating your app, your app will be uninstalled in order to reclaim the space that your app occupied on their devices. Too many uninstalls will hurt your ranking, so you want to keep the uninstall rate as low as possible. It's best to avoid cheating by utilizing these "10,000 installs" services and build up your install count the honest way.
2. Don’t be so quick to spend money when cheaper options are available.
Why pay more for a service when that same service is available to you for a lesser charge? If you're on a small budget, then take advantage of public domain, royalty free, open source, and Creative Commons licensing that allow you to use and remix images, code, and sounds for your app. There are plenty of free software tools that allow you to modify the resources for your app, such as Inkscape, Audacity, GIMP, Blender, and so on.
Don’t simply throw money into advertising platforms like Google Adwords because Google will gladly take your money from a poorly planned advertising campaign! The cost of acquiring users is rather expensive. For example, you'll likely spend more than $2-$3 for a user in the United States. The cost to acquire users from other countries may be lower (like India or China), therefore advertisers are less willing to pay for each individual user to click on their ads. If, however, you promote your content on Facebook, Twitter, Reddit, or other social media sites for free you don't have to worry so much about expensive user acquisition costs.
3. Don’t spam ads, especially interstitial pop-ups.
Users hate it whenever they're overloaded with advertisements. Thus, users will ignore those ads instead of paying attention to them. I limit the frequency of ads in my game so that users aren’t overwhelmed by the constant interruptions. You typically don't want to show more than 3 interstitial ads per hour. I also try not to show them during the middle of a game to avoid distracting players. The best time to show interstitials is during a natural pause or break, like a "game over" screen. Reward users for viewing ads to completion, but never encourage clicks since that's against the terms of service and will result in your account getting suspended.
4. Don’t release apps with memory leaks or fatal bugs!
Credit: Ram CC-BY-SA 3.0
Apps with fatal errors that impact app usage will cause users to uninstall which will lower your rankings in app stores. Sometimes these issues are quite difficult to resolve since there are various device configurations and specs that can interfere with your app performance. I made the mistake of promoting my app with a nasty memory leak that caused many users’ devices to throw “out of memory” exceptions or become extremely sluggish. By the time I realized what was happening, hundreds of users had uninstalled my app in frustration. The money which I made in ad revenue from the new users was about half of what I spent to acquire those users. Thoroughly test your apps on real devices, not only on simulators, since they’re never perfect and won’t reflect various hardware quirks.
If you are including other libraries and packages in your app, you have to make sure that they are stable and won't crash your app. Any bugs that exist in imported libraries would be inherited by your app. They are very irritating to fix, especially when you don't have access to the source code.
5. Don’t try to do everything by yourself.
If you’re creating something complex (like a game) try to find others who can assist you. We all have our strengths and weaknesses. It’s best to take advantage of your strengths and delegate those tasks in which you’re weak to others. You'll get your project done faster that way since you can dedicate more of your time doing what you do best. I attempted to do all the work for coding, UI design, artwork, sound, advertising, social media, and it took way longer than I expected. I'm certain that my game would've been better had I found others who were good at doing the art, design, and handling user acquisition.
6. Don’t ever use live ads while testing or debugging (even by accident)!
I once uploaded my app to be tested but didn’t realize that when Google ran my code on device simulators they randomly click everywhere on the screen. Since the code that I used to dynamically disable ads in a test environment failed (I was testing, of course), I racked up over 100 invalid clicks. Google will obviously ban your Adsense account (and possibly all of your Google accounts) for click fraud so you could imagine the amount of fun I had trying to convince them that I never intended to scam them or their advertisers.
If you want to check out my free app, Pyramid 13 - Pyramid Solitaire, you can find it on Google Play!
Having a background in mobile advertising, I agree with your point #3 entirely.
The worst would be when you're in the middle of a video and an ad just randomly covers your entire screen.
Point here is that ads are annoying and distracting, but if you gotta do it for monetization purposes, put it where it's the least intrusive and will cause the least disrupt to user experience.