"Ich kann Ihnen von den allgemeinen Schmerzen aller iOS-Entwickler erzählen" - 10 Fragen an den Programmierer, Ausgabe 2



Die Pilotversion scheint Ihnen zu gefallen. Und wir sind immer noch zuversichtlich, dass Leute, die sich nicht mit Kameraobjektiven beschäftigen, genauso interessant sind wie IT-Stars. Und vielleicht sogar noch mehr, weil sie über echte Probleme und ihre Lösungen sprechen. Diese Woche haben wir 10 Fragen an die Person gestellt, die bescheiden hinter Yandex.Maps für iOS steht.


Nikolai Likhogrud ( Likhogrud ) aus Moskau. Begonnen mit HTML und Basic in der neunten Klasse. Dann studierte er unabhängig C #, trat in die VMK Moscow State University ein und stieg dann in das Any Void-Team ein. Zusammen mit Any Void wechselte er zu Yandex. In den letzten 2,5 Jahren arbeitete er als Teamleiter für die Yandex.Maps-Entwicklungsgruppe für iOS.

1. Erzählen Sie uns von der Funktion, die Sie implementiert haben und auf die Sie stolz sind.


- Hier ist es notwendig, Teamfunktionen und meine persönlichen zu trennen. Persönlich - das denkwürdigste - ist, dass ich vor anderthalb Jahren die Startzeit der Anwendung zweimal beschleunigt habe. Und er erzählte seinen Kollegen davon. Ich habe einige der Funktionen von iOS entdeckt, die nirgendwo beschrieben wurden. Es gab ein Problem aufgrund der Tatsache, dass Swift viele dynamische Bibliotheken abruft. Für jeden von ihnen müssen Sie die Signatur zu Beginn überprüfen - sie wird langsamer. Er hat nützliche Arbeit geleistet - es hat das Leben der Benutzer wirklich beeinflusst. Ich habe damals sogar bei Mobius gesprochen .

Was die Teamentwicklung betrifft, ist Maps ein riesiges Projekt mit einer Reihe verschiedener Funktionen. Ich habe das wahrscheinlich nie wieder gesehen. Und wenn Sie sich hinsetzen, um zu verstehen, dann kann ich Dinge zeigen, von denen viele nicht einmal wissen - es gibt viele Dinge! In fast jeder neuen Veröffentlichung machen wir einige coole neue Dinge und ich bin stolz auf alles. Jetzt versuchen wir, in die "Karten" nicht historisch etablierte Such- und Routing-Szenarien einzupumpen, sondern solche, die mehr über den Ort sprechen, an dem Sie sich befinden. Wir nennen das einen Stadtführer. Im Allgemeinen keine Referenzinformationen mehr, sondern kognitive, unterhaltsame. Und eine sehr coole Funktion - Augmented Reality in den Karten. Wir haben es schnell geschafft: Alles hat sich sofort herausgestellt, alles hat abgenommen. Wir haben es gleich beim Start von iOS 11 geschafft, vor anderen Teams. Es war mir ein Vergnügen.

Die Puppe schwimmt auf der Newa, nichts Ungewöhnliches

2. Und jetzt - über den heftigsten Fakap.


Fakap war. Das war am Anfang, als ich gerade zu Maps wechselte: Das Projekt ist unbekannt, das vorherige Team war völlig verstreut, es gab niemanden, der mich überprüfte. Und in einer Version zadosil ich Geocoder-Server, weil ich vergessen habe, einen Scheck hinzuzufügen. Nach einigen Manipulationen in der Anwendung wurde für jede Aktualisierung der Position des Benutzers eine Anforderung an den Server gesendet, die Daten darüber zurückgab, wo sich der Benutzer befindet. Und solche Änderungen der Geolokalisierung können 10 Mal pro Sekunde sein. Und wenn man bedenkt, wie viele Benutzer wir haben, selbst wenn jedes Hundertstel oder Tausendstel diese Aktionen ausführt, hat der Server stark belastet.

Es war ein solcher Moment, der sich außerhalb des Rahmens meines Teams bemerkbar machte. Die Leute kamen und sagten: Nun, was machst du? Übrigens löste es sich normal auf - sie hoben den Server an, um mit der Last fertig zu werden. Der Fehler wurde schnell gefunden, schnell behoben und dann wurde das Update veröffentlicht. Die echte Überprüfung im AppStore dauerte ungefähr eine Woche. Jetzt ist es damit einfacher geworden. Ich war damals mehr beleidigt: Wie konnte es sein, habe gerade angefangen zu arbeiten! Aber jeder verstand alles: dass das Projekt groß war, ich allein dort war und es niemanden gab, der mir sagte ...

3. Beschreiben Sie Ihren Arbeitsbereich: vom Stuhl über den Monitor bis hin zu Programmierumgebungen und Ihren bevorzugten Dienstprogrammen.


"Sie gaben mir einen Stuhl und auch einen Tisch." Darauf befindet sich ein Thunderbolt-Monitor und ein Laptop. Und auch kabellose Tastatur und Maus, so dass Sie nur mit dem Monitor arbeiten können.



Der Tisch ist mit Papierstücken übersät, auf denen alle meine Gedanken und Pläne geschrieben sind. Für alle Arten von Trello und Dapulse bin ich nicht gegangen. Als ich anfing, war das alles noch nicht da und im Allgemeinen ist das Papier irgendwie vertrauter. Natürlich mache ich mir immer noch Notizen auf dem Laptop, aber es ist schöner, es so zu schreiben und dann zu streichen. Es gibt normalerweise viele Dinge auf dem Tisch, die sich im Laufe der Zeit von irgendwoher ansammeln, aber kürzlich habe ich sie entfernt. Lego steht immer noch herum - Komfort. Im Allgemeinen finde ich meinen Platz gemütlich. Und wenn ich mir die Tische der Kollegen ansehe, an denen überhaupt nichts liegt - ein Monitor und ein Laptop -, scheint mir das nicht möglich zu sein.

4. Nach welchem ​​Prinzip wählen Sie einen Job? Stapel, Produkt, Lebensbedingungen, Geld?


- Ich würde wahrscheinlich die Frage beantworten " wenn ich wählen würde ...". Tatsächlich habe ich nie den Job gewechselt. Ich bin bereits zu Yandex herangewachsen - ich arbeite seit mehr als fünf Jahren. Jetzt habe ich eine gute Position, ein gutes Team, Verantwortlichkeiten und viele Pläne.

Wenn ich mich entscheiden würde, würde ich es wahrscheinlich auf Befehl tun. Das heißt, im Voraus die Leute zu kennen, mit denen ich arbeiten werde. Und wenn Sie sie kennen, wissen Sie in der Regel, welches Produkt Sie entwickeln werden. Wenn sich eine Person nicht mit Müll beschäftigt, können Sie sicher sein, dass ihre Projekte gut sind. Es ist wichtig, in der Gemeinschaft zu sein: dass Sie bekannt sind und Sie - andere. Damit es so etwas nicht gibt, dass man irgendwo auf Null geht, ins Unbekannte. Schließlich hängen auch die Aufgaben von Menschen ab. Wenn ein neuer Mitarbeiter nicht erfolgreich gesendet wird, kann er schnell uninteressant werden.

Ein weiteres wichtiges Geldproblem. Aber hier scheint alles plus oder minus zu sein. Ich führe viele Interviews und weiß, wie viel sie in anderen Unternehmen bieten.

5. Welche Technologien und Sprachen, die Sie verwenden, möchten Sie korrigieren?


- Ich kann Ihnen von den allgemeinen Schmerzen aller iOS-Entwickler erzählen. In Swift ist der Compiler nicht optimiert, die Entwicklungsumgebung ist nicht finalisiert. Bei unserem Projekt mit 400.000 Codezeilen wird alles nur langsamer. Die Indizierung wird langsamer, das Öffnen von Dateien verlangsamt sich, das Öffnen von Projekten verlangsamt sich. Das Kompilieren dauert lange und ist sehr ressourcenintensiv.

Auch unsere Arbeit hängt davon ab, was Xcode lange kompiliert. Es funktioniert gut mit Objective-C, aber schlecht mit Swift. Wenn er dies normal tun würde, müsste er die Anwendung nicht in Module aufteilen - wir mussten in sie investieren. Jetzt entwickeln wir mehr in Testprojekten als in der Hauptanwendung. Dann werfen wir von den Testprojekten in das Hauptprojekt. Obwohl dies letztendlich dem gesamten Projekt zugute kam, war das Erlernen der Arbeitsweise mit einigen Kosten verbunden.

6. Wo ist es besser, aus den Erfahrungen anderer zu lernen - an einer Universität, auf Konferenzen, an einem Hub? Woanders?


- Am effektivsten ist es, wenn Sie ein bestimmtes Problem haben und nach einer Lösung suchen. „Aus Erfahrung lernen“ - ich verstehe nicht wirklich, was das bedeutet. Aber „wo man nach einer Lösung für das Problem sucht“ ist verständlich. Wo es gefunden wird. Sie stopfen es einfach in Google und sehen, was es Ihnen sagt.

Und bei Konferenzen stellt sich irgendwie heraus, dass ich nicht einmal die Erfahrungen anderer übernehme, sondern dorthin gehe, sondern meine eigenen teile. Es gibt bereits einige Erfahrungen in der Verwaltung eines großen Projekts, das viele interessiert. Wir können sagen, dass es nur wenige Anwendungen wie unsere gibt, weshalb die Erfahrung auf ihre Weise einzigartig ist. Sie fragen mich: Wie sind sie in Module eingebrochen, wie ist die Codeüberprüfung organisiert, wie funktioniert CI dort für Sie?

7. Wenn Sie unbegrenzte Ressourcen (Zeit, Geld, Macht, Menschen) hätten, welches Projekt würden Sie aufnehmen?


- Ich habe eine große kleine Liste "Ich wollte schon lange, aber ich habe keine Zeit" - was ich in Maps tun möchte. Es gibt Stücke, die ich verbessern möchte.

Im Allgemeinen wäre es interessant, die Raumfahrtindustrie zu kontaktieren. Die Idee eines Menschen außerhalb der Erde, das Wissen über das Universum - es interessiert mich sehr. Ich freue mich, wenn einige Erfolge in dieser Richtung eintreten. Wahrscheinlich gibt es dort unter iOS nichts zu schreiben, aber irgendwo könnte ich mit meinen Team-Management-Fähigkeiten nützlich sein. Ja, zumindest würde ich Kaffee kochen, wenn ich eine Idee hätte.

8. Wie entspannst du dich? Was machst du neben der Arbeit?


- Sie müssen neu starten - hundertprozentig. Dieser 5/2-Modus wurde von wirklich intelligenten Onkeln erfunden. Wenn Sie an einem Projekt beteiligt sind, brennen, krank für ihn sind und wenn Sie am Wochenende daran arbeiten, wird es schlecht. Infolgedessen verlieren Sie die Sicherung, müssen sie jedoch im Gegenteil stabil warten, um monatelang und jahrelang arbeiten zu können.

Am Wochenende mache ich etwas Einfaches: spazieren gehen, fernsehen, nichts Extremes. Obwohl ich es vielleicht gerne möchte, gibt es einfach keine geeignete Firma. Ein paar Mal sind die Jungs und ich mit Klyazma zum Kajak gefahren, es war großartig. Manchmal gibt es Paintball. Dies alles ist jedoch nicht regelmäßig, da es sich um eine aktive Energieverschwendung handelt. Natürlich bekommst du dafür eine Art von Emotionen ... Aber fünf Tage zur Arbeit und dann noch zwei Tage zum Schwimmen und Laufen und dann wieder fünf Tage zur Arbeit? Und dein Körper tut schon weh! Ich glaube ich konnte nicht.

Ich verbringe auch Zeit mit Reparaturen. Klein und endlos. Dies ist eine separate Welt mit eigenen Technologien und einer einzigartigen Erfahrung. Es ist dort sehr interessant.

9. Erzählen Sie von 3 Lieblingsbüchern - Pädagogik, Populärwissenschaft und Belletristik.


- Ich habe nicht mit den Schulungsbüchern gearbeitet. Bei der Arbeit kann ich sagen, dass ich kein einziges Buch gelesen habe. Am Anfang waren dies vielleicht Bücher über C ++. Ich erinnere mich, dass ich in ein Kinderlager gereist bin: Die Leute waren normal und ich hatte C ++. Infolgedessen habe ich nichts wirklich gelesen, weil kein Computer zur Hand war. Ich lese - es scheint verständlich, aber wie kann ich das auf meine Aufgaben anwenden? Wie sammle ich Erfahrungen? Ich bin eher ein Praktizierender, kein Theoretiker. Vielleicht kenne ich keine interessanten Begriffe, die andere Leute verwenden, aber gleichzeitig kann ich meinen Job machen. Ich habe das gelernt, indem ich schwierige Aufgaben gelöst habe. Ich habe immer einfach im Internet nach Erfahrungen und Lösungen gesucht.

Ich würde den Leuten, die sich sehr auf das Lesen von Literatur und Blogs konzentrieren, sagen, dass das, was Sie gelesen und gesehen haben, keine Garantie dafür ist, dass Sie es selbst reproduzieren können. Man darf sich nicht von seinen eigenen Aufgaben lösen, damit das Lesen immer von Übung begleitet wird.

Aus der wissenschaftlichen Gemeinschaft habe ich Wikipedia gelesen, wo Sie über alles lesen können. Ich liebe die Geschichte wirklich und kann dort von Rurik bis Iwan dem Schrecklichen lesen, vom ersten Romanow bis zu den Palastputschen. Und dann versehentlich auf den Link zu Alexander dem Großen springen. Ich kann 2-3 Stunden bleiben. Es gibt interessante Artikel über Waffen, über Metallverarbeitungstechnologien. Schade, ich kann das nicht reproduzieren, aber zu verstehen, wie die Leute vorher darüber nachgedacht haben - vom Rohmilchofen bis zum Bessemer-Prozess - ist cool.

Eine Fiktion in meinem Leben ist nicht genug. Solche Bücher haben wahrscheinlich Filme verdrängt. Weil ihre Mission in der Tat ähnlich ist, aber die Filme kompakter sind. Obwohl ich ein Buch erwähne, ist es "Oblomov" von Goncharov. Ich war sehr traurig, als ich es lange gelesen habe. Es scheint sogar zu weinen. Jetzt wäre es interessant, es noch einmal zu lesen. Jetzt würde ich wahrscheinlich denken, dass er es brauchte, Oblomov.

10. Wenn AI direkt vor Ihren Augen aufwacht, was werden Sie ihm sagen?


- Die Frage ist, was bedeutet "Bewusstsein"? Wenn es einfach gemacht wird, um den Turing-Test zu bestehen, ist es noch kein Bewusstsein. Aber wenn man nicht auf solche Details eingeht, würde ich nach der Lösung spezifischer Probleme fragen. Ich bin immer noch eine Person der Praxis. "Wie kann man Xcode schneller machen?" :).

Aber du musst definitiv mit "Hallo, wie geht es dir?" Beginnen. "Wie geht es dir?", "Was machst du?" - Die Antworten auf diese Fragen können einige Reflexionsnotizen enthalten. Wie bewertet die Maschine ihre Angelegenheiten und ihre Stimmung wirklich? Und was macht sie jetzt?

Frage des vorherigen Helden: Welche Technologie hat Ihnen beim Lernen am besten gefallen?


- Ist es ein Vergnügen? Ich habe noch nicht gelernt, wie man Spaß an Arbeit und Studium hat. Ich habe gelernt, sie ruhig zu behandeln und gute Leistungen zu erbringen. Das iOS SDK zum Beispiel hat mich nicht sonderlich interessiert, weil es im Allgemeinen einfach ist.

Es war an der Universität interessant, als ich in einem Projekt maschinelles Lernen einsetzte. Es war interessant zu verstehen, dass ML im Wesentlichen nichts Kompliziertes enthält. Wenn Sie die Eingabeparameter kennen, können Sie das Ergebnis mehr oder weniger vorhersagen. Wahrscheinlich erlebe ich teilweise aus diesem Grund nicht die Euphorie der KI, die viele erleben. Ich weiß, dass dies alles nur Algorithmen sind.

Und es war einmal interessant, Compiler mit automatischer Parallelisierung zu verstehen. Dies ist eine sehr entwickelte Technologie, es gibt viele verschiedene Dinge in Compilern. Sie sind tatsächlich schlau und leisten viel mehr, als Sie sich vorstellen können. Zum Beispiel die komplexesten Konvertierungen über den Syntaxbaum. Oder die komplizierteste Optimierung der Codegenerierung, wenn der Compiler für eine bestimmte Hardware und einen bestimmten Prozessor arbeitet.

Es ist großartig, dass es jetzt ein Open-Source- LLVM- Framework gibt, mit dem Sie Ihren eigenen Compiler erstellen können. Sie können sich Ihre eigene Sprache einfallen lassen! Schreiben Sie einen Parser dafür, der sich mit Lexik und Analyse befasst, und nutzen Sie dann die Leistung eines modernen Compilers, um Maschinencode abzurufen.

Bonus: Stellen Sie eine Frage an einen anderen Entwickler.


- Wenn Sie wissen, dass Sie nicht zurückkehren können, würden Sie bei der ersten Expedition zum Mars fliegen?

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


All Articles