A walkthrough of creating a Windows Universal App from scratch
There is a new type of project that allows the creation of Windows 8 and Windows Phone apps. I thought I’d run through creating a simple app (I’m also going to try and publish it in the store).
Design
This seems a little extravagant - a design. Having said that (I believe) you should at least be able to state what your program is intended to do in one or two sentences:
My program will display a tile notification on the start screen that can be defined by the user.
You should also try to decide the answers to the following questions: 1. Will all or part of your app be required to run outside Windows? 2. Do you expect to make money, and if so, how? 3. Does your idea have any competition, and if so, why will anyone look at your idea?
My answers are: 1. No - this is a demo app, so it will be entirely Windows. If the answer is yes then research mono, portable class libraries and Xamarin. 2. No. I may however add some advertising in a later post just to show how it’s done (to make money from advertising, you need very high usage of your app - also, at the time of writing, Microsoft’s fill rate for adverts was a little over 30%). 3. Yes - there are other apps that do this. At the time of writing, I hadn’t spotted an app that shared the tiles between phone and desktop - although I’m confident there will be one. The only reason anyone might choose to use this over another one would be because the source code will be publicly available. You might want a more convincing argument than this for your own work.
So, you’ve decided what the app will do, whether and how it will earn you a fortune, and why people will choose your app over the competition. The next thing is deciding what it will look like. Windows doesn’t leave too much scope for imaginative designs here - it needs to look Metro; having said that, I don’t think I’ve ever had an app fail on appearance.
Here’s my design for Windows:
For Windows Phone:
And:
As you can see, this is a complex and detailed design. Although, from my experience, anything more detailed than this back-of-a-fag-packet screenshot and general concept is a waste at this stage. However, there is one more thing that you should probably do:
Minimum Viable Product (MVP)
You need to decide what you can release with. I think this applies regardless of whether you’re a big company or just some bloke on a train writing software for fun. This should be the absolute least that your application can accomplish and still be your application.
In my case, it’s pretty minimalist as it is, so there’s little point, but you should probably decide the features that are necessary:
- Ability to set text for a tile
- Ability to set image for a tile
Maybe my MVP doesn’t need to include an image - just text? If you release and people download, then add the other features. This is basically a fallback for people who can’t or don’t use a product backlog. It’s essentially the same idea, but it doesn’t come with the overhead of the word agile*.
Conclusion
Now we have a design, in the next post, I’ll post some code.
* My opinion of agile is not that it is an overhead - simply that the word carries a lot of misconceptions and assumptions that may detract from its purpose and primary benefits.