At the very end of December, the first user will appear in it, who will come to the application not through our direct link for friends. For the new year, we will guess 2,000 users by the end of 2019. In January there will be 45. In February - already 872. Almost a year later, at 6:30 in the morning of November 8, 2019, the Google Play team will send us a letter in which it congratulates you on the nomination YouCan in the nomination āApplication of the year according to usersā, in which we will be the only ones that have not reached 100,000 downloads.
I'd like to believe that this story will have a beautiful continuation and ending, which will be released a little later. In the meantime, a short series of articles in which I will try to talk about that part of the path that has already been covered. If you are interested, welcome to cat.
What I will tell
The cycle will consist of three articles:
- In the first Iāll tell you what happened before December 3: where did the idea of āāthe application come from, which helped him come into the world, and a little bit about the lessons learned and learned.
- In the second - I will pay tribute to Habrās technical, Iāll write what I used during the development, as I once again decided to trust Google and its libraries.
- In the third - I will tell about plans for the near future, about my own impressions of this experiment and answer questions if they appear.
1% success - where did the idea come from?
The idea and name of the application appeared much earlier than the start of work on it. Much is the year of 4. The name āYouCanā is the words of one of my teachers (Mark Petrovich, you are unlikely to be here, but thanks anyway). He once said that the phrase āyou canā is much more useful than the phrase āyou mustā.
As for the idea, - get ready, now there will be hackneyed words, - I just wanted to do what I myself lacked. I started something new hundreds of times and dropped it hundreds of times because ... itās not interesting. Yes - useful, yes - necessary, important, but not interesting, not fun! It is this process that we tried to reinvent - it is easier to form new habits.
Why, Mr. Developer?
Why does the developer need all this? Your project, when is the main work with its bugs, tasks and rallies? I have three answers: about the profession, ambition and happiness.
Profession
This is a huge step in professional development. Yes, a good developer should write good code first. But just good code is not enough to develop any product. Absolutely anyone. Even if the product is a library used by the same developers as you. There is always another marvelous world around the code, which is often underestimated and ignored. And your project, even a very small one, is a very good sightseeing tour of this world to understand what species live in it and how to interact with them.
Ambition
I have a feeling that in the hands of developers (or rather, in their heads) is one of the most expensive tools in the world. In addition, IT is almost the only area where you do not need a lot of resources to start a project. This is mainly time and knowledge. And when I realized these two facts, I could not refuse the temptation to create something of my own. To draw an analogy: I understand people who study the bowels of the earth because they love geology. But I myself am one of those people who teach geology because they want to find something more valuable in the depths.
Happiness
During my relatively short professional life, I wrote a few projects - 5 or 6, but already saw how half of them went to the basket. And the nights of my work, my favorite decisions, hundreds of carefully written tests and everything, everything, everything flew there along with them. And this had a fairly simple reason: I did not own what I was doing. I did not decide what to do. Neither the reasons for my work, nor its fruits belonged to me. Yes, possessing them brings a certain amount of difficulties, but it is not comparable with the pleasure of feeling one's own usefulness. No wonder one bearded man once wrote about the dangers of the alienation of labor (please let the comments not turn into a discussion of socialism and capitalism!)
What came before?
The folder for the application from which I compiled the release version of the application was called "YouCan (4)." Nearby lay the āYouCanā folder and dust copies from 1 to 3. It is the counter of my attempts to finally sit down and start writing. Each time I sat until late at night, organized the structure, created a start screen and a couple of entities for the database. But then I had to go to bed or watch the new season of Game of Thrones, and then The International, and I didnāt feel like going back to this stupid old code. It was easier to start from scratch and write normally. i ++.
Github is filled with projects whose commit history begins and ends with the legendary āinitial commitā. Most of the applications on Google Play were updated only once - during its release. And of course, there is no universal recipe for how to solve this problem (otherwise you would have been happy to sell it in online schools). Therefore, all I can do is share my own recipe.
Secret ingredients
- Who are you without your companion?
The most controversial and difficult of the ingredients. A new person in the project is not only a valuable resource, but also three to four times increased motivation. And my recipe for success is as simple as possible: take your girlfriend, add her best friend - and, voila, you are magnificent. But I think this recipe is not suitable for everyone, so here is a short list of ideas that seem important to me:
- You must understand the motivation of a new person. And be able to assess how much this motivation is enough. A point that we even managed to get burned several times about. If a person just likes your project and he wants to help in his free time, be prepared that this will pass next week. The motivation āmy work must be paidā is less romantic, but it is much stronger, and most importantly - more practical. There is also a motivation āyou shareā, and it can be both the strongest of all options, if you are Uber, and the weakest, if you decide to make Facebook, only better.
- Ideal - if your competencies are in contact, but do not overlap. When almost the entire field of the necessary skills is covered by the skills of your team, but there are not very many areas where you have to push your elbows and argue. Because see point 3.
- Be prepared for controversy and discussion. When a project becomes more than one person, the same number of opinions appears. This is the best thing that can happen, because even in the proverb two heads were better than one, and the worst is because not all relationships can survive disputes and discussions without offense, loss of motivation and quarrels.
- Learn to negotiate. You can learn this endlessly, and I canāt say that I have mastered this skill completely. But it seems important to me that everyone makes decisions in their area of āāresponsibility, but at the same time discuss key issues with all participants. In general, like any community, you need clearly defined rules and values āāthat govern the entire process.
- Work - time, project - an hour
I still donāt understand what motivation looks like. Sometimes it seems to me to be a muscle that can be trained. At other times, it resembles a vessel with mana, which is restored after rest and sleep.
But I almost always noticed one pattern: in the evening, after a working day, I often lacked motivation even for a friendly meeting or a bike ride, not to mention sitting down and writing some code that I had written all day before . Therefore, my decision is simple: remember that there is a time when the muscle rested after sleep, and the vessel recovered overnight - this is morning, a time of unusual silence and concentration. And the feeling, when you work while the rest are asleep, fills you with energy stronger than any coffee.
Well, how can you not advertise: if you still do not like morning, we will go to you. Our application has an excellent course on invigorating morning rituals, written off from the very days when YouCan was just beginning.
- Do not have a hundred tests, but have a hundred interests
So you woke up, decided, sat down, and then the question arises:what to wearon what to write? Take a well-known and proven hundreds of times framework or rush headlong into the abyss of trendy libraries from conferences? Do you bother with writing tests? Should I write forever or go iteratively?
The thing that I decided first of all is that I really want to feel technical growth. I like to learn something new, get acquainted with those libraries and tools that I hardly get to at work. Your project should cause you the excitement of the discoverer, and not a feeling of routine and monotony. But even this ābutā cannot be dispensed with: Iām definitely not ready to spend precious hours of the project on endless reading of manuals and long searches on stackoverflow. Therefore, the final decision is a soft balance between the two extremes.
I took the new architectural approach for the application, but did not give up the usual reactive approach for asynchronous tasks. At this stage, your code should look like the dwelling of a nomadic people: it should not be torn down by a light wind, but at the same time it should be cleaned easily and playfully with your hands. So at the very beginning, do not build forever, demolish you in a week. For monumental and long-term buildings there is a main job.
- When you grow up - then you will use your Jira
The point that flows smoothly from the previous one: do not rush to create task trackers and boards for trill. Use the tools that you already have in your work. And add new ones only if this is inevitable. Of course, tracking time for tasks and creating documentation in the Wiki is priceless, but if you can do without it now, let's get along?
Of course, we had a whiteboard on trill and even folders with documents in the cloud, but only when we were three and the cost of communication became significantly higher. But so far, my favorite personal task tracker is a separate chat in a certain forbidden messenger, where I send messages I find bugs and problems.
And finally
In general, this article was written to ask you to vote for us in the nomination for āBest Applicationā. But the vote ended yesterday, and Iāll finish it only today, so itās unlikely that you will be in time. Therefore, in the end, I saved a little pathos. Just a little bit, but where would such an article be without it?)
<pathos>
Having once enjoyed the late release on Saturday night, first reading an enthusiastic review of your application, or realizing that the code you wrote yesterday morning made someone's life a little better, you can decide that for the rest of your life just writing code and dwell on this - very boring. So get ready.
</ pathos>