Was ist der Unterschied zwischen Entry Level / Jr / Sr-Entwicklern? [geschlossen]


198

Was ist der Unterschied, abgesehen von Titel und Bezahlung?

  • Welche unterschiedlichen Aufgaben haben sie?

  • Wie kenntnisreich / erfahren sind sie?

  • Was ist die grundlegende Maßnahme, um festzustellen, wo ein Entwickler in diese grundlegende Struktur passt?

Antworten:


341

Dies wird variieren, aber so sehe ich es an einem Ort, der groß genug ist, um zwischen Programmierertypen zu unterscheiden.

Ich würde sagen, Einsteiger und Junior sind dasselbe. Sie sind gerade aus der Schule und haben weniger als zwei Jahre Berufserfahrung. Ihnen werden die am wenigsten komplexen Aufgaben zugewiesen und sie sollten ziemlich genau überwacht werden. Im Allgemeinen wissen sie ungefähr 10% von dem, was sie zu wissen glauben. Normalerweise haben sie den gesamten Entwicklungszyklus nicht durchlaufen und treffen daher oftmals sehr naive Entscheidungen, wenn ihnen die Möglichkeit gegeben wird, zu wählen. Leider ist es vielen von ihnen eigentlich egal, welche Anforderung sie haben, sie wollen die Dinge auf ihre Weise bauen. Sie haben oft schlechte Debugging-Fähigkeiten.

Auf mittlerer Ebene fallen viele Programmierer. Sie haben mehr als zwei Jahre Erfahrung und in der Regel weniger als zehn, obwohl einige ihre gesamte Karriere auf diesem Niveau verbringen können. Sie können mit weniger Aufsicht Arbeitscode erstellen, solange sie relativ routinemäßigen Aufgaben zugewiesen sind. Sie sind im Allgemeinen nicht mit anspruchsvollem Design oder hochkomplizierten Aufgaben betraut, für die ein umfassendes Wissen erforderlich ist. Sie können jedoch mit dem Entwurf eines Teils der Anwendung beauftragt werden, insbesondere, da sie sich in der Zone befinden, um Senior-Entwickler zu werden. Sie beherrschen Wartungsaufgaben oder Aufgaben, bei denen sie sich nur auf ihren Teil des Puzzles konzentrieren können, von denen jedoch normalerweise nicht erwartet wird, dass sie die Anwendung als Ganzes betrachten, es sei denn, sie arbeiten mit erfahrenen Entwicklern zusammen oder sind auf eine Beförderung zum Senior vorbereitet. Sie können in der Regel eine gute Arbeit bei der Fehlerbehebung und dem Debuggen leisten, müssen sich aber wirklich durchschlagen, um die schwierigen Probleme zu lösen. Sie haben noch nicht genug Erfahrung, um die Muster in den Problemen zu erkennen, die sie auf den wahrscheinlichen Ort hinweisen, an dem sie auftreten. Aber sie erwerben diese Fähigkeiten und müssen selten um Hilfe beim Debuggen bitten. Sie haben den gesamten Entwicklungszyklus wahrscheinlich mindestens einmal durchlaufen, die Ergebnisse von Designproblemen gesehen und lernen, wie sie in Zukunft vermieden werden können. In der Regel neigen sie dazu, eine Anforderung eher zum Nennwert anzunehmen und sie nicht zurückzudrängen, wenn offensichtliche Probleme oder Lücken bestehen. Sie haben genug gelernt, um zu wissen, was sie nicht wissen, und beginnen, dieses Wissen zu erlangen. Sie sind die Arbeitspferde der Programmierwelt,

Niemand, der ein höheres Niveau hat, muss diese Frage stellen. Sie sind Experten in ihren gewählten Technologie-Stacks. Sie bekommen die schwierigen Aufgaben (die niemand zu lösen weiß) und bekommen oft Designverantwortung. Sie arbeiten oft unabhängig voneinander, weil sie nachweislich die Waren geliefert haben. Von ihnen wird erwartet, dass sie Junior- und Intermediate-Entwickler betreuen. Oft sind sie erstaunliche Problemlöser. Sie sind bereits auf dieselben Probleme gestoßen und haben eine sehr gute Vorstellung davon, wo sie zuerst suchen müssen. Senioren betreuen oft auch außerhalb des Arbeitsplatzes. Sie haben in der Regel mindestens zehn Jahre Erfahrung und waren fast immer auf mindestens einem Todesmarsch und wissen genau, warum einige Dinge zu vermeiden sind. Sie wissen, wie man ein funktionierendes Produkt liefert und eine Frist einhält. Sie wissen, welche Ecken geschnitten werden können und welche Ecken niemals geschnitten werden sollten. Sie beherrschen mindestens eine und oft mehrere Sprachen auf Expertenebene. Sie haben gesehen, wie viele "heiße neue Technologien" auf den Arbeitsplatz kamen und verschwanden, und sind daher tendenziell etwas konservativer, wenn es darum geht, das nächste aufregende neue Entwicklungstool auf den Plan zu setzen (aber nicht völlig resistent gegen Veränderungen - das wären die ältere Fortgeschrittene Entwickler, die niemals den Sprung zu Senior schaffen). Sie verstehen, dass es ihre Aufgabe ist, funktionierende Software zu liefern, die das tut, was die Benutzer wollen, und nicht mit unterhaltsamen Tools zu spielen. Sie sind oft wählerischer, wo sie arbeiten werden, weil sie es können und weil sie aus erster Hand gesehen haben, wie schlecht manche Orte sein können. Sie suchen nach Orten mit den interessantesten Aufgaben. Oft wissen sie mehr über die Produkte ihres Unternehmens als alle anderen, auch wenn sie erst seit wenigen Monaten dort sind. Sie wissen, dass sie mehr als nur Programmierkenntnisse benötigen, und sie können auch Kenntnisse über den von ihnen unterstützten Geschäftsbereich erlangen. Sie sind sich häufig der Probleme bewusst, die Junioren nie berücksichtigen, und Fortgeschrittene denken häufig nicht an regulatorische und rechtliche Probleme in dem von ihnen unterstützten Geschäftsbereich. Sie können und werden eine Anforderung zurückschieben, weil sie die Probleme damit kennen und dies auch den Laien erklären können.


2
Gibt es einen Titel (in Englisch) für den "Intermediate Level" Google Übersetzer verwendet "Full Developer". Aber es ist keine wertvolle Quelle =)
Michel Ayres

23
Ausgezeichnete, geschichtliche Erklärung. Ich habe es genossen, es zu lesen.
Saeed Neamati

1
Danke für diese Erklärung. Ich bin Autodidakt in iOS Dev (keine Comp-Sci-Ausbildung) und habe meine erste App veröffentlicht, die einige nicht-triviale Funktionen aufweist (z. B. CRUDs JSON, einige soziale Komponenten, gutes Design). Ich glaube nicht, dass ich ein großartiger Programmierer bin, aber ich habe die App von vorne nach hinten geschrieben und verstanden, was es braucht, um sie zu versenden. Wo würdest du jemanden wie mich unterstellen?
SamYoungNY

1
@NYCTechEngineer, mir fällt ein guter Stapelüberlauf ein. Auch lokale Benutzergruppen, Bloggen, Schreiben von Artikeln und Büchern.
HLGEM

1
@ BrianHaak Thx - es ist interessant, was Sie sagen. Seit letztem Jahr arbeite ich an einem viel größeren Projekt als zuvor. Ich habe das Gefühl, einen Blick auf den Code zu werfen, den ich vor ein paar Monaten geschrieben habe, und zu sagen: "wtf? Wer hielt das für eine gute Idee?" :) - Das Starten dieses Projekts von einem kleinen Kernel in ein Projekt, das einfach erweitert werden kann und auch Nicht-Entwicklern Platz bietet, die Inhalte hinzufügen möchten, hat mich gezwungen, über eine übergeordnete Struktur nachzudenken. Das Pairing mit einem erfahrenen Programmierer hat mir gezeigt, dass ich viele Opps vermisse. Abstraktionen verwenden. Ich habe auch Probleme mit dem Namespace.
SamYoungNY

43

Einstiegsniveau - muss ihnen explizite Anweisungen geben, alles überprüfen, was sie tun, wenig oder keine Designverantwortung, keine Analyseverantwortung

Junior - weniger explizite Anweisungen, weniger Überprüfung, einige kleinere Design- und Analyseverantwortung; hilft den Einsteigern, den Compiler zu finden und das Repository zu nutzen

Senior - Hauptverantwortung für Design und Analyse, es wird erwartet, dass Versehen von sich aus korrigiert wird, wenig / keine Überprüfung, wenig / keine Anweisungen; Hilft den Nachwuchskräften, Analyse- und Designfähigkeiten zu erlernen / zu verbessern


20
Schön, außer ich weiß nicht, dass ich "keine Überprüfung / Anweisungen" für Seniorenebene vollständig zustimme. Sofern Sie nicht an oder mit einem Team arbeiten, sollte niemand eine Insel sein.
Wonko the Sane

@WonkotheSane Wir haben einen, der fehlerhafte Codes ohne CodeReview oder Pull-Anfrage zusammenführt. Es wird nicht viel über die App-Architektur diskutiert, außer das Beobachtungsmuster überall zu verwenden. Trifft alle Entscheidungen ganz alleine, damit er sich an nichts Neues gewöhnt . Alles nur, weil er selbst eine Insel ist. Er ist nicht dabei. Er ist die Insel :(
Honey

16

Wirklich, ich denke, es kommt nur darauf an, wie lange Sie schon im Job sind. Wenn Sie 10 Jahre Erfahrung haben, sind Sie ein erfahrener Entwickler. Wenn Sie ein Absolvent sind, dann sind Sie wahrscheinlich ein Einsteiger. Ich habe viele 'ältere' Entwickler gesehen, die kaum codieren konnten und nicht wirklich wussten, was sie taten, und viele Junior-Entwickler, die fantastisch waren.


7
Dies spiegelt meine Erfahrungen wider. "Senior" bedeutet Zeit mit dem Unternehmen und normalerweise nichts anderes; Geschicklichkeit berücksichtigt nicht ein Jota. Ich habe mit vielen "Senior" -Entwicklern (und Managern) zusammengearbeitet, die nichts über Software jenseits von Trial-and-Error-Entwicklung wussten, aber mehr als 5 Jahre im Unternehmen waren oder der allererste Programmierer waren, als der eingestellt wurde Ort wurde begonnen, und so wurde aufgrund der Amtszeit befördert.
Wayne Molina

8

Ich denke, die alten Handwerker-Slots von Lehrlingen, Gesellen und Meistern passen gut in diese Slots für Einsteiger, Junioren (oder einfach keine Vorsilbe) und Senioren.

Jemandem werden relativ einfache Aufgaben übertragen, die keine tiefgreifenden Konsequenzen haben, und seine Arbeit wird von einem Junior oder Senior überprüft. Im Laufe der Zeit erhalten sie mehr Verantwortung und werden mit komplexeren Aufgaben betraut. Dabei lernen sie die Seile.

Bei einem Nachwuchs (oder einfach nur das Entfernen von "Einstieg" / "Nachwuchs" aus dem Titel / der Beschreibung) haben Sie Ihre Ausbildung abgeschlossen und die wichtigsten Entwicklungsbereiche für Ihr Unternehmen abgedeckt, indem Sie in jeden wichtigen Bereich eingetaucht sind, so dass Sie sind vertraut mit jedem von ihnen. Sie helfen nun dabei, dem Lehrlingsäquivalent Anleitung und Anregungen zu geben, aber Ihre eigene Arbeit wird immer noch vom Meister / Senior geprüft, wenn auch möglicherweise nicht so sehr wie in Ihrer Jugendzeit.

Mit der Zeit und der Durchführung erfolgreicher Projekte werden Sie schließlich älter. Auf höchster Ebene haben Sie alles gemeistert, was in Ihrem Bereich abgedeckt ist, und zwar über den gesamten Entwicklungsprozess und alle beteiligten Tools und Technologien. Sie sind befugt, wichtige technische Entscheidungen zu treffen, und es wird erwartet, dass Sie dem Management Einblicke in den Softwareentwicklungsprozess gewähren.

Angesichts dieser Richtlinien sollten Sie also in der Lage sein, eine Person oder Position zu betrachten und zu bestimmen, in welcher der drei Klassen sie landen.


6

Es wird auf die Erwartungen des Unternehmens an den Programmierer hinauslaufen.

Wenn ich das Personalunternehmen bin und einen Einsteigerprogrammierer anstelle, weiß ich, dass diese Person so gut wie nichts weiß, und wir gehen davon aus, dass sie alles lernen muss. Wenn ich eine Senior-Person anstelle, ist diese theoretisch aus technischer Sicht autark.


4

Dies hängt streng vom Unternehmen ab. Aber die Wörter sind ziemlich offensichtlich: Einsteiger ist jemand, der gerade das Feld betritt, Junior ist jemand, der jenseits des Einsteigers ist und sich dort mit ein paar Sprachtechnologien auskennt. Senior sind diejenigen, die mehr für das Projekt verantwortlich sind und auf einer höheren Ebene sitzen. Sie können normalerweise so viel delegieren, wie sie codieren.


Ich verstehe das, aber ab wann bist du "jenseits des Einstiegs" oder "jenseits des Junior"? Wenn Sie immer lernen, sind Sie jeden Tag jenseits dessen, was Sie am Tag zuvor waren.
JD Isaacks

Der Einstieg ist einfach, aber ich suche eher nach Beispielen für Erfahrung / Wissen, die Junioren oder Senioren empfehlen.
JD Isaacks

Wie ich bereits sagte, hängt dies vom Unternehmen, dem Kontext der betreffenden Technologie / Sprachen und insbesondere der Ansichtssache ab, es sei denn, Sie sprechen von offiziellen Berufsbezeichnungen. Ich glaube nicht, dass ich mich jemals als Experte in irgendeiner Sprache bezeichnen werde, wenn ich das verdammte Ding nicht selbst geschrieben habe.
Chris

Wenn Sie sich in einem Unternehmen befinden, schauen Sie sich außerdem die Entwickler von jr, sr an und vergleichen Sie sich mit ihnen. Dies ist ein gutes Maß für den spezifischen Kontext des Unternehmens.
Chris

4

Wie die meisten gesagt haben, variiert es von Unternehmen zu Unternehmen und von Job zu Job.

Ich habe zum Beispiel einmal in einer Firma gearbeitet, die jeden, der mehr als 5 Jahre dort gearbeitet hat, als "Senior Software Engineer" bezeichnet hat. Am anderen Ende hatte ein anderer Ort, an dem ich arbeitete, sehr strenge Definitionen (und damit verbundene Gehaltsstufen).

Einige Orte können "Einsteiger" und "Junior" als dasselbe bezeichnen.

Es kann variieren basierend auf jahrelanger Erfahrung, Allgemeinwissen, spezifischem Wissen (dh Kenntnis der Merkmale einer bestimmten Sprache), Führungs- und / oder Führungserfahrung, allen Kombinationen davon und sicherlich vielem mehr.


3

Ich werde mit der wirklich einfachen Antwort hier gehen: Ältere Entwickler (im Allgemeinen) sind Leute, die den Wald vor lauter Bäumen sehen können. Sie denken über das eigentliche Problem hinaus und haben ein Verständnis dafür, welche architektonischen Veränderungen als Folge der Behebung des Problems eintreten können oder sollten.

Die meisten Software-Unternehmen, die ich gesehen habe, haben die Einsteiger, die das tägliche Programmieren übernehmen, während die erfahrenen Entwickler überwachen, was die neuen Leute tun, und die wirklich hässlichen, heiklen Probleme angehen.

Offensichtlich ist dies nur meine Meinung und keine feste Regel. YMMV.


2

Einfach ausgedrückt und aus persönlichen Beobachtungen auf Stellenausschreibungsseiten und nur in Bezug auf Erfahrungsstufen.

Eintrag = Ihr neuer wahrscheinlich Ihr erster Job.

Junior = Du bist gut, solltest aber nicht der Beste sein, außerdem hast du normalerweise weniger als 5 Jahre und mehr als 2 Jahre Erfahrung.

Senior = Sie sollen die Besten sein und mehr als 5 Jahre Erfahrung haben.


Sie haben eine Zwischenstufe verpasst.
Neolisk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.