Thursday, November 2, 2017

Stages of project development

In this article I will describe all the stages of development of projects through which I went through when creating my application




Snowy: Weight control is a convenient weight diary for your body control. I tried to make the application functional, convenient, that is for myself, as I now use it myself and I constantly think about the question: "How else can I improve my app?".

Why Weight Control?

Not so long ago I had a scales with a body analyzer. It became interesting to me to follow changes in my body and then I created the table in Excel and began to record the results of the weigh-in. As a result, the records became more and more and I wanted to systematize it all.
So I downloaded the first ten popular applications for weight control, but some of it seemed to me not very convenient to use. And to my chagrin, none of the application did not allow me to record the data from the analysis (bone mass and muscle, body fat and water percentage) - only the weight.
And why not develop an application for yourself? After all, it's in my power to make a convenient and functional application for my needs and share it with the world. So the idea of the first application “Snow: Weight Control” was born.

Stages of development:

1. Finding the problem you need to solve

Let's say you found a problem that you want to solve. Most likely this problem has already been solved - and several times, as thousands of new applications appear every day in stores.
But are all the solutions comfortable? As practice shows - even the best application can be done even better.

2. Drawing up requirements to the application

How to start developing the application? With the development of the Terms of Reference. But since this was a personal project, I simplified the document.
First I sketched out the functionality and examples of screens on a piece of paper, then moved it all to Google Docs. If you come up with some interesting features or UI elements, move the thoughts to paper - so you will not forget them.

3. Development of the UI

After formalizing all the requirements and defining the overall vision of the project, it's time to develop the UI.
Very detailed and understandable manuals on Material Design were written by guys from Google. (https://material.io/guidelines/)
Also, Google provided a very large number of free icons (https://material.io/icons/) and a color picker tool (https://material.io/color/)
I decided to develop the UI in Sketch (https://www.sketchapp.com) - this program is specially adapted for mobile development and is very convenient for use. The only thing, it is available only for MacOS, but I think that under Windows, you can also find suitable graphics editors.
For those who use Sketch there is a very good resource with free sources - https://www.sketchappsources.com
For inspiration, I used Dribbble - https://dribbble.com

4. Project architecture

Now it's time to choose which way to develop your project. For myself, I chose MVP (Model - View - Presenter) - this is a design pattern, which is used mainly to build a user interface.
  • Model — stores all the business logic, if necessary receives data from the repository.
  • View — implements data mapping (from the Model), accesses Presenter for updates.
  • Presenter — realizes the interaction between the model and the view.
As a library for implementing such an architecture, I used Moxy (https://github.com/Arello-Mobile/Moxy)

5. Writing code and developing UI layouts

At this stage, we begin to implement our idea: create data structures, develop layouts, think about logic, write code. About more interesting moments, which I embodied in my project, I'll write in separate articles.
During the entire development of the project, I additionally used the Teamwork project management service (https://teamwork.com). For a small number of projects and participants, this platform is free. With it you can create new tasks that you need to solve - in order to remember them in the future.

6. Testing

After you successfully developed the application, be sure to test the application on different versions of the platform and resolutions before publishing. Without emulators there will be no way to do, of course if you do not have a large fleet of mobile devices. In this case, Google again comes to our rescue - after the publication of the application (for example, with alpha or beta testing) through the Developer Console, you can see test reports on several of the most popular devices.
And it is obligatory, before publication, to conduct final testing with the help of third disinterested persons (relatives or friends), because at this stage you will already be blinded by monotonous operations and you can skip something.

7. Monetization

About this stage is written not one hundred articles. Then everyone decides which way is closer to him. In my application for the first time I declined from advertising in favor of convenience to users. Added only paid functionality.

Summary

As a result, everyone chooses a convenient way to solve the tasks. These stages are not instruction on the true path. These are tips that you can take when developing your projects.
My goal is to try to make this world a little better, so I decided to transfer some of my income to a charity fund to help children with cancer. And I would be very grateful for the support of the project.

I hope that this article will be useful for someone.