Najlepsza odpowiedź
Petr jest moim byłym studentem tego samego roku na Wydziale Matematyki Uniwersytetu Moskiewskiego. Był dla mnie czymś w rodzaju osobistego trenera po dwóch finałach ACM ICPC, kiedy jego kariera ACM formalnie się zakończyła. Pracowaliśmy też razem przez 2 lata w moskiewskim biurze Google i przez te 2 lata wynajmowaliśmy razem mieszkanie, więc znam go stosunkowo dobrze.
Zdecydowanie poparłbym punkt widzenia Adityi odpowiedź na temat jego pokory. Petr jest bardzo skromny i właściwie nie lubi całej tej super popularności, jaką jest strona o nim na Facebooku, itp. Jest bardzo uprzejmy i nigdy się nie popisuje. Nikt w programowanie konkurencyjne może przejść bez tych rozmów typu „trash talk”, takich jak „(żółty koder) – Och, mam głupcze: musiałem ponownie przesłać 250 punktów. (czerwony koder) – Och, mam głupio: naprawiłem moje trudne w 30 sekund po zakończeniu fazy kodowania. (Petr) – Och, „ma głupcze:” Przegapiłem 2 ważne wyzwania na łatwym problemie w moim pokoju „- zostało to powiedziane po tym, jak rozwiązał wszystkie trzy i wygrał SRM a może zająć 2 miejsce. Może się to wydawać kpiną z boku, ale w rzeczywistości jest to po prostu szczera analiza własnych błędów podczas rundy. Po prostu błędy są obecnie na bardzo różnym poziomie dla tych osób.
Z pewnością mogę przeciwstawić Petra jako zwycięzcę wszystkich możliwych do wyobrażenia konkursów programistycznych wielu zwycięzcom wszystkich możliwych do wyobrażenia konkursów matematycznych, ponieważ może być osobą o wiele bardziej towarzyską, łatwo się z nim komunikuje i zdecydowanie nie jest osobą super-nerdowatą, której można by oczekiwać po spotkaniu „dziwni matematycy”, oglądający hollywoodzkie filmy lub po prostu wspominający swojego kujona koleżankę z klasy. Nadal nie jest rzecznikiem czy kimś w tym rodzaju, ale jest zupełnie zwykłym facetem dla nieznajomego.
Petr jest bardzo dobry w strategicznych grach planszowych. Lubiliśmy grać w Settlers of Catan i graliśmy prawdopodobnie kilkaset razy, a on wygrał około 2/3 razy, co jest imponujące, biorąc pod uwagę grę dla 3-4 graczy i dość wyrafinowanych przeciwników. Gramy także w „szachy szwedzkie” (właściwie „bughouse” po angielsku, ale w bughouse obowiązują nieco inne zasady), „Carcasson”, „Ticket to Ride” i inne. O wiele bardziej wykonalne jest pokonanie Petra w jednym z nich niż pokonanie go w zawodach programistycznych, ale jest to trudne.
Petr jest jednym z konkurencyjnych programistów z naprawdę silnym myśleniem matematycznym. paradygmaty w świecie ACM, w tym „Został zaakceptowany ==> algorytm jest poprawny”, ale wydaje się, że Petr prawie nigdy nie przedstawia żadnego rozwiązania bez ścisłego dowodu, nawet jeśli wystarczy dobra intuicja matematyczna, a dowód jest trudny. argumentowanie jest cechą konieczną dla czołowego konkurenta, ponieważ najgorszą rzeczą, jaką możesz zrobić na zawodach, jest zastosowanie niewłaściwego rozwiązania.
Petr jest (oczywiście) bardzo dobry w algorytmicznym rozwiązywaniu problemów. Chociaż ja mogę ( a przynajmniej mógł) pokonać go w problemach matematyczno-olimpijskich, jest tylko kilka klas problemów algorytmicznych, które mógłbym czasami rozwiązać teoretycznie szybciej niż on, aw ogólnym przypadku jest znacznie szybszy. Ma super rozwinięty intuicja w tej dziedzinie: to samo, co wyróżnia jest zwycięzcą olimpiad matematycznych, ale zamiast zwykłych problemów matematycznych stosuje się do problemów algorytmicznych. Więc nawet jeśli jesteś bardzo dobry w kodowaniu, pisaniu kodu wolnego od błędów i debugowaniu, gdy tylko problemy staną się wystarczająco trudne, on i tak cię pokona ze względu na szybkość rozwiązywania problemów teoretycznych. Ze względu na swoje dobre wykształcenie matematyczne nie jest onieśmielony niestandardowymi problemami, które są rzadkie w konkursach IMHO, ale najbardziej skomplikowane są zawsze niestandardowe. Petr lubi problemy, które można wyrazić w 1-2 prostych zdaniach, ale najtrudniejsze do rozwiązania.
Jedyną rzeczą poza bardzo szybkim rozwiązywaniem problemów na poziomie matematycznym, która naprawdę wyróżnia Petra na tle innych konkurentów, jest głębia zrozumienia jego algorytmu i jego programów. Trudno to wyjaśnić, ale jest to główny powód albo nie robi błędu, albo znajduje go o rząd wielkości szybciej niż inni czołowi konkurenci. Tak naprawdę nie musi w ogóle debugować krok po kroku: albo jest to dla niego oczywiste, po prostu czytając kod, w którym znajduje się błąd, albo może utworzyć kod debugera „Uruchom do tej linii”, spójrz na wartości kilku predefiniowanych zmiennych w tym momencie, w tym tablice, zbiory i macierze, i znajdź błąd w tym momencie, bez żadnego kroku dalej. Jakiekolwiek debugowanie bardziej niż to wydaje się bardzo – bardzo rzadkie, a kluczem jest to, że rozumie, które niezmienniki muszą zawierać w dowolnym momencie programu i dostrzega zakłócenia, a potem w jakiś sposób bardzo szybko wie, gdzie w kodzie te niezmienniki mogą zostać naruszone.
Petr zawsze pisze bardzo czysty i zrozumiały kod. Nigdy nie pisał krótszy kod, ale zawsze czytelny.Nawiasem mówiąc, bardzo pomaga to w pisaniu na początku kodu wolnego od błędów i ultraszybkim debugowaniu w programowaniu konkurencyjnym, co nie jest tak oczywistą strategią jak w programowaniu przemysłowym.
Oczywiście jest bardzo dobry w skupieniu, bardzo uważny i bardzo dobry w rygorystycznym wyliczaniu wszystkich możliwych przypadków w sytuacjach, w których jest to konieczne.
Jedną rzeczą, która może cię zaskoczyć, jest to, że nigdy nie poświęcał zbyt wiele czasu na szkolenie z programowania konkurencyjnego. Chodzi mi o to, że oczywiście chłopiec, który zaczął uczęszczać na ogólnorosyjską olimpiadę informatyczną i obozy szkoleniowe począwszy od 6 klasy, w przeciwieństwie do zwykłej 9 klasy, dużo trenował. Ale zawsze mówi, że wolał zawsze mieć i poświęcać czas na grę w piłkę nożną ze swoimi przyjaciółmi itp. Nie wiem o latach szkolnych, ale tak naprawdę nie trenował poza uczestnictwem w prawdziwych zawodach podczas lat ACM na uniwersytecie . Ja i Egor (@ http://www.quora.com/TopCoder/Who-is-Egor-Kulikov/) zawsze byliśmy w laboratorium, próbując znaleźć jakiś nowy konkurs w Internecie i wziąć w nim udział, podczas gdy on czasami przychodził i trochę nas z tego kpił: ) Wtedy „pojawił się” TopCoder i po pewnej niechęci do dołączenia („Czemu miałbym? Tomek i tak mnie pokona :)”) znalazł stałe źródło konkursów, których do dziś rzadko brakuje. Już nawet mnie nie dziwi, gdy Petr wygrywa jakąś SRM lub inną rundę osobistą, czekając na wejście na pokład na lotnisku i mając około 40 minut zamiast 75 na ukończenie kodowania. Ale poza tymi oficjalnymi konkursami, które są obecnie popularne, ale były one dość rzadkie 8-10 lat temu, nie widziałem go podczas treningu.
Jedną z innych osobliwości jest szczerość doprowadzona do granic. zasadniczo postrzega Petra jako program komputerowy, a nie zwykłego śmiertelnika pod względem jego słów i czynów 🙂 Jeśli coś powie, dotrzyma słowa i zawsze przestrzega wszelkich istniejących reguł, od praw i reguł konkurencji po przekraczanie światła uliczne. Można powiedzieć, że to jest to, co każdy powinien zrobić, ale naprawdę rzadko można znaleźć osobę, która faktycznie to robi. I jest to często wzór do naśladowania, którego używam dla siebie, w przeciwieństwie do powszechnej mentalności „miękkich praw” wokół mnie. Chociaż nie zawsze 🙂 Z tego powodu możesz się również spodziewać na siebie wpływu: zawsze będzie mówił do ciebie po angielsku, jeśli w pobliżu są ludzie, którzy nie rozumieją rosyjskiego, a ty zawsze będziesz musiał zapiąć pasy samochód 🙂 Nawet jeśli siedzisz na tylnym siedzeniu 🙂 (co jest regułą wszyscy powinni się kierować, ale niestety w realu tak nie jest).
Petr uczęszczał również na większość kursów uniwersyteckich, co wcale nie jest powszechne na MSU. Oboje ukończyliśmy z pełnym 5.0 GPA, co jest rzadką okazją. Nie znam jego powodu, moje brzmiało: „Dlaczego nie dostać 5 (A), jeśli to„ łatwe ”. Prawdopodobnie nie zdziwiłbyś się, że nauka dla Petra była łatwa, ale obejmuje ona także nauki humanistyczne i sportowe, a mimo to mówi coś ważnego o danej osobie.
Petr często ma kontrowersyjne zdanie na jakiś temat. Uderza mnie nie tylko ten fakt, to, że często ma on przeciwstawne zdanie na temat, który uważaliście za tak oczywisty i rozwiązany na zawsze dla wszystkich, i to nie tylko opinia, ale bardzo mocna argumentacja na jego rzecz 🙂 Dosłownie zmusza cię przynajmniej do ponownego rozważenia swojego stosunku do pewnych powszechnych rzeczy, o których nigdy byś nie pomyślał.
Wydaje się również, że mamy coś wspólnego z naszym podejściem do nauki. Obaj nie zrobiliśmy jeszcze doktoratu, głównie ponieważ okazało się, że praca nad praktycznymi, złożonymi problemami w Google i Yandex (jak dla mnie) przemówiła do nas znacznie bardziej niż nierozwiązane problemy matematyczne, które próbowaliśmy, a badania naukowe miały niski priorytet. Przyjaciele „skaczą” i pytają, dlaczego nie „Nie robimy doktoratów, ale dla mnie i dla Petra zakładamy, że sam certyfikat nie jest nic wart, jeśli nie rozwiążę czegoś naprawdę ważnego. Wciąż szukam „mojego” tematu, nie jestem pewien co do Petra, ale wydaje mi się, że w przyszłości prawdopodobnie oboje znajdziemy jakieś interesujące tematy do opublikowania.
Odpowiedź
Pewnego wieczoru, gdy ćwiczyłem bilard w Google, facet zapytał mnie, czy mógłby do mnie dołączyć. Graliśmy w 3-4 mecze i grał nienagannie, bijąc mnie za każdym razem z dużym marginesem. Zacząłem grać tylko ostatnio, więc nie czułam się źle z powodu tych druzgocących porażek. Przez cały czas niewiele mówił i na pytanie, przedstawił się jako Petr i wspomniał, że przyjechał z biura w Moskwie.
Potem spotkaliśmy się kilka razy na meczach i raz podczas kolacji. Nigdy nie wspominał o programowaniu ani algorytmach. Był taki sam, jak każdy inny Googler, którego spotkałem, tyle że rzadko mówił, a kiedy to robił, nie chodziło o trudne problemy, które rozwiązuje w pracy.
Kilka dni później natknąłem się na ten artykuł http://www.technologyreview.com/news/428610/in-the-olympics-of-algorithms-a-russian-keeps/ i byłem zachwycony, gdy dowiedziałem się, kim był ten „Petr”! Byłem całkowicie przytłoczony jego pokorą.I nagle nie czułam się tak źle, przegrywając w bilard, wiedząc, że są inne rzeczy, w których może mnie pokonać nawet z większym marginesem :).