Ich heiße Vladimir. Ich bin bei Vivid Money für die mobile Entwicklung verantwortlich.
Vivid Money ist ein Fintech-Startup für den europäischen Markt mit einer Vielzahl von Funktionen - Zahlungen und Überweisungen, Mehrwährungen, Finanzanalysen, gemeinsame Nutzung von Konten, Investitionen und vieles mehr. Die engsten Konkurrenten sind Revolut und N26.
In einem Jahr ist es uns gelungen, eine mobile Fintech-Anwendung zu entwickeln und erfolgreich zu starten. In diesem Jahr sammelte ich Ideen, die sich ungefähr 4 Jahre lang in meinem Kopf bildeten, während ich andere Projekte leitete. In diesem Artikel werden diese Ideen in Form von Tipps für Softwareentwicklungsmanager / -leiter gesammelt, die langfristige und groß angelegte Projekte von Grund auf neu starten.
Einführung
Vor etwas mehr als einem Jahr kam ich als Leiter eines Android-Teams zu dem Projekt. Ich stand vor einer ehrgeizigen und interessanten Aufgabe - Technologien auszuwählen, ein Team zusammenzustellen, Prozesse einzurichten und vor allem alles gut zu machen. Gut ist ein loses Konzept, aber für mich ist es aus produkt- und technischer Sicht ein Qualitätsprodukt.
Ein Projekt von Grund auf neu zu starten ist eine ebenso interessante und aufregende Aufgabe wie unverständlich und schwierig. Zuerst weiß man nicht, worauf man sich einlassen soll, dann gibt es so viele Dinge zu tun, dass der gesamte Arbeitsprozess wie das Löschen von Feuer ist.
Um dies zu verhindern, müssen zunächst die Prioritäten der Aktivitäten klar definiert werden .
Meiner Meinung nach können die Hauptaktivitäten eines Leads in der folgenden Reihenfolge angeordnet werden:
- Aufbau des Einstellungsprozesses;
- Auswählen eines Technologie-Stacks;
- Teaminteraktion einrichten;
- Aufbau eines Entwicklungs- und Testprozesses.
In diesem Teil des Artikels werde ich mich nur auf den ersten Punkt konzentrieren.
Haftungsausschluss:
Dieser Artikel enthält meine Gedanken und Schlussfolgerungen, die auf meinen Erfahrungen mit der Arbeit in großen und langfristigen Projekten beruhen . Einige der Tipps mögen abgedroschen erscheinen, aber wie die Praxis gezeigt hat, werden nicht alle selbst in großen Unternehmen und Projekten angewendet.
Gebäude mieten
Für mich steht dieser Punkt an erster Stelle, da die weitere Arbeit des Teams von der „Qualität“ der Menschen abhängt.
Wir hatten einen sehr ehrgeizigen Zeitrahmen für die Gründung der Bank - 1 Jahr. Während dieser Zeit war es notwendig, qualitativ eine große Menge an Funktionalität zu schaffen. Für abhängige, schlecht ausgebildete Mitarbeiter war einfach keine Zeit. Daher folgt der folgende Rat:
Rat Nummer 1. Denken Sie daran, wie wichtig es ist, Mitarbeiter einzustellen
Zusätzlich zu der Tatsache, dass ein schwacher Entwickler die Qualität des Codes und die Anzahl der Fehler im Produkt direkt beeinflusst, ist es unmöglich, an ihn zu delegieren, da kein volles Vertrauen besteht und eine ständige Überwachung erforderlich ist. Daher werden bei einem schnell wachsenden Projekt Schwierigkeiten auftreten.
Rat Nummer 2. Überprüfen Sie nicht nur die harten Fähigkeiten bei einem Interview, sondern auch die weichen Fähigkeiten
Oft läuft ein Entwicklerinterview in Russland auf Sprach- / Rahmenfragen hinaus. In der Tat spielen Soft Skills eine ebenso wichtige Rolle und sind schwieriger zu entwickeln. Außerdem passt eine Person mit einer ähnlichen Einstellung eher in das Team.
Wir haben die folgenden Soft Skills für uns identifiziert:
- Systematisches Denken;
- Ordentlichkeit und gesunder Perfektionismus;
- Sich auf Erfahrung verlassen, nicht auf Ratschläge; unbestätigte Tatsachen in Frage stellen.
Und natürlich grundlegende Konflikte und die Fähigkeit, mit Menschen zu kommunizieren.
Zum Beispiel stellen wir einem Kandidaten eine Frage: „Warum verlassen Sie Ihren alten Job und nach welchen Kriterien wählen Sie einen neuen Job?“. Die Antwort selbst ist nicht so wichtig wie der systematische Ansatz - wir erwarten, dass der Kandidat sich bewusst ist, dass er nicht zufrieden ist, dass er auf logische Weise dazu kommen und alles in seinem Kopf klären konnte.
Beispiele für solche Fragen, die uns helfen, die Denkweise und die Prinzipien eines Kandidaten zu verstehen, könnten sein: "Wie sieht Ihr ideales Team aus?" oder "Wie sieht der ideale Entwicklungsprozess aus?"
Rat Nummer 3. Optimieren Sie Ihr Interview
Das Interview sollte als ein Mechanismus gesehen werden, der verbessert und optimiert werden kann. Oder als Programm, das überarbeitet werden kann.
Ich werde Beispiele für die Optimierungen geben, die wir vorgenommen haben.
Beispiel 1
Es dauert ungefähr 1,5 Stunden, bis zwei Entwickler jeden Kandidaten interviewt haben. Um diese Zeit zu optimieren und sie nicht an offensichtlich schwache Kandidaten zu verschwenden, haben wir das Screening eingeführt. Screening ist ein paar einfache, geschlossene Fragen, die Antworten vorbereitet haben. Die Personalvermittler selbst stellen dem Kandidaten diese Fragen, was etwa 10 bis 15 Minuten dauert.
Einige Zahlen:
Von 100 Kandidaten wird nach dem Screening etwa ein Drittel, dh etwa 30, eliminiert. Ein Personalvermittler verbringt etwa 15 Minuten mit jedem Screening, dh ungefähr 8 Stunden Nettozeit für 30 ausgeschiedene Kandidaten. In einem klassischen Interview für dieselben 30 Kandidaten hätten wir im optimistischsten Szenario etwa 60 Mannstunden verbracht.
Beispiel 2
Der Zweck des Interviews besteht darin, den relevantesten Kandidaten auszuwählen. Wir haben die für das Projekt kritischen Fähigkeiten und Fertigkeiten analysiert und identifiziert, wobei wir den Stapel ausgewählter Technologien berücksichtigt haben, wodurch wir einige der irrelevanten Fragen entfernen und die Interviewzeit verkürzen konnten.
Beispielsweise haben wir die Fragen zu Teilen des Android SDK entfernt, die in unserem Projekt nicht verwendet werden - ContentProvider, JobScheduler usw. SDKs werden selten verwendet.
Beispiel 3
Das technische Interview fand zunächst in zwei getrennten Phasen statt - theoretischen Fragen und praktischen Aufgaben. Dies hat die Zeit für das Bestehen aller Phasen des Interviews für den Kandidaten erheblich verlängert, und viele Bewerber gingen verloren, da der IT-Markt sehr wettbewerbsfähig ist - guten Entwicklern werden schnell Angebote angeboten.
Um den Trichter zu optimieren, haben wir das Interview in Phase 1 zusammengefasst - nicht informative Fragen entfernt und algorithmische Probleme gelöst. Ich habe im vorherigen Absatz über nicht informative Fragen geschrieben. Wir haben jedoch algorithmische Aufgaben durch praktische Aufgaben für das Framework ersetzt. Sie testen auch Ihre Codierungsfähigkeiten und SDK-Kenntnisse.
Infolgedessen gab es nur ein technisches Interview für 1,5 Stunden, aber es wurde inhaltlich so poliert wie möglich.
Rat Nummer 4. "Verständnis ist wichtiger als Wissen"
Das wichtigste Kriterium für die Auswahl eines Entwicklers war das „Verständnis“. Damit eine Person nicht nur weiß, wie man Definitionen und akademisches Wissen gibt, sondern auch ein Verständnis für die Struktur eines bestimmten Rahmens demonstriert . Ein Entwickler ohne dieses Verständnis, der mit Problemen konfrontiert ist, wird keine eigene Lösung finden oder das Problem nicht optimal genug lösen können. Aus diesem Grund haben wir alle Interviewfragen offen gestellt, damit der Kandidat nicht die gelernten Begriffe, sondern die Gründe für das eine oder andere Thema preisgibt. Und wir folgen seiner Kenntnis des Themas und dem Verlauf seiner Logik.
Zum Beispiel stellen wir eine offene Frage: "Wie erstelle ich einen ANR-Detektor (Application Not Responding) in Android?". Diese Frage testet das Wissen darüber, wie Threads in Android funktionieren, vermeidet jedoch die direkte Frage zu Looper und Handler. Außerdem können Sie mit Multithreading präzise zu einem Thema wechseln.
Rat Nummer 5. Verteilen Sie die Funktion von Interviews
Mit dem schnellen Wachstum des Teams werden die Interviews so zahlreich, dass es den ganzen Tag dauert und keine Zeit für andere Aktivitäten bleibt. Daher ist es nützlich, die Interviewfunktion teilweise an das Team zu delegieren.
Dies entlastet nicht nur den Lead, sondern bezieht den Entwickler auch in die Wahl seines potenziellen Kollegen ein, was ihn zusätzlich motiviert.
Außerdem lernt der Kandidat das Team kennen und macht sich einen ganzheitlicheren Eindruck.
Rat Nummer 6. Balanciere den Kader
Bei der Einstellung sollten Sie immer an die Ausgewogenheit der Mitarbeiter nach Kompetenzen im Team denken. Zu viele leitende Entwickler können dazu führen, dass sie neue Lösungen entwickeln, aber Entwickler werden keine Funktionen entwickeln. Aber zu Beginn des Projekts, wenn die technische Basis für die kommenden Jahre gelegt wird, ist es notwendig. Darüber hinaus ist der Unterzeichner für das Schreiben des üblichen Funktionscodes unangemessen teuer. Zu viele Junioren wiederum verschlechtern die Codebasis und versenken das Projekt auf lange Sicht. Intelligente Junioren entwickeln sich jedoch schnell zu Mitten und werden dem Unternehmen und dem Team gegenüber viel loyaler als Mitten vom Markt. Meiner Meinung nach ist dieses Gleichgewicht für jedes Projekt und jede spezifische Situation unterschiedlich, daher werde ich keine spezifischen Prozentsätze angeben.
Oft werden Teams mit Auftragnehmern verwässert, um die Entwicklung zu beschleunigen. Ausgewogenheit ist auch hier sehr wichtig, da eine große Anzahl von Auftragnehmern auch den Code im Projekt verschlechtern kann. Auftragnehmer haben selten die gleiche Motivation und das gleiche Interesse an einem Projekt wie interne Mitarbeiter.
Rat Nummer 7. Hab keine Angst zu schießen
Schließlich besteht kein Grund zur Angst, Leute aus dem Team zu entlassen. Eine Person, die in Bezug auf Prinzipien und Geist oder technische Fähigkeiten nicht zum Team passt, wird auf lange Sicht viel mehr Schaden anrichten als der Vorteil der kurzfristigen Codierung.
Es klingt leicht zu feuern, aber wie geht das für den Mitarbeiter und das Team so schmerzlos wie möglich? Das Prinzip funktioniert hier: "Es ist egal, was Sie tun, aber wie wichtig es ist." Wenn Sie alles im Voraus tun - die Erwartungen an die Rolle besprechen, rechtzeitig Feedback zur Arbeit geben, ohne auf das Ende der Probezeit zu warten, und Ihre Kommentare begründen -, wird dies den Mitarbeiter nicht überraschen.
Es ist auch wichtig, das Team öffentlich verstehen zu lassen, warumDer Mitarbeiter wurde entlassen. Andernfalls können Sie dem Team Angst einflößen und die Teamatmosphäre beeinträchtigen.
Rat Nummer 8. Sammeln Sie Feedback von neu angekommenen Mitarbeitern
Der Rekrutierungsprozess besteht aus zwei Phasen: Interview und Onboarding für Neulinge.
Onboarding sollte nicht nur für Anfänger, sondern auch für das Projekt nützlich sein.
Nach dem Eintauchen in das Projekt können neue Leute Problembereiche sehen und frische Ideen mit einem sauberen Aussehen geben. Aus diesem Grund haben wir eine Regel entwickelt - bewusst zuzuhören und ihre Meinungen und Empfehlungen zur Verbesserung der Ansätze und der Codebasis zu analysieren. Einige dieser Empfehlungen wurden erfolgreich im Projekt umgesetzt.
Zum Beispiel haben wir nach der Ankunft eines Mitglieds des Android-Teams den Ansatz zum Speichern von Daten im In-Memory-Cache komplett überarbeitet.
Ergebnis
Abschließend möchte ich sagen, dass unser mobiles Team in fast anderthalb Jahren auf 26 Mitarbeiter angewachsen ist. Alle Entwickler machen einen guten Job und niemand hat das Team von selbst verlassen. Wir haben das Produkt erfolgreich veröffentlicht und den Test der Fernarbeit ohne Qualitäts- und Entwicklungsverlust bestanden.
Ich hoffe, dass die in diesem Artikel gesammelten Tipps auch für Sie nützlich sind.
In den nächsten Abschnitten werde ich über unsere Ansätze zur Auswahl eines Technologie-Stacks und zum Einrichten der Team-Interaktion sprechen.