A day in the life of a mobile developer Uber

    Run Loop  - podcast about those who make products with their own hands. In the next couple of months, the guests will be the developers who will speak at the AppsConf conference on October 8 and 9.

    In the first issue, the guest was Maxim Efimov. Under the cut, his story about the interview and work in Uber, about the relocation to Amsterdam (you also want to go there) and, of course, about AppsConf.



    Hosts: Ilya Tsarev, Alexey Mileev, Roman Busygin.

    Ilya Tsarev is engaged in iOS development at Alfa-Bank, speaks at various meetings and conferences.

    Alexey Mileev develops the Android version of App in the Air, leads the Telegram channel for Android development, and oversees applications for reports on AppsConf.

    Roman Busygin  - iOS developer in Yandex, participated in a variety of speeches and podcasts, is also a member of the AppsConf Program Committee.

    Away Maxim Efimov . Max works in Uber, and let's start with an acquaintance.

    Maxim Efimov about himself


    Maksim: I have been doing commercial development since 2011. I left Android in 2013, that is, 5 years ago. Before Uber, I was mainly engaged in project development. I am from the city of Novosibirsk, where I started in a company that deals with outsourcing, then moved to Moscow, worked in similar projects mainly in the Russian market. Now I have been living in Amsterdam for almost 2 years and I work for Uber. Here we have a development office in which we mainly deal with everything related to payments. My main role is an Android developer in a team supporting payments in the passenger application. Although we are doing our Payments Framework, which in principle is used by almost all applications in the Uber infrastructure. I play a certain role in the development of this framework: in what we do, how we do, how some processes are built. This is my main, favorite project in the company that I am currently engaged in.

    Why uber


    Ilya : Maxim, tell me, please, why Uber? How did you decide that you want to work there? How did you get there, and this is all twisted?

    Maxim : I thought that you would now begin to ask me the same questions that were asked at the interview. For a long time we asked our candidates the question: “Why is Uber?”.

    To be honest, I wanted to develop in some big company, where I could grow not only in breadth. Outsourcing is mainly doing the same type of things as quickly as possible. In Uber, yes, in principle, it can be said about practically any large grocery company, this is some development deep into. That is, those things that are done in small projects for a month, and then they somehow work and support them, in such companies can be done for several years and with multiple teams.

    This is a phase shift when quantity goes into quality. The number of efforts that the company spends to develop something, as a result, creates a qualitatively different product. Not necessarily we are talking about the product, as about the application. It could be some kind of library, some kind of stack in development or something like that. It always got me very involved. That is: how to make big things; how it is organized technically; how it is organized in terms of managing people; how many people do you need to do these things.

    Uber is still the most expensive and fast-growing startup.. This is a company that, on the one hand, has already established itself in the market; it is a well-known and recognizable brand. This is not a new startup that has just been organized. On the other hand, according to reviews that I found even before I got there, this is a company that still has little bureaucracy and corporate culture. From the point of view of the spirit - it is still a startup. From the point of view of the market, this is already a big well-established company.

    Besides, I really like Amsterdam, it's great to live here . Coincidentally, I decided that this is a very good offer and it must be accepted.

    Alexey : You mentioned that for some time during interviews you were asked “Why is Uber?” What was the most popular answer?

    Maksim: It's a difficult question. When I started the interview, we almost did not ask this question. Therefore, I do not have real facts from my experience. I remember what the other guys said. Everyone started saying that it’s great to work in a technology company, it’s all great and interesting. Then they were asked: “Good. Why not Facebook? ”And then the fun began. People said that this is in Uber, which is not in Facebook. This is a question that I think is not entirely correct at the interview. It is: "Come on, praise me why you came to me." I do not remember any good answers to this question, so that they were, on the one hand, honest, on the other hand, interesting, to talk about them.

    Interview in Uber


    Roman : Maxim, how did it all start? As usual, with a letter in LinkedIn or was it somehow different?

    Maxim : Yes, there was a letter in LinkedIn. The only thing that was unusual is that my future manager directly found me. That is, these are not recruiters in search of people, but a specific person, who then was, albeit a short time, but my direct boss. He wrote, we contacted. Began a round of interviews. I can tell you if it’s interesting how it works.

    Roman : Yes, it is very interesting to hear about how the interview process was arranged.

    Maksim: He and then and now is arranged almost the same. Therefore, I will tell the last thing I remember. First someone finds someone. A very large percentage of people who now work for the company came on the recommendation. That is, already working employees of the company recommend someone and he gets into the hiring system. But some people are simply recruited by going through LinkedIn profiles.

    After a person was found, it became clear that he was somehow relevant to open positions, they wrote to him. Next comes the primary phoned just for general interest. The first phoned - just to meet, ask if there is any interest in the company or have questions that need to be clarified immediately.

    After that we have technical phone screening. This is an hour of time with two engineers who communicate with the candidate for various technical issues related to his specialization. This part of the interview is built very differently, depending on what position the candidate claims. This backend, mobile developers, data scientist - all will be interviewed a little differently.

    Specifically, mobile developers, we usually ask some general questions about the Software Engineer, a little Computer Science. We ask a person online to write a solution that is not very trivial, but also not an olympiad problem, in order to see how a person can write code live. Naturally, everyone understands that no one live at speed in the editor never writes code except an interview. We don’t want to immediately see a sample of an industrial ready-made software product, but to see how a person thinks at all, what tasks he sets for himself, how he solves problems, and how his thinking process is arranged .

    Alexey: Here's another question about recruiting after. How often are candidates interested in what they have to work with? How big is the code base? What technology stack is it built on? Is there a lot of legacy? When you went to Uber, were you interested?

    Maksim: Of course. This is a question for the most part, “And what do you actually have to do with your hands?” If I understood you right now, then what should I work with, what tools, what volume of what should I support? I was interested. When I joined the company, it was just the time of the active phase of writing our new passenger application, which started in November 2016. Then I was told in the open text interview that there is an old application. Yes, it is legacy and may not be written very well. But also said that they are making a new application.

    In the details on the technology candidates also often leave. True, this is usually discussed at the stage of a personal conversation. If this interview goes well, we give a small homework. Only we, mobile engineers, do this. Neither the backend nor the data science do this. After that, we have a round of interviews onsight - already in place. Five to six interviews in one day. When the candidate arrives at the office and is there from morning to evening. Interviews, of course, do not go in a row, there are breaks for rest and for lunch. This is the time for us to get to know the candidate and let the candidates know the company. He communicates not only with the engineers who may be on his team. He communicates with managers, with engineers from other teams. He can make a more complete picture, what other things do interesting things in general,

    Roman : Maxim, please tell us what was the most exciting for this stage of the interview, for all the stages?

    Maxim : Now my impression is already somewhat blurred, it was already a couple of years ago after all. I remember the most exciting time for me was when, 2 hours before I got to the interview, I knocked over a glass of coffee. I do not remember what happened to the interviews themselves. Whether computer science, or architecture worried me there. But I remember that my whole attitude was shot down. Thank God everything went well. It seems to me that no one noticed or tactfully kept silent.

    Roman : In continuation of this, do you remember that it helped you to pass this interview just great? What knowledge, what are your skills? What allowed you to pass it as clearly as you think?

    Maxim : Here I have an opinion that is not entirely supported by the facts. This, as you say, is what I think has helped me.

    First of all, I spent quite a lot of time on  HackerRank , solving different tasks on all standard data structures, algorithms, etc., just filling my hand. This is quite useful, because, after all, such “naked” computer science in everyday work is not very common, and it is not a bad idea to prepare for an interview with something separate.

    Secondly, the ability to explain your thoughts. Solving computer science tasks is one of five or six interviews that appear before a candidate. Other interviews are, for example, talking about architecture, about how systems are built, what approaches, patterns, practices to use. Here, it is not the width and depth of knowledge that plays a big role, but the fact that you can convey this knowledge to the interlocutor.

    There are two main points:

    • Experience . By that time, I had been working as a timlide for quite some time and quite often had discussions with the team members about what and how to do.
    • English language . If you work in a Russian-speaking company and team, it is quite difficult to reorganize and explain those things that you seem to know, but it’s difficult to say it in English so that you can be understood immediately. For me, it was quite a lot of stress, although by that time I knew the language well, but speaking at the interview was quite a big challenge.

    Private working day in Uber


    Ilya : Maxim, you already work in Uber for a decent time. Please tell us how your ordinary working day goes. How do you start and how do you end the day? What is at lunch?

    Maxim : My day starts a little bit at 10:00 in the morning. We do not have a fixed working day. There is a time when all meetings are usually held. Depending on the project, there may be some differences. But in general, I come somewhere here at such a time. The first thing I do is connect to our working VPN, because we have all the artifacts behind the VPN and take away the changes that were made during the night.

    We have several offices around the world, which is why it often happens that you come in the morning and see the history of commits much more than what you saw during the day, because the working day in America, in San Francisco, in New York, where we also have large offices. It often happens that if I had some unclosed branches, then I deal with the resolution of merge.

    Then there is work depending on what exactly I am on the project now. I will not go deep into the work of the project team and so on. This will be one of the topics in my talk.. As a rule, we have some stand-up in the morning. It may not be every day, for example, every other day, depending on the project phase, 10-15 minutes. This is a small conspiracy about who does what, what problems anyone has, whether or not we are on schedule, which we have outlined ourselves. If suddenly something needs to be done, then we decide who will do it, and when we will check the results of this action.

    Then it's lunch time. It so happened that in Holland it is customary to dine quite early, and people mostly come to work early. At 12:00, everyone usually leaves for lunch.

    After that, personally, I have the most productive phase, 4-5 hourswhen I do current tasks. I go to the board, I look at what tasks there are, although usually by this time I already know what to do. I make a new branch. In this thread I make some changes in the code, build the build, see what is broken and what is not. Then I send commit to review. It passes review. Sometimes it happens right now. Sometimes, if you need a review from a third-party team, then it may last a day, because the other team is most likely sleeping, since it is in a different time zone. After that, if all is well, commit is poured back to the master, and everyone is happy. Then move on to the next operation with a new puzzle.

    Novel: Surely you take some breaks between tasks, when you need to think or the thought does not go. Surely, there are some periods when you are not sitting in front of the monitor. How do you spend this time?

    Maxim : First, we have cool tables at which you can not only sit but also stand, sometimes even such a small change helps. I, frankly, do not really like any distractions along this concentrated work day. In the morning go to drink coffee, in the evening to see how someone in FIFA plays in the PlayStation, it is - yes. But while there are puzzles, you need to fig.I can go pouring water, maybe a word with my colleague, and almost everything. But this is just my personal preference. I do not know how to work so that, for example, to play table tennis in the middle of the working day. I need time for rest, time for work, then again time for rest.

    Roman : I see. I noticed that at the very beginning you said that you are connecting via VPN. So you, while working in the office, still use VPN to get access to the work network, right?

    Maksim: Partially, certain resources are available through our office network that are not accessible from any third-party external network. But some resources are only available for VPN. I do not know exactly what the reasons were for such a security policy. Why did she accept, to be honest, I did not understand. It is convenient in that I can from any other place in the world, by the same VPN, do all the things that I do in the office.

    Alexey : Look, I flashed the following phrase: “I am going to the board”. Does this mean some kind of task tracker? If so, how do you use it? Or is it a real physical place where these beautiful stickers stick together, where do you need to go and take yourself the next task?

    Maxim : Usually we use the task tracker. We use the Phabricator.There are teams that love physical boards, physical stickers, markers. If you have to work on such a project, then I probably will do it. But in principle, we have each team organized in its own way. Sometimes it happens that our board, if it is a very small project, can be a table in Excel, so that people don’t strain the management of all reporting and other things.

    At the beginning I said that the company is still a small startup. We are still flexible in the methodology of how we do our work, depending on what kind of project we are having right now, what we want from it.

    Alexey : A question about the workflow. Do you somehow track the time you spend sitting directly and writing code? Or maybe you do it centrally?

    Maksim: We do not specifically track the time for tasks. We look at the progress of the project as it goes. It already depends on who leads this project. When I act as a project leader, it is usually more convenient for me to look at the results of the week. At the beginning of the week we say what we want to do by next Friday, what we want to show and demonstrate. Then we look, it turned out or not, we analyze what went wrong, why we did it. If we reworked, in a sense, we will do more than planned, then we also find out why. I have not heard from any of the teams about recording time in hours of how much the developer and what he was doing specifically on some day. It seems to me that no one is doing this.

    Instruments


    Roman : It is not the first time I've heard that Uber use Facebook tools, be it a Phabricator, be it a Buck. What is the reason?

    Maxim : I can not say about global politics. I'm not even sure that it is such that let's use the tools of Facebook. Buck suits us by certain criteria. There's a big project, build time and all that. With Phabricator - I do not know. This happened before I joined the company. I know that some teams are trying to make some kind of small Jira instance, but this is still in the spirit of experiment. The team uses these tools in different ways. We have no such global policy that we will use everything that Facebook does.

    Road to work and back


    Alexey : Tell me further what happens when your working day ends. By the way, what time? Is it somehow fixed in time?

    Maxim : I usually leave somewhere at 7 with something. This is specifically my schedule, I think that after a while it may change in the direction of an earlier arrival and departure. Many people come to 8 and go to 5.

    Alexey : How do you get to work? Do you ride a bike like a true dutchman?

    Maxim : I, as a true Dutchman, ride a bike to the subway and then take the subway to work. We now have an office next to a very large transportation hub, and there simply is no need for a bicycle. But before that, I went through a wonderful Amsterdamian forest on a  bicycle every day for 12 km one way.. It was delicious. I really miss that office because of this road.

    Ilya : How much time do you get to work?

    Maxim : 30-40 minutes.

    Pro Amsterdam


    Alexey : For all the time that you lived in Amsterdam, what did you like the most? Why is this city in your opinion? What's the best thing?

    Maxim : The best thing about Amsterdam is its neighboring city of Haarlem , where I lived for one year. This is an absolutely wonderful little town, which is like Amsterdam, only there are very few tourists. He is very cool from a cultural point of view. Despite the fact that it is small, there are cinemas, theaters, different activities, every weekend someone performs. I really like the local style and rhythm of life in terms of how people relate to their work, how they relate to their family. Famous Life Work Balance. It is not very common to “paw up”. Career for most people is not in the first place. On the one hand, this has such an effect that sometimes, when you need something right now, it turns out that the company that does it has 3 days off. On the other hand, the people around you are relaxed and they are fine . This is some kind of magic of the society in which you live, worth more bikes, clean streets, food. What I like most here is the feeling that people around are happy with life.

    Theme on AppsConf


    Ilya : I really wanted to go to Amsterdam. We know that in October you will be speaking at AppsConf. Please tell a little about the topic and what you will tell the guys.

    Maxim : My main topic is about how a large company that develops a mobile application works and which has a mobile application is its main product. I want to tell, first, about the scale , how many people work for us, what teams, how it all eventually fits into one application.

    I want to talk about things related to  cross-platform architecture. Not only does a lot of people work and they make Android apps, we also have iOS apps. How these two sentences work more or less equally up to the detail how we achieve this.

    The last big moment from what I plan to tell is how Quality assurance is arranged in Uber. This is also a rather interesting process. When I came to work in a big company, I was very interested in how a big company works, which works on the application. Although I previously worked in small companies that make about the same applications. I want to tell you about my experience, about what I saw in big companies, in Uber, that it seems to me interesting, what can be learned for a smaller company or for similar big companies. There are some interesting things, original solutions that I saw in Uber and have not seen them before. I would like to share all this.

    Theme Uses on AppsConf


    Ilya : How come you decided to tell about it? In general, most likely, students do not work in such large companies. How it will be useful to them? How can they apply this knowledge?

    Maxim : I will answer in order, as I chose this topic. It’s not the first time that I speak at conferences and usually I’m just talking about things that interest me. I believe that if people read the announcement and thought that maybe it would be crap and would not go to my presentation, then probably it should be. They just don't need it. But specifically, it seems to me, it will be curious, firstly, because usually big companies talk about some kind of tool that they did, about architecture. I really like to talk about architecture, but it seems to me that it will be more interesting about the processes in this case.

    As for how this can help other people who have not worked in such large companies, firstly, there are things that can still be learned. The same quality assurance about which I spoke. If I understood well how this thing works in Uber, then before Uber I might have tried to implement something like this in my projects. Those things that are associated with the work of several teams, this is not a unique case for large companies. It often happens even in small outsourcing that you have some kind of team that does something in-house. There is some kind of team that outsource backend, which does mobile development. Synchronization issues are not new, they are almost everywhere.

    Management Model in Uber


    I also want to tell about the management model in Uber, about the format in which different teams work with each other. We at Uber have no project managers at all . There is such a role, but there are no such people. This is also an interesting find, but not from the point of view of engineering, but from the point of view of organizing people. Before that, wherever I worked, there were project managers. Everywhere, everything worked along roughly the same rails. And here I saw another way, and I would like to share it.

    Ilya : Sounds interesting enough. I think this will be a pretty cool report. I advise everyone to go for it. I want to remind you that Maxim will speak at AppsConf in Moscow, which will be held on October 8-9. You can go to the site Appsconf.ru and see ticketsas long as they are not very expensive. Members of the program committee are already recording video clips telling what the conference will be about.

    Thank you, dear listeners and readers, see you in new releases.

    Also popular now: