Frage:
Was ist der Unterschied im Code zwischen einem Junior- und einem professionellen Java-Mitarbeiter?
Jack Twain
2014-12-03 22:19:16 UTC
view on stackexchange narkive permalink

Ich bin ein Masterstudent in CS an einer deutschen Uni und werde bald meinen Abschluss machen und nach Jobs suchen. Ich bin ein sehr erfahrener Java-Programmierer (glaube ich). Ich habe einige Projekte für den persönlichen Gebrauch und den Uni-Kurs gebaut. Als ich anfing, nach Jobs zu suchen, erzählten mir die Leute über das Internet, dass Erfahrungen, die ich aus meinen persönlichen und Uni-Projekten gemacht habe, nicht als Berufserfahrung gelten. Das schockierte mich tatsächlich und machte mich sehr neugierig, wie sich der Code zwischen einem Junior und einem professionellen Java-Entwickler unterscheiden würde, der beispielsweise über 3 Jahre Erfahrung in der Branche verfügt.

Meine Fragen:

1- Können Sie mir einige Beispiele mit Java-Code geben, um den Unterschied zwischen einem Junior- und einem professionellen Java-Entwickler aufzuzeigen?

2 - Gibt es andere Faktoren, die jemanden jünger / erfahren machen als Code?!

Haben Sie jemals ein Praktikum oder eine andere Berufserfahrung in Ihrem Leben gemacht?
Aber es ist nicht nur eine Java-Sache. Sie haben auch noch keine Berufserfahrung und beginnen in der Regel in einer sogenannten Junior-Position. Wenn Sie ein guter Programmierer und Arbeiter sind, werden Sie durch die Reihen aufsteigen.
@JBKing nein, ich habe nie ein Praktikum oder eine Berufserfahrung gemacht. Ich habe erst mit 16 Jahren einige freiberufliche Webdesign-Projekte durchgeführt. Aber das zählt wohl nicht.
@JackTwain In anderen Ländern mag es anders sein, aber in den USA lehrt Sie die Universität nicht, wie man reale, geschäftskritische Anwendungen entwickelt. Sie führen Sie in die Grundlagen ein, vermitteln jedoch häufig nicht einmal einige der grundlegenderen Aspekte der beruflichen Entwicklung, wie das Verwalten mehrerer Umgebungen (Entwicklung, Staging, Produktion), Codeüberprüfungen, Quellcodeverwaltung und mehr als ein paar Wochen Teamarbeit. Büropolitik, Verschiebung von Prioritäten, Scope Creep usw. Die reale Welt ist ein ganz anderer Ort als die Universität.
Sogar der Codierungsteil ist sehr unterschiedlich, wenn Sie eine Änderung in einer Codebasis mit einer Million Zeilen vornehmen und sicherstellen, dass Sie nichts kaputt machen (einschließlich Hinzufügen von Fehlern, Verstoß gegen Stilrichtlinien, Untergraben der Architektur ...) und dies zukünftige Entwickler tun werden Verstehe es und füge einen 12-zeiligen Kommentar ein, in dem erklärt wird, wer welche Entscheidung getroffen hat, die zu der auf den ersten Blick falschen Änderung geführt hat, die du gerade vorgenommen hast.
Dies gehört den Programmierern, nicht dem Arbeitsplatz
Ich bin ein Entwickler mit ein paar Jahren Erfahrung. Um ganz ehrlich zu sein, war das meiste, was ich im College gelernt habe, ziemlich nutzlos. Ich musste tatsächlich eine ganze Reihe von Gewohnheiten, Praktiken und Denkweisen * verlernen *, die ich in der Schule und bei persönlichen Projekten gelernt hatte. Für mich war der Unterschied also * enorm *. Es war schockierend für mich, wie falsch ich lag.
Es ist einfach so viel anderes, mit einem Team an einem echten Produkt zu arbeiten, das die Leute im Gegensatz zu Solo-Haustierprojekten verwenden. Sie müssen Code schreiben, der wartbar und für andere leicht verständlich ist. Sie müssen sich mit komplexen Anforderungen, Fristen und Testmethoden auseinandersetzen, die Konsequenzen bereits ausgelieferter Entwurfsentscheidungen erkennen und die Praxis des Software-Engineerings nur allgemein verstehen !!
Siehe auch: [Perfektes Programmierersyndrom: Hybris. Am häufigsten bei Programmierern mit einheimischen Fähigkeiten, aber relativ wenig Erfahrung (insbesondere bei neuen Absolventen; * ihre Wahrnehmung kann durch eine Geschichte hervorragender Leistungen bei der Lösung von Spielzeugproblemen verzerrt sein *).] (Http://www.catb.org/jargon) /html/P/perfect-programmer-syndrome.html)
Der größte Unterschied kann sein, dass ein erfahrener Programmierer mehr Zeit damit verbringt, Architektur zu entwerfen und weniger Zeit damit, Code zu schreiben ...
Manchmal bedeutet jahrelange Erfahrung nichts. Einige Menschen haben 5 Jahre Erfahrung, andere 5 mal 1 Jahr Erfahrung. Aber ich stimme zu, dass ein frischer Student nicht die gleiche Erfahrung machen kann wie jemand, der für einige Zeit arbeitet.
In Java-Code? Zählen Sie die Anzahl der "Try-Catch" -Blöcke - der produktionsbereite Code enthält viele davon.
Aus der Antwort von atk unten. "ein Produkt auf kritische und schwer vorhersehbare Weise zu brechen". Dies ein paar Mal getan zu haben und mit dem Fallout umzugehen, ist vielleicht das Wichtigste, was mich dazu gebracht hat, wenn nicht "älter", zumindest "weniger jünger".
"Professionell" bedeutet nicht "erfahren"; es bedeutet "angestellt, um die Arbeit zu erledigen" (im Gegensatz zu einem Hobbyisten, Studenten oder Freiwilligen). Das Gegenteil von "Junior" ist "Senior", nicht "Professional". Auch 2-3 Jahre Erfahrung sind noch ziemlich jung. (Wenn das, was Sie eigentlich meinen, "gerade erst begonnen" ist, möchten Sie vielleicht stattdessen "Diplom-Entwickler" ausprobieren?)
@FreeAsInBeer: Der Grad "Real-World" -Liness mag umstritten sein, aber zumindest einige deutsche Universitäten, die ich gesehen habe, vermitteln keine "Low-Level" -Fähigkeiten wie das eigentliche Programmieren. Es liegt an den Studenten, dies rechtzeitig zu lernen (und diejenigen, die während des Studiums nicht oft in Projekten gute Leistungen erbringen können). Der Schwerpunkt des Unterrichts scheint auf allgemeinen Paradigmen, Projektorganisation, Übersetzung zwischen Kunden- und Entwicklerdenken und der Durchführung von Projekten zu liegen, während mehrere Monate mit Fremden gearbeitet wird. Es könnten eher "praktische Fähigkeiten" wie bestimmte Sprachen fehlen.
@jpmc26 - Testen, Testen, Testen. Zwei Wochen später wurde mir klar, dass ich nichts über das Entwickeln außer dem Codieren wusste.
Diese Frage scheint nicht zum Thema zu gehören, da es nicht um die Navigation am Arbeitsplatz geht
POST EINIGEN CODE! Wir werden Ihnen sagen, warum es sich um Anfängercode und nicht um Pro-Level-Code handelt. Sie haben keine Erfahrung. College-Umgebungen sind "ideal" und "akademisch" und diese Erfahrung trifft in der "realen Welt" nicht wirklich zu.
Ein Fachmann weiß, wann er nicht sprechen muss. (Ich wünschte, ich könnte sagen, ich wäre da!)
@Aleksander Das wusste ich nicht einmal. Zumindest nicht, wie * guter * Code aussah. Ich lerne noch, aber zumindest glaube ich nicht mehr an den Unsinn "Objekte sollten Objekte / Ideen der realen Welt darstellen".
@jpmc26 - Ich denke, die reale Welt ist ein guter Ausgangspunkt, um OOP zu lernen, aber wie Sie sagen, wird es veraltet, wenn Sie anfangen, ein größeres Bild zu denken.
Sieben antworten:
atk
2014-12-03 22:38:37 UTC
view on stackexchange narkive permalink

Im Allgemeinen bedeutet "Junior" weniger Erfahrung. Dies hängt nicht eng mit einer bestimmten Fähigkeit zusammen. Wie Phyrfox es ausdrückte, führt

jahrelange Erfahrung nicht zu einer Qualität des Codes, sondern wirkt sich normalerweise auf andere Nicht-Code-Fähigkeiten aus, wie z. B. Teamwork, Arbeiten unter Druck und genaue Geschäftsanforderungen usw.

Zum Beispiel, abhängig vom jeweiligen Job ...

  • Lesen des Codes anderer Personen
  • Erlernen des Produktdesigns - Manchmal, wenn keine Dokumentation vorhanden ist, sind die Dokumente falsch und / oder die Experten haben das Unternehmen verlassen.
  • Wie Patricia Shanahan in den Kommentaren erwähnt, konzentrieren sie sich auf die Dinge, die Sie wirklich lernen müssen, um mit dem Produkt produktiv zu sein Codebasis, anstatt zu versuchen, alles zu lernen, was unpraktisch ist.
  • Debuggen des Codes anderer Leute
  • Brechen eines Produkts auf eine kritische und schwer vorhersehbare Weise
  • Arbeiten Sie mit der Qualitätssicherung zusammen, um Ihren Code
  • nach den Unternehmensrichtlinien im Allgemeinen oder nach den Richtlinien dieses Unternehmens, insbesondere
  • nach einem Softwareentwicklungslebenszyklus
  • nach som Das Design eines anderen
  • macht einem Team klar, wie man etwas richtig umsetzt
  • und macht es auf die Weise des anderen, wenn sein Ansatz gewinnt
  • Interaktion mit Kunden
  • Interaktion mit dem Kundensupport
  • Akzeptieren von Entscheidungen, die aufgrund von Faktoren, die Sie einfach nicht verstehen, keinen Sinn ergeben
  • Erkennen, wann etwas wirklich ist schädlich, untersuchen, um zu verstehen, warum die Entscheidung getroffen wurde, und einen effizienteren und kostengünstigeren Weg finden, um dies zu tun (oder die Entscheidung zu realisieren, ist richtig)
  • in einem Team mit unterschiedlichen Fähigkeiten arbeiten
  • Mentoring anderer
  • , die im jeweiligen Problembereich der Anwendung arbeiten
  • Arbeiten in einem Produkt, das so groß ist wie das, an dem Sie arbeiten würden. Wie HLGEM in den Kommentaren hervorhebt, sind professionelle Bewerbungen riesig - viel, viel größer als das, woran Sie in der Schule arbeiten. Sie sind in der Regel Zehntausende von Zeilen in mittelgroßen Projekten und können in größeren Projekten Millionen von Zeilen sein.
  • kommunizieren effektiv mit nicht-technologischen Leuten
  • , die in einem Goldfischglas / einer Fischkabine arbeiten / office
  • Teamdynamik verstehen
  • Unternehmenspolitik verstehen und steuern
  • die Unternehmensziele verstehen und wie sich Ihr Job auf diese Ziele auswirkt

Es gibt noch viel mehr. Sie haben vielleicht erstaunliche Programmierkenntnisse, aber sind all diese Fähigkeiten wirklich so gut geübt?

Ich würde hinzufügen, dass Geschäftsprojekte aufgrund der enormen Menge an speziellen Anforderungen (die sich im Laufe der Zeit ansammeln) oft viel komplexer sind als Kursarbeiten oder Personalprojekte. Unsere Codebasis ist über 15 Jahre alt und enthält viele tausend Codezeilen. Sie greift auf eine Datenbank mit Hunderten von Tabellen und Millionen von Datensätzen zu. Es hat mehr funktionierende Teile, als irgendjemand in mehreren Sprachen schreiben könnte, einschließlich einiger älterer Sachen in VB6, die nie ersetzt wurden, weil es funktioniert.
Nach meiner Erfahrung als Mentor für neue Absolventen der Informatik kann eine der größten Hürden darin bestehen, an einem Programm zu arbeiten, ohne vorher das gesamte Programm zu lesen und zu verstehen.
Jahrelange Erfahrung führt nicht zur Qualität des Codes, wirkt sich jedoch normalerweise auf andere Nicht-Code-Fähigkeiten aus, z. B. Teamwork, Arbeiten unter Druck, Implementierung genauer Geschäftsanforderungen usw.
@HLGEM hat deinen Kommentar hinzugefügt :-)
@PatriciaShanahan stimmte zu. Ich denke, das sind Adressen in "Lesen der Coðe anderer Leute". Wenn Sie eine andere Möglichkeit haben, die Sie für besser halten könnten, können Sie sie gerne bearbeiten!
@phyrfox hat deinen Kommentar zur Antwort hinzugefügt ;-)
@atk Es ist völlig anders als das Lesen des Codes anderer Leute, obwohl das in der Tat wichtig ist. Stellen Sie sich einen Junior-Programmierer vor, der sich einem Programm mit einigen hunderttausend Zeilen Quellcode gegenübersieht. Einige von ihnen möchten versuchen, das Ganze zu lesen, bevor sie Änderungen vornehmen, und das ist nicht praktikabel.
@PatriciaShanahan oh! Ich glaube, ich verstehe den Unterschied, den Sie machen. Wird die Antwort momentan aktualisieren :-)
Sie sollten nicht außerhalb des Teils des Codes schauen müssen, an dem Sie arbeiten, um zu verstehen, welche Auswirkungen Ihre Änderungen auf den Rest des Programms haben können. Aber allzu oft sind Programme, die von sogenannten "Profis" geschrieben wurden, riesige Blobs eines voneinander abhängigen globalen Staates.
Und selbst wenn die Programme tatsächlich gut gestaltet sind, sind sie möglicherweise nicht so gestaltet, wie Sie es tun würden, und "fühlen" sich so an, als ob sie keinen Sinn ergeben. Es ist auch schwierig zu lernen, dass Ihre Änderungen das gleiche allgemeine Design wie der vorhandene Code widerspiegeln, unabhängig davon, wie Sie ihn entwerfen würden, wenn er neu wäre.
Kennen Sie ein Buch, das Hinweise auf die von Ihnen erwähnten praktischen Dinge geben kann? Ein Buch, das so praktisch ist, dass es lehrt, wie man Softwaresysteme in realen Projekten entwickelt.
Nein, es gibt natürlich gute Bücher über Softwareentwicklung, aber Bücher sind kein Ersatz für Erfahrung.
Selbst wenn Sie ein so perfektes Buch gefunden und alles daraus gelernt haben, ist die harte Tatsache, dass Erfahrung im Allgemeinen der einfachste Weg für Leute ist, die Ihren Lebenslauf lesen, um zu wissen, dass Sie es wissen.
Bill K
2014-12-04 03:54:42 UTC
view on stackexchange narkive permalink

Die anderen Antworten sind richtig, aber Sie haben speziell nach dem Code gefragt.

Es scheint, als würde ich alle 5-10 Jahre jeden Aspekt des Codierens vollständig verstehen und dennoch eine weitere Revolution finden. Jeder kann jedes Problem mit Code lösen, wenn er motiviert genug ist - ich habe gesehen, dass Nicht-Programmierer erstaunliche Lösungen entwickelt haben.

An diesem Punkt glaube ich, dass der Hauptunterschied darin besteht, wie viel einer solchen Codebasis zuvor hinzugefügt werden kann es schlägt fehl und muss neu geschrieben werden, und wie viel Zeit / Mühe / Geld müssen Sie für die Wartung aufwenden.

Wenn Sie in der Kompetenz steigen, sinken diese Kosten erheblich. Es ist schwierig, zuerst darauf hinzuweisen. Stellen Sie sich den Unterschied zwischen jemandem vor, der Basketball spielt und jeden auf seinem Block schlagen kann, und einem Profi-Basketballspieler - auch wenn sie so aussehen, als würden sie alles auf die gleiche Weise tun, werden Sie den Nachbarn nicht in der Nähe des Profis finden.

Es braucht mehr als nur Zeit, es braucht Erfahrung, Monate damit zu verbringen, wirklich dumme Fehler zu finden, Jahre damit, Ihren eigenen Code zu überarbeiten, um ihn zu verbessern, Konzepte zu kennen, denen Sie möglicherweise jahrelang nicht begegnen, sowie das Wissen darüber WISSEN Sie, dass ein neues Muster, von dem Sie gerade erfahren haben, nicht das gesamte System überflutet.

Möglicherweise müssen Sie eine Million kleiner Dinge wissen. Vielleicht einige Beispiele, die sich nur auf das Codieren beziehen:

  • Dunkle Muster / Werkzeuge, die zu bestimmten Szenarien passen, wie eine Statustabelle oder ein Quad-Baum für 2 Beispiele (von Tausenden) - und genau die Probleme Vereinfacht durch ihre Verwendung
  • Die Funktionsweise verknüpfter Listen, Arrays und Hashes zum Verständnis der Auswirkungen auf die Leistung.
  • Identifizieren von Redundanzen in Code, die möglicherweise überhaupt nicht ähnlich aussehen.
li> Wie man Code identifiziert, der für jemanden, der weniger versteht als Sie, schwer zu verstehen ist, und auf einen Blick verständlich macht.
  • Sie benötigen den Willen, Code zu überarbeiten, der ihn selbst angesichts von a benötigt Frist und das Wissen, einmal zu wissen, um eine Ausnahme zu machen ... für jetzt.
  • eine Million anderer kleiner Dinge
  • Spezifische Beispiele sind schwer zu nennen, es gibt verschiedene Stile und Meinungen. Hauptsächlich halte ich einen guten Programmierer für jemanden, der versteht, dass er programmiert, dass die nächste Person liest, die Maschine nicht zum Laufen bringt und entsprechend codiert.

    Dies. Als Profi schreiben Sie keinen Code für heute, sondern Code für nächstes Jahr (oder nächstes Jahrzehnt). Es erfordert Erfahrung, Code zu schreiben, der die Kosten für Änderungen auf der ganzen Linie minimiert. Je länger Sie daran arbeiten, desto besser werden Sie (vermutlich).
    Gute Antwort. Ich möchte nur hinzufügen, dass Sie auch lernen müssen, wann Sie einen bestimmten Code loslassen müssen. Das kann sehr schwer sein.
    Roger
    2014-12-03 22:38:25 UTC
    view on stackexchange narkive permalink

    Nur die Fähigkeit, Code zu schreiben, macht Sie nicht zu einem professionellen Programmierer. Es bedeutet lediglich, dass Sie Code schreiben können. Das Schreiben kleiner Programme für sich selbst oder als Teil Ihrer Kursarbeit ist keine professionelle Arbeit. Per Definition wird ein Fachmann für seine Arbeit bezahlt. Es ist ihr Beruf. Es hat nichts mit dem Unterschied im Code zu tun, sondern mit der immateriellen Erfahrung, die sich aus der Arbeit für ein Unternehmen in einem professionellen Umfeld ergibt.

    Wie arbeiten Sie unter Druck oder unter Fristen? Wie arbeiten Sie mit anderen Menschen zusammen, nicht nur mit Kollegen und Vorgesetzten, sondern auch mit Endbenutzern und Kunden? Wie gehen Sie mit der Arbeit an Projekten mit massiven Codebasen um? Dies sind Dinge, nach denen ein potenzieller Arbeitgeber suchen wird, wenn er Ihr Erfahrungsniveau beurteilt, nicht nur, wie gut Sie programmieren können.

    Bildung kann Ihnen einige der Werkzeuge geben, um ein professioneller Programmierer zu werden, aber es ist keineswegs ein Ersatz für die Arbeit in einem Unternehmen. Es ist nichts Falsches daran, ein Junior-Entwickler für Einsteiger zu sein - wir mussten alle irgendwann dort anfangen. Aber verwechseln Sie Bildung nicht mit Erfahrung.

    "Aber verwechsle Bildung nicht mit Erfahrung" fasst es sehr gut zusammen. Außerdem wird der Unterschied in der Codierungsfähigkeit nicht in einer einzelnen Methode oder Funktion gezeigt. Es wird angezeigt, wenn Sie einen ganzen Stapel wie Symfony durcharbeiten müssen, in dem Sie nicht nur PHP codieren, sondern auch Vorlagen in Twig erstellen, Konfigurationen in YAML, Tests in Behat und PHPUnit, Abhängigkeiten mit Composer verwalten, Versionen mit Git verwalten usw.
    Stephan Kolassa
    2014-12-03 22:37:30 UTC
    view on stackexchange narkive permalink

    Ich kann nicht mit Ihrem Punkt 1 sprechen (der unter programmers.SE möglicherweise themenbezogener ist). Aber ich werde gerne auf Punkt 2 eingehen.

    Ja, neben der Codierung gibt es viele Dinge, die einen Junior von einem Senior-Entwickler unterscheiden. Nur ein paar Beispiele aus meinem Kopf:

    • Ein Großteil der Zeit eines Entwicklers wird nicht für das Hacken aufgewendet. Sie überprüfen Anforderungsdokumente (oder erstellen sogar Ihre eigenen), schreiben Story- und andere Dokumente, entwerfen (und codieren) Tests und so weiter. Aktivitäten wie diese können 90% Ihrer Zeit in Anspruch nehmen, verglichen mit 10% bei der eigentlichen Codierung. Möglicherweise haben Sie dies an der Universität gelernt oder nicht, aber wenn Sie dies getan haben, erwähnen Sie es in Ihrer Frage nicht.

    • Es sei denn, Sie arbeiten in einem sehr kleinen Unternehmen, a Entwickler werden wahrscheinlich in einem Team arbeiten, das ein kleines Scrum-Team oder Teil eines großen Teams sein kann, das über mehrere Kontinente verteilt ist. In einer solchen Umgebung müssen Sie Prozesse (verteilte Entwicklung, Code-Repositorys usw.) verstehen, und müssen Sie die Menschen verstehen und in der Lage sein, mit ihnen zu arbeiten. Dies ist normalerweise etwas, was Sie an der Universität nicht lernen. Das tägliche Programmieren von Paaren mit jemand anderem (weil auf diese Weise Wissen verbreitet wird) ist etwas anderes als ein Projekt mit denselben ein oder zwei Mitschülern.

    • Sogar Der Hacking-Teil unterscheidet sich zwischen der Universität und dem Arbeitsplatz. Zum Beispiel werden Sie irgendwann in Ihrer Karriere gebeten, einen Fehler zu beheben, den jemand anderes im unkommentierten fünf Jahre alten Spaghetti-Code eingeführt hat. Ich gehe davon aus, dass Sie so etwas an der Universität nicht gesehen haben, wo Sie wahrscheinlich keinen alten Code pflegen müssen, der von anderen Leuten erstellt wurde. Ältere Entwickler wurden bereits damit konfrontiert und haben sich damit befasst.

    Ich bin mit 10% "tatsächlicher Codierungszeit" nicht einverstanden. Wir haben ein Remote-Entwicklungsteam und bestehen zu etwa 20% aus Meetings, zu 10% aus Housekeeping, zu 40% aus Unit-Tests und Qualitätssicherung sowie zu 30% aus Produktionscode, der sich über Zehntausende von Codezeilen erstreckt, die sich über viele Jahre und Entwickler erstrecken. Ich stimme jedoch zu, dass Scrum etwas ist, das keine Schule wirklich unterrichten wird, das ist praktische Erfahrung. +1 für das Debuggen, was in vielen Fällen wichtiger ist, als Code schreiben zu können.
    @phyrfox: Ich habe vielleicht nur ein * kleines * Bit auf dem 10% tatsächlichen Codierungsteil übertrieben ...
    @phyrfox: Er schrieb * bis * 90% und das ist überhaupt keine Übertreibung. Ein Freund von mir (der in einem großen internationalen Unternehmen an einer sicherheitskritischen Firmware arbeitete) wurde einmal bei einem Bier gefragt: Mit welcher IDE schreiben sie Code? Er zögerte lange und kam schließlich zu einer Antwort: "Meistens MS Word". Jede Codeänderung musste von einem Dutzend Menschen dokumentiert, erklärt, überprüft und akzeptiert werden. Bürokratie kann manchmal so groß sein - und das nicht ohne Grund.
    Ja, ich habe einmal an einem riesigen Luft- und Raumfahrt- / Satellitenprogramm gearbeitet. Ich habe einen Fehler zugewiesen bekommen und innerhalb von Minuten nach dem Betrachten des relevanten Quellcodes einen Fix gefunden (eine wirklich, wirklich offensichtliche Änderung des einzeiligen Codes). Testebenen, Peer Review, verschiedene Ebenen von Managementgenehmigungen usw. Fast einen Monat vor dieser Änderung gelangte es in die Codebasis, selbst wenn ich meine Fehlerbehebung aktiv durch den Prozess führte (d. H. Ich bin ein Schädling).
    Dunk
    2014-12-04 04:47:07 UTC
    view on stackexchange narkive permalink

    Während andere Antworten Listen mit Fähigkeiten zu geben scheinen, die als "erfahrener" angesehen werden müssen, denke ich, dass der Unterschied viel einfacher ist.

    Alles läuft darauf hinaus, wie viel Kontrolle und Richtung Sie benötigen und wie sich diese skaliert.

    Ich werde ein Unterprodukt verwenden, um zu verhindern, dass dies softwarespezifisch ist, aber ich stelle mir ein Unterprodukt als Modul vor.

    Neue Absolventen erfordern in der Regel viel Kontrolle /Richtung. Sie müssen die Details genau lernen, wie die Dinge in diesem Unternehmen gemacht werden. Ihnen wird in der Regel genau gesagt, was sie tun müssen. Sie arbeiten in der Regel an genau definierten Teilen eines Unterprodukts.

    Etwas erfahrenere Personen, die noch jünger sind, erhalten möglicherweise ganze Unterprodukte, die genau definiert sind und unter Anleitung einer älteren Person ausgeführt werden.

    Wenn Sie etwas älter werden, haben Sie die Verantwortung, die genauen Details eines Unterprodukts zu definieren, wie sie von mehr älteren Personen mit minimalen Details definiert wurden.

    Senior und Sie Lassen Sie sich Personen zuweisen, die Ihnen bei Ihren größeren Unterprodukten helfen.

    Wenn Sie älter sind, beginnen Sie, alle verschiedenen Unterprodukte anhand einer bereits definierten Spezifikation zu identifizieren.

    Senior und Sie helfen dabei, diese Spezifikation aus vage definierten Kundenbedürfnissen zu erstellen.

    Senior und Sie suchen aktiv nach Kundenbedürfnissen, die Geld in das Unternehmen bringen. Mit anderen Worten, Sie definieren Ihre Arbeitsaufgaben.

    Im Allgemeinen läuft es auf die Erwartung hinaus, dass je älter Sie aufsteigen, desto weniger Anleitung Sie benötigen, desto größere Produkte können Sie erfolgreich abschließen und mehr Leute, die Sie leiten.

    Sie mögen also ein großartiger "was auch immer Ihre Spezialität sein" sein, aber Sie werden immer noch eine große Lernkurve haben, wie man Dinge auf "Unternehmensart" macht. Also viel Versehen. Sie müssen sich auch beweisen, bevor Sie einer genauen Prüfung unterzogen werden. Also viel Versehen. Sie werden lernen, dass Techniken und Praktiken, die sich hervorragend für kleinere Projekte eignen, nicht gut skaliert werden können, wenn die Dinge größer werden. Somit eine größere Lernkurve als Sie vielleicht denken. Sie haben also eine ganze Reihe von Aufgaben, wodurch Sie weniger effizient sind als jemand, der mehr Erfahrung hat. Selbst wenn Sie ein großartiger "was auch immer Ihre Spezialität" für einen College-Studenten sind, wenn Sie einige Jahre lang nicht 8-9 Stunden am Tag damit verbracht haben, diese Fähigkeiten zu üben und anzuwenden, sind Sie bei weitem nicht so gut, wie Sie denken, dass Sie es sind. Egal wie schlau Sie auch sein mögen.

    Insbesondere für Software können Sie kein Codebeispiel angeben und die Unterschiede aufzeigen, da es sich um das gesamte System und nicht nur um die Codefragmente handelt. Es ist möglicherweise besser, darauf hinzuweisen, was wahrscheinlich passieren wird, wenn ein neuer Absolvent / Junior-Entwickler nicht die richtige Aufsicht erhält. Die 2 häufigsten Probleme, die ich gesehen habe, sind 1) Sie schreiben absolut großartigen Code, aber er löst das falsche Problem. 2) Sie entwickeln ein Design und einen Code, die ihrer Meinung nach viel besser sind, als es ihnen gesagt wurde. Das Problem ist, dass es nicht mit dem Rest des Systems funktioniert und daher nicht verwendet werden kann.

    Und wie viel Kontrolle und Anleitung Sie anderen bieten können. Die am höchsten bewerteten Programmierer sind diejenigen, die die meiste Zeit damit verbringen, Programmarchitekturen zu entwerfen, die dann an andere verteilt werden, um sie zu implementieren. Ihre "Programmiersprache" besteht hauptsächlich aus Abstraktionen und Ideen und Designs, und ihr "Compiler" ist die Entwicklung Team beauftragt, mit ihnen zu arbeiten. "Professioneller Java-Programmierer" ist also kein so hoher Status. "Teamleiter" ist ein Schritt nach oben und "Systemarchitekt" ein Schritt nach oben und so weiter.
    "Sie müssen genau wissen, wie die Dinge in diesem Unternehmen gemacht werden." - aber das gilt nicht ausschließlich für "neue Absolventen", sondern für alle, die neu bei "dieser Firma" sind.
    * "Senior und Sie suchen aktiv nach Kundenbedürfnissen, die Geld in das Unternehmen bringen." * Dies hängt sehr stark von der Unternehmensstruktur ab. Insbesondere in einem großen Unternehmen können Sie problemlos mit ganzen Abteilungen zusammenarbeiten, deren einziger * Zweck * darin besteht, sich um das Sammeln und Formalisieren von Anforderungen zu kümmern. Das bedeutet nicht unbedingt, dass sie Ihnen auf der Karriereleiter vorstehen, sondern nur, dass es * ihre Aufgabe * ist und sie sich auf einer * anderen * Leiter innerhalb des Unternehmens befinden.
    @keshlam:I stimme zu. Es gibt noch viel mehr, was ich hätte schreiben können, insbesondere in Bezug auf "andere führen / leiten", aber ich habe versucht, mich ein bisschen mehr auf das zu konzentrieren, was das OP meiner Meinung nach verlangt, was jemanden in Bezug auf die Nüsse älter macht als andere und Bolzen des Jobs.
    @Mapper: Es ist wahr, dass jeder lernen muss, wie die Dinge in diesem Unternehmen gemacht werden, aber ich habe mehr über den Gesamtprozess nachgedacht und nicht über die Besonderheiten der verwendeten Werkzeuge. Die meisten Senioren, die ein Unternehmen einstellen würde, haben wahrscheinlich bereits einen ähnlichen Hintergrund in Bezug auf den Prozess. Daher sollten Lehrmittel und Macken relativ schnell und nicht so zeitaufwändig sein und den Prozess "verkaufen", und warum es wichtig ist, ihn zu befolgen, sollte auch nicht zeitaufwändig sein.
    @Michael:Während es Abteilungen gibt, die einer Rolle zugeordnet sind, haben diese Abteilungen normalerweise immer noch eine ähnliche Struktur in Bezug auf den Fortschritt in dieser Abteilung. Je näher Sie der Spitze Ihrer Abteilung kommen, desto mehr werden Sie in die Definition der Arbeit Ihrer spezifischen Abteilung einbezogen und erhalten mehr Arbeit für diese Abteilung. In dieser Hinsicht könnte Ihr Kunde eine andere interne Abteilung sein. Selbst wenn ein Unternehmen über eine dedizierte Anforderungsgruppe verfügt, müssen die von ihm generierten Anforderungen in Anforderungen umgewandelt werden, die das Softwareteam implementieren kann.
    Paddy
    2014-12-04 17:20:48 UTC
    view on stackexchange narkive permalink

    Ich denke, einer der Hauptunterschiede zwischen einem Junior und einem erfahreneren Entwickler ist oft folgender:

    Ich bin ein sehr erfahrener Java-Programmierer (glaube ich).

    Ich mache diesen Job seit ungefähr 15 Jahren und was ich immer noch nicht als "sehr erfahrenen Programmierer" betrachte, auch weil sie ständig ändern, womit wir arbeiten!

    Ohne banal klingen zu wollen, habe ich mit vielen Junior-Programmierern zusammengearbeitet, die dachten, sie wüssten alles (sie haben es nicht *), und es kann einen kleinen Schritt in der Denkweise erfordern, um zu erkennen, dass es immer mehr zu lernen gibt. und was noch wichtiger ist, Sie müssen möglicherweise auch lernen, Dinge so zu tun, wie es Ihr Arbeitgeber wünscht, und nicht nur das, was Sie für das Beste halten.


    '* Um nur zu sagen, Sie haben auch funktioniert mit einer Reihe von sehr guten Nachwuchsentwicklern ...

    The Merry Misanthrope
    2014-12-04 09:47:19 UTC
    view on stackexchange narkive permalink

    Ich denke, der größte Unterschied zwischen Junior- und Senior-Entwicklern (oder Senior-Entwicklern, die etwas aus ihrer Erfahrung gelernt haben, und den vielen, die dies nicht getan haben) ist die intuitive Leichtigkeit, mit der sie die richtigen Entwurfsmuster und Best Practices der Branche identifizieren und anwenden . Wenn es um Java-Code geht, sollten Sie das hoch angesehene Buch Effective Java berücksichtigen. Ein guter Entwickler wird dieses Buch oder ähnliches gelesen und geübt haben, was es lehrt, bis es zur zweiten Natur geworden ist. Auf der anderen Seite habe ich gesehen, wie "Profis" mit CS-Abschluss Müllberge produzieren, die gegen jedes einzelne der Software-Design-Prinzipien in diesem Buch verstoßen.

    Wie andere angemerkt haben, gibt es noch mehr zu sein ein professioneller Entwickler als Codierung. Vieles davon ist Büropolitik und der Versuch, den Business Case zu finden, um die Dinge richtig zu machen. Ich kämpfe oft für Strategien, die sich auf Zeitskalen von Monaten auszahlen. Wollen wir ein Jahr damit verbringen, etwas richtig zu machen, oder wollen wir in drei Monaten einen Haufen Scheiße herausholen, es tatsächlich neun Monate dauern und dann fünf Jahre damit verbringen, es zu reparieren und Kunden die ganze Zeit zu bluten ? Ich werde nie verstehen, warum Anzüge immer auf Letzterem bestehen ...

    Wie viele Jahre Erfahrung haben Sie? Hast du auch einen CS-Abschluss?
    Ich habe ungefähr fünf Jahre Berufserfahrung und fünfzehn Jahre persönliche Erfahrung. Ich habe vor einigen Jahren mit einem CS-Abschluss angefangen, aber bis dahin war es zu weit unter mir, um meine Zeit wert zu sein. Wenn ich danach strebte, für immer für andere Menschen zu arbeiten, hätte sich das Beenden wahrscheinlich in Form eines höheren Gehalts ausgezahlt, wenn sonst nichts. Aber ich nicht.


    Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
    Loading...