Phone Development

I have been contemplating about doing something on the side for quite sometime and have developed some line of business applications in the past so that I can keep up with the latest technology and also some extra income for the “Sale” that is on whole year round. In the current economic situation selling anything to the businesses is quite a task as they are only interested in savings also doing that alongside a fulltime job is a little bit of conflict in interests.

Thinking about jumping into the phone market I see a couple of PCs in a household vs twice as many phones that are used a lot more often. It seems to me as a no brainer.

Windows Phone

Developing for Windows Phone 7 was a natural choice for my first application as I am a C# developer with some experience of Silverlight. Also I think that getting applications in a market that is growing as compared to matured one is a better choice there is potential for a higher reward in the long run provided there are growth opportunities of that market so if windows as a mobile platform is successful I will be successful. That was the idea at least before the windows phone 8 was not in the view I am not so sure now though but that is a separate debate.

Development Experience

The best thing about Windows Phone 7 is the development experience. The tools are great and very easy to use. The programming model (there is a choice of several) are not that difficult to master. The development effort is considerably less than Android and iOS. I used C# and Silverlight to develop my application using Visual Studio 2010. Other notable libraries are MVVM Light, Silverlight toolkit, Tasks Parallel Library for windows phone. I really missed Task Parallel Library (TPL) as there is none built-in for windows phone and I am quite used to it as compared to the other built-in ones that TPL wraps.

Visual Studio

Visual Studio makes the whole process very easy. The only issue that I can see is XAML. If you are ok with working in raw XAML then that is fine. As a web developer working with raw html I got used to working like that. If not you need expression blend and I am not that great in it as I have never needed it for what I did. The memory profiler is built-in and is quite useful to optimize the memory usage and necessary if your application does memory intensive tasks else you risk failing the marketplace testing.

MVVM

Though it is not an absolute requirement but it can be very useful in maintainability and testability of the application. I used MVVM Light toolkit but there are several other libraries and mechanisms to achieve the same.

Async

As as non-web application just about every action is async to give the end user a pleasant experience. It is quite important that one understands the concepts of UI thread and background processes and their importance. There is nothing worse than a UI that freezes for just about every button that is pressed. It also equally important to give the end users some kind of feedback while the background processes complete their work. The thing to remember here is that once the background worker has completed its work the result may need to be executed in UI thread if you forget this you may be greeted with a “Cross Thread Exception”.

The application

Whatever your application it is important you get what you want from it otherwise it can be a massive discouragement for your future projects. If you are looking for return on investement then make sure your revenue model is correct for the application. There are times when revenue is not everything but you get other benefits out of an application. In my case I wanted the revenue but most importantly I wanted to see if could do a phone usable application in-house (2 x Developers i.e. me and my wife and a tester i.e. my daughter). I wanted to gain full life cycle experience without too much investment. There are applications that are free but you can earn via advertising or use free apps to advertise your paid apps the choice is yours, you can also combine some of these if it suits your needs.

Minimum marketable features vs Ratings

There are those who believe that you should get your app out as soon as you have a basic working app while other say that you must have a good start with the ratings i.e. first impression. I was from the second camp so decided to put enough features to get a good start i.e. a choice the users cannot refuse but I got burnt because doing so got my app late in the market and by the time I published I had competition. There needs to be a good balance between the two.

Prepare for the worst

There is a saying “hope for the best and plan for the worst” by someone. That holds true for a phone app. I used BugSense to record all errors and it is a great tool.

Beta Testing

Beta testing is simple I published my app and selected the private beta option. Filled in all the blanks and done. The worst thing about beta testing is find someone to test it for you. I found one good person on twitter who did a very good job. The thing to bear in mind is that it is better that you name your application as “App Beta” as there is no option to delete it from the dashboard once it is there and you will end up with two apps with the same name. I did not know that and got stung I have a feeling that reviews left during beta are also applied to the app or at least they appear in the dashboard if the app name is same. This could also prove to be a loophole (wink wink) but I did not test it thoroughly.

Publishing

Publishing is similar to beta publishing. The process is a little slow and requires patience. Once the app is in the market it takes up to 24 hours for it to be available.

Searching

Keywords are important so that your app can be found by perspective buyers. There is a limit of five keywords separated by commas and anymore will remove all of them so do not try. But after some analysis it appears that Microsoft search algorithm uses String.StartsWith and String.EndsWith and does not use String.Contains so choose wisely as it that does open a lot of possibilities (wink, wink).

Rating

The ratings and download counts are updated a week or more later so for a new developer that is quite discouraging as most people think that there are no downloads and their effort was a waste of time and they might retry with different keywords etc which requires republishing and it can be a slow but vicious loop. I suggest that Microsoft does something about it. Also ratings only appear per region so the ratings available in the US are not available in the UK in comparison to the Android and other markets that makes the Windows Marketplace look bad as it is about the numbers as well as content.

That is all from me.

Special thanks to Nathan Gloyn (Twitter: @NathanGloyn) for encouragement and Microsoft for a free phone.