
Anscheinend hat jeder
die Pilotfolge genossen, und wir sind uns immer noch sicher, dass Menschen „hinter den Kulissen“ genauso aufregend sein können wie IT-Prominente, die wir alle kennen und lieben. Und vielleicht sogar noch mehr, weil sie über echte Probleme und echte Lösungen sprechen. Diese Woche haben wir einer Person, die hinter der Entwicklung von Yandex.Maps für iOS steht, 10 Fragen gestellt.
Nikolay Likhogrud ( Likhogrud ) aus Moskau. Beginn der Programmierung in der 9. Klasse von HTML und Basic. Dann brachte er sich selbst C # bei, schloss sein Studium an der Moskauer Staatlichen Universität mit einem IT-Abschluss ab und landete im Any Void-Team. Zusammen mit ihnen wechselte er zu Yandex, wo er die letzten 2,5 Jahre als Teamleiter für die Entwicklung von Yandex.Maps iOS verbrachte.1. Erzählen Sie mir von einer Funktion, die Sie bereitgestellt haben und die Sie wirklich stolz macht.
- Wir müssen zwischen Teamfunktionen und meinen persönlichen unterscheiden. Ich erinnere mich am meisten daran, dass ich vor 1,5 Jahren die Startzeit für die App halbiert und meinen Kollegen davon erzählt habe. Einige iOS-Funktionen ausgegraben, die nirgendwo dokumentiert wurden. Da Swift (die Programmiersprache, die iOS verwendet) viele dynamische Bibliotheken mit sich zieht, gab es ein kleines Problem. Jede Bibliothek musste ihre digitale Signatur beim Start überprüfen, was alles verlangsamt. Meine Arbeit hat den Benutzern also wirklich geholfen. Ich habe sogar
bei Mobius eine Rede darüber gehalten.
Wenn es um Teamentwicklung geht, ist „Maps“ ein riesiges Projekt mit vielen verschiedenen Funktionen. Ich habe so etwas noch nie gesehen. Wenn Sie sich wirklich hinsetzen und sich damit beschäftigen, kann ich einige Funktionen zeigen, von denen wahrscheinlich niemand etwas weiß - da ist eine Menge Zeug drin! Bei jeder Neuerscheinung machen wir etwas sehr Cooles und ich bin sehr stolz auf alles. Derzeit sind wir damit fertig, die historischen Daten für die Suche und Routenplanung zu polieren und uns auf Funktionen zu konzentrieren, die Ihnen sagen, wo Sie sich befinden. Wir nennen es einen "Stadtführer". Es ist weniger ein nützliches Werkzeug als vielmehr Unterhaltungsmaterial. Eine der großen Funktionen ist Augmented Reality in Maps. Wir haben es ungewöhnlich schnell gemacht: Es hat von Anfang an ziemlich gut funktioniert, versuchen Sie es zuerst. Es gelang sogar, die Frist vor dem Start von iOS 11 vor den anderen Teams einzuhalten. Es war wirklich cool.
Nichts Besonderes - nur ein Donut, der am Fluss entlang rollt2. Erzähl mir jetzt von deinem schlimmsten Mist.
- Oh, da war einer. Es war ganz am Anfang, als ich gerade dem Maps-Team beigetreten bin: Es war für mich unbekannt, das vorherige Team war völlig außer Kontrolle und niemand war da, um mich zu überprüfen. Und einmal habe ich versehentlich die Geokodierungsserver DDoSed, weil ich vergessen habe, irgendwo einen Test durchzuführen. Nachdem ein Benutzer etwas mit der App getan hat, hat das Telefon bei jeder Aktualisierung seiner Geoposition eine Anfrage an den Server gesendet, und der Server hat Daten darüber zurückgegeben, wo sich der Benutzer befindet. Mit der maximalen Geschwindigkeit von 10 Mal pro Sekunde. Und wenn man bedenkt, wie viele Benutzer wir haben, selbst wenn jeder 100. oder 1000. Benutzer mit dieser Funktion interagierte, hatte der Server wirklich Probleme, damit umzugehen.
Es war der seltene Moment, als ich aus dem Maps-Team ausstieg. Leute aus anderen Teams fragten mich: „Was hast du getan?“. Aber zum Glück haben wir das Problem ziemlich schnell behoben - der Server war in sehr kurzer Zeit wieder verfügbar. Wir haben das große Problem gefunden, es sehr schnell behoben und einen Hotfix an Apple gesendet (obwohl die Überprüfung im App Store ungefähr eine Woche dauerte). Dort ist es jetzt viel einfacher zu erkennen, und damals war ich wütender auf mich selbst: Wie konnte ich es so schlimm versauen, nachdem ich gerade dem Team beigetreten war? Aber jeder verstand, dass das Projekt groß war und es niemanden gab, mit dem man sich beraten konnte ...
3. Beschreiben Sie Ihren Arbeitsplatz: von Ihrem Bürostuhl und Monitor bis zu bevorzugten Entwicklungsumgebungen und bevorzugten Dienstprogrammen.
- Stuhl und Schreibtisch habe ich nicht gewählt: Was die Firma mir gegeben hat, habe ich genommen. Darauf befinden sich ein Thunderbolt-Monitor und ein MacBook sowie eine drahtlose Tastatur und Maus, damit ich den Laptop beiseite legen kann.

Der Schreibtisch ist mit Papieren übersät, auf denen meine Gedanken und Pläne stehen. Ich kann mich immer noch nicht dazu bringen, zu etwas Progressivem zu wechseln: Trello oder Dapulse, spielt keine Rolle. Nichts davon gab es, als ich dazu kam, und ich bevorzuge immer noch Papier. Natürlich mache ich mir auch Notizen auf dem Laptop, aber es ist immer noch angenehm, etwas zu schreiben und es später durchzuziehen. Es gibt noch viele andere Dinge auf dem Schreibtisch, die ich regelmäßig aufräumte. Es gibt auch einige Legosteine für Komfort. Ich versuche bewusst, meinen Arbeitsplatz wie zu Hause zu gestalten, und manchmal schaue ich auf die Tische meiner Kollegen, an denen es nichts außer einem Laptop und einem Monitor gibt, und denke, ich kann nicht so leben.
4. Wie wählst du einen Job aus? Stapel, Produkt, Lebensbedingungen, Geld?
- Ich würde wahrscheinlich antworten, wenn die Frage "wenn ich wählen würde ..." war. Ich habe im Wesentlichen noch keinen Job gewechselt. Ich bin in meinem sechsten Jahr bei Yandex und kann mir nirgendwo anders vorstellen. Ich habe eine großartige Position, ein Team, Verantwortlichkeiten und viele Karrierechancen.
Wenn ich mich also für einen Arbeitsplatz entscheiden würde, würde ich mir wahrscheinlich zuerst das Team ansehen. Ich muss wissen, mit welchen Leuten ich zusammenarbeiten werde, bevor ich eine solche Entscheidung treffen kann. Wenn Sie sie kennen, wissen Sie wahrscheinlich auch, an welchem Projekt Sie arbeiten werden. Wenn die Person fertig ist, können Sie sicher sein, dass sie auch einige großartige Projekte hat. Es ist wichtig, andere Leute zu kennen und andere Leute dich kennen zu lassen. Sie können sich nicht isolieren und ins Unbekannte gehen. Auch Aufgaben hängen stark von Menschen ab. Wenn das Unternehmen seinen neuen Mitarbeiter verlegt, wird er schnell desinteressiert.
Das Thema Geld ist ebenfalls wichtig, aber überall mehr oder weniger gleich. Ich habe viele Interviews geführt und weiß, was normalerweise bei anderen Unternehmen angeboten wird.
5. Was möchten Sie in den von Ihnen verwendeten Technologien und Sprachen korrigieren?
- Ich kann Ihnen von den Schmerzen erzählen, die jeder iOS-Entwickler im Arsch hat. Swifts Compiler ist schrecklich unoptimiert, die Entwicklungsumgebung ist ebenfalls nicht aufpoliert. Unsere 400.000 Zeilen langen Projekte bleiben wie verrückt zurück. Die Indizierung ist langsam wie Melasse, jede Datei wird mehrere Minuten geöffnet, ein Projekt kann für eine Stunde initialisiert werden. Das Kompilieren ist nicht schneller und verbraucht auch viel Rechenleistung.
Unsere Aufgabe hängt davon ab, wie schnell Xcode Inhalte kompiliert. Es funktioniert gut mit Objective-C, aber mit Swift stimmt etwas nicht. Wenn es etwas schneller geklappt hätte, hätten wir das Projekt nicht in Module zerlegen müssen, aber wir mussten in es investieren. Derzeit entwickeln wir mehr innerhalb von Testprojekten und nicht die Haupt-App selbst und übertragen sie dann. Obwohl es für unser Projekt letztendlich gut geklappt hat, hat es Geld und Zeit gekostet, zu lernen, wie man so arbeitet.
6. Wo ist der beste Ort, um Arbeitserfahrung auszutauschen - ist es College, Konferenzen, Habr? Wo sonst anders?
- Der effektivste Weg ist, ein bestimmtes Problem zu haben und nach einer Lösung dafür zu suchen. "Erfahrung sammeln" ist ein sehr weit gefasster Begriff, aber "nach einer Lösung suchen" ist angemessener. Sie geben Ihre Frage einfach in Google ein und sehen sich an, was sie Ihnen bietet.
Normalerweise gehe ich zu Kongressen, um keine Erfahrungen zu sammeln, sondern um meine eigenen zu teilen. Ich habe einige Erfahrung in der Pflege eines großen Projekts, und das interessiert die Leute. Es gibt sehr, sehr wenige Projekte wie das unsere in Russland, daher ist unsere Erfahrung ziemlich einzigartig. Ich werde gefragt, wie Sie die App in Module unterteilt haben, wie Ihre Codeüberprüfung aussieht und wie Ihr
CI funktioniert.
7. An welchem Projekt möchten Sie angesichts unbegrenzter Ressourcen (Zeit, Geld, Menschen) arbeiten?
- Ich habe eine ziemlich lange Liste mit "Ich möchte, habe keine Zeit" zu dem, was ich in Maps vorhabe. Es gibt Dinge, die verbessert werden müssen.
Insgesamt möchte ich aber in die Raumfahrtindustrie einsteigen. Ich bin fasziniert von der Vorstellung eines Mannes außerhalb der Erde, der das Universum erforscht. Jedes Mal, wenn es Neuigkeiten über wissenschaftliche Fortschritte in diesem Bereich gibt, bin ich aufgeregt. Zwar wird dort wahrscheinlich keine iOS-Entwicklung benötigt, aber ich kann irgendwo mit meinen Team-Management-Fähigkeiten zusammenpassen. Zur Hölle, ich würde den Leuten sogar Kaffee bringen, wenn die Idee stimmt.
8. Wie entspannst du dich? Was machst du im Leben neben der Arbeit?
- Jeder muss manchmal neu starten. Der 5 + 2-Zeitplan wurde von einigen sehr klugen Leuten erfunden. Wenn Sie wirklich an einem Projekt beteiligt sind und so sehr an seinem Erfolg interessiert sind, dass Sie bereit sind, am Wochenende daran zu arbeiten, wird es nicht gut enden. Sie verlieren Ihren Funken und er sollte um jeden Preis gewartet werden, wenn Sie monatelang oder jahrelang arbeiten möchten.
Am Wochenende mache ich normalerweise etwas Einfaches: spazieren gehen, fernsehen, nichts zu extremes. Obwohl ich es wahrscheinlich gerne getan hätte, habe ich einfach niemanden, mit dem ich es machen könnte. Ein paar Mal ist unser Team auf dem Vyazma River Kajak gefahren, es war ziemlich cool. Manchmal gehen wir Paintball spielen. Aber wir gehen nicht regelmäßig, weil es dich ziemlich schnell erschöpft. Sicher, Sie tauschen das gegen Emotionen aus, aber ... Arbeiten Sie fünf Tage lang, verbringen Sie dann zwei Tage damit, etwas körperlich Intensives zu tun, und arbeiten Sie dann wieder fünf Tage lang? Ich würde es wahrscheinlich nicht schaffen.
Außerdem verbringe ich gerne Zeit damit, mein Haus zu restaurieren. Einige Reparaturen sind schnell erledigt, andere dauern ewig. Es ist eine eigene kleine Welt mit eigenen Technologien und Erfahrungen.
9. Erzählen Sie mir von Ihren 3 Lieblingsbüchern: Pädagogik, Populärwissenschaft und Fiktion.
- Ich habe keine positiven Erfahrungen mit Lehrbüchern gemacht - Ich habe wahrscheinlich kein einziges über meinen Job gelesen. Vielleicht habe ich erst am Anfang C ++ an Büchern studiert. Ich erinnere mich, dass ich in ein Outdoor-Camp für Kinder gegangen bin, alle um mich herum hatten normale Bücher und ich hatte C ++. Am Ende las ich nicht zu viel, weil ich keinen Computer dabei hatte. Ich lese es und verstehe es meistens, aber jetzt, um alles auf meine Bedürfnisse anzuwenden? Wie sammle ich Erfahrungen? Ich bin eher eine Praxisperson als eine Theorieperson. Vielleicht kenne ich einige der coolen Begriffe, die meine Kollegen regelmäßig verwenden, nicht, aber zumindest weiß ich, wie man Dinge erledigt. Das habe ich einfach gelernt, indem ich komplexe Probleme gelöst und im Internet nach Lösungen gesucht habe.
Menschen, die sich auf clevere Blogs und Literatur konzentrieren, kann ich nur sagen, dass nichts, was Sie lesen oder sehen, garantiert, dass Sie es selbst replizieren können. Denken Sie immer an Ihre Ziele und ergänzen Sie das Lesen durch Übung.
Wikipedia ersetzt für mich die Populärwissenschaft. Ich habe über alles gelesen. Ich mag Geschichte sehr und kann ab und zu über die gesamte herrschende russische Blutlinie lesen: von Rjurjik bis Iwan dem Schrecklichen, von der ersten Romanow bis zur Oktoberrevolution - und dann auf einen Link über Alexander den Großen springen. Ich kann dort 2-3 Stunden verbringen und merke es kaum. Es gibt einige interessante Artikel über Waffen, Schmiedekunst und so. Leider kann ich es nicht replizieren, aber es ist cool, sich vorzustellen, wie die Leute ursprünglich auf diese Ideen gekommen sind.
Ich lese derzeit nicht so viel fiktive Bücher. Sie wurden fast vollständig durch Filme ersetzt. Sie dienen fast dem gleichen Zweck, aber Filme sind viel kompakter. Aber ich werde ein Buch erwähnen, das mir wirklich aufgefallen ist - "Oblomov". Es berührte meine Nerven auf eine Weise, wie es kein anderes Buch tat.
10. Wenn ein KI-System plötzlich direkt vor Ihnen bewusst würde, was würden Sie dazu sagen?
- Zuerst würde ich fragen: Was bedeutet "bewusst"? Wenn es einfach bedeutet, den Turing-Test zu bestehen, dann ist es noch kein Gewissen. Aber wenn wir nicht auf Einzelheiten eingehen, würde ich wahrscheinlich darum bitten, ein bestimmtes Problem zu lösen. Immerhin bin ich eine Übungsperson. Also, "Wie mache ich Xcode schneller?"
Aber Sie müssen immer noch mit "Hallo, wie geht es Ihnen?" Beginnen. Eine Antwort auf diese Art von Frage kann uns viel über KI erzählen. Wie beurteilt eine Maschine ihre eigene Stimmung? Was macht es?
Frage eines früheren Gastes: Welche Technologie hat am meisten Spaß gemacht?
- Speziell "Spaß"? Ich habe noch nicht gelernt, Spaß am Lernen oder Arbeiten zu haben. Ich habe gelernt, es ruhig zu nehmen und es gut zu machen. Zum Beispiel hatte ich nicht wirklich viel Spaß beim Erlernen des iOS SDK, weil es ziemlich einfach ist, wenn Sie die Grundlagen kennen.
Wo ich wirklich Spaß hatte, war an der Universität, wo ich an einem Projekt arbeitete, das maschinelles Lernen implementierte. Es war erfrischend zu erkennen, dass es für ML wirklich nichts so Schwieriges gibt. Wenn Sie die Eingabeparameter kennen, können Sie das Ergebnis etwas genau vorhersagen. Vielleicht erklärt das, warum ich nicht so verliebt in KI bin wie alle anderen - ich weiß, dass es nur Algorithmen sind.
Außerdem hatte ich Spaß an der Arbeit mit Compilern mit automatischem Multithreading. Es ist eine ziemlich entwickelte Technologie, es gibt viel zu lernen. Sie sind wirklich schlau und machen viel mehr, als Sie sich vorstellen können. Zum Beispiel unglaublich komplexe Syntaxbaumtransformationen. Oder die Codegenerierung für eine bestimmte Hardware- und CPU-Konfiguration optimieren.
Es ist cool, dass wir dafür ein Open-Source-Framework haben,
LLVM , damit Sie Ihren eigenen Compiler erstellen können. Sie könnten sogar Ihre eigene Sprache machen! Schreiben Sie einen Parcer dafür, der Lexik- und Syntaxanalysen durchführt, und nutzen Sie dann die Leistung eines modernen Compilers, um ihn in Maschinencode umzuwandeln.
Bonus: Fragen Sie einen anderen Entwickler, was Sie möchten
- Würden Sie sich dem ersten bemannten Flug zum Mars anschließen und wissen, dass Sie nicht zurückkehren werden?