Ich bin gespannt, ob meine aktuellen Erfahrungen als Praktikant für die aktuelle Branche repräsentativ sind.
Als Hintergrund bin ich durch den Großteil von zwei Computer-Majors und einem Mathematik-Major an einer großen Universität; Ich habe jede Klasse begeistert und alle geliebt, also würde ich gerne denken, dass ich nicht schlecht programmieren kann. Ich habe ein Praktikum bei einem der größten Software-Unternehmen absolviert und war auf halbem Weg schockiert über die außerordentlich niedrige Qualität des Codes. Kommentare gibt es nicht, es ist alles Spaghetti-Code und alles, was falsch sein könnte, ist noch schlimmer. Ich habe eine Menge Nachhilfe / TAing gemacht, also bin ich es sehr gewohnt, schlechten Code zu lesen, aber die wichtigsten Industrieprodukte, die ich gesehen habe, haben all das übertrumpft. Ich arbeite 10-12 Stunden am Tag und habe nie das Gefühl, irgendwohin zu kommen, weil es Es gibt endlose Stunden, in denen Sie versuchen, eine nicht dokumentierte API herauszufinden oder das Verhalten eines anderen Teils des (vollständig nicht dokumentierten) Produkts zu bestimmen. Ich habe bisher jeden Tag die Arbeit verlassen, um den Job zu hassen, und ich möchte unbedingt wissen, ob dies für den Rest meines Lebens geplant ist.
Habe ich für Praktika einen kurzen Strohhalm gezogen (die absurd großen Gehaltsschecks deuten darauf hin, dass es sich nicht um eine schlechte Position handelt), oder sieht die reale Welt so aus?
quelle
Antworten:
Sie nennen es aus einem bestimmten Grund die Real World ™.
99% von dem, was Sie in der realen Unternehmenswelt antreffen, werden als Mist betrachtet, und das aus gutem Grund, den ich erklären werde. Die 1%, die nicht als Mist angesehen werden, werden irgendwann Mist.
# 1 Code schreiben, # 2 ????, # 3 Profit!
Unternehmen, die als erstes existieren, um Profit zu machen, existieren nicht , um Berge von perfekt theoretisch sauber gestalteten und makellosen akademischen Codes zu generieren, die in goldenen Aufbewahrungsorten der Perfektion untergebracht sind. Nicht einmal in der Nähe, nicht einmal diejenigen, die von ihnen produzierten Quellcode verkaufen.
In der Geschäftswelt ist Code ein Mittel zum Zweck . Wenn ein Code ein Geschäftsproblem löst und mehr Geld verdient, als es kostet, ihn zu erstellen und zu warten, ist er für das Geschäft wünschenswert. Das Schreiben von Code durch Sie ist nur eine Möglichkeit für das Unternehmen, Code zu erhalten.
Theorie 0 - Übung ∞
Im Idealfall sollte die Wartung ein größeres Problem darstellen, ist es aber normalerweise nicht, da sie sich kurzfristig nicht finanziell auszahlt. Auf lange Sicht hat Software normalerweise einen relativ kurzen Lebenszyklus, insbesondere webbasierte Anwendungen. Sie werden schnell überholt und häufiger neu geschrieben.
In-House-Geschäftsanwendungen sind solche, die aufgrund vieler dynamikbasierter Gründe als endlose Zombie-Projekte angesehen werden. Diese Projekte sind tatsächlich Erfolge, die sie fortsetzen, weil sie das Geschäft weiterhin gewinnbringend machen.
In der Theorie sollten perfekt strukturierte, absolut saubere, unberührte Codebasen mit 100% Codedeckung den Unternehmen Geld sparen. In der Praxis kommt es nicht einmal annähernd zu einer Rendite, die sich rechnet.
Physik des Software-Lebenszyklus
In der Welt der Software wirkt außerdem eine überaus mächtige Entropiekraft. Es ist ein schwarzes Loch der Unvermeidlichkeit, das jede Software dazu verurteilt , zu einem großen Schlammball zu degenerieren .
Je weiter Sie von einem BBM entfernt sind , desto besser, aber jedes Softwaresystem wird irgendwann genug Zeit haben, um dorthin zu gelangen. Wie schnell Sie sich 100% Entropie nähern, hängt davon ab, wo Sie anfangen und wie schnell Sie technische Schulden machen und wie hoch die Zinsen dafür sind.
Softwaresysteme degenerieren und verrotten aufgrund von Wartung, nicht aufgrund des Fehlens. Ein seit Jahren bestehendes System, bei dem sich per Definition kein Code ändert, erfüllt alle seine Anforderungen und Ziele und ist ein Erfolg.
Es sind die Systeme, die einen ständigen Wandel erfordern, weil sie näher an der maximalen Entropie begonnen haben. Sie werden ständig angestoßen und angestoßen, und es ist die Aufrechterhaltung , die den negativen Wandel beschleunigt.
Gut genug ist gut genug
Short-Lifecycle-Systeme wie Websites, die sich ständig ändern, profitieren nicht von einer hohen Codeabdeckung von 100% in Unit-Tests, da die Amortisationszeit zu kurz ist, um die Kosten amortisieren zu können.
Systeme mit langem Lebenszyklus wie die oben genannten internen Geschäftsanwendungen profitieren auch nicht wirklich von massiven Investitionen in 100% -Code-Coverage-Unit-Tests, da die Änderungsrate über die Laufzeit des Projekts einer Konstante nahekommt, die in a nahe Null liegt nichtlineare Mode.
Aus diesem Grund sind Pläne für das Ende der Lebensdauer wichtiger, und Ersatzsysteme sollten so geplant werden, wie sie gerade veröffentlicht werden, und nicht erst, wenn sie einige Jahre vorüber sind und nicht mehr unterstützt werden können. Daher muss ein neues System schnell eingeführt werden.
Sie unterrichten nicht über BBM, soweit ich weiß, ich habe noch nie einen CS-Absolventen getroffen, der wusste, was es war, geschweige denn, warum es passiert.
Deshalb ist gut genug gut genug , mehr oder weniger nicht.
Software Slumlords
Es gibt Immobilienslumherren aus einem bestimmten Grund, sie machen einen Gewinn mit den heruntergekommenen Barackengebäuden, die sie besitzen. Sie machen mehr Gewinn, als sie für die inkrementelle Instandhaltung des heruntergekommenen Eigentums ausgeben. Wenn nicht, würden sie das Gebäude abreißen und ersetzen. Dies ist jedoch nicht der Fall, da die zusätzlichen Kosten weitaus geringer sind als die Instandsetzung oder der Austausch des gesamten Gebäudes. Es gibt auch Kunden (Mieter), die bereit sind, für heruntergekommene Immobilien zu zahlen.
Kein Gebäudeeigentümer, kein Slumherr oder kein Slumherr wird Geld für ein Grundstück ausgeben, nur weil ein akademischer Begriff der Perfektion nicht zu einem erheblichen Gewinn über den damit verbundenen Kosten führt.
Kein Kunde zahlt für Upgrades eines für ihn akzeptablen Softwaresystems. Kein Unternehmen wird Geld dafür ausgeben, nur Code zu schreiben und neu zu schreiben, ohne dass ein substantieller Gewinn erzielt wird.
Microsoft ist der dominanteste und erfolgreichste Software-Slumlord, den es gibt. Windows wurde erst vor kurzem grundlegend überarbeitet. Und sie haben immer noch nicht den gesamten Legacy-Code aus dem Kernel entfernt. Es macht für sie keinen geschäftlichen Sinn, die Menschen sind mehr als bereit, die niedrigen Erwartungen zu akzeptieren, die sie sich in den letzten zehn Jahren gesetzt haben.
Prognose
Dies war ein Muster für die über 20 Jahre, in denen ich in der Softwareentwicklung tätig war. Es wird sich in naher Zukunft nicht ändern. Dies ist nicht die Art und Weise, wie die Leute wollen, dass es aus einem Glaubenssystem heraus kommt, es ist eine Realität von externen Kräften in einem Unternehmen. Unternehmen treiben die Entscheidungsfindung voran, Gewinne sind nicht schlecht, sie zahlen Ihr Gehalt, kurzfristige oder langfristige Visionen sind irrelevant. Dies ist ein kurzfristiger Wirtschaftszweig, der sich per Definition ständig ändert. Wer dagegen argumentiert, profitabel zu sein, versteht das Geschäft nicht.
Ich habe 15 Jahre lang beraten und sehr schnell gelernt, dass gut genug ist , alles andere kostet mich Geld. Ja, ich wollte, dass die Dinge perfekt sind, aber wenn Sie nicht eine Codebasis verkaufen, die 99,99999% der Zeit, in der Sie eine Lösung verkaufen , verloren geht, haben Sie nur Ihre Zeit verschwendet, die Ihnen niemals erstattet wird .
Fortschritt und Hoffnung
Agile Methoden sind zumindest philosophisch ein guter Schritt in die richtige Richtung. Sie begegnen dem Chaos und dem ständigen Wandel als erstklassiger Bürger und akzeptieren es. Sie lehnen dogmatische Praktiken ab und erkennen an, dass sich die Methoden und Praktiken sowie die Anforderungen und Technologien ändern sollten.
Sie akzeptieren die Entropie, die durch Zeitmangel oder veränderte Anforderungen, veränderte Mitarbeiter und die Lebendigkeit eines Softwaresystems mit dem Konzept der technischen Verschuldung eingeführt wird.
Aber Agile ist kein Allheilmittel, es wird die grundlegenden Gesetze der Physik nicht ändern und Code-Basen werden trotzdem verrotten. Es ist Sache des Managements, den Umgang mit der Fäule zu planen, bevor sie völlig außer Kontrolle gerät und nicht mehr zu bewältigen ist.
Agil, wenn es richtig gemacht wird, hilft es, die Entropie zu verwalten, zu verlangsamen, zu verfolgen, zu messen und auf geplante Weise damit umzugehen. Es wird es nicht aufhalten!
Berufliche Entscheidung
Wenn dies ein echtes philosophisches Problem für Sie ist, sollten Sie wahrscheinlich andere Berufswahlen in Betracht ziehen, da die Art und Weise, wie die Dinge funktionieren, einen stichhaltigen geschäftlichen Wert hat. Open Source-Projekte haben keine bessere Erfolgsbilanz und in vielen Fällen ist der Code sogar schlechter als die meisten Unternehmenscodes, die ich gesehen habe.
quelle
Nein ist es nicht. Es ist repräsentativ für Ihr Karrierelevel und Ihre Erfahrung. Es ist alles Teil des Lernens darüber, wie Unternehmen unter dem Gesichtspunkt der internen Qualitätskontrolle arbeiten.
Ihre Fähigkeiten, Ihre Erfahrung und Ihre Ausbildung haben keinen Einfluss auf die Qualität der von anderen geleisteten Arbeit. Einfach, weil Sie nicht die Berechtigung haben, diese Praktiken zu ändern. Es ist egal, ob Sie gut oder schlecht an der Universität waren. Daran ändert sich nichts, wie das Unternehmen, für das Sie arbeiten, derzeit arbeitet. Also, obwohl es großartig ist, haben Sie all diesen Hintergrund. Es ist wirklich zu Ihrem eigenen Vorteil und nicht zu ihrem. Deshalb ist es wichtig zu lernen, was du liebst.
Was ich in meiner langjährigen Programmierung gelernt habe, ist, dass es einen Unterschied zwischen "Codequalität" und "akzeptablem Code" gibt. Die Wahrheit ist, dass entweder jemand mit Autorität den Quellcode in einem akzeptablen Zustand findet, oder er findet ihn inakzeptabel, aber notwendig. Es wäre schön, wenn wir alle die Projekte bereinigen könnten, an denen wir beteiligt sind. Oftmals liegt es nicht im Interesse oder Budget des Unternehmens, Ressourcen für diese Arbeit bereitzustellen. Es können logische Argumente vorgebracht werden, bis am nächsten Tag die Sonne aufgeht, weshalb dies behoben werden sollte. Wenn das Management jedoch entschieden hat, dass der aktuelle Status "akzeptabel" ist, kann wenig unternommen werden. Es hängt alles direkt davon ab, wer die Dinge regiert. Entweder legen sie Wert auf eine gute interne Qualität oder sie tun dies nicht. Sie schätzen es eindeutig und daher stört Sie dieser aktuelle Zustand.
Beispiele für diese Art von Problemen finden Sie in jeder Branche, die auf interne Qualitätskontrollen angewiesen ist. Von der Softwareentwicklung bis zur Fertigung. Sie müssen lernen, dies nicht als Problem zu sehen, sondern einfach als den aktuellen Zustand ihres Quellcodes. So ist es, es dauert X Minuten, um etwas zu finden, es dauert X Minuten, um etwas zu reparieren.
Das Geschäft kümmert sich entweder nicht um diese zusätzliche Zeit, oder es findet sie akzeptabel.
Warum war es für Sie akzeptabel, lange Stunden an der Universität zu verbringen, um ein Fach zu studieren, aber jetzt ist es nicht akzeptabel, lange Stunden zu investieren, um Quellcode zu studieren? Ich bin sicher, der Grund, warum der Arbeitgeber Sie eingestellt hat, war, dass sie dachten, Sie könnten damit umgehen.
Lassen Sie sich von mir beraten. Gute Entwickler wissen, wann sie ihre nachfolgenden Teamkollegen um Hilfe bitten müssen. Denken Sie nicht, dass die Antworten immer im Code sind. Ich habe mir stundenlange Zeit gespart, indem ich einfach ein paar Fragen gestellt habe. Klingt so, als bräuchten Sie Hilfe, um auf den neuesten Stand zu kommen.
Zweitens kennen wir die Arbeitsbedingungen nicht. Lange Arbeitszeiten gehören in so vielen Branchen zum Alltag. Das musst du alleine lösen, aber ich kann es dir sagen. Deinen Job zu hassen ist niemals ein gutes Zeichen. Sie sollten sich mit diesem Gefühl auseinandersetzen und der Wurzel auf den Grund gehen. Es tut mir leid, dass Sie diese Erfahrung negativ finden.
Du warst in der Schule sehr gut, aber jetzt hast du ein Praktikum und es geht dir nicht so gut. Klingt, als wärst du schon in der realen Welt. Das ist ein Teil des Lebens. Die Frage ist, was wirst du dagegen tun? Das ist das Einzige, worauf es ankommt, mein Freund. Wir können Ihnen nicht sagen, was Sie tun sollen. Sie müssen sich selbst entscheiden.
Ich kann Ihnen sagen, dass es so klingt, als ob Ihre Erfahrung in Ihrem Alter weitaus besser war als alle Gelegenheiten, die ich hatte. Das Leben in den 90ern war für mich ein Kampf, die Miete zu zahlen und meinen nächsten Vertrag zu finden. Betrachten Sie sich als glücklich.
quelle
Nach 25 Jahren und einer Vielzahl von Unternehmen und Branchen kann ich sagen:
Ja, das ist ziemlich häufig.
Das ist der Grund, warum Ingenieure in der Regel ziemlich gut bezahlt werden. Sie müssen in der Lage sein, auf unordentliche Hodge-Pods zu stoßen und dennoch Änderungen vornehmen zu können, während sie dem dringenden Wunsch widerstehen, das ganze verdammte Ding umzugestalten und herauszufinden, was zum Teufel es eigentlich sein soll tun. Ich habe die Emotionen für dich da reingeworfen - es ist normal, dass du so über den Code denkst, auf den du stößt!
Der Code, den Sie sehen, hat oft endlose Iterationen von verschiedenen Programmierern mit unterschiedlichen Ansätzen und Standards und unterschiedlichen Namenskonventionen usw. usw. durchlaufen.
Was aber passiert, ist, dass der Druck immer an ist. Es ist immer wieder verlockend zu beschreiben, wie und warum langfristig besserer Code der einzige Weg ist, aber in vielen Jobs tickt die Uhr nach einer kurzfristigen Lösung für schnelle Fehlerbehebungen. Es dauert nur ein Ingenieur eine kurze Zeit, um Standards in einem Projekt zu zerstören. Man braucht einen sehr guten Manager, der weiß, wie man dies verhindert und den richtigen Ansatz verteidigt (wenn dies vernünftigerweise möglich ist), um es wirklich anzugehen.
Eines ist sicher, der Begriff "guter Code" ist einfach zu subjektiv, um nützlich zu sein. Es ist natürlich nicht subjektiv für Sie, Sie können die spezifischen Gründe / Elemente auflisten. Andere Personen listen jedoch andere Punkte und Prioritäten auf, von denen einige nicht einmal technisch sind und die sie für wichtig halten, und daher ist dies subjektiv.
Wie bei Drekka klingt dies bedrückend. Lassen Sie mich versuchen, ein bisschen positiver zu werden, denn es ist sicher richtig, dass:
Schließlich gibt es, wie Anthony Blake betont, immer drei Faktoren: Zeit, Kosten und Qualität.
Ich mag den verwandten Ausdruck: "pick 2" !
quelle
Es gibt viele Meinungen dazu, weil alle Erfahrungen unterschiedlich sind.
Meins ist, dass ungefähr die Hälfte der Entwickler, denen ich begegne, gut gemeinte, aber durchschnittlich begabte Entwickler sind. Es gibt eine kleine Gruppe brillanter Leute an der Spitze und eine kleine Gruppe an der Unterseite, die es versuchen, aber im Grunde genommen etwas anderes tun sollten, weil sie es nicht wirklich verstehen. Leider gibt es auch eine kleine Gruppe inkompetenter Dummköpfe, die denken, dass sie viel schlauer sind als alle anderen und sich normalerweise ziemlich darüber im Klaren sind, wie Sie ihnen folgen sollten.
In Bezug auf das Projekt habe ich viele Jobs in Anspruch genommen und wurde sofort gebeten, ein etabliertes Projekt zu "betreuen", normalerweise eines, das das Unternehmen gerade erst entdeckt hat, nachdem es den letzten Entwickler verloren hat. Normalerweise finde ich genau das, was Sie oben skizziert haben - undokumentierte, überentwickelte, fehlerhafte Spaghetti. Manchmal kann ich das Problem beheben, manchmal fange ich einfach wieder von vorne an. Es muss nicht einmal alter Code sein, das habe ich auch bei neuen Projekten festgestellt, bei denen ich um "Hilfe" gebeten wurde.
Man muss sich die Tatsache zu Herzen nehmen, dass die meisten Unternehmen Praktikanten die beschissenen Jobs geben werden. Die lustigen kommen, nachdem Sie zwei Dinge getan haben: 1 - haben sich bewährt und 2 - haben sich etwas Zeit gelassen, um an anderen Dingen zu arbeiten, als die Fehler anderer zu beheben. Mit anderen Worten, Sie müssen Können und Initiative zeigen.
Der eigentliche Trick beim Umgang mit schlechtem Code besteht darin, herauszufinden, was sich retten lässt und was nicht. Das kommt aus Erfahrung und Forschung.
Die andere Karrieremöglichkeit besteht darin, nicht mehr für etablierte Unternehmen zu arbeiten und in Startups zu arbeiten. Dann muss kein veralteter Code mehr gepflegt werden, sodass Sie die Möglichkeit haben, etwas Besseres zu erstellen. Der Nachteil ist, dass der Druck auf Startup-Projekte oft dazu führt, dass Verknüpfungen und Hacks verwendet werden, wenn dies nicht der Fall sein sollte.
Programmierer sind allzu oft bereit, technische Schulden aufzunehmen, um frühzeitig oder pünktlich zu liefern. Leider wird die Auswirkung dieser technischen Schulden von den Entwicklern und dem Management oft beschönigt, minimiert, ignoriert oder verworfen, bis es zu spät ist und sie in Schwierigkeiten sind.
Tut mir leid, wenn das deprimierend klingt. Ich bin sicher, dass jemand anderes einen positiveren Beitrag leisten kann. :-)
quelle
Hier gibt es einige gute Antworten, aber lassen Sie mich noch etwas hinzufügen.
Willkommen in der realen Welt - das ist leider sehr verbreitet.
Beziehen Sie sich auf das Diagramm unten;
Mit Unternehmenssoftware können Sie nur 2 oder die oben genannten auswählen, und Sie müssen eine opfern.
Wie Sie anscheinend festgestellt haben, hängt der Großteil der Unternehmenswelt von Geschwindigkeit und Preis ab.
quelle
Nicht ganz aussagekräftig für die Branche, aber aufgrund meiner begrenzten Erfahrung von mehr als 5 Jahren. Ich würde Ihr Praktikum durcharbeiten und so viele Lektionen wie möglich aus der Erfahrung ziehen. Achten Sie auf Kennzeichen und Indikatoren. Zum Beispiel müssen Sie für Ihre nächste Position ohne Zweifel eine Reihe von Interviews durchlaufen. Dieser Prozess verläuft in beide Richtungen und gibt Ihnen die Möglichkeit, ein Gefühl für ein Unternehmen zu bekommen. Dies ist äußerst wichtig und wird wahrscheinlich zu Ihrem eigenen Glück und Wohlbefinden führen.
Um es zusammenzufassen, erkennen Sie die Schilder mit den Geschichten.
Also lebe und lerne und denke über deine nächste Rolle nach. Schlechte Erfahrungen zu machen ist nicht so schlimm, weil Sie besser über die Welt der Arbeit und des Geschäfts informiert sind.
quelle
Nun, ich bin gerade in meinem zweiten Jahrzehnt im Geschäft und ich kann Ihnen sagen, dass perfekter sauberer Code sehr selten vorkommt, und wenn es passiert, bleibt es nicht lange so. Im Großen und Ganzen werden Sie ständig versuchen, die Fehler der Vergangenheit zu reparieren, während Sie (traurigerweise) durch zeitliche Einschränkungen und schlechte Führung gezwungen sind, die Fehler der Gegenwart zu begehen.
Sofern Sie nicht in einer ganz bestimmten Art von Software tätig sind, hat der Druck, ein funktionsfähiges Produkt herauszubringen, Vorrang vor allen anderen Bedenken, und eine Optimierung über einen bestimmten Punkt hinaus wird als sinnlos angesehen. Wenn das Programm in 5 Minuten ausgeführt wird und es nur in 5 Minuten ausgeführt werden muss, wird Ihnen niemand ein paar Wochen Zeit geben, um die Laufzeit auf 2 Minuten zu verkürzen.
Wenn Sie durch ein Wunder das perfekte Zusammentreffen von kompetentem Management, klarem Ziel, Geld, Talent und Zeit haben und ein sauberes, überragendes Produkt produzieren ... Die einzige Möglichkeit, wie dies bleibt, ist, wenn Sie es nie berühren es wieder . Wartung und Erweiterung haben fast immer eine sehr niedrige Priorität, Änderungen sind immer ohne Vorankündigung erforderlich und werden fehlerhaft behandelt.
Ich habe gestern über dieses eine Projekt nachgedacht. Es war ein so offensichtlicher Wunschtraum für mich, dass ich ein wirklich minimal funktionales Stück Müll aus der Tür hüpfte. Ich betrachtete es als Zeit- und Ressourcenverschwendung.
Nun, Überraschung, Überraschung, alle haben es geliebt und es hat gut geklappt. Also bin ich zurück zum Zeichenbrett gesprungen und habe es richtig gemacht. Und die neue Version war unglaublich! Aber dann gab es einen Umsatz im Management und das Ganze wurde zugunsten einer "neuen Geschäftsrichtung" gestrichen.
Die zweite Iteration hatte eine wirklich halbherzige Implementierung innerhalb des Unternehmens, und ich habe nie etwas anderes davon gehört, was amüsant ist, weil ich weiß, dass mindestens ~ 10 Unternehmenseinheiten sie noch verwenden (die Software, die wir für die Arbeit beauftragen ist fast 2 Jahre hinter dem Zeitplan) und anscheinend bricht es nie.
Dies bringt uns zu meinem letzten Punkt. Selbst wenn Sie etwas Wunderbares hervorbringen, bedeutet die Tatsache, dass es so gut funktioniert, dass NIEMAND damit ein bisschen vertraut ist, und wenn es kaputt geht (normalerweise, weil sie etwas Dummes getan haben), verfluchen sie Ihren Namen schlimmer als sie Verfluche jemals den Idioten, der das Ding geschrieben hat, das jeden dritten Dienstag kaputt geht.
quelle
Es ist schwer zu sagen, was Sie für einen schrecklich schlechten Code halten, aber ja, einige Programmierer sind (per Definition) sehr gut. Während sich Software weiterentwickelt, machen die Menschen Fehler. Mit der Zeit bauen sich diese auf, und der Geschäftsdruck (und die Faulheit / Ignoranz der Programmierer) machen das Refactoring ... ungewöhnlich.
quelle
Ich kann nicht wirklich für alle sprechen, aber hier ist, was ich sagen kann.
Ich habe über 30 Jahre auf dem Gebiet nicht gearbeitet, aber ich habe genug gesehen, um ein paar Dinge zu sagen. Ein Projekt hat ein Leben wie ein Mensch. Das anfängliche Design entspricht möglicherweise nicht den aktuellen Anforderungen für beispielsweise ein Projekt nach 20 Jahren Entwicklungszeit. Das heißt, in dieser Zeit haben viele Leute den Code geändert und Dinge hinzugefügt, die anfangs nicht möglich waren.
Es ist nicht wirklich schwer, sich hässlichen Code für ältere oder veraltete Projekte vorzustellen. Wir können nicht erwarten, dass jeder die ersten Entwürfe vollständig versteht. Es ist traurig, aber so ist es.
Das heißt, Sie müssen bedenken, dass das Refactoring eines Legacy-Projekts nicht immer möglich und manchmal sogar nicht erwünscht ist. Ich arbeitete in einer Firma, in der sie den Ersatz für das Projekt entwickelten, an dem ich arbeitete. Ich durfte mein Projekt nicht zu sehr umgestalten, weil ich befürchtete, dass es besser funktionieren würde als das neue Projekt. Ich bin mir ziemlich sicher, dass dieses Projekt auf keinen Fall besser funktionieren kann als ein neues. der Satz war ein bisschen wie "Mach es nicht besser, lass es einfach funktionieren".
Irgendwann werden Sie so ein Projekt nicht mehr oft haben, da ich oft lese und zuhöre. Sie sollten versuchen, Arbeit mit Startups zu finden, anstatt mit großen Unternehmen. Startups sind sehr interessant und man kann irgendwann schnell weitermachen, wenn man sieht, dass es nicht so läuft, wie man es möchte.
Auch eine Sache, die Sie tun können, ich verspreche wirklich nichts, aber wenn Sie der Meinung sind, der Code ist wirklich so schlecht und muss überarbeitet werden. Teile es mit dem Team. Denken Sie daran, dass die Leute, die diesen hässlichen Code geschrieben haben, möglicherweise mit Ihnen zusammenarbeiten. Es geht nicht darum, das Gefühl der Leute zu verletzen, aber wenn Sie sehen, dass das Projekt, an dem Sie arbeiten, nach einiger Zeit zusammenbricht und die Leute mehr Zeit damit verbringen, zu verstehen, was es tut, anstatt es zu verbessern. Es ist besser, das Problem anzusprechen und mitzuteilen, als es für sich zu behalten. Wenn Sie das Glück haben, können Sie das Projekt möglicherweise umgestalten.
Wenn Sie am Ende das Projekt umgestalten, könnten Sie die Person sein, auf die wegen schlechter Designentscheidungen hingewiesen wird! Und dann verstehen Sie vielleicht, warum Refactoring nicht so häufig vorkommt. Hoffentlich wird niemand darauf hingewiesen, wenn das gesamte Team umgestalten muss. Sie werden einfach alle feuern =)
quelle
Ich würde versuchen, die Antwort auf diese Fragen mit einem einfachen Zitat zusammenzufassen:
All code turns to crap given enough time and hands.
Der Rest sind nur Geschichten ...
quelle
Die Codequalität hängt hauptsächlich von zwei Faktoren ab.
An erster Stelle steht immer Geld. Unternehmen mit hohem Überlebensdruck zahlen in der Regel niedrige Löhne, beschäftigen weniger erfahrene Entwickler, haben enge Zeitpläne und weder Zeit noch Geld, um ihre Entwickler optimal einzusetzen.
An zweiter Stelle stehen die Menschen. Zunächst müssen sich diejenigen, die sich für ein Budget entscheiden, für Ausgaben in Codequalität entscheiden, dann müssen sie Leute einbeziehen, die es "leben" wollen. Wie Sie sich vorstellen können, könnte es sich als schwierig herausstellen, einen gut bezahlten, 50 Jahre alten Delphi-Programmierer von oben nach unten (leider ohne Stereotypisierungsabsicht) in einen aktuellen Java-Entwickler umzuwandeln, der CI-Builds und -Produktionen ausführt lose gekoppelter Code. Viele Entwickler haben eine Abneigung gegen Lektionen von (vielleicht jüngeren) Kollegen, sie mögen es nicht, wenn jemand in ihrem Teich fischt - oder ihren Thron rüttelt.
Vor diesem Hintergrund und angesichts der Tatsache, dass Sie Legacy-Code in jedem Unternehmen haben, würde ich sagen, dass Sie im wirklichen Leben eine Menge davon haben. Was Sie tun könnten, ist sich wie ein Pfadfinder zu benehmen: Gehen Sie in den Wald, heben Sie Müll auf und säubern Sie ihn. Das nächste Mal müssen Sie weniger Probleme haben.
quelle
Willkommen bei Code mit einem Budget! Es ist ein großer Unterschied, wenn das Management die Entwicklung vorantreibt, zu früh, ohne Planung und mit Abstrichen zu arbeiten. Ich hatte eine ähnliche Erfahrung mit einem Schock in der realen Welt, als ich meinen ersten Programmierjob am College bekam. Keine Dokumentation! Im Laufe der Zeit habe ich viel Zeit gelernt. Das Schreiben und Aktualisieren der offiziellen Dokumentation ist reine Zeitverschwendung. Zum Glück war das ein großartiges Team. Es wurde von einem Mann geleitet, der wusste, was er tat, und den anderen Teammitgliedern war es sehr wichtig, Code richtig zu schreiben. Seitdem sind meine Erfahrungen ähnlich wie deine. Viele schreckliche Codes, viele schlechte Codes, viele ahnungslose "Entwickler". Für jeden guten Entwickler scheint es 100 schlechte zu geben.
Sie sind nicht dazu verdammt, Ihren Job für immer zu hassen. Man muss nur ein Unternehmen finden, das klug genug ist, um langfristige Vorteile zu erkennen, die bereit sind, im Voraus ein wenig zu investieren. Ich habe es geschafft, zu beweisen, dass es von Vorteil ist, die Dinge richtig zu machen, anstatt auf dem schnellsten Weg. In den Unternehmen, in denen ich gearbeitet habe, wurde ich dafür sehr respektiert und vertraut. Im Laufe der Zeit ist der Spaghetti-Code festgelegt oder veraltet und Ihr Code übernimmt. Seien Sie einfach bereit, Kompromisse einzugehen. Manchmal ist die coolste oder robusteste Art, etwas zu programmieren, einfach übertrieben und es ist in Ordnung, es schnell und schmutzig zu machen.
quelle
Nicht alle Unternehmen sind gleich. In den meisten Unternehmen gibt es beschissene Teams und beschissene Software-Codebasen. Sie können aber auch großartige Teams und großartige Codebasen finden.
Ich denke, die Leute von Solaris haben eine sehr gute und ehrliche Beschreibung der Codebasen gemacht, die in großen Unternehmen zu finden sind: http://hub.opensolaris.org/bin/view/Community+Group+on/dev_solaris
Nein, ich programmiere seit mehr als 15 Jahren und ich liebe es immer noch.
Das heißt nicht, dass alles perfekt war. Ich habe einige schreckliche Codebasen gesehen und auch einige großartige. Der Trick ist, den richtigen Ort für Sie zu finden.
Ein großes Unternehmen unterscheidet sich stark von einem kleinen. Innerhalb desselben Firmenteams ist A manchmal ganz anders als Team B. Finden Sie das Team, das die richtige Balance für Sie hat (z. B. herausfordernde Projekte, eine Kultur, die Ihnen Spaß macht, gute Bezahlung usw.).
Viel Glück!
quelle
Ich habe ähnliche Dinge gesehen wie Sie. Ich habe zwei Erfahrungen von Fällen, in denen es auftritt.
Es ist traurig, aber so ist es an manchen Stellen.
Sehen Sie nach, ob Sie eine kleine Änderung zum Besseren vornehmen, sich daran gewöhnen oder zu einem anderen Unternehmen wechseln können, und fragen Sie beim Interview nach einem Code :-)
quelle
Dies wird eine kurze Antwort sein.
Bildung ist sehr nützlich, damit Sie sich qualifiziert und idealistisch fühlen. Dies ist eine gute Sache, und Sie sollten versuchen, am Idealismus festzuhalten.
Wenn Sie überhaupt objektiv sind und in Zukunft auf Ihre eigene Arbeit zurückblicken können, wird dies keine sehr erfüllende Erfahrung sein. Wenn Sie sich nicht selbst anlügen oder nichts lernen, werden Sie viele Möglichkeiten finden, das zu verbessern, was Sie getan haben.
Im Allgemeinen tut dies die ganze Welt um Sie herum. Wenn Sie also Arbeiten aus der Vergangenheit betrachten, abgesehen von Ausnahmen, werden sie minderwertig und verbesserungsbedürftig erscheinen. Wenn Sie sich nicht so fühlen, bedeutet dies, dass Sie die falsche Arbeit verrichten oder zu gut bezahlen.
Die gute Nachricht ist, dass Sie von den Fehlern anderer und vom Vergleich mit der Vergangenheit profitieren können. Wenn alle Anwendungen gut funktionieren und einfach zu warten sind, sind keine neuen Entwickler erforderlich. Meiner Meinung nach ist die Wartung einiger anderer Entwickler eine nützliche Lernerfahrung und sollte ein obligatorisches Schulungselement für alle Entwickler von Blue Sky sein.
quelle
Ihre negative Erfahrung ist allzu typisch für große, bekannte Markenunternehmen, mit denen viele Entwickler vorsichtiger und ängstlicher umgehen lernen als beim ersten Mal, als sie die Gelegenheit hatten, bei einem dieser Unternehmen zu arbeiten. Grundsätzlich gilt: Je mehr Führungsebenen Sie haben, desto mehr Mittelmäßigkeit wird befürwortet. Middle-Manager berichten nicht an Upper-Manager über die Qualität des Codes. Sie berichten über Funktionen, die in X-Zeit geliefert wurden, und geben Powerpoint-Präsentationen über die neato UI-Funktion, von der sie hoffen, dass sie gerade lange genug funktioniert, um sie durchzuhalten. Wenn ein Monat später alles in sich zusammenbricht, ist das normalerweise das Problem eines anderen und er weiß es.
Also ja, die Entwickler, die an solchen Orten Lifers sind, neigen dazu, sich nicht allzu sehr darum zu kümmern. Sie könnten dort nicht überleben, wenn sie es tun würden. Ich habe von Silicon Valley gehört, dass du für einen der großen Namen arbeiten solltest, wenn du faul sein willst. Wenn Sie aufregende Arbeit suchen, suchen Sie nach einem neueren Startup, das noch kein Begriff ist. Ich arbeite in Chicago und kann hier für ein ähnliches Phänomen bürgen.
In der Regel (mit vielen Ausnahmen, da bin ich mir sicher) werden Sie eine höhere Wertschätzung für Qualitätscode bei Unternehmen finden, die kleiner sind und von Personen verwaltet oder verwaltet werden, die auch weiterhin Code schreiben. Die Vergütung ist oft geringer, aber die Arbeit ist meiner Meinung nach oft viel lohnender.
Als Einsteiger-Entwickler werden Sie wahrscheinlich nicht viel Kontrolle darüber haben, für wen Sie zuerst arbeiten, aber ich werde sagen, dass es Personalvermittler und HR-Leute auf jeden Fall begeistert, wenn Sie ein Jahr oder länger einen großen Namen in Ihrem Lebenslauf haben. Außerdem können Sie lernen, dass Sie in den ersten sechs Monaten nicht lernen würden, für jemanden zu arbeiten, der völlig schrecklich ist, und Sie erhalten einen besseren Überblick darüber, welche Best Practices tatsächlich wichtig sind und warum und welche nur technisch sind. Modeerscheinungen.
Und natürlich werden Sie bei der Arbeit mit den gängigsten Unternehmenstools feststellen, dass das mittlere Talentniveau ziemlich mies sein wird. Wenn Ihre Grundkenntnisse eine Kombination aus Java und C # sind, erweitern Sie Ihren Horizont ein wenig. Vielleicht finden Sie eine glücklichere Nische beim Schreiben von Erlang oder Python oder: o JavaScript.
Und lassen Sie sich von niemandem etwas anderes erzählen. Sie haben vielleicht keine Wahl, wie Sie vorgehen sollen, aber Mistcode ist! @ # $ Ing teuer.
quelle
Ihre Frage konzentrierte sich auf Praktika. Ich hatte noch nie einen Programmierer, sondern war Praktikant bei einem Radiosender, was hier nicht wirklich zutreffend ist.
Ihre Frage erwähnte auch Ihre Erfahrungen während Ihres Praktikums. Ihre Praktikumserfahrungen und die Antworten, die Sie bisher erhalten haben, fassen meine Erfahrungen nach nunmehr siebenundzwanzig Jahren Schreiben von Software (seit Mitte Juni 1985) ziemlich gut zusammen.
Ich habe es in der Schule nie wirklich geglaubt, als unsere Lehrer sagten, es gäbe mehr Denken als Code zu schreiben. Sie hatten Recht. Und wenn Sie versuchen, den Code eines anderen herauszufinden, ist dies ohne Kommentare schlimmer und mit Kommentaren fast genauso schlimm. Versuchen Sie, ein hausgemachtes kommunales Steuersystem aufrechtzuerhalten, das keine Kommentare, keine Dokumentation, keine formale Erstellung und keine Quellcode-Kontrolle enthält.
Wann immer Sie gut abschneiden können, ohne dass dies eine direkte Verletzung von Standardaufträgen darstellt, dann tun Sie es gut. Denken Sie immer daran, es ist einfacher, sich für das zu entschuldigen, wozu Sie nicht um Erlaubnis gebeten haben, als die Erlaubnis nicht erteilt zu bekommen und gegen eine direkte Anweisung zu verstoßen.
Vergessen Sie nicht die Standards, die Sie in der Schule unterrichtet wurden. Sie sind nicht nutzlos, aber höchstwahrscheinlich sind diese Standards die Asymptoten in den Kalkülgrenzen. Sie können immer versuchen, sich ihnen zu nähern, aber möglicherweise erreichen Sie nie ihren Wert.
Viel Glück.
quelle