Sunday, December 29, 2013

World Map App Update

World Map App continues to gain users, and the cost of maintaining the app is fully covered by revenue generated by the advertisements. I plan to fix a few bugs and improve the app soon, but I have not had time recently to work on the app. As far as I know, World Map App is the only map in Russian that offers maps with Russian labels. I believe this is the main reason for its popularity.

About 2600 people have app installed. The app has experienced steady growth since release of version 6. Version 6 was exactly the same as version 5 except that the app would automatically download all the maps in the user's language. The whole idea in version 5 was to allow users to pick and choose which maps they wanted rather than forcing them to store unused maps on their phone. However, as soon as I release version 5, the number installations suddenly slowed down dramatically. I believe this was because users did not want to spend the time to download new maps, or users couldn't not figure out how to download new maps. To combat this, when the app is run for the first time it automatically downloads all maps that are in the user's language.


Russian speakers continue to be about 70% of the users.


Not surprising, the top three countries where World Map App is installed are Russian speaking countries


I've included advertisements in the app to help cover server costs to host the SQL database and generic storage containers for the images. Originally, I was hoping to make a significant income with the World Map App, but it is very difficult to make much money on advertisements developing apps for Android that are free.
I've shown about 36000 advertisements, and users have clicked on ads about 550 times. I've generated about $30 on advertisement clicks.  The image below shows the earnings on a daily basis starting in August 2013.

I average about 300 advertisement impressions per day, and I average about 4 clicks per day.

My server costs include both the SQL db on Windows Azure and the image storage on Google Blob Storage. Azure costs (not including December) are shown in the image below. As of the moment I'm writing this,  December 2013 is estimated to cost $3.79.

My Google storage costs for Map App have been about $4.84.

Based on the cost and expense, I've made $2.09. Not much, but at least I'm not losing money, and the experiencing of developing an app has been invaluable.

Saturday, December 28, 2013

Product Planning (Stage 1 of product design)

Product design includes five main stages. A super simplified explanation of them are presented below. 
  1. Product planning. The company strategically finds market needs, their company strengths, and determines several  potential products that they might develop. Using all this information they form a strategy of which  products that they will design to meet the market needs and company strengths. 
  2. Product specification. After a product is generally defined for company planning purposes, the engineers and company managers need to define in some detail what they are attempting to design for a specific product. A long list of requirements that the product must meet is defined. 
  3. Conceptual design. The engineers take the requirements and create 1-3 final ideas on how to meet these requirements.
  4. Embodiment design. The engineer takes the 1-3 ideas and fleshes them out in much more detail. For a mechanical engineer this normally includes using CAD. As more information about the design is available, the ideas are evaluated and narrowed down to one design for the product. 
  5. Detailed design. The product's manufacturing instruction, user manual, and other documentation is finalized. 
At school and generally on the internet, teachers focus on teaching , stage 4, embodiment design. However, all the stages are important. In my experience working as a paid engineer, small companies don't follow these 5 stages of design and the results are horrible. It is easy to have a good idea (which normally means you have a good idea for how to implement something, stage 4), and the company makes a valiant effort to get the idea to work. However, as soon as you include someone else in the design project, then things begin to fall apart because they don't see why your idea is so great and can point out several reasons why it is not great at all. Since you never clearly found out what people want (stage 1), you never defined what exactly you were trying to do (stage 2), and didn't consider alternative methods to solving the overall problem (stage 3), when someone else comes along and ask for justification for your design, you have nothing to show. For me, I was the new person, and I kept on asking "what are we actually trying to make (stage 2)? why are making it (stage 1)? why didn't you try something else (stage 3)?". Unfortunately, I never was given legitimate well documented answer to these questions. 

Recently, I've discovered another facet of product planning (stage 1). Once we have an idea of the product(s) we want to create, then we can create a strategy for how several iterations of the design will progress. In general when starting something new, it is best to keep things simple. The first iteration of a product that is released to  customer's should fulfill the basic requirements without bells and whistles. During product design enough things will go wrong so that creating a product which fulfills its core functionality well will be challenging enough.  

During product planning, the engineers can select core product functionality as the requirements for the first iteration, and then for later iterations incrementally increase the complexity of the product by adding features to it. Hopefully, the product specification for later iterations will also be influenced by customer feedback. 

The key idea I want to communicate is that you should plan out the iterations of your product as the very first step in product design. The first iteration should be as simple as possible. Later iterations should add features that add value. A common mistake is to make your first iteration far to complex with cool ideas. However it is also a mistake to totally forget your cool ideas. Cool ideas (features) can be planned for in later iterations of your product.