Anti-Patterns in DevOps-Interviews

Herzlich willkommen, meine lieben Leser!

Heute möchte ich meine Gedanken zu einem schon lange brennenden Thema teilen und vielleicht darüber in den Kommentaren diskutieren.
Immer wieder stoße ich auf Artikel über schlechte Praktiken bei Vorstellungsgesprächen für Programmierer, die meiner Meinung nach sehr lebensnah sind und hoffentlich von den HR-Abteilungen großer und kleiner Unternehmen gelesen werden.

In unserer Region, soweit ich beurteilen kann, gibt es eine Nachfrage nach so interessanten Berufen wie DevOps-Ingenieuren. Ich gehöre zu den Menschen, die mit diesem Begriff nicht viel anfangen können (ja, die DevOps-Methodologie und so weiter), deshalb sehe ich gewisse Unterschiede in den Entwicklungsmöglichkeiten dieser Fachgruppe.
Vor allem glaube ich fest daran, dass jeder Mensch seinen eigenen Interessensbereich hat, selbst im beruflichen Umfeld. Das bedeutet, dass der eine die Cloud bevorzugt, der andere sich tief mit Application-Servern beschäftigt, intensiv in Java konfiguriert, während wieder andere Code in Python schreiben oder, Gott bewahre, YAML-Code erstellen. Hier entstehen dann auch die sogenannten Infrastructure Engineers, Build Engineers und Senior YAML Developers 🙂
All dies ermöglicht es, einerseits die Person zu finden, die am besten zu Ihrem Aufgabenbereich passt, und andererseits schafft es Verständnisprobleme während der Vorstellungsgespräche.
Basierend auf persönlicher Erfahrung habe ich eine Reihe von Dutzend Vorstellungsgesprächen geführt und auch an verschiedenen als Antwortgeber teilgenommen. Ich möchte meine Sicht auf das Geschehen teilen.

Mein erster und wahrscheinlich liebster Anti-Pattern ist der Wunsch, dass jemand alles macht, oder dass unklar ist, wer benötigt wird – wir schauen uns eine Menge Kandidaten an und werden dann sehen. Das lässt sich wahrscheinlich auf jeden Bereich anwenden, hat aber hier seine eigenen Besonderheiten.
Mir ist aufgefallen, dass die Leute mehr auf Stellenanzeigen mit dem Wort DevOps reagieren als auf solche für Systemadministratoren. Dabei unterscheiden sich die Aufgaben auf Senior-Niveau in diesen beiden Bereichen erheblich.
Jeder Arbeitgeber, der tatsächlich einen Sysadmin sucht, schreibt in der Stellenanzeige DevOps und führt im Anforderungstext alles Mögliche auf: K8S/Java/Gradle/OracleDB und so weiter, obwohl die Person intern hauptsächlich für die Unterstützung des K8S-Clusters und des OracleDB-Stacks zuständig sein wird, unabhängig vom Team.
Also, welches Interaktionsformat zwischen Developers und Operations findet hier statt?
Es stellt sich heraus, dass es keinen vorgesehenen Prozess für die Interaktion mit dem Team gibt und überhaupt keine Operations-Abteilung existiert; stattdessen müssen Sie auch die Computer der Entwickler einrichten.
Dieser Ansatz eignet sich tatsächlich für einen Teil der Bewerber, aber lassen Sie uns ehrlich sein: Es handelt sich um einen Senior System Administrator. Warum also wird das nicht so ausgeschrieben und was ist daran überhaupt beschämend? Der Unterschied im Gehalt zwischen verschiedenen Berufsbezeichnungen? Aber das Budget des Unternehmens bleibt gleich, egal wie man das Schiff benennt, es wird mit seinem Budget kursieren.
Ich habe sogar gehört, dass Kandidaten heutzutage alles schnell automatisieren und nahtlos in die Produktentwicklung mit Python einsteigen. Was spielt es für eine Rolle? Python bleibt überall gleich. Unterschiede in Weltanschauungen und Ansätzen werden nicht berücksichtigt.

Normalerweise differenziere ich das Niveau der Fachkräfte, die antreten, und sehe für jeden Einzelnen eigene Herausforderungen.
Junior – für mich persönlich ist ein Junior DevOps jemand, der ein mittleres Niveau im Systemadministration / Entwicklung erreicht hat. Hier ist es schön, zwischen soliden Linux-Nutzern zu differenzieren, die in einem neuen Bereich wachsen möchten, oder Entwicklern, die daran interessiert sind, anderen Entwicklern wirklich zu helfen. Starke Kandidaten, die über Fähigkeiten im Debugging, in der Log-Suche oder über einen gewissen Erfahrungshorizont bei entwickelten Projekten verfügen.
Ich habe sowohl Systemadministratoren getroffen, die etwas ausprobiert haben und die Cloud kennenlernen möchten, als auch solche, die Frontend und Backend ausprobiert haben und aus bestimmten Gründen Interesse an DevOps-Prozessen gefunden haben.
Auf dieser Ebene verwundert es mich immer, wenn Leute mit einem riesigen Technologiestack aus der Deckung kommen. Puppet, Ansible – warum hast du nicht schon alles ausprobiert? K8S, K3S – wo liegt der Unterschied? Wie viele Datenbanktypen kennst du? Warum so wenige? Wie funktioniert die Verschlüsselung in Java? Besonders bei denen, die aus der Entwicklung kommen. Das sind zwar sehr wertvolle Fachkräfte, für sie gibt es immer Arbeit in diesem Bereich.
Es ist immer wieder überraschend für mich, wenn so etwas passiert. Zuerst fragt man sich — warum??? Dann kommt die Frage auf — ist der Interviewer überhaupt bereit, Fragen zu einem so vielfältigen Stack zu beantworten? Wollen sie wirklich einen Junior einstellen und ihm alles aufhalsen?
Solche Situationen begegnet man häufig in verschiedenen Bodysourcing-Unternehmen. Wenn jemand für ein Projekt verkauft werden muss, sind mehr coole Begriffe für den Lebenslauf nötig, oder die Firma will einfach niemanden einstellen, sondern schaut nur, welche Junior-Entwickler es gibt.

Middle-Level
Hier gibt es meiner Meinung nach einige Extreme. Erstens ist es wahrscheinlich schwierig, genau zu bestimmen, ob jemand auf dem Niveau eines Middle-Developers ist. Entweder wird er bis zum Junior heruntergestuft, oder man behandelt ihn wie einen Senior, in der Hoffnung, einen Senior-Entwickler zum Preis eines Middle-Developers zu bekommen (ja, der Markt regelt das, nichts Persönliches).
Am erstaunlichsten war für mich zu sehen, wie jemand tief in den Code eintaucht, mit Python arbeitet, sich mit dem Java GC beschäftigt, also mit wirklich spezifischeren Themen, oder im Gegenteil, wie man Lücken in давно nicht использованных знаниях wieder aufdeckt, Netzwerke testet, und sich über verschiedene Betriebssystemtreiber amüsiert, während man sich fragt, wie jemand das vergessen konnte. Und hier geschieht das Interessanteste!
Auf dem mittleren Niveau entwickelt der Fachmann meiner Meinung nach einen eigenen Interessensbereich und eine persönliche Sichtweise darauf, mit was er arbeiten möchte — ob er auf dem neuesten Stack fruchtbaren Boden finden will oder sich für die anspruchsvollen Enterprise-Anforderungen weiterentwickeln möchte, während er sich in die Tiefe der Code-Performance begibt.
Meiner Meinung nach sollte man hier bereits nach den Prozessen fragen, mit denen die Person gearbeitet hat, was ihn am meisten interessiert hat und was nicht. Basierend auf diesen Erkenntnissen sollte man einen Fragencluster aufbauen und die Fragen unbedingt auf seinen eigenen Stack abstimmen. Ansonsten könnte man ein spannendes Gespräch von ein oder zwei Stunden über die Konfiguration eines OpenShift-Clusters führen, um dann die Person einzustellen und mit dem Aufbau des Monitorings zu beauftragen. Wahrscheinlich würde das beiden Seiten gefallen.

Senior-Level
Oh, mein Lieblingslevel.
Vor Ihnen steht ein solider Spezialist, der sich in verschiedensten Projekten entwickelt hat, jemand, der bereits weiß, was er möchte und was ihm weniger zusagt.
Und jetzt beginnt die Show:
— tiefgehende Fragen zur Systemadministration (siehe erstes Antipattern)
— tiefgehende Fragen zu Linux insgesamt aus dem Bereich der Theorie, die weit von praktischen Kenntnissen entfernt ist (Der OSI-Modell ist eine typische Frage)
— akademische Fragen zur Codierung (da der Interviewer selbst nicht wirklich Bescheid weiß, wurde er einfach gebeten, einen seltsamen DevOps zu interviewen)
Ich möchte hier eine kleine Anmerkung machen. Einmal wurde ich bei einem Vorstellungsgespräch gebeten, einen kleinen Code-Schnipsel zu schreiben. Auf einem Blatt Papier. Wie es jeder liebt, täglich schreiben wir, das Blatt ist unser Alles.
Nachdem ich die Aufgabe gelöst hatte, wurde nach der Durchsicht meines Blattes und meiner Lösung das Urteil gefällt, dass der Algorithmus suboptimal sei. Ich schlug vor, dass der Interviewer seinen eigenen Algorithmus schreibt, worauf ich die Antwort bekam: "Das ist nicht im Rahmen des Interviews." Ich bat um einen Moment, überarbeitete den Code ein wenig und zeigte ihn vor, fragte, ob es jetzt schneller oder langsamer sei? Daraufhin erhielt ich die Antwort, dass wir zur nächsten Frage übergehen sollten. Der Unterschied lag in der Ausführung des Codes in Schleifen und ohne Schleifen, und ich hatte eine vorbereitete Antwort, warum es besser sei, es so zu machen und nicht anders. Nach diesem Vorfall wollte ich nicht mehr auf die Fragen antworten und mit dieser Person arbeiten.
Es ist zu beachten, dass wir alle unterschiedlich sind und jede Kleinigkeit, die für Sie unwesentlich ist, einen Kandidaten abschrecken kann.
— In der Regel ist der Arbeitsstack von Senior-Experten klar definiert, aber nein, es muss mit etwas Vertrautem begonnen werden. Zum Beispiel, Sie haben Ansible angegeben, perfekt. Bei uns verwenden wir Puppet, also haben wir Sie nur so eingeladen, erzählen Sie uns über Puppet. Exzellent! Haben Sie mit OpenShift gearbeitet? Wir verwenden K8s, Unterschiede kennen wir nicht, aber Ihre Erfahrungen sind nicht relevant. Hervorragend!

Es gibt noch eine Unterkategorie – persönlich nehme ich Praktikanten, um sie zum Junior zu entwickeln.
Ich wünsche mir, dass alle verstehen, dass ein Praktikant eine noch nicht vollständig geformte Entität ist. Es beängstigt mich zutiefst, wenn Praktikanten auf das Niveau eines starken Juniors gedrängt werden und dann, mit zufriedenen Gesichtern, ein Praktikum (manchmal unbezahlte, schrecklich!) angeboten wird.
Das müssen Sie nicht tun.
Ein Praktikant ist für mich entweder ein Student im fortgeschrittenen Semester oder jemand, der unbedingt in die IT einsteigen möchte.
Bei Studenten ist es einfach – man erfährt, was sie an der Universität machen, was sie selbst getan haben, und man sieht, bei welchen Fragen ihre Augen leuchten. Wenn sie leuchten, fragt man, warum genau DevOps und was sie darüber wissen. Man spürt die Person und versteht, ob es angenehm sein wird, mit ihr weiterzuarbeiten und ob man genau diesem Menschen etwas beibringen möchte.
Für diejenigen, die in die IT-Branche einsteigen möchten, sollte man etwas strenger sein – beobachten Sie, wie selbstständig die Person lernt, was sie getan hat, bevor sie zu Ihnen ins Vorstellungsgespräch kommt. In diesem Fall wäre es sinnvoll, sich ihren GitHub-Account anzusehen, falls vorhanden, um die Commit-Dichte und die durchgeführten Übungen zu prüfen. Fragen Sie auch, warum sie sich für DevOps entschieden haben, da es im Frontend oft abwechslungsreicher und spannender ist.

Um es zum Schluss zu sagen: Ich möchte Ihnen noch einmal den Ratschlag geben, klarzustellen, wer genau Sie wirklich benötigen, dann werden Sie sofort die richtige Person finden. Bestimmen Sie Ihre Bedürfnisse, betrachten Sie den Spezialisten als Fachmann, finden Sie seine Stärken und nutzen Sie diese erfolgreich in Ihrer Arbeit. Seien Sie aufmerksam gegenüber dem Bewerber – er ist zu einem Gespräch bei Ihnen gekommen und nicht zu einem Wettbewerb, wer den anderen übertrumpft oder nicht.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster