it-swarm-eu.dev

Zahlt sich Handwerkskunst aus?

Mögliche Duplikate:
Prototyping vs. Clean Code in den frühen Stadien
Ehrlich gesagt, bevorzugen Sie Cowboy-Codierung?

Nachdem ich in einer Reihe von Unternehmen gearbeitet habe, stelle ich fest, dass mein Engagement für das Schreiben hochwertiger, gut getesteter Software nicht unbedingt zum beruflichen Aufstieg führt, insbesondere wenn Manager mit nicht technischem Hintergrund die Vorteile von wartbarem Code nicht erkennen. und bevorzugen Entwickler, die einen Anschein von hoher Produktivität haben und gleichzeitig Berge technischer Schulden machen.

Das heißt, ich halte mich eher an gut geschriebenen Code, weil ich ihn an sich als lohnend empfinde - das Gefühl, das man bekommt, wenn man weiß, dass man einen Job gut gemacht hat, obwohl man weiß, dass man dafür nicht gutgeschrieben wird.

Zum Teil kann ich die Produktivitätslücke schließen, indem ich verschiedene Technologien und Ansätze übernehme und gleichzeitig sauberen Code schreibe. Zu den Lösungen gehören dynamische Sprachen, polyglotte Programmierung und Konventionen über die Konfiguration.

Aber mein Dilemma bleibt bestehen - zahlt sich Handwerkskunst aus?

137
murungu

Nach meiner Erfahrung lautet die Antwort leider nein. Ich habe viele Jobs verloren, weil ich eine Kultur der Handwerkskunst über schlampige Hacks, Designmuster über prozedural geschriebenen Verfahrenscode und die Einführung neuer Technologien hinwegsetzen wollte, anstatt bei veralteten Legacy-Technologien zu bleiben. Beachten Sie, dass ich diese Entscheidungen nicht bedauere, aber die Realität ist, dass nur sehr wenige unserer Entwicklerbrüder Handwerkskunst kennen oder sich darum kümmern; Ich wage zu sagen, dass es viel mehr von uns gibt, die sich weniger für die "richtige" Art und Weise interessieren könnten, Software zu schreiben, oder sogar völlig ignorieren, dass es bessere Möglichkeiten gibt als die Art und Weise, wie sie es seit Jahren tun. Natürlich versuche ich, meinen eigenen Code mit Blick auf die Handwerkskunst zu schreiben, aber es ist größtenteils eine vergebliche Anstrengung, und oft, wenn Sie Code haben, der keiner Handwerkskunst folgt, ist es schmerzhaft, auch nur ein bisschen hinzuzufügen. Sogar die Jobs, die ich behalten habe, wurden zu kleineren Fehlerkorrekturen verbannt, anstatt an neuen Dingen zu arbeiten (weil ich, wenn ich einer neuen Entwicklung zugewiesen würde, versuchen würde, meine "radikalen Ideen", dh Handwerkskunst, einzuführen, bis zu dem Punkt, an dem ich Irgendwann wird es langweilig und Sie suchen nach einem anderen Unternehmen in der Hoffnung, eines zu finden, das Handwerkskunst versteht.

Ich schaue und beneide die Leute, die in Umgebungen geraten sind, in denen sie nicht die einzige Person sind, die sich mit Software-Handwerkskunst oder den SOLID Prinzipien oder ORMS /) auskennt. IoC/SOC/etc, weil sie keine harten Schlachten führen müssen, um den Leuten zu sagen, dass nein, es ist schlecht, alle Ihre Funktionen in einer gigantischen Klasse zusammenzufassen, die genauso gut ein VB6-Modul sein könnte, es ist schlecht, eine Codedatei zu haben Das hat eine Methode, die tausend Zeilen lang ist. Es ist schlecht, all Ihre Logik in den Ereignishandler einer Schaltfläche zu integrieren. Sie müssen nicht riskieren, gefeuert zu werden, weil Sie immer wieder versuchen, Ihr Team über neue und bessere Möglichkeiten aufzuklären Dinge zu tun, Wege, die die Langlebigkeit und Wartbarkeit der Codebasis verbessern, nur um mit verwirrten Blicken oder Entlassungen konfrontiert zu werden, weil Sie die nur Person sind, die sogar weiß Warum ist das eine gute Sache, oder Sie sind die einzige Person, die technische Blogs/Podcasts abonniert, um sich zu verbessern.

In sechs Jahren als Softwareentwickler hatte ich genau einen Job von ungefähr sechs Unternehmen, die sich tatsächlich um Handwerkskunst kümmerten. Jeder andere Ort kannte oder verstand die Vorteile nicht - der Versuch, den anderen im Team Dinge zu erklären, brachte dieses seltsame "Was ...?" Art von Blick, als ob sie nichts verstanden, was ich sagte. Die Unternehmen hätten lieber die trägen Entwickler behalten, die nichts verbessert und sich geweigert haben, im Vorbeigehen etwas Neues zu bemerken, als geeignete Entwicklungstechniken zu fördern, die die Wartung langfristig erleichtern würden, stattdessen sind sie nur allzu bereit, langfristig zu opfern. kurzfristig. Jedes Mal.

Zusammenfassend: Handwerkskunst zahlt sich nur aus, wenn das gesamte Team sie annimmt. Wenn eine Person Handwerkskunst liebt und die anderen nicht wissen, was es bedeutet, zahlt es sich überhaupt nicht aus und wird Sie wahrscheinlich verletzen.

NACHTRAG

Um meinen Standpunkt zu beweisen, habe ich dies im Juni 2011 geschrieben. Ich wurde aus genau den hier genannten Gründen als Entwickler in der Firma entlassen, in der ich im Juli 12 gearbeitet habe: In diesem Zeitraum von 13 Monaten habe ich versucht, uns zu pushen Wir wollten versuchen, unsere interne CRM-Software an andere Unternehmen zu verkaufen, wenn sie die rund 70 Benutzer, die wir intern hatten, kaum unterstützen konnte und neu gestartet werden musste, um einen handwerklichen Anschein zu erwecken, anstatt Mist zu hacken, der nicht zu warten war mehrmals täglich wegen Absturzes). Ein "älterer" Entwickler hat meine Bemühungen bei jedem Schritt des Weges vereitelt, und der nicht-technische CTO war immer auf seiner Seite, obwohl er mir persönlich sagte, dass gute Qualität ein Ziel sei, und es gipfelte darin, dass ich mit dem in den Konferenzraum gebracht wurde CTO und HR sollten wissen, dass meine Entwicklungsfähigkeiten "nicht [meine] Stärke" waren und das Unternehmen in eine andere Richtung gehen wollte als die, die ich zu pushen versuchte (dh eine Umgebung mit Dingen) wie Codeüberprüfungen und Codekonventionen und Handwerkskunst), und dass meine Dienste dort nicht mehr benötigt wurden.

Ich habe fast 5 Monate gebraucht, um einen anderen Job zu finden, und dieser Job führt über SQL hinaus überhaupt keine Entwicklung durch. Ich arbeite den ganzen Tag mit proprietären Anwendungen, und mein Wille und Wunsch, jemals wieder zu entwickeln, ist so gut wie verschwunden, weil ich die Szenarien wie die oben genannten ständig satt habe. Ich hatte kürzlich zwei Vorstellungsgespräche, bei denen ich nicht für die spätere Position in Betracht gezogen wurde (die alte Ausrede "Wir sind mit einem anderen Kandidaten gegangen"), weil die Unternehmen meiner Meinung nach das Gefühl hatten, dass ich mit ihrer Vision nicht an Bord sein würde der Software "zum großen Teil zu meiner Begeisterung, gute Designprinzipien befolgen und an der Handwerkskunst der Software festhalten zu wollen.

Um noch einmal zu wiederholen, was ich vor über zwei Jahren gesagt habe: In den meisten Fällen, zumindest aus meiner Erfahrung, werden Sie durch Handwerkskunst entlassen oder von der Einstellung ausgeschlossen, wenn sich niemand darum kümmert, und die meisten Unternehmen kümmern sich nicht darum es; Die meisten Unternehmen wissen nicht einmal, was es ist. Jedes Mal, wenn ich gutes Design oder Dinge wie ORMs oder die SOLID Prinzipien oder ähnliches) erwähnt habe, bin ich es gewohnt, leere Blicke und dieses sinkende Gefühl zu sehen, in das ich mich gerade hineingeschossen habe Der Fuß, weil der Typ, der mich interviewt, keine Ahnung hat, was diese Dinge sind. Leider hat sich dieses sinkende Gefühl jedes Mal als richtig erwiesen.

80
Wayne Molina

Hier sind einige Zahlen zum Nachdenken :

  • Untersuchungen aus dem Jahr 2000 ergaben, dass bis zu 90% der Gesamtkosten von Softwaresystemen für Wartung und Weiterentwicklung aufgewendet wurden. Insgesamt hat die Forschung ergeben, dass mindestens 50% der Kosten eines Softwaresystems in der Wartung liegen.
  • Allein in den USA belaufen sich die jährlichen Wartungskosten auf fast 70 Milliarden US-Dollar.

Indem Sie sich die Zeit nehmen, um gute technische Prinzipien vom Beginn des Projekts bis zum Ende des Systems zu befolgen, können diese Zahlen reduziert werden, was sich positiv auf das Unternehmensergebnis auswirkt. Hier gibt es viele Facetten, von der Erstellung effektiver technischer Dokumentationen für zukünftige Entwickler bis hin zum Versand von gut geschriebenem Code und Tests. Möglicherweise haben Sie ein wenig mehr Zeit damit verbracht, es jetzt besser zu machen, aber es wird sich in den Wartungsphasen später auszahlen.

63
Thomas Owens

Zahlt sich Handwerkskunst aus? Es tut es, aber Sie müssen es auf die nächste Stufe bringen.

Starten Sie Ihr eigenes Unternehmen und bieten Sie ein Produkt an, das die Konkurrenz schlägt. Dann liefern Sie alle Ergebnisse Ihrer guten Arbeit zusammen mit Ihren eigenen Kunden.

In den meisten erwerbstätigen Berufen streben die Menschen nach Anerkennung und finden sie nie. In vielen Fällen, wenn diese Erkennung erfolgt, geschieht dies jedoch viel später, wenn die Person bereits zum nächsten Ort übergegangen ist. Dann werden Sie mit guten Worten in Erinnerung bleiben, aber effektiv postmortal.

31
user8685

Wenn die meisten Programmierer von "Handwerkskunst" sprechen, meinen sie meiner Erfahrung nach normalerweise überentwickelten Code, der häufig für zukünftige Funktionen vorab entwickelt wurde. Das Konzept "gerade gut genug" wird oft mit geringer Qualität verwechselt und als das Gegenteil von "Handwerkskunst" angesehen.

Im Gegenteil, die am besten gestalteten Programme sind einfach und direkt, enthalten kaum genug Code, um das zu tun, was sie tun sollen, und sind einfacher und schneller zu schreiben und zu testen als schlampige Programme. Es sind die cleveren Tricks und Pläne für eine Zukunft, die niemals kommen werden, die die Zeit des Handwerkers in Anspruch nehmen und ihn langsamer machen als den schlampigen Programmierer.

28
Dave

Hier ist eine Wahl, die mein Team einmal getroffen hat. Die Firma, für die ich gearbeitet habe, hat 10 Millionen pro Jahr umgesetzt. Die Abteilung, der ich beigetreten bin, hat 500.000 pro Monat verloren, das Geschäft wurde durch eine Sicherheit im Haus des Chefs finanziert.

Auswahl 1. Best Practice. Das ganze Los ..... hätte den Besitzer bankrott gemacht.

Wahl 2. Große Messe in 10 Wochen. 8 Entwickler, Kriegsmodus. Kein Design, keine Dokumente, keine Tests. Der Eigentümer verkaufte 3 Jahre später und zahlte 50 Millionen auf sein persönliches Bankkonto ein, wobei die Division 200 Millionen umdrehte. (Was für eine aufregende Fahrt das war)

Der Code war nach allen Software Standards und unverblümt, beschissen, undokumentiert, nicht wartbar und unlesbar. Es war jedoch (überraschenderweise sogar für mich) zuverlässig. Nach allen geschäftlichen Standards war der Code über jeden Zweifel erhaben.

Der Höhepunkt meiner bisherigen Karriere war es, "beschissenen Code zu schreiben, der eine Menge Geld einbrachte und stolz darauf war, weil ich genau das getan habe, wofür ich bezahlt wurde".

(Ich spiele hier nur ein bisschen Devils Advocate):
Zu viele Softwareentwickler vergessen, wer die Rechnungen bezahlt und wofür sie bezahlt werden, und verwenden "Handwerkskunst" und "Best Practice" als Entschuldigung für Überingenieure.

Jeder Befürworter von BP, den ich gesehen habe, ist a) ein Verkäufer oder b) ein Akademiker. Sie sehen selten eine Buchhalteransicht zu BP veröffentlicht und selten eine vollständige Kostenanalyse, einschließlich Kapitalkosten, Zeitkosten, Opportunitätskosten usw., die in die BP-Vorteile einbezogen werden.

27
mattnz

Handwerkskunst zahlt sich aus, wenn Sie sich im Wartungsmodus befinden, anstatt zu versuchen, ein neues Produkt schnell auf den Markt zu bringen.
Da viele Produkte dieses Stadium nie erreichen oder wenn der Wartungsvertrag an ein anderes Unternehmen vergeben wird als das, das ihn ursprünglich erstellt hat, können Sie möglicherweise nie direkt von den Vorteilen Ihrer eigenen Handwerkskunst profitieren, andere jedoch Erinnern Sie sich an Ihren Namen auf einer besonders abscheulichen Konstruktion, wenn sie Sie Jahre später während eines Vorstellungsgesprächs treffen, und halten Sie ihn gegen Sie.

15
jwenting

Ich werde einigen Antworten zustimmen und einigen nicht zustimmen. Ich liebe @ Thomas Owens Link zu den numerischen Daten zur Wartung. Es zeigt wirklich, wie viel Wartung da draußen ist und wie viel Zeit/Geld Sie sich mit ein wenig Handwerkskunst sparen können.

Mehrere Leute haben gesagt, dass sich Handwerkskunst später auszahlt, aber erst später. Das zahlt sich definitiv später aus. Entweder pflegen Sie selbst guten Code und sparen Zeit/Geld, oder Sie geben diesen Code an eine andere Person weiter, die jedes Mal, wenn sie Ihren Code sieht und sieht, wie einfach es ist, ihn aufrechtzuerhalten, warme, verschwommene, herzförmige, glückliche Gedanken aussendet .

Einige haben gesagt, dass es sich jetzt nicht auszahlt. Ich bin mit dieser Aussage überhaupt nicht einverstanden. Ich habe in verschiedenen Umgebungen gearbeitet, in denen Veränderungen schnell vor sich gehen. In einigen Fällen (um einen Film zu zitieren) "fängt es Sie genau zwischen den Bissen". Wenn Sie gut gestalteten, lesbaren und strukturierten Code in einem soliden Rahmen haben, sind diese Änderungen viel einfacher zu handhaben. Ich persönlich habe festgestellt, dass eine gute Rückgratstruktur für jedes Projekt dazu beiträgt, Änderungen der Anforderungen zu mildern, entweder weil das Geschäft unentschlossen ist oder sich die Bedürfnisse des Kunden schnell entwickeln.

Aus dem gleichen Grund habe ich kürzlich eine Situation mit einem Kollegen erlebt, der kein gutes Rückgrat für sein Projekt hatte und regelmäßig beklagenswert nicht wartbaren Code schreibt. Als sich die Anforderungen an ihn änderten, war er gezwungen, einen Großteil seiner Arbeit "zurück zur Formel" zu bringen und am Anfang von vorne zu beginnen.

12
Joel Etherton

Kurze Antwort -

In großen Organisationen - hohe Wahrscheinlichkeit, dass dies nicht der Fall ist.

In kleineren Organisationen oder wenn Sie alleine unterwegs sind (indem Sie Ihre Handwerkskunst als Produkt oder Dienstleistung anbieten) - mit hoher Wahrscheinlichkeit.

9
amol

Handwerkskunst zahlt sich aus, aber erst viel später.

Das Problem ist, dass die meisten IT-bezogenen Organisationen jung sind und noch nicht Zeit hatten, um zu erkennen, dass Software unabhängig vom Umfang voraussichtlich lange leben wird und gut aufgebaut sein muss, um dies zu können so richtig ohne abscheuliche Kosten, wenn Änderungen erforderlich sind.

Dies bedeutet, dass Sie einen Job in einer Organisation finden müssen wo diese Erkenntnis erfolgt ist und die Arbeitsweise entsprechend angepasst werden müssen. Wenn nicht, werden Ihre Bemühungen nicht gewürdigt, was sehr unbefriedigend ist.

7
user1249

Schämen Sie sich sehr, wenn ein Fehler in Ihrer Software gefunden wird?

Möchten Sie zu Ihren alten Projekten zurückkehren, um ständig Fehler zu beheben, anstatt an Ihrem aktuellen Projekt zu arbeiten?

Möchten Sie, dass Entwickler der Zukunft Ihren Code neu schreiben, anstatt einen Fehler zu beheben?

Die meisten Manager sehen im Laufe der Zeit, wer die guten Entwickler sind. Diese Entwickler erhalten in der Regel das sichtbarere und oft auch das interessantere Projekt. Bei der beruflichen Weiterentwicklung geht es in der Regel mehr um die berufliche Entwicklung als um die tatsächlich geleistete Arbeit. Wenn Sie Karriere machen möchten, erhalten Sie Zertifikate, besuchen Sie Business-Kurse und suchen Sie nach Möglichkeiten, sich an Projekten zu beteiligen, die außerhalb Ihres normalen Rahmens liegen. Wenn Sie Ihren Job machen, werden Sie mit einem Gehaltsscheck belohnt. Wenn du darüber hinaus bist, siehst du Fortschritte.

6
SoylentGray

Es geht nicht um die Technik, ein Handwerker zu sein, sondern um Sein ein Handwerker. Würde Leonardo sich fragen, ob es sich lohnt, in Öl zu malen? Würde sich ein erfahrener Schreiner fragen, ob er wirklich jeden Teil eines Möbelstücks, das er herstellt, sorgfältig schleifen muss?

Nein, wir sind Handwerker und das machen wir auch. Anders zu handeln würde unserer Natur zuwiderlaufen, und wenn Sie den Weg des "minimalen Aufwandes" beschreiten, verlieren Sie den Stolz auf die Arbeit und den Drang nach kontinuierlicher Verbesserung.

Davon abgesehen gibt es praktische Dinge, die Sie berücksichtigen müssen, aber niemals etwas tun, für das Sie sich schämen würden, jemand anderem zu zeigen.

5
Homde

Zahlt sich Handwerkskunst aus?

Ja, aber es zahlt sich nicht für alle gleichermaßen aus.

  • Dies zahlt sich für den leitenden Entwickler oder Entwicklungsmanager aus, der die letztendliche Verantwortung für die Codebasis übernimmt.
  • Es zahlt sich für den Entwickler aus, der Änderungen an seinem engen Bereich der Codebasis vornehmen muss.
  • Es zahlt sich für das Unternehmen aus, wenn die Entwicklung Fehlerbehebungen vornehmen, ändern oder durchführen muss.
  • Es zahlt sich jedoch nicht für den Entwickler, Manager oder das Unternehmen aus, der eine aggressive, unnachgiebige Frist einhalten muss.

Zwei Kommentare:

  • Als Entwickler sollten Sie den Pfad "Handwerkskunst" stark bevorzugen, da Sie ausnahmslos aufgefordert werden, Ihren Code zu ändern und zu unterstützen.
  • Versuchen Sie bei der Auswahl Ihres nächsten Jobs festzustellen, ob die Arbeitsumgebung den Pfad "Handwerkskunst" unterstützt.
    • Wenn dies nicht der Fall ist, sollten Sie für die Probleme entschädigt werden, die ausnahmslos durch hackigen Code entstehen.
1
Jim G.

Als Softwareentwickler, der am Versand von Produkten arbeitet, haben Sie mehrere Beiträge für das Unternehmen:

  • Machen Sie dem Unternehmen mehr Geld, als Sie es gekostet haben dieses Jahr.

  • Machen Sie dem Unternehmen mehr Geld, als Sie es kosten nächstes Jahr.

Durch schnelles Schreiben von Code erreichen Sie das erste. Durch das wartbare Schreiben von Code erreichen Sie die zweite. Sie und Ihr Unternehmensvertreter (Manager einer anderen Person, die die Geschäftsinteressen vertritt) müssen zusammenarbeiten, um Prioritäten zu setzen.

Ich habe die Erfahrung gemacht, dass Code stirbt nie und das Schreiben von gut kommentiertem und modularem Code sich sehr schnell auszahlt.

1
Paul Nathan

Einige Unternehmen leben davon, Kunden in jahrelange Wartungsarbeiten zu verwickeln. Daher liegt es in ihrem Interesse, schnelle 1.0-Produkte zu liefern, die kaum das Minimum erreichen und deren Wartung sehr lange dauert.

Darüber hinaus ist es für diese Art von Blutsaugern einfacher, Wartungskosten zu rechtfertigen, wenn bei der ersten Interaktion Probleme auftreten, die sich vom Demoskript unterscheiden, als wenn alles einwandfrei funktioniert.

Vielleicht ist das die Art von Unternehmen, in die Sie geraten sind, daher fördert die Unternehmenskultur die Handwerkskunst in der Tat nicht.

1
wildpeaks

Ich gehe davon aus, dass der Entwickler in der Lage ist, guten Code zu schreiben, und daher die Wahl hat, wartbaren Code zu schreiben und nicht.

Hast du eine enge Frist?

Ja - mach es einfach. Sie möchten nicht derjenige sein, der den Start verzögert.

Wenn nein: bist du eine egoistische oder egozentrische Person?

Nein - schreibe guten Code, er ist gut für alle, die damit in Kontakt kommen.

Wenn ja: Befinden Sie sich in einer Situation, in der eine Codeüberprüfung stattfindet?

Ja - dann schreiben Sie wartbaren Code. Andernfalls sehen Ihre Kollegen und Ihr Chef, dass Ihre Arbeit von schlechter Qualität ist.

Nein - es liegt an Ihnen, aber je schneller Sie zu einer Lösung kommen, desto mehr Zeit müssen Sie für andere Dinge aufwenden.

Wenn Nein, dann befinden Sie sich in einer Situation, in der Sie derjenige sind, der den von Ihnen geschriebenen Code verwaltet?

Ja - schreibe schlechten Code. Dann haben Sie die Möglichkeit, das Problem zu beheben und wie ein Held auszusehen. Die Menschen werden glücklich sein, weil Sie ihnen über einen bestimmten Zeitraum hinweg das Leben leichter machen. Wenn Sie alles auf einmal tun, werden sie Sie möglicherweise vergessen. Dies erhöht Ihre Chancen auf Boni und Beförderung.

Wenn Nein, dann arbeiten Sie mit den Betreuern oder in derselben Abteilung.?

Ja - wahrscheinlich am besten, um guten Code zu schreiben, da diese eine Quelle des Lobes für Ihre Arbeit oder im schlimmsten Fall der Stille werden.

Nein - Schreiben Sie Ihren Code und fahren Sie fort. Es ist egal, wie schlimm es ist, jemand anderes kann es reparieren.

1
Matt Ellen

Es sind die Händler, die besser bezahlt werden. Das Wichtigste ist, die Arbeit zu erledigen. Der Benutzer kümmert sich nicht um technische Details, die sich nicht auf seine Benutzererfahrung auswirken.

Beim Schreiben von Code ist es manchmal so, dass Künstler besser ist als Handwerker. Der Handwerker macht seine Arbeit einfach so, wie es in Büchern beschrieben ist, während sich die Künstler einfach hinsetzen und die Lösung des Problems erfinden.

Beachten Sie auch, dass Sie normalerweise Code schreiben, für dessen Wartung höhere technische Fähigkeiten erforderlich sind. Wenn das Unternehmen darauf basiert, dass „billige Arbeitskräfte“ guten Code von einem guten (und daher teuren) Programmierer schreiben, ist es nicht die optimale Lösung, mehr als nur Grundlagen zu verstehen.

0
Danubian Sailor