From Android developer to DevOps

We continue a series of articles about those who do projects with their own hands. With
Stepan Goncharov
we talked about how to organically change the direction of professional activities, and at the same time from the Android developer to retrain in DevOps. Asked about 3r3661. release cycle and processes in Grab
- a company in which only 40 people are developing for Android. They wondered about where to get ideas for games, asked Stepan about r3r?661 OpenSource projects. Archetype and kOptional
. 3r3674.  3r38282. 3r3674.  3r38282. 3r314. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. About guest 3r3662. : Stepan Goncharov ( Stepango ) Has been developing applications and games for Android since 200? since those time immemorial, when the Android SDK has not been released. During his career, managed to visit the role of QA, manager, marketer, blogger, analyst, adviser and many others. Participated in the development of as anyone unknown applications, and applications with millions of users around the world. He currently works at Grab, actively uses Kotlin and Rx and devotes more and more time to OSS. 3r3674.  3r38282. 3r3674.  3r38282. Before you text decoding podcast Run Loop . Moderators: Ilya Tsarev, Alexey Milyaev and Roman Busygin. 3r3674.  3r38282. 3r3331.
3r3674.  3r38282. 3r3661. Ilya:
Tell us what Grab is directly involved in and what is your role. Do you just write code or something more? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Initially, Grab is a ride-out service. You can order a taxi, they will come to you, pick you up, take you to. But lately, the company is increasingly acquiring additional services like food delivery and its payment system. When I came to Grab, I was in charge of the driver application development team. Then he switched to the passenger application. One of my recent projects was
complete redesign of passenger application
. Now I’m doing more DevOps - setting up CI, optimizing build time and all that. 3r3674.  3r38282. 3r3674.  3r38282. 3r33375. DevOps
3r3674.  3r38282. 3r3661. Aleksey: 3r3662. Stepan, and if it's not a secret, why did you decide to switch to DevOps and CI? I often hear such a story when mobile developers come to the platform, are full of enthusiasm, pumped to incredible heights, and then decide to suddenly go for some non-food tasks. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. In fact, everything turned out, I would say, 3r3661. organically 3r3662. . While I was developing the application, we had an emergency migration to GitLub due to the fact that CircleCI instances could no longer build our project. It turned out to be too big and ate a lot of memory, but there were no suitable CI instances. Somehow I was stuck for several weeks trying to migrate our processes and in general everything related to CI on GitLub. Then, after the project was over, we had a new platform team. While I spent 3 weeks on vacation, all the other tasks were taken, so when I came back, they said to me: “3r3661. That's all, you are engaged in the optimization of assembly speed and CI”. 3r3662. 3r3674.  3r38282. 3r3674.  3r38282. 3r33375. Different roles and activities
3r3674.  3r38282. 3r3661. Ilya:
We also have birds - not those that are microphones-buttonholes, but nevertheless on the tail it was reported that you were both a QA, and a manager, and 3r3661. marketer and blogger 3r3r6666. and an analyst - in general, he went through many different occupations. Please tell us in more detail how you were put into all these roles, how long have you been in them, what did you like, maybe like in each? Maybe you would love to back to the bloggers? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. In principle, in each of these roles it was somehow organically able to flow seamlessly from one to the other. It all started with the fact that I became interested in Android development
even before the release of the first device on Android
. I was interested in the idea itself - the Java operating system is somehow unusual. As a result, while I was studying at the university, instead of doing laboratory work on C or other boring university tasks, everything smoothly reduced to Android. The teacher was not against it, he was also interested in learning something new, and I wrote Android applications. 3r3674.  3r38282. 3r3674.  3r38282. By the time I finished my undergraduate degree, I already had some experience. I wrote my first app, released it to the Market, and from this
Began marketing craze 3r3662. . I had my own application, and I had to somehow promote it. I started to indulge in a bit and write blogs. 3r3674.  3r38282. 3r3674.  3r38282. In 2010 I found the work of an Android developer, then it was almost unreal - there was no market, nobody knew about Android. I got into an outsourcing company, and 3r3661. I had to recruit a team, having only half a year of experience 3r3662. and 2 published applications. 3r3674.  3r38282. 3r3674.  3r38282. So, from marketing and blogging, I went back to development. Then he graduated from the magistracy, moved to St. Petersburg - also to outsource. There I started to get involved in automated testing, and it turned out that I developed the direction of 3r-3541. Robotium
in the company and trained QA to write automated tests until
went to Singapore
where again I recruited my team to one of Singapore startups. Already after that, I began to further develop in Android development. Now I am in Grab - first in managers, then in DevOps. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. Stepan, tell me, please, do you not miss this time when your tasks have changed dramatically enough? Now, roughly speaking, you saw DevOps every day - and that's all? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. In fact, not yet. I recently completed a large project, and in principle, there are still enough tasks. They may seem, of course, the same - that is, the goal is the same, but what I do is 3r36666. Lots and lots of different things
, including, for example, memory-profiling, working with CI. Now I look at Amazon analytics on S3. 3r3661. This is all for me while the new
. I do not think that I will be engaged in exactly CI and optimization of assembly time. Most likely, for example, in the next quarter I will switch to something else. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. I have, for example,
the cycle of transition from one direction to another is about a year 2-???r3r3662. . I started with testing, then switched to load testing, then I became a developer. How often do you have a change of interests and directions in the work? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Somewhere around 1.5-2 years. But recently it turned out for half a year. 3r3674.  3r38282. 3r3674.  3r38282. 3r33375. Games
3r3674.  3r38282. 3r3661. Aleksey: 3r3662. What would you most like to do? Ideally, maybe you would like to leave the development, do not touch anything with your hands? Or maybe you, on the contrary, would like to dig into some deep native things? What do you specifically want most? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. That's a good question! I actually did not decide. 3r3661. I'm still curious about a lot of things
. One of the most interesting for me, where I could not get, is the development of games. While studying at university I was fond of writing all sorts of games. I had projects in Flash. My second Android application was also a game. I even worked for a month in a gaming company, but somehow I didn’t go down. 3r3674.  3r38282. 3r3674.  3r38282. In principle, 3r3661. I would like to try game design
but this is still complicated. The longer I spend time and develop in Android, the more difficult this transition will be, if it happens at all. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Ilya:
Step, if we touched on the topic of games, then the question is - what was your first game about? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. It was 201? so it was pretty simple. It was a logical puzzle with lasers and mirrors that had to be turned in such a way that the lasers hit the target. Unfortunately, this game was hosted on the account of the then my employer. This account has long since retired and there is no game there. But I really liked her. It was written entirely on the Android View, which I regret, of course, but the experience was excellent. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Ilya:
And now you find time to develop games? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. No. Absolutely not enough time to play now. Besides the fact that I work in a company, I still have
organizing kotlin mitapes in Singapore
and speak at conferences. That is, free time is completely clogged. Maybe someday I will come back to this. I recently bought Google VR to try Unity when there will be time, but so far they have failed. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. And tell me, please, where did you get ideas for games? How did they come to your mind? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Ideas for games usually come to me from technical innovations. I usually watched some technological demos, or, for example, in 2008-2010 there was a fashion for physics engines. You see some cool technology or a new fashion shader, and 3r36666. ideas themselves appear 3r3r6666. based on what you see. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. Is your hobby related to making games so that you are a gamer yourself - you are chopping at PlayStation, at Switch, on PC - is there any correlation? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Yes, I think that is. In my childhood I had a Sega, then a PC, I spent a lot of time playing games. Now I have both the PlayStation and the Switch, but now it's already
I spend much less time playing 3r3r662. , not enough to even play. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. And what games do you remember most? Or what genre of games do you like best? For example, I like shooters or some kind of Survivor-horror. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. With the shooters I somehow did not work out. I played Counter-Strike in my childhood, but it didn’t linger. 3r3661. One of the favorite games is the Space Rangers-2
, and the first part is also epic, of course. Then from the memorable it was
. 3r3674.  3r38282. 3r3674.  3r38282. 3r3669. 3r3661. Aleksey: 3r3662. Is freelancer a game? This is a lifestyle!
3r3674.  3r38282. 3r3661. Stepan: 3r3662. In fact, this is a space simulator, roughly speaking, very close to the Space Rangers, but in third person. Another Witcher, Arcanum, and Fallout - in that spirit. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Ilya:
It seems to me that 3r36666. developing games is the dream of most programmers 3r3662. . As it always seemed to me, people generally go into development just to make games. This is super cool! My first project on iOS - it was also a game, by the way. What do you think about it? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Aleksey: 3r3662. I heard that for many people, the way to programming really starts with the fact that they want to make a game, they like to play games, they want to understand how to do it. For some reason I did not have this. 3r3661. I was more interested in how programs 3r3662 work. - what happens when you click on windows in windows. But at some point I realized that I had no idea how to make games. I understand how you can write this or that application on a mobile phone, this or that program on a PC - I didn’t imagine how to make games. Somehow I was so carried on Channel 3r3673. on youtube. There's a dude in Java and Canvas from scratch writing his toy - a clone of some RPG game with something like a cross between Diablo and Final Fantasy. This is really very interesting. 3r3661. I would advise everyone to just try to play with it in your free time
, understand how it is generally spelled, how it works. It was a very cool experience. Then I somehow got into the same lessons, where the dude saws some simple game on Unity. It is very interesting to compare approaches when you start writing your own engine, and when you already have something ready like Unity, and you somehow adjust it to make your own. I would highly recommend something to try, because it’s really interesting. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. I have a similar experience. I love to play, but I'm not an avid gamer, but at the same time I was first of all interested in understanding how programs are made. Then I come to the conclusion that what I like, what I like, I want to try to do with my own hands. But in terms of games 3r36666. it all starts with the idea 3r3r6666. . I'm waiting for an idea that can be implemented in any free time, or clear my time and make this game. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Regarding ideas, one of the last ones that came to my mind was related to 3r3661. automatic card generation 3r3662. . Now it can be said a trend, and some games use the generation of huge worlds so that they are very similar to the real ones. 3r3674.  3r38282. 3r3674.  3r38282. There is a whole class of algorithms that allow you to generate a landscape. The landscape can be built in such a way that there will be both mountains and seas. In principle, if a person shows the top view of Google maps and the generated landscape, few people will be able to distinguish them. This is very interesting, because you can single-handedly, without having large resources, create content for the game, because it is one of the most difficult parts. At least I think so. 3r3674.  3r38282. 3r3674.  3r38282. 3r33375. Working day 3r3674.  3r38282.
3r3674.  3r38282. 3r3661. Aleksey: 3r3662. Stepan, how does your working day usually go? You woke up, got to the office, or didn't get - what are you doing, how are you doing? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. I still wonder what happens to you before you get to the office? Maybe you have any favorite coffee shops or favorite traditions: for example, do you like to walk on the public garden in front of the office? What really starts your day? 3r3674.  3r38282. 3r3674.  3r38282. 3r3669. 3r3661. Stepan: 3r3662. Recently, my day begins with 50 pushups.
3r3674.  3r38282. 3r3661. Aleksey: 3r3662. Respect! 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. I realized at some point that 3r3661. need to spend more time physical activity 3r3662. and now I try to make myself do it in my free time. In principle, nothing special. 3r3674.  3r38282. 3r3674.  3r38282. Since the main business of the company is ridehling, that is, ordering a taxi, the company pays me a taxi. Therefore, the first thing I do in the morning after breakfast is ordering a taxi and going to work. 3r3674.  3r38282. 3r3674.  
I work in a fairly decent office with a cool view of the bay. As most of us probably have,
The first thing is, of course, a cup of coffee
. Most often, we just go down with colleagues to the basement of the same building, go to one of the coffee shops, take coffee and 3r3661. We are going to discuss some news, plans 3r3662. . It is especially interesting if something happens for this night, which is in the USA - a day: something new was released, some interesting news, a new framework. All this we are discussing, and after that you can start working. 3r3674.  3r38282. 3r3674.  3r38282. Then everything is about, like everyone else: you go in 3r33541. Jira 3r???. , you look tickets. The last couple of weeks, I acted in the role of on-call. This is such a developer, on which all production-problems fall down, and you have to somehow decide, or delegate, or say - this is not a problem and forget about it. 3r3674.  3r38282. 3r3674.  3r38282. Since the team is very large (3r3663 is already working on the passenger application. More than 40 people are 3r3662. These are different teams that are responsible for different areas), sometimes it is quite difficult to find the right person to solve this problem. We have such a rotation -
Every week, one of the developers is engaged in raking up production problems 3r3-3662. . Specifically, this week I have been preparing the release, this is a fix issue from testing, and again finding the right people to solve this most quickly. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. 40 people - is it only Android, or is it the whole team that makes the mobile app? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. This is only Android. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. Wow When I'm
how many mobile developers in Uber, I felt uneasy. But your team confirms this trend. You mentioned that you were, roughly speaking, a bug report officer. Tell me, how is the release cycle of the application going on? 3r3674.  3r38282. 3r3674.  3r38282. 3r33375. Application release cycle
3r3674.  3r38282. 3r3661. Stepan: 3r3662. In principle, I think this is a more or less normal process that large applications are trying to follow. 3r3661. We have a fixed release train
. This is currently a week. That is, every week on Tuesday we have a release. For this week, a release engineer is selected, and by the beginning of the week, all features that fall into release should be ready. 3r3674.  3r38282. 3r3674.  3r38282. If a feature is not ready, it is thrown out, closed with a flag - they do anything so that it does not fall into regression. As soon as this build, where all features are ready, given to QA, the release-engineering process begins. That is,
Any open bugs should be fixed as soon as possible. 3r3662. , they are given the highest priority. Even if the developer is working on the next feature, which will go to the next release, but there is a bug or some problem that he knows best, and he has the least time to solve it, it is given to him. 3r3674.  3r38282. 3r3674.  3r38282. It happens at our place until Friday. 3r3661. On Friday, we try to end the regression
, all regression-bugs to close, and already with peace of mind leave for the weekend. If something suddenly happens on Monday, you can quickly fix it, and on Monday evening or on Tuesday morning, publish and roll out quietly - first 10%, then more, more, more. For a week, we are trying to get close to the site somewhere, and release the next release. 3r3674.  3r38282. 3r3674.  3r38282. 3r33585. Testing and updates
 3r38282. 3r33588. 3r3674.  3r38282. 3r3661. Roman: 3r3662. Quickly write and lay out - what about the testing process? Special testers who check at what point? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Testers a lot, they have time. I do not know how many of them exactly. The reason is that most teams are not in Singapore. I do not remember how many offices we have, but at least 5 more offices are, where the development teams are with QA. During the development of features, these commands, together with QA, debug these features themselves, test them. 3r3661. By the time the release cycle begins, features should not have open bugs 3r36666. . Regression occurs as follows: one, maybe two QA from all teams is allocated, and they drive regression according to their features. Just this week, while bugs are looked for, regressions are fixed. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Ilya:
It turns out that you have a weekly update cycle, and users have time for such a time to update? We, for example, faced with the situation that we have iOS-users have time to upgrade, and Android - not really. We have a version that was right for several weeks. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Aleksey: 3r3662. Yes, I also think that the week somehow feels like a little bit. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Yes, that is right. The week is pretty fast, but
We do not have a goal for all users to update 3r3662. . We switched from a two-week release cycle to a weekly one in order to reduce the burden on QA during the regression, because in 2 weeks a huge number of features accumulated. 3r3661. 40 people can do business! 3r3662. Later, at the end of the second week, we happened to get out pretty serious bugs that were obtained due to the imposition of these features, and it was quite difficult to solve them. It turns out that we broke it weekly and distributed this load on testing more evenly. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Ilya:
How many percent of your user base use the latest version? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Looking at what time period we are talking about. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Ilya:
In the moment. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. You can use the latest version only if you are in this week reload plan. That is, 100% reload will be either around Friday or already on Monday, since on Tuesday the new version is coming out. It already depends on luck. But we do not have such a goal that users always sit on the latest version. The only thing we still need to think about is the minimum supported version. We periodically force users to upgrade by force, when at least 90% of users will be on the minimum supported version, which is about 3-4 months. 3r3674.  3r38282. 3r3674.  3r38282. 3r33585. Teamwork organization 3r3674.  3r38282. 3r33588. 3r3674.  3r38282. 3r3661. Aleksey: 3r3662. Step, I have such a question. You say that 40 people are engaged in Android - right? Is this really serious. 40 developers are doing something? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Yes. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Aleksey: 3r3662. There is such a moment that with an increase in the number of employees, especially in one area of ​​the company, that is, specifically in Android development, 3r3661. communication costs are rising exponentially 3r3662. . All business processes are committed to resolving this phenomenon. And how is it settled for you? What is the organizational structure of this machine from 40 developers? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. In fact, our solution is quite simple. 3r3661. These 40 developers are not engaged in the same 3r3662. and they essentially don’t need to communicate much with each other. It turns out that teams in different countries are engaged in different features. Basically, you do not need to communicate with other teams. You communicate mainly with your manager. As a result, the cost of communication is not so big, because 3r3661. a team is 5-6 people
. There are also teams of 1-2: for example, only some new business vertical appeared, there is one developer, and he just has a engineering head who is responsible for everything, including the backend, iOS and other things. 3r3674.  3r38282. 3r3674.  3r38282. It turns out that we just have small teams that work in the same repository, in the same code base. 3r3674.  3r38282. 3r3674.  3r38282. 3r33585. OpenSource-projects Archetype and kOptional
 3r38282. 3r33588. 3r3674.  3r38282. 3r3661. Roman: 3r3662. I propose to proceed to the next question. I learned that you have OpenSource projects. I always have respect, as developers manage to find time for OpenSource, honest with users, etc. Please tell us about your two popular projects - this is 3r33515. Archetype
and 3r33517. kOptional
. What it is? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. I'll start with 3r3661. kOptional
. From the title it is clear that this is
a small implementation of 3r3662. 3r3661. Optional
. somehow I needed to process the Null very urgently, and I wrote down a very small library. In fact, there is nothing special there. I did not want to bother much, I took the implementation from Java8 and ported it. 3r3674.  3r38282. 3r3674.  3r38282. Honestly, it turned out so-so. Of course, I was pleased - it was better, much better than nothing. But if I knew the code a little bit better, I would have done it differently. 3r3674.  3r38282. 3r3674.  3r38282. About 3r3661. Archetype
- this is a pretty interesting story. About two years ago I joined a startup called 90
Seconds 3r???. . This is one of the world's largest platforms for online video production: you go there as a customer, describe your idea, and you make a video. On the other hand, it is a platform for performers: you have a video camera, you know how to shoot - you register and orders come to you. 3r3674.  3r38282. 3r3674.  3r38282. I started writing an application from scratch, and at some point we needed a second developer. Then I met with
Denis Neklyudov
and hired him. He came to us in Singapore. When he saw what I had done, he said: “
Let's make a report out of this 3r3662.”. Why not? 3r3674.  3r38282. 3r3674.  3r38282. As a result, the report is good, but we needed some sample code so that people could be shown. Naturally, the code 90 Seconds is not going to shuffle anywhere, there is the NDA and all that. Just a few days before the conference, we gave this project, and since then it has been playing the role of a test task in order to pass an interview in 90 Seconds: you need to sign out, add some small feature, do something in this project. 3r3674.  3r38282. 3r3674.  3r38282. In principle, this is such a
show case architecture 3r3662. , which I used when writing 90 Seconds. Then it was a novelty for me, and, in principle, for developers, with whom I was familiar. Then, literally two years ago, I started writing an application completely from scratch, and decided to do everything initially on Rx. The idea was to do absolutely everything reactively, and absolutely everything on Kotlin, from scratch without any legacy. 3r3674.  3r38282. 3r3674.  3r38282. It turned out pretty cool, with the exception of a couple of things that I still regret, but so here. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Aleksey: 3r3662. Listen, I really liked the idea 3r3661. before interviewing, ask the person to go to your 3r3662. 3r3661. OpenSource project
. This and the project develops, and you can see how a person kodit, and in general, what he thinks, what features offers. I think we need to try it for sure! 3r3674.  3r38282. 3r3674.  3r38282. Let's develop the topic of conferences a little bit. After all, you are already performing on r3r3579 next week. AppsConf
. Please tell me about your topic and what will you tell there? 3r3674.  3r38282. 3r3674.  3r38282. 3r33585. Conference AppsConf
 3r38282. 3r33588. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Yes, I speak at AppsConf. 3r? 3593. Topic
It sounds quite interesting in English, but I don’t like it when translating into Russian, but I can’t think of anything better: “The architecture of the asynchronous tasks execution layer”. I planned this report, probably, for three years already to be done, and all the hands did not reach. 3r3674.  3r38282. 3r3674.  3r38282. The idea came just from the implementation that my colleagues and I used in a startup application, where I originally came to work in Singapore. We had a rather difficult task, it was a social network for musicians in which it was possible to write music. One of the features was that you can write music offline, and then when you go back to the Internet, everything will synchronize with the server. 3r3674.  3r38282. 3r3674.  3r38282. At the same time, the structure was rather complicated. First, there is such an entity as the idea of ​​a song, and then in you you can convert this idea into a tree. Essentially, it turns out version control for your song. The song itself was also - multitrek, effects and a whole lot more. 3r3674.  3r38282. 3r3674.  3r38282. It turned out that 3r3661. graph of dependent entities to synchronize
. We wrote such an interesting system, which, firstly, wrapped all these requests, and secondly, allowed them to be recorded in the database, connected to the database and sent. 3r3674.  3r38282. 3r3674.  3r38282. It seemed very cool to me then, and since then I wanted to tell about it. But, unfortunately, now with experience it seems to me that the implementation was just awful. Literally after that performance with Denis, I was offered to speak again at Mobius, and since then I have been preparing this report. The report generally transformed for quite a long time. 3r3674.  3r38282. 3r3674.  3r38282. The result was such a show case, as you can, adhering to very simple rules, 3r-36661. design a beautiful and elegant some component
, which will help to avoid copy-paste in the whole project, and at the same time will allow you to create something similar to the WorkManager, but even more complicated. 3r3674.  3r38282. 3r3674.  3r38282. The report will be about how 3r3661. Use Kotlin
like 3r3661. design application components 3r3662. , and how can 3r36666. effectively manage tasks
, while solving some very common problems in a very simple way. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Aleksey: 3r3662. Tell me, is this experience now used in your company? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. No Unfortunately. First, when I arrived, there was already a fairly large amount of code, and now it is already quite expensive to implement such a system, and nobody needs it. But, nevertheless, I have a plan to use similar techniques to reduce the amount of code that we use. 3r3674.  3r38282. 3r3674.  3r38282. Roughly speaking, one of the things I’m going to talk about is how can I get rid of, as I call it, manual subscriptions, when you simply subscribe within your objects. If you simply delegate the call of this method to an object that you will call in all places, this can improve almost the entire code base. I also want to introduce this into our project. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Aleksey: 3r3662. The final short question is, is there any kind of OpenSource solution waiting for us for this topic that will help to implement it in other companies? 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Stepan: 3r3662. Hardly. I did not plan to make this decision in production-ready, but those that I’ll have in my presentation will be cluttered on GitHub. 3r3674.  3r38282. 3r3674.  3r38282. 3r3661. Roman: 3r3662. 3r3674.  3r38282. Oh, intrigued! To all those who fall into the same category of intrigued people, I remind you that Stepan will be at the AppsConf conference on October 8-9 in Moscow. 3r3674.  3r38282. 3r3674.  3r38282. 3r3669. AppsConf very soon, Schedule It turned out to be very saturated, there are a lot of useful reports in it, and you can still make it book a ticket and also take part. 3r3674.  3r38282.
3r38282. 3r38282. 3r38080. ! function (e) {function t (t, n) {if (! (n in e)) {for (var r, a = e.document, i = a.scripts, o = i.length; o-- ;) if (-1! == i[o].src.indexOf (t)) {r = i[o]; break} if (! r) {r = a.createElement ("script"), r.type = "text /jаvascript", r.async =! ? r.defer =! ? r.src = t, r.charset = "UTF-8"; var d = function () {var e = a.getElementsByTagName ("script")[0]; e.parentNode.insertBefore (r, e)}; "[object Opera]" == e.opera? a.addEventListener? a.addEventListener ("DOMContentLoaded", d,! 1): e.attachEvent ("onload", d ): d ()}}} t ("//"""_mediator") () ();
+ 0 -

Add comment