---
Der Slack-Thread, der Veränderungen auslöste
Alles begann in einem Slack-Thread, in dem einer unserer Backend-Entwickler über eine frustrierende Interaktion mit einem neuen Mitarbeiter klagte, der sich als Machine Learning Engineer ausgab. "Sie verstehen den Deployment-Prozess überhaupt nicht", schrieben sie und hoben eine Lücke hervor, die unser Projekt beeinträchtigte. In diesem Moment wurde klar: Wir mussten unseren Einstellungsprozess für Machine Learning Engineers überdenken und sicherstellen, dass sie effektiv zu unserer Deployment-Pipeline beitragen konnten.
Kontext: Warum das wichtig ist
Die Unterscheidung zwischen Machine Learning Engineers und Data Scientists ist oft verschwommen, was zu Missverständnissen in den Erwartungen an die Einstellung führt. In unserem Fall waren die Einsätze hoch; wir befanden uns mitten in der Einführung eines neuen Features, das stark auf robusten ML-Modellen basierte. Wenn unser neuer Mitarbeiter die operativen Aspekte von ML nicht bewältigen konnte, würde sich unser Zeitplan verzögern und unsere Nutzer beeinträchtigen. Wir benötigten Klarheit darüber, welche Fähigkeiten wir suchten und wie wir diese während der Interviews effektiv testen konnten.
Das Problem im Detail
Unser neuer Mitarbeiter hatte ein starkes theoretisches Verständnis von Machine Learning, fehlte jedoch die praktische Erfahrung in der Bereitstellung von Modellen. Zum Beispiel hatte er Schwierigkeiten, ein Modell in unsere bestehende Infrastruktur zu integrieren, da er mit Abhängigkeiten und Versionierung nicht umgehen konnte, was zu erheblichen Ausfallzeiten führte. Dies frustrierte nicht nur das Team, sondern gefährdete auch unsere Projektfristen. Wir erkannten schnell, dass es nicht ausreichte, sich ausschließlich auf Modellierungsfähigkeiten zu konzentrieren.
Was wir zuerst versucht haben
Zunächst versuchten wir, unsere Stellenbeschreibungen zu verfeinern, um Kandidaten mit Deployment-Erfahrung anzuziehen. Nach mehreren Iterationen stellten wir jedoch fest, dass eine bloße Anpassung der Formulierungen nicht signifikant die Qualität der Bewerber veränderte. Wir erhielten weiterhin eine Flut von Kandidaten, die in der Theorie hervorragend waren, jedoch in praktischen Fähigkeiten schwächelten. Dies führte uns dazu, unseren Interviewprozess vollständig zu überdenken und über traditionelle Modellierungsfragen hinauszugehen, um die reale Einsatzbereitschaft zu bewerten.
Der technische Ansatz
Wir beschlossen, einen zweigeteilten Interviewprozess einzuführen, der sowohl theoretisches Wissen als auch praktische Anwendung in den Fokus stellte. Der erste Teil behandelte zentrale ML-Konzepte, während der zweite eine praktische Programmieraufgabe beinhaltete, die ein Deployment-Szenario simulierte. Zum Beispiel wurden die Kandidaten gebeten, ein einfaches Skript zu schreiben, um ein vortrainiertes Modell an eine Mock-API bereitzustellen, um ihr Verständnis von Pipelines zu demonstrieren.
# Beispiel für ein Deployment-Skript
import joblib
from flask import Flask, request
app = Flask(__name__)
model = joblib.load('model.pkl')
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
prediction = model.predict(data['input'])
return {'prediction': prediction.tolist()}
if __name__ == '__main__':
app.run(debug=True)
Dieser Ansatz half uns, Kandidaten zu identifizieren, die nicht nur die ML-Theorie verstanden, sondern auch in der Lage waren, sich im Deployment-Bereich zurechtzufinden, eine entscheidende Fähigkeit für unser Team.
Was sich im Produkt geändert hat
Nach der Implementierung wurde unser Einstellungsprozess besser auf unsere tatsächlichen Bedürfnisse abgestimmt. Wir konnten mehrere Positionen erfolgreich mit Kandidaten besetzen, die ein starkes Gleichgewicht zwischen Theorie und praktischen Deployment-Fähigkeiten zeigten. Infolgedessen bemerkten wir eine spürbare Verbesserung der Effizienz bei der Einführung unserer ML-Features. Dies hatte direkte Auswirkungen auf die Zufriedenheit der Nutzer, da wir neue Features pünktlich ohne die vorherigen Kopfschmerzen launchen konnten.
Was wir gelernt haben
Durch diesen Prozess haben wir mehrere wichtige Erkenntnisse gewonnen:
- Fokus auf praktische Fähigkeiten: Kandidaten müssen praktische Erfahrung mit Deployment nachweisen, nicht nur theoretisches Wissen.
- Klare Rollendefinitionen: Die ordnungsgemäße Abgrenzung der Rollen zwischen ML Engineers und Data Scientists hilft, den Einstellungsprozess zu straffen und klare Erwartungen zu setzen.
- Iterieren über Interviewprozesse: Regelmäßiges Überprüfen und Verfeinern unserer Interviewmethoden hält unsere Einstellungspraktiken relevant und effektiv.
- Wert realer Szenarien: Die Einbeziehung realer Herausforderungen in Interviews führt zu einem besseren Verständnis der praktischen Fähigkeiten eines Kandidaten.
Was das für Kandidaten bedeutet
Als Kandidat ist es entscheidend, die Unterscheidung zwischen Machine Learning Engineering und Data Science zu verstehen. Wenn Sie sich für eine Rolle als ML Engineer bewerben, konzentrieren Sie sich darauf, Ihre Deployment-Erfahrung und Ihre Vertrautheit mit Pipelines zu präsentieren. Seien Sie darauf vorbereitet, praktische Szenarien während der Interviews zu diskutieren, da wir praktische Fähigkeiten ebenso hoch schätzen wie theoretisches Wissen.
Was das für Recruiter bedeutet
Für Recruiter ist es wichtig, die Anforderungen der Stelle klar zu definieren, wenn sie nach Machine Learning Engineers suchen. Betonen Sie die Notwendigkeit, dass Kandidaten praktische Erfahrung mit Modell-Deployments und Pipelines haben. Dies wird helfen, die richtigen Talente anzuziehen und die Wahrscheinlichkeit von Einstellungsfehlgriffen zu verringern, die zu Projektverzögerungen führen können.
Nächste Schritte
Für die Zukunft planen wir, unsere Einstellungsergebnisse kontinuierlich zu überwachen und Feedback von neuen Mitarbeitern zum Interviewprozess zu sammeln. Wir prüfen auch die Möglichkeit, eine standardisierte Bewertungsplattform für potenzielle Kandidaten zu erstellen, um unsere Bewertungen weiter zu optimieren. Wenn wir etwas anders machen müssten, würden wir frühzeitig im Prozess kollaborative Coding-Sitzungen einbeziehen, um die Dynamik im Team besser einschätzen zu können. ---