Hi, Habr! In August, Top Story turns six months - it's time to share the experience of developing an application, tell life stories and remember the main mistakes. During these six months, our news aggregator has grown, matured and has a completely completed backend and frontend, so we have a lot to tell fans of mobile development and those who make the first steps in it.

Mobile development has gained immense popularity - it is led by global giants, agencies, small companies and programmers, a huge number of tools have appeared that make working on an application even easier. The number of applications is growing at an incredible speed. According to Appfigures statistics, the number of applications in the App Store at the end of the year was 1.21 million, and the Play Store - 1.43 million ... We decided to enter this number and win our users. From the very beginning we had several distinctive features that we could rely on during the development process. As you remember from previous posts, the main feature of Top Story is a personalized approach to the user. Realizing this task, we stuffed cones, set successful and not-so experiments, worked for weeks at times correcting quite ridiculous mistakes.
Nine tips for everyone ...
Separate yourself from key players in the first stage of development. Before you start developing your application, examine three important pieces of information: the market, competitors, potential users. Be sure to know the offers of key players, so as not to cheat on additional unimportant features when you have already entered the market and suddenly discovered that your idea is not new. If you are developing a unique application, remember that it should include maximum functionality. Ideas are in the air - it is likely that after the publication of the application there will be numerous clones with interesting functionality that you did not have time to release in the first release. Creating a program for a wide range of subscribers, think about the users - develop clear interfaces, without pity, get rid of unnecessary complications.
')
Love the mistakes. Do not be afraid of them, they will still be serious, small and even stupid. Our team was wrong many times, here are some stories.
- First, news articles in the Top Story application feed loaded quickly. After some time, we noticed that the performance dropped dramatically and the loading of web pages began to take too much time. The solution was found: now we cache the web page share in our apk, it does not require constant data download - when the user opens an article from a resource, the application just needs to load a new content or image. After that, the average page opening time was about 1 second.
- Initially, TopStory was designed as a news list, but in the Android native view list, performance problems arise when the list items are very complex. To solve the problem, we changed the code, following Android’s official recommendations for improving performance, and used an excellent open source project to manage embedding pictures in news feed items. Finally, in order to avoid further problems, we began to monitor the performance and speed of the application in order to quickly find emerging problems and immediately respond to them.
- There were stupid mistakes in the history of Top Story ... Once a user from Turkey approached us and complained that he could not share interesting articles on Facebook. Our competitors have all "fumbled" with a bang. We are thinking. The search for errors took a lot of time. As a result, we found that this is a Facebook problem: their official SDK for sharing did not allow sharing content if the device language is Turkish. And in the competitors' product was not built the official Facebook SDK, but the native Android. Although they look the same, the official Facebook SDK does not work, but with native Android, everything is ok.
Be sure to test the application - including on the devices themselves and on device emulators. We already wrote that Top Story is updated frequently, so you have to pay great attention to testing and at the same time work very quickly. We are watching the application within three days before the release using manual and auto-tests. For testing the UI, we use Robotium, for stabilization tests - Android Monkey. Especially carefully we check the new features, then “run” the interaction and compatibility with devices. We also have a big checklist for some critical moments - we conduct tests on it to avoid the most unpleasant and stupid bugs.
Use the best algorithms and data structures. You can always stop and pile up crutches, but if you are going to live on the market for a long time - get rid of hard decisions, look for the best design patterns. When developing, be sure to consider the application architecture as a whole (backend + frontend), otherwise you will not avoid annoying errors.
Take care of the graphical user interface (GUI) and application design. Design forms, lists, think over the logic of the application, gesture control, the relationship between the various sections of the application. Be attentive to the little things, work with color, application labels, titles and menu item names, create your own unique style. When designing, you follow the user's way over and over again - this way you will see obvious inconsistencies and illogical behavior of the application. TopStory is always carefully working on the interface - how we do it and what remains to be completed, you can read in the previous post.
Release the application for a small number of users already at the alpha version stage - because it is very important to collect feedback in the field from day one, and gradually, as you approach build 1.0.0, increase the number of installations, experimenting at the same time with channels to attract users. It is important not to be an idealist - an ideal product is simply impossible to do, and therefore you need to experiment a lot and move step by step, testing hypotheses and selecting the best solutions.
Use high-quality primary sources of information , for example, developer sections on platforms (both Google and Apple have), read the guidelines, use the numerous developers community - there you can find answers to many questions. Learn the best experience of open source projects - you can see good solutions and use them in your developments. We realized that there is no need to reinvent the wheel - there are a lot of cool projects that will help to move quickly.
Constantly updated and developed. The basis for the development can be the opinions and feedback of users - collect them in the comments Store, by email, through social networks. It so happened that the user opinion is the main source of inspiration for Top Story developers. If you go, for example, to us on
Google Play , you will see more than 10,200 reviews, each of which we read and take note of. For example, under our first post on Habré, the reader noted that the title of the “Explore” section does not really fit into the general structure.

The Top Story team held a brainstorming session and a solution was found - this section we called “Kaleidoscope”.
Remember about platform issues. For example, we are faced with the fact that the problem when working under Android is the “fragmentation” of Android, when smartphone manufacturers release new devices for many competing versions of the Android OS. This is where the question arises how to balance the quality of the code and the requirements of the product in conditions where it is necessary to develop very quickly. And here it is important to have all the tools: language capabilities (in our case, these are Java languages ​​for Android, Objective-C for iOS), frameworks, tools for backend.
... and tenth for the riskiest
Do not be afraid to work and develop as part of international teams. Today, work in the most complexly organized team is not hampered by either distance or time zones. The interaction of excellent developers, merchants, designers, system architects from around the world allows you to work efficiently. The development of Top Story is done by professional programmers from China, and working with them is not only an exchange of experience, but also an excellent cultural exchange. And it concerns, in particular, the culture of development. We told our Chinese guys about Habré and about the publication, and in return, they told a little specifically for the post about ...
... about github. We use the official SDK Vkontakte to ensure that users of the application can share their favorite content. Once we began to observe strange drops in the application and found out that the error occurs if after pressing Send, but before the news is finished loading a call arrives in the tape or the Home button on the device is accidentally pressed. We fixed this behavior of the SDK and committed the project to GitHub.
... about programming languages ​​and frameworks. The popular technologies of China and other countries of the world are not very different, but the Chinese teams (for example, Testin) have created several useful tools for developers that we find it more convenient to use. Such national developments help start-up teams (such as ours) to develop a product very quickly.
... how to teach a Chinese car to understand Russian. Without knowledge of the Russian language, we teach the machine to understand plain text and develop an algorithm for automatic processing of natural language (NLP - natural language processing) in three ways.
- Statistical learning algorithm. A large amount of data is collected in Top Story including news content and user behavioral data (queries, search, bookmarks ...). Processing them, we highlight the useful language knowledge that is used for the further development of algorithms. For processing, we use, for example, word2vec — an open source technology for statistical processing of arrays of text data, which defines the word relationships in existing texts using neural network methods.
- Learning based on knowledge bases and open source libraries. For example, retrieving named entities (NER - named entity recognition), based on Wikipedia data. We also use the stemming algorithm (project “Snowball”), which is based on finding the basis of a word by sequentially cutting off some morphemes (suffixes, endings) according to the established rules. We chose this algorithm because of the speed of work - for us in Top Story this is an extremely important factor.
- Finally, we use human expertise, and then a translator works in tandem with the developer.
... about language barriers and communication problems. We communicate in English - without it, development in the modern IT industry is impossible, because it is on it that the best developers manuals, Android developer documentation, and much more are written.
If you decide to do mobile development - feel free to start! This is a promising and interesting direction - it covers a huge number of users around the globe, suggests the most new and interesting development tools, makes it possible to realize the most fantastic idea and to unite enthusiasts from different parts of the world around it. The big journey begins with the first step. Good luck!
In the meantime, you can install Top Story from the
AppStore and
GooglePlay .