📜 ⬆️ ⬇️

Path olympiadnik in industrial programming

Friends, Sasha Kuprin’s story about his trip to the final, his acquaintance with Yandex, his diploma, and overnight stays in his office fell into my hands. With the permission of the author I share with you!

Yandex has been interested in Olympiad programmers for a long time. Being a sophomore, I listened to stories about ShAD Grigory Kondakov, Misha Levin's speeches. Received T-shirts and brochures for the quarter finals and semi-finals of the World Cup. But, you know, in that very distantly olympiad time, I didn’t care at all about the issues of work, much less additional training. Well, until a certain time.

In the fourth year, our provincial team (Orel STU) made it to the ACM ICPC final. It was, to put it mildly, an enchanting success - after all, we never broke the stars from the sky, and the selection was more serious than today. To our unruly joy, there was a revolution in Egypt, which caused the transfer of the final from Sharm el-Sheikh to the sunny states of America to the city of Orlando.

And there was that short conversation. One evening in the chill zone, we chatted with Misha Levin about the dance unit, when suddenly, at that time, an unknown Seryozha Chernyshev approached me and, after identifying the final participant by T-shirt, asked: “Do you want to give us Yandex?” And why not? =)
')
Everything turned out somehow surprisingly simple. Exchanged a couple of letters. We settled some bureaucracy - fill in the questionnaire, coordinate the dates. I had one formal boss and several real ones at once.

I was absolutely satisfied with the summer internship scheme: I arrive in the middle of summer, I am provided with food and shelter, I have been interning for two and a half months, and at the end of September I am going back to the bird city in order to finish my last year and defend my diploma.

It's funny, but the first “working” day coincided with the closure of the SEC and summing up the results of Yandex.Algorithm. So I would come to Moscow anyway. =) I liked the working day. Until four o'clock in the evening, I hung out with friends-olympiadniki in Extropolis and ate chicken skewers. Without leaving the building I received a badge with a serious inscription: “Development Department”.

In general, it should be noted that I was seriously worried. When, when will they give me the first task? Will my poor Olympiad knowledge be enough to cope with it? Two and a half months is quite a bit, so I was expecting, if not galloping in Europe, then at least in pace waltz mode on.

However, no one even itched. Well, I guess so I thought. Lesha Mirzoyan soothed me with varying success: “Bye, well, why are you? The first week, meet with the authorities, guys, office. Don't bother! ”In general, the end of the day passed alternately in billiards and in the music room. ;)

The biggest surprise was my neighbor. Sasha Prudaev, with whom we discussed Olympiad tasks for a couple of years, moved from distant Tyumen to the capital. And he went to work two days before me. That's the news, that's the meeting! Another of my neighbors was Daniil Burdakov, a very clever boy, with whom we now often intersect at the SAD. Therefore, Kompashka got what you need. We lived in a two-minute walk from Nagornaya and, taking into account the fact that the annular Park of Culture was closed for repairs, spent about forty minutes on the road one way.

The next day I had a laptop in my hands. With Windows. Already great, for Linux I did not use in life. The task of the authorities picked up with the soul. One had to somehow learn how to compare documents for similarity, introduce a definition of similarity and do it all quickly enough - well, assuming that we have over 10 ^ 9 documents.

But let's get everything in order. I was enrolled in the internship project Yabrakadabra, where they were engaged in a new search engine from scratch. On its basis, one can confidently study and demonstrate the architecture of any search engine, explain the principles of information retrieval, and so on and so forth.

In theory, everything was not very scary. It was scary to practice. So many horribly unfamiliar things have fallen through me that I didn’t even have to use git - with the guys I only deflated the repository once and then did everything locally. Looking ahead, I will say that on the last day of the summer internship I sent my code to the postmaster, and not something I implemented somewhere. Probably, people with experience, reading these lines, roll on the floor laughing, holding their bellies.

Almost immediately, I realized that there are two misfortunes in industrial programming: OOP and variable names. With a grief in half and God's help decomposing the problem, I began to search for a solution. The guys advised various articles on the practically unknown to me then English about simhash and minhash. But what should a real Olympiad do? Of course, come up with something different! (All that is missing is a comic with a mop).

I read articles and I thought for about a week. Of course, without ceasing to get acquainted with the environment. Everyday work was brightened up by a nyashny office, get-togethers at coffee-points with Sasha Prudaev and other sports programmers. Then there was a turning point, which I am proud of so far: I came up with a solution. It was on the subway train, as I remember. =) Later on, the practice showed that it turned out to be no worse than analogs, which still had to be implemented for plotting and persuading the authorities.

As a result, on my first review I “sent” something consisting of 300+ lines of code. In my defense, I can say that these 300+ lines completely solved the task. =)

The guys fought hysterically. Artyom Babenko cried bloody tears and said that more than five times he would not accept my code. Another wildly funny moment was that on the printout (and the review was just that - I printed out the code, and we went to read it in crowds) a path is indicated above, like “... / cadabra / kpr / hash.cpp”. I answered the corresponding question appropriately, and Artem recalled Kuprinhesh for a long time and regularly with tears in my eyes. [Alex_KPR - my nickname].

Later my code grew and spread. It was somehow stupid and strange, given that the functionality has not changed. Five times quickly exhausted, and with me a significant part of the time spent another chief Yegor Samosvat. Despite the fact that I felt like an idiot and looked no smarter, what was going on was pleasant to me. In fact, I studied in both comfort and combat conditions.

It was time for summer Petrozavodsk collections, where I asked to go from Yandex, in order to carry light and good (crossed out) in order to tell about the virtues of the summer internship. The people didn’t react very willingly, and then I remembered myself at the undergraduate courses: the real olympiadnik will be involved in olympiad tasks endlessly. Well, gentlemen, your time will come. ;)

In the meantime, we moved to another apartment in Belorusskaya. The Park Kultury station was still closed, and by the end of the second month of the internship I finally had a trip. One and a half hours a day was just too lazy to spend on the road, so I spent almost 24 hours a day in the office, sleeping in soft conversations, hammocks and on padded stools. It was really great. I managed to spend a lot of time in the music room - at night I was tormented by a synthesizer and a guitar. Night walks around the office puzzled the guards, but what an atmosphere!

Meanwhile, work was slowly coming to an end. Kuprinhash acquired a new name - FirstLetterHash, grew from one file to a dozen, it has new features and brothers, having the same interface, gathered statistics on the query “problems of being”, and much, much more.

It seems to me, by and large, I managed. It may not be as good as it could be, but it did it. In order not to lose contact, they promised to take me somewhere in the winter on a remote place.

And in his native university, discussions and battles about the themes of theses were going on. Having agreed in advance with the guys from Yandex, I managed to convince the graduate leader in the endless pathos and practical applicability of FirstLetterHash. So in a certain way I had a diploma in my pocket - it remains to pour water into an explanatory note, which turned out to be a matter of a couple of weeks.

February 1, I again "went" to work. This is where I needed both git and putty, and many other previously unknown joys of life. The task was great again. This time it was necessary to build a snippet for the keywords - a small gluing together of pieces of the source text that would simultaneously contain many keywords and would be perceived by a person as excerpts from the document, and not cutting phrases.

Dynamic programming to help! The decision this time turned out to be practically on the surface, the question was in the limitations on time and memory. The two-hour working day turned out to be a disgusting format, so I usually chose one week in the month, during which I worked fruitfully, and the rest of the time I did my own business.

I felt like I was left to myself, and it was very relaxing. And, although I honestly completed the task, tested it and committed it, it seems to me that I am a freebie. Somewhere from April-May, when 90% of the work was completed, sensible tasks ceased to arrive, and here the logic was rather simple: I will not have time to cope with the new big task, but there is still time.

After successfully defending my diploma, I entered the HSE Master's program for a program combined with ShAD Yandex, that is, in fact, I went to study at once in two places. Thoughtful HSE settled future masters in a quiet cozy forest village called Dubki, for which I thank her very much. Almost immediately, I came to the conclusion that five hours on the road a day can be exchanged on a part-time working day and living close to the office.

Very soon a great opportunity turned up: on the ShAD exit, my friend Pasha Shishkin, a gold medalist at ACM ICPC, announced that Yandex.Kartinki was looking for a developer. Hooray, here it is, my chance!

Soon an interview took place, in which I answered the test questions called “pure evil c ++ test 2” with great difficulty. For some reason, it was only at the second attempt that I correctly solved a simple task on the theory, but I killed the speed of writing an algorithmic task in an industrial style.

But the position of part-time was not - only full time. But perhaps this is even better. In the pictures, since October 1, exactly five months have passed. And according to internal sensations, everything is really great.

This is how, with one short conversation, the path of the Olympiad to industrial programming began. And I am sure that this is only the beginning. So, guys, dare, learn, train - and everything will certainly work out!

Source: https://habr.com/ru/post/174269/


All Articles