My journey into the world of Mobile programming started quite accidentally. In fact, when I bought an Android-powered mobile phone as a treat for my birthday, I had no official knowledge about—well—almost anything regarding the Android Mobile platform.
I was quite experienced in C#/.NET programming and Assembler languages that go as far as the ZX-Spectrum era and—being the real geek I am— I decided that I wanted to try my luck with Android, too. Oh boy, what a journey it was!
In this article, I'd like to help you, developers with a similar background and beginners in Android programming, to get to know some of the pitfalls in Android application development and marketing, as well as the risks of publishing your application(s).
How it all started
A local Android app development competition was what gave me the push I needed to start learning this versatile programming language. That being said, my first application was doomed from the very beginning: I only had around 30 days to send in a finished product. Unless you're on a strict schedule, please don't repeat that mistake. Give yourself time to learn Java and the Android OS.
One of the stumbling blocks for me in the beginning was setting up Eclipse to work with the Android SDK. Needless to say, Mobiletuts' guide to Android programming wasn't around at the time and doing it myself was a real pain. :)
The second stumbling block was, as you'd imagine, learning the actual programming language. The syntax shouldn't be a problem if you've ever encountered a C-based programming language before, but there are some specifics with Android development that Google's official guide covers fairly well. It provides down-to-earth and easy-to-follow examples of what can be done with the Android OS. I would also recommend Android Wireless Application Development by Shane Conder and Lauren Darcey. Shane and Lauren are also frequent Android contributors to this site.
Finally, I must conclude how the biggest challenge wasn't coping with Java or the Android SDK, but rather recognizing what users want from a typical Android application and how to provide them with enough useful functionality.
Initial Application Worldscope 1.0
As I like to think of it, your first good application for a programming language is very much a learning process; with each line of code you realize that there's nothing that can stop you from conquering it. However, even if you do have a great idea about your to-become Android application, at this point in time it's probably best if you don't start developing it right away. Put it aside, let it cool for some time. You probably don't have enough knowledge to turn it into a masterpiece just yet. In seeking inspiration for what would become my first app, I admit to browsing through the iPhone App store to find out what was working there that could serve as a base for what soon became Worldscope. I reasoned that if, for any reason, Worldscope turned out to be a crappy application, I would at least still gain valuable insight into Android programming and I wouldn't have to worry about someone stealing my killer idea and improving it. :)
So, Worldscope 1.0 was a bit crappy. It was just a "Hello world" of sorts, and that was one of the reasons why it wasn't accepted well among our first users. I didn't consider their needs, which was a big mistake because:
- Some of the functionality obviously wasnít interesting, like searching for recent Webcams viewed by others. "Recent Webcams viewed by you (browsing history)," introduced in 2.0, was accepted much better.
- UI Elements like the Context menu (long tap) should have been replaced, since some research shows how these are often never discovered by users. I dropped context menus and replaced them with more appropriate icons which display at "click" (short-tap).
- Features extremely used in 2.0 didnít exist in the preliminary version, such as the ability to do a Map search.
- It lacked any visual appeal.
All of this (including some ugly bugs) led to a few bad comments and ratings on the Android market, which haunts me to this date. I could've avoided all that if only I had done my homework and waited for a few days before publishing Worldscope. The day is smarter than the night!
If you only keep one piece of advice from this article, I recommend you keep this one: people who dislike your application will also be commenting the most. This can hinder the success of your application much more than you can imagine!
So always take precautionary measures before submitting your application to the store. Ask yourself, "Is this the best I can do?" If not, revise. First impressions count.
Also, remember to do a lot of bug troubleshooting. Don't be surprised when someone says "Your application doesn't work on Smartphone X." Unlike the iPhone, Android is installed on a broad range of different phones and it's sometimes difficult to make everyone's experience equal. That's why you should test your app on as many devices as possible.
Probably the easiest way to do so is using remote-testing services such as Perfecto mobile and Device anywhere, which offer you both paid versions and short free trials of their services. However, be advised: time runs fast! First make sure everything runs perfectly on your local machine in different emulators and situations (phone widths, screens, etc.) and only then proceed with remote-testing. Otherwise you might find yourself running short of time and high on expenses very soon.
I know better than to think my code is perfect, but some of the mistakes I made with Worldscope might seem laughable:
- The competition Worldscope was sent to required it to work on SDK Version 1.6 or Higher. Worldscope didn't use any functions unavailable in 1.5, but that setting remained in my App manifest—which cost me 12% of potential users!
- I hadn't tested the application on GPRS, but only over Wi-Fi. Some bugs appeared specifically on slow internet connections which I realized only after a few catastrophic ratings on the Market. Test in real-life situations!
I wasn't careful describing Worldscope and forgot to indicate it offers only still images and not Webcam videos. A lot of the bad comments were specifically related to this fact:
The few bad comments I received at the beginning didnít discourage me. That just meant I had to try harder in order to improve Worldscope. My first step to do so was brainstorming. How would people like to use Worldscope? What interesting features are available at the moment from webcam sites? More importantly, are there any features people don't want?
I sat and thought about these questions thoroughly, reviewed a couple of e-mails received (I believe there wouldíve been more of them if I provided an easy way to contact me, which I did in later versions), taken the time to look through some comments other applications received, and revised Worldscope accordingly.
First, it got a fresh coat of paint both in its mobile version and on the web. Then, I added functionality which happened to be crucial to its better ratings:
- Map search. As I said in the previous chapter, this was one of the most useful features of 2.0 according to user comments. This was a distraction at first!
- Saving favorite webcams to groups (like Traffic, Landscapes, Cities, etc.).
- Setting webcams as wallpapers and wallpaper to auto-refresh. There's no need to force users to start the application for such a simple task.
- A simple feedback button (to contact me), "follow on twitter," and one-click commenting on the Android market. That way, users who like it can quickly leave good comments. That helped me a lot in thinking about new features and improving Worldscope. I also believe the users feel better when they know they can easily talk to the person whose App they're using. Think 37 Signals.
Make an effort here! If you've followed my advice and made your first application similar to a pre-existing one, take note of what it does well and what comments it receives. Learn from the mistakes other developers make, not your own.
As your application grows, it will also start to receive more attention from other people. Worldscope first received an offer on Chinese translation (from Goapk) and submission on the Chinese Android Market, as well as French translation from one of our users (this was wonderful recognition of my work).
Although you quickly might dismiss the fact Worldscope "speaks" five languages (after all, "English is king"), that's exactly what made a lot of users choose to use Worldscope:
AdMob Mobile metrics, May 2010
Watching the markets
I believe one of the crucial things you should consider when publishing your application is where to publish. While the official Android market is a "must," there are a lot of other good places (a lot of them with better search options, too) which can bring many users to your App. Also, if you want to sell your application, the official Market isn't available everywhere in the world so alternative marketplaces might be your only chance to sell.
Make sure people get to know your application before they download it. Think thoroughly about what you're going to say on the download page and how to best communicate your message.
Here's some insight into the actual numbers of downloads from different markets after Worldscope's first sixty days:
You should also remember how "spikes" in downloads usually occur when one (or more) of three things happen:
- Publishing a new version. Google promotes new versions in their ìjust inî category on the Android Market.
- Getting good reviews
- Being controversial. It doesn't have to be drastic, but if you make your crowd interested, you'll see usage growing just via word-of-mouth. However, keep in mind that this is not "official" advice and that you should never overdo it.
Thatís why I try publishing bugfixes and new functionality for Wourldscope once every one-to-two weeks. However, note that I donít publish just for the sake of publishing, but only because I think the update is important. I donít think itíll do you any good if you make an ìinvisibleî update every day, and I don't recommend doing so.
Going back to real data from Worldscope (I'm using Flurry), you'll notice that the number of new users has jumped every time I updated Worldscope. It's also great that the total number of users has grown over time, which is something you should definitely be aiming for.
August 26th and September 15th stand out in particular.
Tips we'll try out next time
Notice how I said ìweî in the title? My two sons have joined me in my Android programming quest, each with their own area of expertise (web coding and design) and have done a tremendous amount of work for Worldscope. So, hereís a quick word of advice: if someone with different skills from your own can help you (especially on bigger projects), accept their help!
With my sons in the team, weíve started considering other things to do for future Android apps. For one, we hear social networks such as Twitter and Facebook are all the rage nowadays and weíre actively thinking of building our own blog.
Blogs help make connections in the online world, and often help you build loyal readership that is interested in what you have to say. Think about this situation: you have an Android application about traveling. Joe is reading your blog actively and you share good advice. One day, Joe needs an Android application about traveling. Who do you think heís going to visit first?
A good example of such use of a blog is 37Signalsí Signal Versus Noise, where they publish articles closely related to web development and design. They also sell web applications targeted at people in the web design industry. It's a match made in heaven!
As for social networks, they're great because they can quickly keep large groups of people updated and they already have a large community using them.
No matter how ready you think you are to publish your application, mistakes will almost always exist and bugs will appear when you least expect them. Testing early and often, as well as listening to your audience will help reduce them to a minimal amount.
Always remember that people WILL judge a book by its cover. Do consider designing a nice application (Worldscope is constantly trying to further develop its ìprettinessî factor) and think about userís needs and wants. More options do not always equal more users, and itís possible youíll soon encounter the paradox of choice in its ugliest form.
Remember to simplify, within reason, and never forget who you're writing all that code for (hint: it's not just about you).
While we do recommend using the latest version of Worldscope, here's the 1.2 APK file so you can compare it with what exists today: