пятница, 25 апреля 2014 г.

How to Fail Your Brand New Windows Phone Application

As some of you might have noticed, over the recent months I submitted a couple new applications to the Windows Phone Store. Here I want to reflect on my experience with delivering the first one, Appoint, and even more on the results of this delivery.

How was it a Success

Appoint is actually a very simple thing. Its key goal is to provide users with a set of additional entry points to default Windows Phone calendar app, which allow to create appointments (or reminders, as I see them) a bit quicker than through the built-in facilities. This is achieved through giving user several customizable shortcuts to pin to the start screen. For example you might want to be able to quickly create appointments for 11 p.m the next day – for this purpose you will tune the "tomorrow" shortcut setting proper time and duration and pin it to the start screen. Then, whenever you wish to create a reminder for tomorrow you just click this shortcut and it opens calendar’s screen where you need only fill in the appointment title and press ‘ok’. The idea is trivial and when faced with it for the first time I thought that such an app would save me from the need to pick proper date and time again and again when creating simple reminders in the calendar – and it really does save time.

The simplicity of the app was the key reason for me to take it into production. By the time the idea came to me I already gained some experience with the platform through the attempts to create Arithmo – the app that should have been my first one. However, in January I still had a couple things to complete before Arithmo could be shipped: UI and some artwork. Because I suck at both and was really scared of the work needed to make the app nice and easy to play with, I have easily jumped away from it to the new goal. At the same time, I was quite determined to push Arithmo to the market as well and this put me under certain constraints in terms of time. As a result, I decided that it is a good idea to try to deliver an app in one month – the goal looked both quite ambitious and achievable. So, right after checking that all aspects of the Appoint idea are actually implementable, I set up a deadline and promised myself that no later than in a month my calendar application will be submitted to the store.

On January 19th I made my first commit to the app’s repository and at night on February 14th the package was sent to Microsoft for certification. I didn’t earn $100 in 24 hours, neither have I completed something enormous over the month, but this was a success. I have finally jumped out of the pit of hoping to produce something and deliver it to the public on my own and found myself in a world where I can not only set deadlines, but actually stick to them. It felt awesome.

How was it a Failure

The only problem with Appoint was that it became a miserable failure from the market’s point of view. While the app is still downloaded from time to time, the stream is very slow – something about 1 installation over 2-3 days. With the current 50some installs this means that over the next 3 months it won’t even reach 100 total downloads. The word failure in fact does not seem to be descriptive enough for this situation.

Apart from the sad fact that I failed to secure any significant users mass for Appoint, I also didn’t get much feedback. If one checks the app in the marketplace they will see a single 5 star rating on it – the one that I left myself. This means that none of the 50 users who downloaded Appoint chose to rate it or leave some review. In the context of mobile apps this is very bad: an application without ratings won’t see much downloads simply because potential users won’t have a chance to come across it in the store. Here I don’t mean that I didn’t get any 4 or 5 star ratings – I got no single negative one as well. That is, apart from the review posted by Ron Lunsford I haven’t seen any feedback, which could help me locate problems and fix them to make the thing better.

Finally, the review by Ron made me see one thing clear: I completely failed to communicate the idea of my app to potential users. The descriptions in the Store and on the website neither manage to show the benefits, which one might get from Appoint, nor engage Windows Phone users into trying it. Furthermore, the app’s UI itself hardly helps user utilize it in an efficient way or maybe even prevents him or her from understanding what to do with the thing.

Another point that the review revealed to me is even more important. From how Ron described and used the app I can draw one very simple conclusion: the ways people want to use calendar on their phone might be different from how I interact with it and thus offer little room for a utility like Appoint. Moreover, most of the things included into the app didn’t draw the reviewer’s attention – and likely they weren’t found by other users or were not beneficial to them.

Why did it end up this way

Now let’s not burst into tears and analyze the reasons behind Appoint’s poor performance in the market. First and most important, when starting the project I was not sure if anybody shares my views on the phone’s calendar, appointments and reminders and hence can benefit from the app. I simply spotted a thing that I could implement and use myself, but it may be the case that the actual value brought by the application is minimal. To be honest, I myself use it in a very limited way and now I can see that Appoint could hardly become a first-class app for most people, and even for those who will find it helpful most features can’t be relevant like they are not important for me. This all boils down to the fact that any application should provide enough value to users – as long as we want it to be popular. Just taking an appealing and implementable idea won’t bring one far in terms of market success unless the idea is really clear, simple and relevant to a significant number of customers. For a developer this should mean that once one decides to create something they should analyze it deeply, try to get an unbiased view and estimate the target audience. Only if the results of this research are satisfactory it is safe to start development. This of course applies only to the products pursuing success in the form of paycheck or popularity and that’s obviously not the only possible goals for developers. For me success was more of a dream than a goal – main objective was to create the app and push it to the store under certain time constraints. With this mindset I by no means could accurately assess the market potential of my app.

Beside the lack of initial verification of the idea I also made some design mistakes. Particularly, despite the fact that in a recent post I mentioned the risk of losing control over the product’s features set, I have actually committed this crime with Appoint. The main screen of the app hosts quite a lot of tiles whose purpose is not that clear, shortcuts customization is hidden and the value of some of the things built into the app is doubtful. Maybe even dropping two thirds of the shortcuts from the main screen would make the first encounter with the app easier for users. In the end, I use only three or four of them.

The mechanisms that I use to engage users and help them understand the purpose of the app are very old and quite inefficient – lots of text. There is plenty of reasons for my descriptions to be useless – particularly, the quality of language and poor explanations. Although, what is more important, texts are boring and the more of them you throw at your users the more they will think that the app itself is boring. Instead of trying to fit as many explanatory paragraphs as possible into a screen we should look for more appealing and entertaining ways of educating our users, which would make them want to play with the product, not show them how complex it is to handle.

As for the lack of ratings and feedback, the only way in which I tried to get them was including a pretty standard popup, which will jump at users each 10th launch of the app and ask to rate it. One of its drawbacks is that it works only if some users do return to the app and this doesn’t seem to be the case with Appoint. Besides, even if someone sees this dialog they can easily ignore it and there is no reasonable way to change this without annoying users. Thus, the only viable way to get reviews from inside the app is to build a product that will attract users, keep them interested for some time and bring them strong emotions – in this case they might decide to pay developer with their precious time and rate or review the application. On the other side, since ratings come only to those apps, which are downloaded, there is little surprise in the lack of reviews for Appoint.

This brings us to my most serious failure – the lack of marketing. To break the above circle one has to draw some attention to the app from the outside. The only marketing effort that I put into Appoint was setting up a website, posting several tweets and mentioning it on my LinkedIn and Google+ pages. This couldn’t have had any significant effect simply because I don’t have much followers in any of these social networks and most of those who follow me are not really interested in Windows Phone apps. What I should have done instead is aggressively advertising my app in various groups and forums for Windows Phone developers and users, but I was simply scared of appearing somewhere and inviting people to try my product. One source of this fear was my suspicion that the app is not that useful and hardly anybody will admire it. However, more importantly, I was simply afraid of claiming ownership of something in front of many people and looking like a freak who is able to code, but can not bring any real value. That’s what I must fight and the fact that it isn’t easy for me to overcome this fear might be my most important takeaway from this affair. In the end, until I deal with it I won’t be able to win any users for my products.

So, making an application a failure is not that difficult. However, if like for most of us this is not the key goal for you, you should work hard in two areas. First, be sure to explain yourself and your users what are the benefits brought by your product and make sure it is nice, useful and simple to handle. Second, let as much people as possible know about it so that they can admire what you have done and spread word to others. Neither of these tasks is simple, but making life better for scores of users is definitely worth the effort.

Have you ever seen your application in the bottom of a store with zero reviews? Or maybe everything you ship always hits the highest positions in app ratings? Please share your experience and tell what were your mistakes or which routines do you follow to create successful apps!

пятница, 11 апреля 2014 г.

Use Converters in your Windows Phone Apps

In a recent post I have covered several approaches to store data in a Windows Phone application. Another important problem is presenting data in an easy and controllable way that would not interfere with other layers of your app. To some extent XAML handles this task well, but from time to time just markup is not enough and one needs to introduce a portion of imperative code to present data nicely. To make this possible each binding in a XAML-based app may specify a converter, which will be responsible for transforming data between internal and external representations.