“I can tell you about the common pain of all iOS developers” - 10 questions for a programmer, issue 2
Pilot edition you seem to have liked. And we are still confident that the guys who do not get into the camera lenses are just as interesting as the IT stars. And maybe even more, because they talk about real problems and their solutions. This week we asked 10 questions to a person who modestly stands behind Yandex.Maps for iOS.
Nikolai Lihogrud ( likhogrud ) from Moscow. Started with HTML and Basic in ninth grade. Then I independently studied C #, entered the VMK MSU, and then got into the Any Void command. Together with Any Void, I switched to Yandex, for the last 2.5 years I have been working as a team leader for the Yandex.Maps development team for iOS.
1. Tell me about the feature that you have implemented and that you are proud of.
- Here it is necessary to separate the command features and my personal. From the personal side, the most memorable is that I accelerated the launch time of the application half a year and a half ago. And told colleagues about it. Dug out some features of iOS that have not been described anywhere. There was a problem due to the fact that Swift pulls along a lot of dynamic libraries. For each of them you need to check the signature at the start - it slows down. He did useful work - it really affected the lives of users. I even spoke at the Mobius then .
As for team development, “Maps” is a huge project with a bunch of different features. I, probably, more and did not see. And if you sit down to understand, then I can show things that many do not even realize - there are a lot of things there! Almost in every new release we are doing some new cool things, and I'm proud of it all. Now we are trying to pump in the "Maps" are not historically established search and routing scenarios, but those that tell more about the place where you are. We call it a guide through the city. In general, no longer reference information, but informative, entertaining. And a very cool feature - augmented reality in maps. We quickly did it: it all worked out right away, everything took off. Had time on the launch of iOS 11, before the other teams. It was nice.
Pyshka floats on the Neva, nothing unusual
2. And now - about the most fierce fakap.
Fakap was. It was at the beginning, when I just switched to the "Card": an unfamiliar project, the previous team was completely sold out, there was no one to check me. And in one release I pushed the servers of the geocoder because I forgot to add one check. After some manipulations in the application, for each update of the user's position, a request was sent to the server, which returned data about where the user is located. And such changes in geo-location can be 10 times per second. And taking into account how many users we have, even if every hundredth or thousandth performed these actions, we had a heavy load on the server.
It was a moment that became visible outside the scope of my team. People came, said: well, what are you! But, by the way, it was normal - they raised a server to handle the load. The bug was found quickly, fixed quickly, and then the update was posted. True review in the AppStore took about a week. Now with this it became easier. I was then more offended myself: how is it that I just started working! But everyone understood everything: that the project is large, I am alone there, and there was no one to tell me ...
3. Describe your working space: from the chair and monitor to programming environments and favorite utilities.
- I got a chair, a table, too. It has a Thunderbolt monitor and a laptop. And also wireless keyboard and mouse, so that you can only work with the monitor.
The table is littered with papers, where all my thoughts and plans are written down. I did not switch to all kinds of Trello and Dapulse. When I started, this was not all, and in general the paper is somehow more familiar. Of course, I still do notes on the laptop, but to write like that and then cross out is more pleasant. There are usually a lot of things on the table that simply accumulate over time from somewhere, but recently I removed them. Lego is still around - comfort. In general, I consider my place cozy. And when I look at the tables of my colleagues, where nothing lies at all — the monitor and the laptop — it seems to me that I could not do that.
4. How do you choose your job? Stack, product, living conditions, money?
- I would probably answer the question " if I chose ...". After all, in fact, I have never changed jobs. I am already rooted in Yandex - I have been working for more than five years. I now have a good position, team, responsibilities, a lot of plans.
So, if I chose, I would probably do it on command. That is, to know in advance the people with whom I will work. And if you know them, then, as a rule, you know what product you will develop. If a person is not engaged in garbage, then you can be sure that his projects are good. It is important to be in the community: to know you, and you - others. So that there is no such thing that you go somewhere to zero, into the unknown. After all, even tasks depend on people. If a new employee is unsuccessfully sent, he may quickly become uninteresting.
Another important money issue. But here everything seems to be plus or minus all the same. I spend a lot of interviews and I know how much they offer in other companies.
5. What would you like to fix in the technologies and languages you use?
- I can tell you about the common pain of all iOS developers. In Swift, the compiler is not optimized, the development environment is not improved. On our project, where there are 400 thousand lines of code, everything just slows down. Indexing slows down, opening files slows down, opening projects slows down. The compilation is long, it is very resource intensive.
Even our work depends on what Xcode compiles for a long time. With Objective-C it works fine, but with Swift it’s bad. If he did it normally, we would not have to break the application into modules - we had to invest in it. Now we are developing more in test projects, and not in the main application. Then from the test projects we throw in the main. Although this ultimately benefited the entire project, there were some costs to learn how to work that way.
6. Where it is better to adopt someone else's experience - in high school, at conferences, at habr? Somewhere else?
- The most effective is when you have a specific problem and you are looking for a solution. “To learn from experience” - I don’t really understand what it means. But "where to look for a solution to the problem" is understandable. Where it is. Just in “Google” you type and watch what he answers to you.
And with conferences somehow it turns out that I don’t even have to learn from someone else’s experience of going there and sharing mine. There is already some experience in maintaining a large project that interests many. Applications such as ours, one might say, are few, therefore the experience is unique in its kind. They ask me: how they beat the modules, how the code review is organized, how your CI works there.
7. If you had unlimited resources (time, money, power, people), what project would you do?
- I have a big list “I have wanted it for a long time, but I don’t have time” - what I want to do in the “Maps”. There are pieces that I would like to improve.
In general, it would be interesting to contact the space industry. The idea of a person outside the Earth, knowledge of the universe - this interests me very much. I am glad when some successes occur in this direction. Probably, under iOS there is nothing to write, but somewhere I could come in handy with my team management skills. Yes, I at least would like to make coffee, if for an idea.
8. How do you relax? What are you doing besides work?
- You need to reboot - one hundred percent. This mode 5/2 came up with really smart uncles. If you are involved in a project, you burn, you support it, and if you do it at the weekend, it will be bad. You will eventually lose the fuse, but you need to maintain it on the contrary in order to work for months and years.
At the weekend I choose to do something simple: take a walk, watch TV, nothing extreme. Although I, perhaps, would like to, there is simply no suitable company. A couple of times we chose to go kayaking on the Klyazma with the guys, it was great. Sometimes there is a paintball. But all this is not regular, because an active waste of energy. Of course, you get some emotions in return ... But to work five days, and then another two days to swim-run somewhere and then work again five days? And you already have a body like a sore! I guess I could not.
I also spend time on repairs. Small and endless. This is a separate world with its own technologies, unique experience. It is very interesting there.
9. Tell about 3 favorite books - educational, popular science and art.
- I did not have educational books. At work, I can say, I have not read a single book. At the very beginning, maybe these were books on C ++. I remember, I went to a children's camp: the people were normal, and I had C ++. In the end, I did not really read anything, because there was no computer at hand. I read - it seems clear, but how can I apply it to my tasks? How to gain experience? I am more of a practitioner, not a theorist. Maybe I do not know any interesting terms with which other guys operate, but at the same time I can do my job. I learned this by simply solving difficult problems. The experience and solutions I was looking for was always easy on the Internet.
I would say to those people who concentrate a lot on reading literature and blogs, that what you read and saw is not a guarantee that you can reproduce it yourself. It is necessary not to break away from their own tasks, so that reading is always accompanied by practice.
I read “Wikipedia” from the scientific publication, you can read about everything there. I love history very much and can read there from Rurik to Ivan the Terrible, from the first Romanov to the palace coups. And then accidentally jump on a reference to Alexander the Great. I can stick for 2-3 hours. There are interesting articles about weapons, metal processing technologies. It’s a pity I can’t reproduce it, but it’s cool to understand how people thought of all this — from a cheese-burning furnace to a Bessemer process.
And now there is little fiction in my life. Such books have supplanted, probably, films. Because, in fact, their mission is similar, but the films are more compact. Although one book, perhaps, I will mention - this is “Oblomov” by Goncharov. I was deeply moved when I read it long ago. It seems even cried. Now it would be interesting to re-read it. Now I would think, probably, that this is what he needs, Oblomov.
10. If a consciousness wakes up right in front of you in AI, what will you tell him?
- The question is, what does “consciousness” mean? If it is simply made to pass the Turing test - this is not consciousness. But if you don’t go into such details, then I would ask you about solving some specific problems. I'm still a man of practice. “How to make Xcode faster?” :).
But be sure to start with "Hello, how are you?". “How are you?”, “What are you doing?” - the answers to these questions may contain some notes of reflection. How does a car really evaluate its business and mood? And what is she doing now?
A question from a previous hero: What technology study has caused you the greatest pleasure in the process?
- Here is a pleasure? Enjoy the work and study, I have not yet learned. I learned to calmly treat them and perform well. The iOS SDK, for example, did not arouse my particular interest, because it is, in general, simple.
It was interesting at the university when I used machine learning in the project. It was interesting to understand that in fact there is nothing difficult in ML. Knowing the input parameters, you can more or less predict the result. Probably, partly because of this, I do not feel the euphoria of AI, which many people experience. I know that these are all just algorithms.
And it was once interesting to understand compilers with automatic parallelization. This is a very advanced technology, there are a lot of different things in compilers. They are really smart and do a lot more than you can imagine. For example, the most complex transformations over the syntax tree. Or the most complicated code generation optimizations, when the compiler works for a specific hardware and processor.
It's great that now there is an open source framework LLVM , which allows you to create your own compiler. You can invent your own language! Write a parser for it, which will deal with lexical and syntactic analysis, and then use the power of a modern compiler to get the machine code.
Bonus: ask any question to another development.
- Knowing that you will not return back, would you fly to Mars in the first expedition?