Wie bekommt man die Menschen über Abstraktion und Flexibilität zu schätzen „nur immer es getan“?

StackOverflow https://stackoverflow.com/questions/210421

Frage

Ich habe manchmal Schwierigkeiten mit anderen Menschen, die ein Problem lösen wollen, wenn sie die offiziellen Schnittstellen und Zugang zugrunde liegenden Implementierungsdetails direkt überspringen mögen.

Sie argumentieren, dass dies wird ihnen erlauben, das Problem schneller zu lösen. Ich behaupte, dass sie werden dadurch unsere Architektur mehr eng gekoppelt und schwer zu ändern, um sich als neue Anforderungen entstehen.

ich darauf alle Arbeiten aus, die in das aktuelle Design und die Philosophie des Designs und der Wert der Flexibilität ging, die Kosten für die versuchen, den Wert der Verkapselung und Verstecken von Daten und Schichtarchitekturen zu erhalten und spröde Code zu ändern und ist robust, so dass kleine Änderungen in der Spezifikation führen zu kleinen Änderungen im Code. Und sie sagen: „Aber das wäre einfacher.“

Wie Sie diese Menschen umgehen?

War es hilfreich?

Lösung

sie überzeugen, dass Verknüpfungen ist eine falsche Wirtschaft.

Erklären Sie, dass die anfängliche Codierung Anstrengung ist weniger als 30% des anfänglichen Entwicklungsaufwand und weniger als 10% (nach meiner Erfahrung) des gesamten Projektaufwand (einschließlich Wartung).

Wenn sie nicht überzeugt bleiben, und Sie haben die Autorität, dies zu tun, dann sagen sie es auf deine Weise zu tun. Wenn Sie nicht die Berechtigung haben, dann tut nichts anderes. Schließlich Ihren Vorgesetzten, wenn sie etwas wert ist, wird dies erkennen und Sie werden dann in der Position der Behörde sein.

Andere Tipps

Haben sie auf einige Legacy-Code arbeiten, um die Fehler darin zu fixieren. Das ist so ziemlich, wie die meisten Leute, die ich kenne diese wirklich wertvolle Lektionen gelernt haben, ... auf die harte Tour.

"Leichter", wenn? Nun ist, wenn alles nicht in einem Zustand des Flusses? Oder drei Monate ab jetzt, wenn die Anforderungen des Kunden haben sich geändert und sie haben eine ‚Lösung‘ bekam, die keine Lösung mehr?

Ich bin nicht viel für Struktur und Regeln im Interesse der Struktur und Regeln, aber es ist gut zu wissen, A), die das Boot B fährt), was die Regeln sind und C), warum wir wählten es auf diese Weise zu tun .

In meinem Geschäft wir nicht möchten Code neu schreiben müssen, weil wir oben geschraubt und fest einprogrammiert ein paar Sachen oder etwas spröde ‚Lösung‘ geschaffen, um das Problem. Es neigt dazu, nicht schwerer zu sein, den flexibleren Ansatz zu folgen, sobald die Leute erkennen, dass es die Frustrationen reduzieren wird später, wenn Dinge auf den Kopf durch ein Bündel von Anforderungsänderungen gedreht werden. Wir codieren für die ‚Langstrecke‘ nicht für das ‚es braucht heute‘, in der Regel, so das Design gemacht wird aus einem Grunde und das Design ist gefolgt aus dem gleichen Grunde .

Ich verbrachte eine Woche meines Lebens (7 Tage gerade) ein Modul Umschreiben, weil ich in war Modus ‚es schnell zu erledigen‘. Sieben Tage anstrengender Zeit, 10-12 Stunden am Tag es den richtigen Weg zu tun, spät im Spiel, als ich den Super Bowl beobachtet haben könnte. Das stank. Ich lernte eine Lektion. Es kann sein, dass Ihre ‚Freunde‘ werden sich erfahren müssen auch diese Art von Augenöffner.

Viel Glück!

Ich hasse wirklich die abweichende Meinung zu diesem Thema zu nehmen, aber ...

Van Halen (zitiert Klischee) zu zitieren: „Es gibt eine Zeit und einen Platz für alles.“ Während ich sicherlich nicht befürworten schlecht, immer schreiben, manchmal brauchen Sie nur daran, dass Mittelweg zwischen robust / dauerhafte und gehackt / dokumentiert getan, und finden. (Das dokumentiert ist Teil besonders wichtig, an zwei Fronten: ein, dass Sie zeigen deutlich, dass, was auch immer es ist, du tust einfach im Interesse getan wird, es getan zu bekommen und nimmt bestimmte Abkürzungen, und zwei, eine grobe Idee , was der richtigere Weg, das Problem zu nähern könnte.

Als Programmierer, bemühen wir uns oft den perfekten Code zu schreiben (na ja, einige von uns tun), und manchmal aus den Augen des großen Bildes verlieren - es gibt eine Reihe von Gründen, warum es in Ordnung sein könnte (auf einer Ebene) zu spielen schnell und locker mit dem Code, während die Auswirkungen zu minimieren, die auf der Straße haben.

Bitte verwenden Sie dies nicht als Rechtfertigung benutzen - die 80/20 Regel gilt auch hier, natürlich. Die meisten der Zeit, die Sie unbedingt wollen alle Verknüpfungen entlang dieser Linien zu vernichten; aber manchmal ...

Zeigen Sie ihnen! Lassen Sie sie in ein kleines Modul tun „Aber das wäre einfacher.“ Stil, während Sie es richtig tun. Dann fragen sie 2 bis 5 Änderungen an den Anforderungen machen (es muss sie sein, um die Änderungen vorzunehmen) und haben einen zeitlich Wettbewerb auf die Änderungen zu implementieren. Es kann ein oder zwei Tage, aber sie werden es bekommen. Wenn Sie dies nicht tun, müssen Sie die gleiche Diskussion mit jedem neuen Projekt oder eine Aufgabe.

Sie könnten eine Analogie versuchen, auf sie ....

Die Regeln des Schachspiels sind ziemlich einfach. Sie können sie zu einem Kind beibringen. „Die horsey wie diese bewegt“, „die Burg bewegt sich wie diese“, etc

Wenn das alles, was Sie wissen, können Sie einige Schach spielen und haben wahrscheinlich eine gute Zeit, aber jemand mit einem tieferen Wissen des Spiels wird das Board mit Ihnen jedes Mal wischen. Sie werden schlagen, so schlimm es nicht einmal mehr Spaß machen wird, weil Sie keine Ahnung haben werden, wie sie es tun.

Das gleiche Prinzip gilt für die Programmierung. die Syntax der Sprache und ein paar einfache Datenstrukturen zu kennen, ist genug, um Ihnen ein Arbeitsprogramm zu bekommen, aber Sie sind viel Glück nicht mit einer Anwendung im großen Maßstab haben, die mehrere Release-Zyklen, um zu überleben hat.

Schach gesetzt Öffnungen, Angriffsstrategien, etc. Wir haben Design Patterns.

Das Beste ist, sie wahrscheinlich an das Management zu fördern, damit sie nicht ganz so viel Schaden anrichten kann.

Das Problem ist, die meisten Menschen nicht einmal wissen, über Software-Design anders als die meisten grundlegenden Konzepte und Drag-and-Stil Entwicklung fallen. Für jeden Entwickler, der forscht und erzieht sich auf den besten neuen Konzepte und Technologien gibt es zehn, die nach Hause gehen und schauen nicht auf einem PC. Sie müssen ihnen beibringen.

habe ich ein großes und kompliziertes System vor etwa fünf Jahren. Ich verbrachte die nächsten fünf Jahre selbst in jedes Projekt Injektion, die „mein“ System betroffen, um die Barbaren zu halten von meiner Architektur beschmutzen. Solange ich konstant, unerbittlich Druck ausgeübt war ich in der Lage, die Architektur ziemlich sauber zu halten, aber ich war eine verlorene Schlacht kämpfen. Hier ist der Grund:

1) Die meisten Menschen beurteilt werden, ob sie den Job zu erledigen habe heute . Niemand hat jemals gerügt worden, weil sie um eine Ecke abgeschnitten (oder zwei) vor drei Jahren ein Projekt, um aus der Tür auf Zeit. Auf der anderen Seite, Viele Menschen haben für nicht immer Projekte aus der Tür rechtzeitig gerügt worden ist.

2) Sie können das System sauber zu halten, weil Sie ein Gefühl des Eigentums über den Code haben, oder die Anwendung oder die Benutzer usw. Viele Menschen werden nicht ein Gefühl der Zugehörigkeit und daher sind nur allzu gerne hacken etwas nach oben, so dass sie mit ihm getan werden. Sie können ein Pferd zum Wasser führen, aber man kann ihn nicht machen kümmern.

3) Wenn Sie tun jeder überzeugen, den Code richtig zu halten, kommen neue Leute an Bord und müssen gelehrt werden, wie die Dinge richtig zu machen. Also selbst wenn Sie erfolgreich sind, können Sie das Gefühl, dass Sie scheitern, weil du immer den gleichen Kampf gegen neue Gegner zu bekämpfen.

4) Sie könnten tatsächlich falsch sein. Wäre es finanziell sinnvoll für Microsoft doppelt so viele Programmierer Stunden zu verbringen machen MS-Paint robust und wartbar? Manchmal ist ein hässliches gehackt zusammen System ist gut genug. Die meisten guten Programmierer haben Probleme dies zu verstehen, aber dies ist in der Regel, weil sie gute Programmierer sind.

5) Ich schwöre es einige Leute gibt, die in perverse Freude nehmen die Dinge zusammen Hacking entweder weil sie es schneller tun, oder sie werden die einzigen sein, die es verstehen, oder sie haben eine kindliche Bedürfnis Regeln zu brechen. Sie können nicht mit diesen Menschen der Vernunft, und je mehr Zeit Sie mit ihnen streiten verbringen, je näher der Projekttermin bekommt, die Sie zwingen, etwas zusammen sowieso zu hacken.

6) Es gibt eine gute Chance, dass Sie das System besser zu verstehen, als sie es tun. Was aussieht wie ein hässliches Hack Sie wie „beschreitet die leichte Schulter“ zu einer Person aussehen könnte, die nicht so vertraut mit dem System. Oder der zusätzliche Aufwand, den Code robuster machen den Programmierer vor einem Problem schützt er nie zuvor und daher nicht verstehen kann. Sie lernen nicht Rückgabecodes zu überprüfen, bis etwas schief geht, weil Sie nicht überprüfen einen Return-Code. An diesem Punkt hält es „zusätzliche Arbeit“ und beginnt zu sein „erforderliche Arbeit“.

sein

Wenn Sie ein kleines, enges Entwicklungsteam haben, ist es möglich. Aber je größer die Organisation desto weniger wahrscheinlich sind Sie erfolgreich zu sein. Wenn Sie eine 250-Person zu bekommen verwalten IT-Shop Dinge zu schätzen richtig machen über Dinge schnell dann Überredungskünste tun sind legendär.

Sagen Sie ihnen, lesen (nicht, dass sie jemals wird) Encapsulation Theorie: http://www.edmundkirwan.com/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top