Vom Android-Entwickler zum DevOps

    Wir setzen eine Reihe von Artikeln über diejenigen fort, die Projekte mit ihren eigenen Händen machen. Mit  Stepan Goncharov sprachen wir darüber, wie wir die Richtung der beruflichen Tätigkeit organisch ändern und gleichzeitig unsere Fähigkeiten von Android-Entwicklern zu DevOps ändern können. Sie erkundigten sich nach dem Veröffentlichungszyklus und den Prozessen bei Grab  , einem Unternehmen, in dem 40 Mitarbeiter ausschließlich für Android entwickeln. Sie sprachen darüber, wo man Ideen für Spiele bekommt, fragten Stepan Archetype und kOptional nach OpenSource-Projekten .



    Über den Gast : Stepan Goncharov ( stepango) entwickelt seit 2008 Anwendungen und Spiele für Android, seit jeher, als das Android SDK nicht mehr herauskam. Während seiner Karriere war er als QS, Manager, Vermarkter, Blogger, Analyst, Berater und viele andere tätig. Er war an der Entwicklung von unbekannten Anwendungen und Anwendungen mit Millionen von Benutzern auf der ganzen Welt beteiligt. Derzeit arbeitet er bei Grab, nutzt Kotlin und Rx ausgiebig und widmet OSS mehr Zeit.

    Hier ist die Textdecodierung des Run-Loop- Podcasts . Moderatoren: Ilya Tsarev, Alexey Milyaev und Roman Busygin.

    Ilya: Sagen Sie mir, woran Grab direkt beteiligt ist und welche Rolle Sie spielen. Schreiben Sie nur Code oder etwas anderes?

    Stepan:Anfänglich ist Grab ein Versteckservice. Sie können ein Taxi bestellen, sie werden zu Ihnen kommen, Sie abholen und Sie nehmen. In letzter Zeit erhält das Unternehmen zunehmend Zugang zu zusätzlichen Dienstleistungen wie der Lieferung von Lebensmitteln und seinem Zahlungssystem. Als ich zu Grab kam, leitete ich das Entwicklungsteam für Treiberanwendungen. Dann wechselte er zur Passagieranwendung. Eines meiner letzten Projekte war die vollständige Neugestaltung der Passagieranwendung . Jetzt mache ich mehr DevOps - CI-Tuning, optimiere die Build-Zeit und das alles.

    Devops


    Alexei: Stepan, und wenn es kein Geheimnis ist, warum hast du dich entschieden, zu DevOps und CI zu wechseln? Ich höre diese Geschichte oft, wenn Entwickler von Mobilgeräten auf die Plattform kommen, begeistert sind, in unglaubliche Höhen getrieben werden und sich dann entscheiden, plötzlich einige unproduktive Aufgaben zu erledigen.

    Stepan: In der Tat hat sich, würde ich sagen, alles als organisch herausgestellt. Während der Neugestaltung der Anwendung hatten wir eine Notfallmigration zu GitLab, da CircleCI-Instanzen unser Projekt nicht mehr erstellen konnten. Es stellte sich als zu groß heraus und verbrauchte viel Speicher, aber es gab keine geeigneten CI-Instanzen. Irgendwie blieb ich einige Wochen lang beim Versuch stecken, unsere Prozesse und im Allgemeinen alles, was mit CI zu GitLab zusammenhängt, zu migrieren. Nachdem das Projekt beendet war, bildeten wir ein neues Plattformteam. Während ich 3 Wochen im Urlaub war, wurden alle anderen Aufgaben erledigt. Als ich zurückkam, sagten sie mir: " Das war's, Sie optimieren die Build-Geschwindigkeit und den CI."

    Unterschiedliche Rollen und Aktivitäten


    Ilya: Wir haben auch Vögel - nicht die, die Mikrofone geloopt haben, aber immer noch am Schwanz haben sie Sie darüber informiert, dass Sie die Qualitätssicherung besucht haben, und den Manager, das  Marketing, den Blogger und den Analysten - im Allgemeinen habe ich viele verschiedene Aktivitäten durchlaufen . Bitte teilen Sie uns im Detail mit, wie Sie in all diese Rollen eingetreten sind, wie lange Sie in diesen Rollen waren, was Ihnen in den einzelnen Rollen vielleicht nicht gefallen hat. Vielleicht würdest du jetzt gerne wieder zu Bloggern gehen?

    Stepan: Im Prinzip hat sich in jeder dieser Rollen herausgestellt, dass es irgendwie organisch ist, reibungslos von einem zum anderen zu fließen. Alles begann damit, dass ich mich vor der Veröffentlichung des ersten Geräts auf Android für die Android-Entwicklung interessierte. Die Idee selbst - das Java-Betriebssystem - hat mich interessiert - ist irgendwie ungewöhnlich. Als Ergebnis habe ich während des Studiums an der Universität nach und nach alles auf Android reduziert, anstatt Laborarbeiten in C oder andere langweilige Probleme an der Universität zu erledigen. Der Lehrer war nicht dagegen, er war auch daran interessiert, etwas Neues zu lernen, und ich schrieb Android-Anwendungen.

    Als ich meinen Abschluss machte, hatte ich bereits einige Erfahrungen. Ich habe meine erste Anwendung geschrieben, sie auf den Markt gebracht und damit meine Leidenschaft für das Marketing entfacht . Ich hatte meine eigene Bewerbung und musste sie irgendwie bewerben. Ich fing an, ein bisschen rumzuspielen und Blogs zu schreiben.

    Im Jahr 2010 fand ich die Arbeit eines Android-Entwicklers, dann war es fast unmöglich - es gab keinen Markt, niemand wusste etwas über Android. Ich stieg in ein Outsourcing-Unternehmen ein und musste ein Team mit nur sechs Monaten Erfahrung und zwei veröffentlichten Bewerbungen einstellen .

    Also ging ich vom Marketing und Bloggen zurück zur Entwicklung. Dann absolvierte er die Magistratur, zog nach St. Petersburg - auch um auszulagern. Dort begann ich, mich mit automatisierten Tests zu beschäftigen, und es stellte sich heraus, dass ich die Richtung von Robotium im Unternehmen weiterentwickelte und QS beibrachte, wie man automatisierte Tests schreibt, bis ich  nach Singapur abreisteDort rekrutierte er erneut sein Team bei einem der Startups in Singapur. Danach begann er sich in der Android-Entwicklung weiterzuentwickeln. Jetzt bin ich zu Grab gekommen - zuerst zu Managern, dann zu DevOps.

    Roman: Stepan, bitte sag mir, vermisst du dieses Mal, wenn sich deine Aufgaben dramatisch genug geändert haben? Grob gesagt trinkst du jeden Tag DevOps - und das war's?

    Stepan: Eigentlich noch nicht. Ich habe kürzlich ein großes Projekt abgeschlossen, und im Prinzip gibt es noch genügend Aufgaben. Sie mögen natürlich gleich aussehen - das heißt, das Ziel ist eines, aber ich mache viele, viele verschiedene Dinge , einschließlich zum Beispiel Memory-Profiling und der Arbeit mit CI. Jetzt beschäftige ich mich mit Amazon Analytics für S3. Das ist alles neu für mich. Ich glaube nicht, dass ich mich noch lange mit CI und der Optimierung der Montagezeit beschäftigen werde. Wahrscheinlich werde ich zum Beispiel im nächsten Quartal zu etwas anderem wechseln.

    Roman: Zum Beispiel habe ich für ungefähr 2 bis 2,5 Jahre einen Übergangszyklus von einer Richtung in eine andere . Ich begann mit dem Testen, wechselte dann zum Laden und wurde dann Entwickler. Wie oft wechseln Sie Interessen und Arbeitsbereiche?

    Stepan: Irgendwo in der Region von 1,5-2 Jahren. Aber vor kurzem stellte sich heraus, für sechs Monate.

    Die Spiele


    Alexei: Was würdest du am liebsten machen? Idealerweise möchten Sie vielleicht die Entwicklung verlassen und nichts mit Ihren Händen berühren? Oder möchten Sie sich im Gegenteil mit ein paar tiefen einheimischen Dingen beschäftigen? Was möchten Sie konkret am meisten?

    Stepan: Das ist eine gute Frage! Ich habe mich eigentlich nicht entschieden. Ich bin immer noch an einigen Dingen interessiert . Eines der interessantesten für mich, an das ich nicht gelangen konnte, ist die Entwicklung von Spielen. Während meines Studiums an der Universität habe ich gerne alle Arten von Spielen geschrieben. Ich hatte Projekte auf Flash. Meine zweite Android-Anwendung war ebenfalls ein Spiel. Ich habe sogar einen Monat in einer Spielefirma gearbeitet, aber irgendwie hat es bei mir nicht funktioniert.

    Grundsätzlich möchte ich das Spieldesign ausprobierenaber es ist schwierig für jetzt Je länger ich Zeit mit Android verbringe und mich entwickle, desto schwieriger wird dieser Übergang, wenn überhaupt.

    Ilya: Styopa, wenn wir das Thema Spiele angesprochen haben, dann ist die Frage - worum ging es in Ihrem ersten Spiel?

    Stepan: Es war 2010, also war es ziemlich einfach. Es war ein logisches Rätsel mit Lasern und Spiegeln, die gedreht werden mussten, damit die Laser das Ziel trafen. Leider wurde dieses Spiel dann auf dem Konto meines Arbeitgebers gehostet. Dieser Account wurde lange gelöscht und das Spiel ist nicht da. Aber ich mochte sie wirklich. Es wurde komplett auf Android View geschrieben, was ich natürlich bedaure, aber die Erfahrung war ausgezeichnet.

    Ilya: Nehmen Sie sich jetzt die Zeit, um Spiele zu entwickeln?

    Stepan:Nein. Für Spiele ist jetzt absolut keine Zeit. Neben der Tatsache, dass ich in der Firma arbeite, organisiere ich auch Kotlin-Treffen in Singapur und spreche auf Konferenzen. Das heißt, die Freizeit ist voll. Vielleicht werde ich eines Tages darauf zurückkommen. Kürzlich habe ich Google VR gekauft, um Unity zu testen, wenn Zeit ist, aber bisher war dies nicht möglich.

    Roman: Und sag mir bitte, woher hast du Ideen für Spiele? Wie sind Sie darauf gekommen?

    Stepan: Ideen für Spiele kommen normalerweise von technischen Neuerungen. Normalerweise habe ich einige technologische Demos gesehen, oder in den Jahren 2008-2010 gab es eine Mode für physische Motoren. Sie sehen eine coole Technologie oder einen neuen modischen Shader, und die  Ideen selbst basieren auf dem, was Sie sehen.

    Roman:Steht Ihr Hobby im Zusammenhang mit Spielen mit der Tatsache, dass Sie selbst ein Spieler sind - Sie haben in der PlayStation, im Switch oder auf dem PC gearbeitet -, gibt es einen Zusammenhang?

    Stepan: Ja, das glaube ich. Als Kind hatte ich Sega, dann PC, ich verbrachte viel Zeit mit Spielen. Jetzt habe ich sowohl PlayStation als auch Switch, aber jetzt verbringe ich viel weniger Zeit mit Spielen . Ich habe nicht einmal genug Zeit, um sie zu spielen.

    Roman: Und an welche Spiele erinnern Sie sich am meisten? Oder welches Genre von Spielen magst du am liebsten? Zum Beispiel bevorzuge ich Schützen oder eine Art Survivor-Horror.

    Stepan: Ich habe irgendwie nicht mit Schützen geklappt. Ich habe als Kind Counter-Strike gespielt, aber das war nicht der Fall. Eines meiner Lieblingsspiele ist Space Rangers-2, und der erste Teil ist natürlich auch episch. Von denkwürdig war es dann Freelancer .

    Alexey: Freiberufler ist ein Spiel? Das ist ein Lebensstil!

    Stepan: Eigentlich ist dies ein Weltraumsimulator, der in etwa den Space Rangers sehr nahe kommt, aber aus Sicht von Dritten. The Witcher, Arcanum und Fallout sind so.

    Ilya: Mir scheint, die Entwicklung von Spielen ist der Traum der meisten Programmierer . Wie es mir immer vorkam, gehen die Leute normalerweise nur zur Entwicklung, um Spiele zu machen. Das ist super cool! Mein erstes iOS-Projekt - es war übrigens auch ein Spiel. Was denkst du darüber?

    Alexei: Ich habe gehört, dass viele Leute den Weg zum Programmieren wirklich mit der Tatsache beginnen, dass sie eine Art Spiel machen wollen, gerne Spiele spielen, sie wollen verstehen, wie es geht. Aus irgendeinem Grund hatte ich das nicht. Ich war mehr daran interessiert, wie Programme funktionieren. - Was passiert, wenn Sie in Windows auf Windows klicken? Aber irgendwann wurde mir klar, dass ich keine Ahnung hatte, wie man Spiele macht. Ich verstehe, wie es möglich ist, diese oder jene Anwendung auf einem Mobiltelefon, dieses oder jenes Programm auf einem PC zu schreiben - ich habe mir nicht vorgestellt, wie man Spiele macht. Einmal war ich so auf das entgegengebrachte  Kanal auf YouTube. Dort schrieb ein Typ aus Java und Canvas sein Spielzeug von Grund auf neu - ein Klon eines RPG-Spiels mit einer Mischung aus Diablo und Final Fantasy. Das ist wirklich sehr interessant. Ich würde jedem raten, einfach zu versuchen, in Ihrer Freizeit damit zu spielenverstehen, wie es allgemein geschrieben ist, wie es funktioniert. Es war eine sehr coole Erfahrung. Dann bin ich irgendwie in die gleichen Lektionen gegangen, in denen der Typ ein einfaches Spiel über Unity gesehen hat. Es ist sehr interessant, Ansätze zu vergleichen, wenn Sie mit dem Schreiben Ihrer Engine beginnen und wenn Sie bereits etwas wie Unity bereit haben und Sie es irgendwie anpassen, um es zu Ihrem eigenen zu machen. Ich würde es wärmstens empfehlen, so etwas zu probieren, da es jedoch sehr interessant ist.

    Roman: Ich habe eine ähnliche Erfahrung. Ich spiele gerne, aber ich bin kein begeisterter Spieler, aber gleichzeitig war ich in erster Linie daran interessiert zu verstehen, wie Programme gemacht werden. Dann komme ich zu dem Schluss, dass ich mit meinen eigenen Händen versuchen möchte, was ich mag, was ich mag. Aber in Bezug auf Spiele beginnt alles mit einer Idee. Ich warte auf eine Idee, die in jeder Freizeit umgesetzt werden kann, oder um meine Zeit freizumachen und dieses Spiel zu machen.

    Stepan: In Bezug auf Ideen war eine der letzten, die mir in den Sinn kamen, die  automatische Generierung von Karten . Nun kann man sagen, dass dies ein Trend ist, und einige Spiele nutzen die Erzeugung riesiger Welten, so dass sie den realen Welten sehr ähnlich sind.

    Es gibt eine ganze Klasse von Algorithmen, mit denen Sie Terrain generieren können. Die Landschaft kann so gebaut werden, dass es Berge und Meere gibt. Wenn einer Person die Draufsicht auf Google Maps und die generierte Landschaft angezeigt wird, können sie im Prinzip nur wenige unterscheiden. Dies ist sehr interessant, da Sie Inhalte für das Spiel selbst erstellen können, ohne über große Ressourcen zu verfügen, da dies einer der schwierigsten Teile ist. Zumindest denke ich das.

    Arbeitstag


    Alexei: Stepan, wie ist dein Arbeitstag normalerweise? Du bist aufgewacht, ins Büro gekommen oder nicht gekommen - was machst du, wie geht es dir?

    Roman: Ich frage mich immer noch, was passiert, bevor Sie ins Büro kommen. Vielleicht haben Sie ein paar Lieblingskaffeehäuser oder Ihre Lieblingstraditionen: Gehen Sie zum Beispiel gerne im öffentlichen Garten vor dem Büro spazieren? Was fängt dein Tag wirklich an?

    Stepan: Vor kurzem begann mein Tag mit 50 Liegestützen.

    Alexey: Respekt!

    Stepan: Irgendwann wurde mir klar, dass ich mehr Zeit für körperliche Aktivitäten aufwenden muss , und jetzt versuche ich, mich dazu zu zwingen, dies in meiner Freizeit zu tun. Im Prinzip nichts Besonderes.

    Da das Hauptgeschäft der Firma darin besteht, sich zu verstecken, dh ein Taxi zu bestellen, bezahlt die Firma für mich ein Taxi. Deshalb ist das erste, was ich morgens nach dem Frühstück mache, ein Taxi zu bestellen und zur Arbeit zu gehen.

    Ich arbeite in einem anständigen Büro mit tollem Blick auf die Bucht. Wie wahrscheinlich die meisten von uns ist das Erste natürlich eine Tasse Kaffee . Meistens gehen wir einfach mit Kollegen in den Keller desselben Gebäudes, gehen in eines der Kaffeehäuser, trinken Kaffee und  besprechen Neuigkeiten und Pläne. Es ist besonders interessant, wenn in dieser Nacht, dem Tag in den USA, etwas passiert: Es wurde etwas Neues veröffentlicht, einige interessante Neuigkeiten, ein neuer Rahmen. Wir diskutieren das alles und danach können wir anfangen zu arbeiten.

    Dann ist alles ungefähr so ​​wie bei allen anderen: Du gehst in Jira , siehst dir  Tickets an. In den letzten Wochen war ich auf Abruf. Dies ist solch ein Entwickler, auf den alle Produktionsprobleme fallen und den man irgendwie lösen oder delegieren oder sagen muss - das ist kein Problem und vergiss es.

    Da das Team sehr groß ist ( mehr als 40 Personen  arbeiten bereits an der Passagieranwendung - dies sind verschiedene Teams, die für verschiedene Bereiche verantwortlich sind), ist es manchmal schwierig, die richtige Person zu finden, die dieses Problem lösen muss. Wir haben so eine Rotation -Jede Woche wirft einer der Entwickler Produktionsprobleme auf . Insbesondere bereite ich diese Woche eine Veröffentlichung vor. Dies ist eine Fehlerbehebung beim Testen und erneut das Finden der richtigen Leute, um dies am schnellsten zu lösen.

    Roman: 40 Leute sind nur Android, oder ist es das ganze Team, das die mobile Anwendung macht?

    Stepan: Dies ist nur Android.

    Roman: Wow! Als ich  hörte, wie viele mobile Entwickler in Uber sind, fühlte ich mich unwohl. Ihr Team bestätigt diesen Trend. Sie haben erwähnt, dass Sie in groben Zügen Fehlerberichte erstellt haben. Sag mir, wie läuft dein Release-Zyklus?

    Zyklus der Anwendungsfreigabe


    Stepan: Im Prinzip denke ich, dass dies ein mehr oder weniger gewöhnlicher Prozess ist, den große Anwendungen zu befolgen versuchen. Wir haben einen festen Release-Zug . Dies ist derzeit die Woche. Das heißt, wir haben jede Woche am Dienstag eine Veröffentlichung. Ein Release Engineer wird für diese Woche ausgewählt. Zu Beginn der Woche sollten alle Funktionen, die in das Release fallen, verfügbar sein.

    Wenn eine Funktion nicht bereit ist, wirft sie sie weg und schließt sie mit einer Fahne. Tun Sie alles, um zu verhindern, dass sie sich zurückbildet. Sobald dieser Build, in dem alle Funktionen bereitstehen, der Qualitätssicherung übergeben wurde, beginnt der Release-Engineering-Prozess. Das heißt, alle offenen Fehler müssen so schnell wie möglich behoben werdenerhalten sie die höchste Priorität. Selbst wenn der Entwickler an der nächsten Funktion arbeitet, die in der nächsten Version veröffentlicht wird, es jedoch einen Fehler oder ein Problem gibt, das er am besten kennt und für dessen Lösung er am wenigsten Zeit hat, wird es ihm gegeben.

    Das passiert bei uns bis Freitag. Am Freitag versuchen wir, die Regression zu beenden , alle Regressionsfehler zu beseitigen und das Wochenende mit ruhiger Seele zu verbringen. Wenn etwas plötzlich passiert ist, können Sie es am Montag schnell beheben und bereits am Montagabend oder Dienstagmorgen veröffentlichen und in Ruhe einführen - zuerst 10%, dann mehr, mehr, mehr. Seit einer Woche versuchen wir, fast hundert zu erreichen und die nächste Version herauszubringen.

    Tests und Updates


    Roman: Schnell komponieren und auslegen - aber was ist mit dem Testprozess? Spezielle Personentester, die prüfen, wann sie es tun?

    Stepan: Es gibt viele Tester, sie sind pünktlich. Ich weiß nicht, wie viele davon mit Sicherheit sind. Der Grund ist, dass die meisten Teams nicht in Singapur sind. Ich erinnere mich nicht, wie viele Büros wir haben, aber mindestens 5 weitere Büros haben Entwicklungsteams zusammen mit der Qualitätssicherung. Während der Entwicklung von Features debuggen diese Teams zusammen mit der Qualitätssicherung diese Features selbst und testen sie. Zu Beginn des Veröffentlichungszyklus sollten Features keine offenen Fehler aufweisen . Die Regression erfolgt wie folgt: Eine, möglicherweise zwei QS aller Teams fallen auf, und sie führen die Regression gemäß ihren Merkmalen durch. Gerade in dieser Woche, während der Suche nach Fehlern, werden Regressionen behoben.

    Ilya:Es stellt sich heraus, dass Sie einen wöchentlichen Aktualisierungszyklus haben und die Benutzer in einer solchen Zeit Zeit zum Aktualisieren haben. Zum Beispiel waren wir mit einer Situation konfrontiert, in der iOS-Benutzer Zeit zum Aktualisieren haben und Android - nicht wirklich. Unsere Versionen unterschieden sich direkt für mehrere Wochen.

    Alexei: Ja, es scheint mir auch, dass sich die Woche irgendwie schnell anfühlt.

    Stepan: Ja, das ist es. Eine Woche ist ziemlich schnell, aber  wir haben nicht das Ziel, dass alle Benutzer aktualisieren . Wir haben von einem zweiwöchigen Release-Zyklus auf einen wöchentlichen gewechselt, um die Belastung der Qualitätssicherung während der Regression zu verringern, da sich über einen Zeitraum von zwei Wochen eine große Menge an Funktionen angesammelt hat. 40 Menschen können Geschäfte machen!Dann, am Ende der zweiten Woche, bekamen wir ziemlich schwerwiegende Fehler, die durch das Auferlegen dieser Features verursacht wurden, und es war ziemlich schwierig, sie zu lösen. Es stellte sich heraus, dass wir wöchentlich eine Panne hatten und diese Testlast gleichmäßiger verteilten.

    Ilya: Wie viel Prozent Ihrer Benutzer verwenden die neueste Version?

    Stepan: Es kommt darauf an, über welchen Zeitraum wir sprechen.

    Ilya: Im Moment.

    Stepan:Sie können die neueste Version nur verwenden, wenn Sie eine Woche lang in diesen Nachladeplan eingetreten sind. Das heißt, 100% reload wird entweder um Freitag oder am Montag erfolgen, da bereits am Dienstag eine neue Version herauskommt. Es kommt schon auf viel Glück an. Wir haben jedoch nicht das Ziel, dass die Benutzer immer auf der neuesten Version sitzen. Das einzige, woran wir noch denken müssen, ist die minimal unterstützte Version. Wir erzwingen von Zeit zu Zeit eine erzwungene Aktualisierung der Benutzer, wenn mindestens 90% der Benutzer die unterstützte Mindestversion verwenden (ca. 3-4 Monate).

    Organisation der Teamarbeit


    Alexey: Styopa, ich habe so eine Frage. Du sagst, 40 Leute machen Android - oder? Ist es richtig, dass 40 Entwickler etwas unternehmen?

    Stepan: Ja.

    Alexei: Es gibt einen Moment, in dem mit der Zunahme der Mitarbeiterzahl, insbesondere in einem Unternehmensbereich, insbesondere in der Android-Entwicklung, die Kommunikationskosten exponentiell steigen . Alle Geschäftsprozesse sind bestrebt, dieses Phänomen zu lösen. Und wie löst sich das in dir? Wie ist die Organisationsstruktur dieser Maschine mit 40 Entwicklern?

    Stepan: Eigentlich ist unsere Lösung ganz einfach. Diese 40 Entwickler machen nicht dasselbe.und in der Tat müssen sie nicht stark miteinander kommunizieren. Es stellt sich heraus, dass Teams in verschiedenen Ländern unterschiedliche Funktionen ausüben. Grundsätzlich müssen Sie nicht mit anderen Teams kommunizieren. Sie kommunizieren hauptsächlich mit Ihrem Vorgesetzten. Infolgedessen sind die Kommunikationskosten nicht so hoch, da das Team aus 5-6 Personen besteht . Es gibt Teams von 1 bis 2: Es sind beispielsweise nur einige neue Geschäftsbereiche aufgetreten, es gibt einen Entwickler und er hat nur einen technischen Leiter, der für alles verantwortlich ist, einschließlich des Backends, iOS und anderer Dinge.

    Es stellt sich heraus, dass wir nur kleine Teams haben, die in einem Repository und in einer Codebasis arbeiten.

    OpenSource-Projekte Archetype und kOptional


    Roman: Ich schlage vor, mit der nächsten Frage fortzufahren. Ich habe herausgefunden, dass Sie OpenSource-Projekte haben. Ich habe immer Respekt davor, wie Entwickler es schaffen, Zeit auf OpenSource zu finden, ehrlich gegenüber Benutzern usw. Erzählen Sie bitte von Ihren beiden beliebtesten Projekten - Archetype und  kOptional . Was ist das?

    Stepan: Ich fange mit  kOptional an . Aus dem Namen geht hervor, dass dies eine kleine Implementierung von Optional ist . irgendwie musste ich mit null sehr dringend umgehen und ich habe eine sehr kleine bibliothek gefilmt. Tatsächlich gibt es dort nichts Besonderes. Ich wollte mich nicht weiter darum kümmern, nahm eine Implementierung von Java8 und portierte sie.

    Ehrlich gesagt stellte sich heraus, dass es so lala war. Natürlich hat es mich gefreut - es war besser, viel besser als nichts. Aber wenn ich dann etwas besseren Code gewusst hätte, hätte ich es anders gemacht.

    Über Archetype  ist eine ziemlich interessante Geschichte. Vor ungefähr zwei Jahren bin ich einem Startup namens 90 Seconds beigetreten  . Dies ist eine der größten Plattformen für die Online-Videoproduktion der Welt: Sie kommen als Kunde dorthin, beschreiben Ihre Idee und sie machen ein Video für Sie. Zum anderen ist es eine Plattform für Performer: Sie haben eine Videokamera, wissen, wie man schießt - registrieren Sie sich und Sie erhalten Aufträge.

    Ich habe angefangen, die Anwendung von Grund auf neu zu schreiben, und irgendwann brauchten wir einen zweiten Entwickler. Dann traf ich  Denis Neklyudovund stellte ihn ein. Er kam zu uns nach Singapur. Als er sah, was ich getan hatte, sagte er: " Lassen Sie uns einen Bericht daraus machen ." Warum nicht?

    Folglich ist der Bericht gut, aber wir brauchten ein Codebeispiel, damit die Leute gezeigt werden konnten. Natürlich kann der Code 90 Sekunden nirgendwo durchsucht werden, es gibt NDA und all das. Nur ein paar Tage vor der Konferenz haben wir diese Projektion erstellt, und seitdem spielt sie die Rolle einer Testaufgabe, um ein Interview in 90 Sekunden zu bestehen: Sie müssen es kopieren, eine kleine Funktion hinzufügen, etwas in diesem Projekt tun.

    Im Prinzip ist dies ein solches Schaufenster der Architekturwas ich beim Schreiben von 90 Sekunden verwendet habe. Dann war es für mich und im Prinzip für Entwickler, mit denen ich vertraut war, neu. Dann, vor nur zwei Jahren, fing ich an, die Anwendung komplett neu zu schreiben, und beschloss, zunächst alles auf Rx zu machen. Die Idee war, absolut alles reaktiv und absolut alles auf Kotlin zu machen, von Grund auf ohne jegliches Vermächtnis.

    Es stellte sich als ziemlich cool heraus, bis auf ein paar Dinge, die ich immer noch bereue, aber ... so.

    Alexey: Hören Sie, mir hat die Idee vor dem Interview sehr gut gefallen , jemanden zu bitten, sie in Ihr OpenSource-Projekt zu kopieren . Dieses Projekt entwickelt sich und Sie können sehen, wie eine Person codiert und im Allgemeinen, was sie denkt und welche Funktionen sie bietet. Ich denke, wir müssen das auf jeden Fall versuchen!

    Lassen Sie uns ein kleines Thema der Konferenzen entwickeln. Sie kommen bereits nächste Woche zu  AppsConf . Erzählen Sie uns bitte von Ihrem Thema und worüber werden Sie dort sprechen?

    AppsConf Konferenz


    Stepan: Ja, ich spreche bei AppsConf. Das Thema klingt auf Englisch recht interessant, aber wenn ich es auf Russisch übersetze, mag ich es nicht, aber ich kann mir nichts Besseres vorstellen: "Architektur der asynchronen Taskausführungsschicht". Ich hatte wahrscheinlich vor, diesen Bericht schon seit drei Jahren zu machen, und trotzdem erreichten meine Hände nicht.

    Die Idee kam nur von der Implementierung, die meine Kollegen und ich in einer Startup-Anwendung verwendeten, in der ich ursprünglich in Singapur arbeitete. Wir hatten eine ziemlich schwierige Aufgabe, es war ein soziales Netzwerk für Musiker, in dem es möglich war, Musik zu schreiben. Eine der Funktionen war, dass Sie Musik offline schreiben können. Wenn Sie dann wieder ins Internet gehen, wird alles mit dem Server synchronisiert.

    Außerdem war der Aufbau ziemlich kompliziert. Zuerst gibt es so etwas wie die Idee eines Songs, und dann können Sie diese Idee in einen Baum verwandeln. Im Wesentlichen erhalten Sie die Versionskontrolle für Ihr Lied. Das Lied selbst war auch - ein Multitrack, Effekte und vieles mehr.

    Das Ergebnis war ein Diagramm abhängiger Entitäten, die synchronisiert werden mussten . Wir haben ein so interessantes System geschrieben, das erstens alle diese Anforderungen verpackt und zweitens dann ermöglicht, dass sie in die Datenbank geschrieben, mit der Datenbank verbunden und gesendet werden.

    Es kam mir damals sehr cool vor und seitdem wollte ich darüber reden. Aber leider scheint es mir schon mit der Erfahrung, dass die Implementierung einfach schrecklich war. Buchstäblich nach diesem Auftritt mit Denis wurde ich wieder zu einem Vortrag bei Mobius eingeladen, und seitdem bereite ich diesen Bericht vor. Der Bericht hat sich in der Regel seit geraumer Zeit gewandelt.

    Das Ergebnis war ein Musterbeispiel, bei dem Sie nach sehr einfachen Regeln eine Komponente elegant und ansprechend gestalten können, um das Kopieren und Einfügen im gesamten Projekt zu vermeiden und gleichzeitig etwas Ähnliches wie WorkManager zu erstellen, das jedoch noch komplexer ist.

    Der Vortrag befasst sich mit der Verwendung von Kotlin , dem Entwerfen von Anwendungskomponenten und den MöglichkeitenEffizientes Verwalten von Aufgaben und Lösen einiger häufig auftretender Probleme auf sehr einfache Weise.

    Aleksey: Sagen Sie mir, wird diese Erfahrung jetzt in Ihrem Unternehmen genutzt?

    Stepan: Nein, leider. Erstens, als ich ankam, gab es bereits eine ziemlich große Menge an Code, und jetzt ist es ziemlich teuer, ein solches System zu implementieren, und niemand braucht es. Ich habe jedoch vor, ähnliche Techniken zu verwenden, um die Menge des verwendeten Codes zu reduzieren.

    Grob gesagt, eines der Dinge, über die ich sprechen werde, ist, wie Sie manuelle Abonnements, wie ich es nenne, loswerden können, wenn Sie einfach in Ihren Objekten subscribe aufrufen. Das Delegieren des Aufrufs dieser Methode an ein Objekt, das Sie an allen Stellen aufrufen, kann fast die gesamte Codebasis verbessern. Das möchte ich auch in unserem Projekt umsetzen.

    Alexei: Die letzte kurze Frage ist, ob es für dieses Thema eine OpenSource-Lösung gibt, die uns bei der Implementierung in anderen Unternehmen hilft.

    Stepan: Kaum. Ich hatte nicht vor, diese Entscheidung produktionsreif zu machen, aber die Personen, die in meiner Präsentation dabei sein werden, werden auf GitHub geteilt.

    Roman:
    Oh, fasziniert! Allen, die in die gleiche Kategorie von faszinierten Menschen fielen, möchte ich daran erinnern, dass Stepan vom 8. bis 9. Oktober auf der AppsConf-Konferenz in Moskau sein wird.

    AppsConf ist in Kürze erhältlich, der Zeitplan war sehr voll , es gibt eine Reihe nützlicher Berichte, und Sie können immer noch ein Ticket buchen und auch teilnehmen.

    Jetzt auch beliebt: