Beste antwoord
Petr is mijn voormalige student in hetzelfde jaar aan de afdeling wiskunde van de Moscow State University. Hij was een beetje een persoonlijke coach voor mij na zijn twee ACM ICPC-finales, toen zijn ACM-carrière formeel eindigde. We werkten ook 2 jaar samen in het Moskou-kantoor van Google, en we huurden samen een flat gedurende die 2 jaar, dus ik ken hem relatief goed.
Ik zou het punt van de Adityas zeker steunen antwoord over zijn nederigheid. Petr is erg bescheiden, en hij houdt eigenlijk niet van al deze superpopulariteit met een Facebook-pagina die over hem is gemaakt, enz. Hij is erg beleefd en pronkt nooit op een of andere manier. competitieve programmering kan voorbijgaan zonder deze trash talk-conversaties zoals “(gele codeur) – Oh, ik” ma dwaas: ik moest mijn 250-punt opnieuw indienen. (rode codeur) – Oh, ik “ma dwaas: ik heb mijn harde in 30 seconden na het einde van de coderingsfase. (Petr) – Oh, ik “ma fool: ik” heb 2 geldige uitdagingen gemist over het gemakkelijke probleem in mijn kamer “- dit wordt gezegd nadat hij alle drie had opgelost en een SRM had gewonnen of misschien de 2e plaats innemen. Dit kan van opzij lijken te bespotten, maar is eigenlijk gewoon een oprechte analyse van de fouten van jezelf tijdens de ronde. Het is alleen dat fouten momenteel op heel verschillende niveaus zijn voor die mensen.
Dat kan ik zeker verzet Petr als winnaar van alle denkbare programmeerwedstrijden tegenover vele respectievelijke winnaars van alle denkbare wiskundige wedstrijden in die zin dat hij een veel socialer persoon kan zijn, hij is gemakkelijk om mee te communiceren en hij is absoluut geen supernerdy persoon die je zou verwachten na een ontmoeting “vreemde wiskundigen”, Hollywood-films kijken of gewoon je nerdy klasgenoot herinneren. Hij is nog steeds geen woordvoerder of zoiets, maar hij is een volkomen gewone man voor een vreemde.
Petr is erg goed in strategische bordspellen. We waren dol op het spelen van Settlers of Catan en speelden waarschijnlijk enkele honderden keren, en hij was ongeveer 2/3 keer de winnaar, wat indrukwekkend is gezien een spel met 3-4 spelers en gezien behoorlijk geavanceerde tegenstanders. We spelen ook “zweeds schaak” (eigenlijk “bughouse” in het Engels, maar het bughouse heeft iets andere regels), “Carcasson”, “Ticket to Ride” en anderen. Het is veel beter te doen om Petr in een van deze wedstrijden te verslaan dan hem te verslaan in een programmeerwedstrijd, maar het is moeilijk.
Petr is een van de competitieve programmeurs met een heel sterk wiskundig denkvermogen. Er zijn verschillende paradigmas in de ACM-wereld, waaronder “Het werd geaccepteerd ==> het algoritme is correct”, maar het lijkt erop dat Petr bijna nooit een oplossing indient zonder een rigoureus bewijs te hebben, zelfs als een goede wiskundige intuïtie voldoende is en het bewijs moeilijk. Wat ik zou doen argumenteren is een noodzakelijke eigenschap voor een topconcurrent, want het ergste dat je tijdens de wedstrijd kunt doen, is een verkeerde oplossing implementeren.
Petr is (uiteraard) erg goed in algoritmische probleemoplossing. of zou hem tenminste kunnen verslaan bij de wiskundig-olympiaden-specifieke problemen, er zijn maar een paar klassen van algoritmische problemen die ik soms theoretisch sneller zou kunnen oplossen dan hij, en in het algemeen is hij veel sneller. Hij heeft een superontwikkelde intuïtie in het gebied: hetzelfde dat onderscheid hes de winnaars van wiskundige olympiaden, maar toegepast op algoritmische problemen in plaats van gebruikelijke wiskundige problemen. Dus zelfs als je erg goed bent in coderen, foutvrije code schrijven en debuggen, zal hij je, zodra de problemen al moeilijk genoeg zijn, je nog steeds verslaan vanwege de snelheid bij het theoretisch oplossen van problemen. Vanwege zijn sterke wiskundige achtergrond is hij geen geïntimideerd door niet-standaard problemen, die zeldzaam zijn in de wedstrijden IMHO, maar de meest complexe zijn altijd niet-standaard. Petr houdt van de problemen die in 1-2 eenvoudige zinnen kunnen worden uitgedrukt, maar die het meest moeilijk op te lossen zijn.
Het enige dat Petr niet echt onderscheidt van andere concurrenten dan het zeer snel oplossen van problemen op wiskundig niveau, is de diepgaande kennis van zijn algoritme en zijn programmas. Het is moeilijk uit te leggen, maar het is de belangrijkste reden hij maakt ofwel geen bug of vindt hem in de orde van grootte sneller dan andere topconcurrenten. Hij hoeft helemaal niet stap-voor-stap foutopsporing uit te voeren: het is voor hem duidelijk door de code te lezen waar de fout zich bevindt, of hij kan een foutopsporingscode “Naar deze regel uitvoeren” maken, waarden bekijken van verschillende vooraf gedefinieerde variabelen op dat punt, inclusief arrays, sets en matrices, en vind de bug op dat moment zonder verder te gaan. Elke meer dan dat foutopsporing lijkt zeer zeldzaam, en de sleutel is dat hij begrijpt welke invarianten moeten bevatten op elk moment in het programma en merkt de verstoringen op, en dan weet hij op de een of andere manier heel snel waar in de code deze invarianten mogelijk kunnen worden geschonden.
Petr schrijft altijd zeer zuivere en begrijpelijke code. kortere code, maar altijd leesbaar.Overigens helpt het veel bij het aanvankelijk schrijven van foutvrije code en ultrasnelle foutopsporing in de competitieve programmering, wat niet zo voor de hand liggende strategie is als bij industrieel programmeren.
Het is duidelijk dat hij erg goed is geconcentreerd, zeer attent en zeer goed in het nauwkeurig opsommen van alle mogelijke gevallen in de problemen waar dat nodig is.
Een ding dat u zou kunnen verrassen is dat hij nooit teveel tijd besteedde aan training in competitief programmeren. Ik bedoel, het is duidelijk dat een jongen die begon met het bijwonen van de All-Russian olympiade in informatica en de trainingskampen vanaf de 6e klas, in tegenstelling tot de gebruikelijke 9e klas, veel training kreeg. Maar hij zegt altijd dat hij er de voorkeur aan gaf om altijd tijd te hebben en te besteden aan voetballen met zijn vrienden enz. Ik weet niets van de schooljaren af, maar hij trainde eigenlijk niet anders dan meedoen aan de echte wedstrijden tijdens zijn ACM-jaren op de universiteit. . Ik en Egor (@ http://www.quora.com/TopCoder/Who-is-Egor-Kulikov/) waren altijd in het laboratorium om op internet een nieuwe wedstrijd te vinden en deel te nemen, terwijl hij soms gewoon binnenkwam en ons daar een beetje over bespotte: ) Toen “verscheen” TopCoder, en na enige aarzeling om mee te doen (“Waarom zou ik? Tomek zal me toch verslaan :)”) vond hij de vaste bron van wedstrijden die hij tot op de dag van vandaag zelden mist. Het is voor mij niet eens meer verrassend wanneer Petr een SRM of een andere persoonlijke ronde wint terwijl hij wacht op het instappen op de luchthaven en ongeveer 40 minuten heeft in plaats van 75 om de codering te voltooien. Maar afgezien van die officiële wedstrijden die er tegenwoordig genoeg zijn, maar 8-10 jaar geleden vrij schaars waren, zag ik hem niet trainen.
Een van de andere bijzonderheden is de bijzondere eerlijkheid die tot het uiterste wordt gedreven. in feite zien Petr als een computerprogramma in plaats van een gewone sterveling in termen van zijn woorden en daden 🙂 Als hij iets zegt, zal hij “zijn woord houden, en hij gehoorzaamt altijd alle bestaande regels, van wetten en concurrentieregels tot overschrijding de verkeerslichten. Je zou kunnen zeggen dat dit is wat iedereen zou moeten doen, maar je kunt zelden iemand vinden die het ook daadwerkelijk doet. En dit is vaak een rolmodel dat ik voor mezelf gebruik, in tegenstelling tot de wijdverbreide mentaliteit van “zachte wetten” om mij heen. Hoewel niet altijd 🙂 Je kunt daardoor ook enige invloed op jezelf verwachten: hij “praat altijd met je in het Engels als er mensen zijn die geen Russisch verstaan, en je moet altijd je veiligheidsgordel vastmaken de auto 🙂 Zelfs als je op de achterbank zit 🙂 (wat een regel is die iedereen zou moeten volgen, maar helaas is dat niet het geval in de echte wereld).
Petr volgde ook de meeste universitaire cursussen, wat helemaal niet gebruikelijk is bij MSU. We zijn allebei afgestudeerd met een volledige 5.0 GPA, wat een zeldzame gelegenheid is. Ik weet zijn reden daarvoor niet, de mijne was als “waarom geen 5 (een A) krijgen als het gemakkelijk is”. Het zou je waarschijnlijk niet verbazen dat het gemakkelijk was om voor Petr te studeren, maar het omvat ook enkele geesteswetenschappen en sport en zegt nog steeds iets belangrijks over de persoon.
Petr heeft vaak een controversiële mening over een bepaald onderwerp. Wat me opvalt is niet alleen dit feit, het is dat hij vaak een tegenovergestelde mening heeft over een onderwerp dat jij als voor de hand liggend beschouwde en voor altijd voor iedereen hebt opgelost, en het is niet alleen een mening, maar ook een zeer sterke argumentatie ervoor 🙂 doet je in ieder geval je houding heroverwegen ten opzichte van een aantal alledaagse dingen waar je nooit aan zou denken.
Het lijkt er ook op dat we iets gemeen hebben met onze houding ten opzichte van de wetenschap. We zijn allebei nog niet gepromoveerd, meestal omdat het werk aan praktische complexe problemen bij Google bleek te zijn en Yandex (voor mij) ons veel meer aansprak dan onopgeloste wiskundige problemen die we hebben geprobeerd, en de wetenschappelijke studies een lage prioriteit kregen. Vrienden springen rond en vragen waarom don “Wij doen onze PhDs, maar voor mij en ik neem aan dat voor Petr het certificaat zelf niets waard is als ik niet iets echt belangrijks oplost. Ik ben nog steeds op zoek naar “mijn” onderwerp, ik ben niet zeker van Petr, maar ik denk dat we in de toekomst waarschijnlijk allebei per ongeluk interessante publiceerbare onderwerpen zullen vinden.
Antwoord
Op een avond terwijl ik pool aan het oefenen was bij Google, vroeg een man me of hij met me mee mocht spelen. We speelden 3-4 games en hij speelde onberispelijk en versloeg me elke keer met een grote marge. Ik was alleen begonnen met spelen onlangs, en voelde zich dus niet erg slecht over deze verpletterende nederlagen. De hele tijd sprak hij niet veel en toen hem werd gevraagd, stelde hij zichzelf voor als Petr en zei dat hij op bezoek was vanuit het kantoor in Moskou.
Daarna kwamen we een paar keer bij elkaar voor spelletjes en een keer tijdens het avondeten. Hij zei nooit iets over programmeren of algoritmen. Hij was net als elke andere Googler die ik had ontmoet, behalve dat hij zelden sprak en als hij dat deed, ging het niet om de moeilijke problemen die hij op het werk oplost.
Enkele dagen later kwam ik dit artikel tegen http://www.technologyreview.com/news/428610/in-the-olympics-of-algorithms-a-russian-keeps/ en ik werd overweldigd om te weten wie deze “Petr” was! Ik was totaal overweldigd door zijn nederigheid.En plotseling voelde ik me niet zo slecht bij het verliezen in het zwembad, wetende dat er andere dingen zijn waarbij hij me met een nog grotere marge kan verslaan :).