Unterschiede zwischen einem Junior-, Middle- und Senior-Entwickler
Sie denken wahrscheinlich, dass die Begriffe "Junior", "Mid-Level" und "Senior" in der Softwareentwicklung nur Bezeichnungen sind - und Sie hätten Recht. Aber, ob Sie solche Bezeichnungen mögen oder nicht, sie sind nützlich, weil sie es ermöglichen, eine Reihe von Erwartungen für eine bestimmte Rolle zu diskutieren. Ja, das ist eine grobe Vereinfachung, aber sie ist nützlich. Sie wollen zum Beispiel keinen Nachwuchsentwickler einstellen, um ein umfangreiches Upgrade eines Altsystems zu entwickeln. Genauso wenig wollen Sie Ihre Zeit (oder die der Bewerber) mit Vorstellungsgesprächen mit Kandidaten verschwenden, die nicht das richtige Potenzial haben. Eigentlich wollen Sie nicht einmal, dass sich völlig ungeeignete Kandidaten überhaupt bewerben.
Ihr Ziel ist es, Teams mit einem ausgewogenen Verhältnis von Nachwuchsentwicklern (auch Einsteiger genannt), Entwicklern der mittleren Ebene und erfahrenen Entwicklern zu bilden. Auf diese Weise entwickeln Sie eine Kultur, die zu einem erstklassigen Informationsaustausch führt, wodurch Aufgaben erledigt werden und gleichzeitig Geld gespart wird.
Junior vs. Middle vs. Senior Entwickler
Junior-Entwickler vs. Mid-Level-Entwickler und Senior-Entwickler. Es gibt viele echte Unterschiede zwischen Junior- und Senior-Entwicklern. In der Regel hat die Frage, ob es sich um einen Junior-, Mid-Level- oder Senior-Entwickler handelt, nicht viel damit zu tun, wie viele Jahre Erfahrung ein bestimmter Bewerber hat - ein Junior-Entwickler kann sogar älter sein als ein Senior-Entwickler. Es ist zum Teil eine Frage des Wissens und der technischen Fähigkeiten, die die Kandidaten erworben haben. Vor allem aber hat es viel damit zu tun, wie ein Entwickler seine Arbeit wahrnimmt, wie er mit seinen Kollegen interagiert und wie er an Probleme herangeht. In diesem Sinne bezieht sich die Bezeichnung Junior, Mid-Level oder Senior vor allem auf einen bestimmten Reifegrad.
Quelle: Unsplash
Hauptanforderungen an einen Juniorentwickler
Wenn es um Positionen der unteren Ebene geht, ist die Die wichtigste Voraussetzung ist, dass die Bewerber die Fähigkeit haben, technische Aufgaben selbständig auszuführen. Häufig dreht sich die Denkweise eines Junior-Entwicklers nur darum, den Code zum Laufen zu bringen. Wenn das Projekt beispielsweise auf der gleichen Art von Architektur basiert (und unter der Annahme, dass eine solche Architektur entweder gut bekannt oder gut dokumentiert ist), dann sollte der Juniorentwickler in der Lage sein, den nächsten Teil der Anwendungslogik relativ schnell zu implementieren. Junior-Entwickler sind nicht völlig unabhängig und werden sich darüber unterhalten müssen, wie bestimmte Elemente des Projekts zu implementieren sind. Denken Sie daran, dass Nachwuchsentwickler ausgefallenen Code schreiben, da es ihnen schwer fällt, einfachen Code zu schreiben. Außerdem müssen sie ihren fertigen Code mit einem erfahreneren Softwareentwickler besprechen. Das bedeutet auch, dass Sie damit rechnen müssen, dass Junior-Entwickler nicht alle Feinheiten eines Projekts verstehen und gelegentlich Fehler machen werden. Übrigens wird von Junior-Entwicklern nicht erwartet, dass sie einen Teil der Software-Architektur entwerfen.
Quelle: Unsplash
Qualitäten eines Juniorentwicklers
Wenn Sie einen Nachwuchsentwickler einstellen wollen, suchen Sie nach Kandidaten, die einen gewissen Reifegrad aufweisen. In diesem Fall möchten Sie, dass die Kandidaten Eigenschaften aufweisen wie:
- Der echte Wunsch, sich zu entwickeln und zu lernen
- Bereitschaft, aus eigenen Fehlern zu lernen
- Fähigkeit, (konstruktive) Kritik gelassen anzunehmen
- Echte Energie und Engagement
Wie man junge Entwickler interviewt
Bewerber für eine Stelle als Junior-Entwickler müssen nachweisen, dass sie:
- Sie haben den gesamten Entwicklungszyklus mindestens ein paar Mal durchlaufen
- Kenntnisse der einschlägigen Programmiersprachen und Technologie-Stacks
- einige Kenntnisse über die meisten Prozesse bei der Softwareentwicklung
- sehr daran interessiert sind, mehr über alles zu erfahren, was mit der Herstellung von Software zu tun hat
- sind in der Lage, Lösungen für kleine Probleme zu finden
- Kann bei der Arbeit an einer bestimmten Funktion des Produkts produktiv sein
Verhaltensbezogene Fragen
Bitte nennen Sie ein Beispiel für eine Situation, in der Sie:
- die Initiative ergriffen hat, um ein kleines, aber wichtiges Problem zu lösen
- in der Lage waren, das Team zu unterstützen, auch wenn Sie mit dem Team nicht einverstanden waren
- Einfühlungsvermögen gegenüber einem Neueinsteiger gezeigt haben
Mid-Level-Entwickler vs. Junior-Entwickler und Senior-Entwickler
Hauptanforderungen an einen Mid-Level-Entwickler
Bei Positionen der mittleren Ebene besteht die Hauptanforderung darin, dass die Bewerber in der Lage sind, Aufgaben selbständig auszuführen. Dies ist nicht dasselbe wie die Hauptanforderung für Junior-Entwickler, da das Wort "technisch" aus der Definition gestrichen wurde. Solange Mid-Level-Entwickler nicht mit hochkomplexen technischen Aufgaben betraut werden, die ein tiefgreifendes Wissen erfordern, sollten sie natürlich in der Lage sein, diese Aufgaben selbständig zu erledigen. Auf dieser Ebene müssen die Entwickler jedoch auch die Geschäftsanforderungen zu verstehenund dann in der Lage sein, sie in technische Lösungen umzusetzen.
Mid-Level-Entwickler vs. Junior-Entwickler und Senior-Entwickler
Quelle: Unsplash
Qualitäten eines Mid-Level-Entwicklers
Entwickler der mittleren Ebene müssen in der Lage sein, genau zu verstehen, was eine bestimmte Anwendung in einem bestimmten Kontext tut. Dadurch sind sie in der Lage, ein tieferes Verständnis für eine Aufgabe zu erlangen. Daher können sie Änderungen genauer bewerten und effektiver umsetzen. In der Planungsphase muss ein guter Mid-Level-Entwickler muss in der Lage sein, die Anforderungen zu lesen und zu erkennen, dass etwas fehlt oder verbessert werden kann. Auf der anderen Seite werden Nachwuchsentwickler wahrscheinlich genau das umsetzen, was in den Anforderungen steht. Das bedeutet, dass eine Anwendung korrekt funktioniert (gemäß dem "glücklichen Weg"), aber möglicherweise abstürzt, wenn der Benutzer eine nicht standardmäßige Aktion ausführt.
Die Entwicklung von Code ist eine Teamarbeit, daher ist die Standardisierung sehr wichtig, da sie es einer neuen Person ermöglicht, schnell zu verstehen, was was ist, und die Anzahl der Fehler zu minimieren. Wenn man die Struktur einer typischen Anwendung versteht, ist die Aufgabe, sie zu erstellen, relativ einfach. Dies wiederum ermöglicht es, die Grundsätze der korrekten Implementierung zu erörtern und guten Code von schlechtem Code zu unterscheiden. Ein mittlerer Entwickler ist sicherlich mit Standardvorlagen und -lösungen vertraut, wenn er eine Anwendung in seinem Bereich erstellt. Sie sind nicht nur mit bestimmten Lösungen vertraut, sondern verstehen auch, warum sie benötigt werden, und wissen, wann und wie sie am besten eingesetzt werden können.
Ein Mid-Level-Entwickler weiß, wie er mit anderen Teammitgliedern effizient und effektiv zusammenarbeiten kann. Dies gilt insbesondere für Situationen, in denen es schwierig ist, einen Konsens zu erzielen. Dies ist z. B. bei der Erörterung subjektiverer Elemente eines Entwurfs, bei der Klärung von Anforderungen, die von Natur aus unvollständig sind, bei erheblichem Zeitdruck oder bei der Erörterung einer größeren Änderung der Arbeitsweise von Bedeutung.
Wie man ein Vorstellungsgespräch mit mittleren Entwicklern führt
Situationsbezogene Fragen
Bitte nennen Sie Beispiele für Situationen, in denen Sie:
- bereit waren, Aufgaben zu übernehmen, von denen niemand weiß (oder wissen will), wie sie zu lösen sind
- waren in der Lage, ein Gleichgewicht zwischen Komplexität und Leistung bei der Lösung eines komplexen technischen Problems zu finden
- War maßgeblich an der Erstellung der Anforderungsanalyse beteiligt
- An der Prüfung von Software beteiligt waren
- maßgeblich an der Erstellung der Dokumentation beteiligt
- ergriff die Initiative zur Lösung von Problemen und zur Behebung kritischer Fehler
- Musste an mehreren Projekten gleichzeitig arbeiten
Quelle: Unsplash
Senior-Entwickler vs. Mid-Level-Entwickler und Junior-Entwickler
Hauptanforderungen an einen Senior-Entwickler
Ein erfahrener Entwickler hat eine Menge Code gesehen, eine Menge Fehler gemacht und die richtigen Schlüsse aus dem gesamten Prozess gezogen. Alle Entwickler stellen Fragen, die ganze Zeit. Der Unterschied besteht darin, dass erfahrene Entwickler im Vergleich zu Entwicklern mit weniger Erfahrung wissen, wie sie die richtigen Fragen auf der richtigen Abstraktionsebene stellen können. Die Hauptverantwortung eines Senior-Entwicklers besteht immer darin sicherstellen, dass die richtigen Entscheidungen getroffen werden (mit den zu einem bestimmten Zeitpunkt verfügbaren Informationen) Entscheidungen zu treffen, die dem Unternehmen den größtmöglichen Nutzen bringen und die Kosten minimieren. Ein guter Senior-Entwickler ist immer auf der Suche nach Möglichkeiten, einen größeren Nutzen zu erzielen, ist sich aber auch bewusst, dass es notwendig ist, Ressourcen wie Zeit und Geld optimal zu nutzen. Ein guter Senior-Entwickler denkt immer an den Endpunkt, so dass er Probleme oft schon lösen kann, bevor diese auftreten. Sie denken zum Beispiel im Voraus über die Engpässe des Systems nach, denken an Schwachstellen und Probleme, die durch den unsachgemäßen Einsatz von Werkzeugen entstehen. Der von einem erfahrenen Entwickler geschriebene Code wird mit Blick auf Wartbarkeit und Skalierbarkeit erstellt.
Quelle: Unsplash
Qualitäten eines erfahrenen Entwicklers
Ein guter Senior-Entwickler muss:
- in der Lage sein, mehrere komplexe Aufgaben zu lösen (und zwar schneller als ein mittlerer Entwickler)
- in der Lage sein, zwischen einem Produkt, das "gut genug" ist, und einem, das entweder zu gut oder nicht gut genug ist, zu unterscheiden
- Sie müssen wissen, wie sich technische Schulden manifestieren. Wie viel Refactoring in Wirklichkeit kostet, welche Muster wirklich benötigt werden und wann man eine Grenze ziehen sollte, wenn es um Abstraktionsebenen geht.
- über hervorragende Kommunikationsfähigkeiten verfügen, denn sie müssen nicht nur anderen sagen, was die "richtige Entscheidung" ist, sondern auch ihren Kunden und das Team davon überzeugen, ihnen zuzustimmen. Ein autoritärer Ansatz ("Tu, was ich sage") führt oft zu mehr Konflikten, was bedeutet, dass es keine Fortschritte bei der Verbesserung der Gesamtsituation gibt.
- Sie müssen in der Lage sein, jede wichtige Entscheidung so zu erklären und zu begründen, dass sie von allen Beteiligten wirklich verstanden wird. Auf diese Weise hat das Team selbst die Möglichkeit, aus seinen Erfahrungen zu lernen und sich so schneller weiterzuentwickeln, wobei die meisten Probleme auf dem Weg dorthin vermieden werden.
Schlussfolgerung
Es gibt viele wichtige Unterschiede zwischen Junior-, Mid-Level- und Senior-Entwicklern. Bei der Einstellung von Entwicklern jeglicher Art ist es wichtig, dass Sie das gesamte Paket an Fähigkeiten berücksichtigen, das jeder Entwickler mitbringt. Viele Leute achten auf die Anzahl der Jahre an Erfahrung, was auch wichtig ist, aber Sie müssen die Leute auch nach ihren Fähigkeiten einstellen und nicht danach, was sie in der Vergangenheit getan haben. Wenn Sie also auf einen vielversprechenden Entwickler stoßen, ist es eine gute Idee, ihn einzustellen und ihm die Möglichkeit zu geben, sich beruflich weiterzuentwickeln.