Tipps zur Verbreitung objektorientierter Praktiken [geschlossen]


14

Ich arbeite für ein mittelständisches Unternehmen mit rund 250 Entwicklern. Leider stecken viele von ihnen in einer prozeduralen Denkweise fest und einige Teams liefern ständig große Transaktionsskriptanwendungen, obwohl die Anwendung tatsächlich eine umfangreiche Logik enthält. Sie können auch die Entwurfsabhängigkeiten nicht verwalten und erhalten Dienste, die von einer anderen großen Anzahl von Diensten abhängen (ein sauberes Beispiel für Big Ball of Mud ).

Meine Frage lautet: Können Sie vorschlagen, wie diese Art von Wissen verbreitet werden kann?

Ich weiß, dass das Problem darin besteht, dass diese Anwendungen eine schlechte Architektur und ein schlechtes Design aufweisen. Ein weiteres Problem ist, dass es einige Entwickler gibt, die gegen das Schreiben von Tests jeglicher Art sind.

Ein paar Dinge, die ich tue, um dies zu ändern (aber ich versage entweder oder die Änderung ist zu gering)

  • Ausführen von Präsentationen zu Entwurfsprinzipien (SOLID, bereinigter Code usw.).
  • Workshops zu TDD und BDD.
  • Coaching-Teams (dies beinhaltet die Verwendung von Sonar, Findbugs, Jdepend und anderen Tools).
  • IDE & Refactoring Gespräche.

Ein paar Dinge, an die ich in Zukunft denke (aber ich befürchte, dass sie möglicherweise nicht gut sind)

  • Bilden Sie ein Team von OO-Evangelisten, die eine OO-Denkweise in unterschiedlichen Teams verbreiten (diese Personen müssten alle paar Monate das Team wechseln).
  • Ausführen von Design-Überprüfungssitzungen, um das Design zu kritisieren und Verbesserungen vorzuschlagen (selbst wenn die Verbesserungen aus Zeitgründen nicht durchgeführt werden, halte ich dies für nützlich)

.

Ich habe festgestellt, dass die von mir trainierten Teams, sobald ich sie verlasse, zu den alten Praktiken zurückkehren. Ich weiß, dass ich nicht viel Zeit mit ihnen verbringe, normalerweise nur einen Monat. Was auch immer ich tue, es bleibt nicht hängen.

Es tut mir leid, diese Frage ist voller Frustration, aber die Alternative, dies zu schreiben, war, meinen Kopf an die Wand zu schlagen, bis ich ohnmächtig werde.


Blick auf modulare Programmierung - en.wikipedia.org/wiki/Modular_programming
Yusubov

ElYusubov, der "Standard" ist TDD zu machen, dem wiederum nicht alle Teams folgen. Und manche Teams machen sogar BDD mit recht guten Ergebnissen. (TDD und BDD sind wie die modulare Programmierung Outside-in).
Augusto

10
Bitte sehen Sie OO nicht als etwas, das der Himmel sendet und das Ihre Probleme lösen wird oder sollte. Das ist natürlich viel zu kurzsichtig. OO kann Vorteile haben, aber hier sind einige unterschiedliche Ansichten zum Thema: existentialtype.wordpress.com/2011/03/15/… Versuchen Sie, sich nicht auf OO oder gar auf Paradigmen zu konzentrieren, sondern suchen Sie nach bewährten Methoden, die für Sie funktionieren, cs. brown.edu/~sk/Publications/Papers/Published/…
AndreasScheinert

Andreas, ich würde die Leute lieben, um FP zu lernen und die Prinzipien in OO anzuwenden !!! Ich stimme dir zu 100% zu. Das Problem, das ich habe, ist, dass nicht wenige Entwickler es mögen, Dinge auf die gleiche Weise zu tun, wie sie es getan haben, seit sie zu arbeiten begonnen haben, und auf dem Weg haben sie ihre Lösungsfähigkeiten nicht verbessert.
Augusto

3
Versuchen Sie nicht, "das Wort zu verbreiten". Verdammnis und Zerstörung, die von einem Podest aus gepredigt werden, sind bei Universitätsabsolventen des 21. Jahrhunderts nicht so gut wie bei Bauern des 15. Jahrhunderts.
Mattnz

Antworten:


19

Versuche nicht, OOP zu drücken, es wird alles nur noch schlimmer machen. Nicht, weil OOP im Allgemeinen eine schlechte Idee ist: Es ist nicht. Aber weil es den Anschein hat, dass dem Verantwortlichen für diesen Hairball-Code nicht nur die Werkzeuge fehlen, um diese Probleme zu vermeiden, sondern auch die Erfahrung und, was noch wichtiger ist, die Motivation.

Leute, die den Wunsch haben, sauberen Code zu schreiben, tun dies in einem bestimmten Paradigma, sei es OOP, prozedural, funktional usw. Aber nicht alle Programmierer sind so, und wenn Sie ein Tool für sauberen Code auf Leute übertragen, die dies nicht tun Verstehen Sie die Notwendigkeit, werden Sie am Ende mit diesen Tools missbraucht, genau wie die Tools, die bereits vorhanden sind. Sie werden nicht verwandte Methoden in einer Klasse gruppiert sehen, Klassen, die von nicht verwandten Klassen erben, Methodensichtbarkeitssätze, die auf Trial-and-Error-Debugging statt bewusstem Design basieren, statische Methoden, die nicht statisch sein sollten, und nicht statische Methoden, die es kurz machen sollten Sie werden Ihre Zeit verschwenden.

Prüfen Sie stattdessen, ob Sie in die Bewusstseinsbildung für Wartbarkeit und Eleganz investieren können. Schließlich unterscheiden sich die Kernziele von OOP nicht von anderen Strategien zum Komplexitätsmanagement (und genau darum geht es bei Programmierparadigmen): Kapselung, Modulierung, lose Kopplung, geringer Grad an Interdependenz, Beibehaltung des veränderlichen Zustands und seines Umfangs ein Minimum, etc. etc. OOP ist sicherlich nicht das einzige Paradigma, das Ihnen die Werkzeuge gibt, die Sie benötigen, um dies zu erreichen.

Womit ich zum letzten Punkt komme: OOP ist eine großartige Idee, und sie funktioniert gut für bestimmte Arten von Problemen, aber (und ich spreche sowohl aus eigener Erfahrung als auch unter Umschreibung der Meinung einiger großer Köpfe hier) für viele Arten von Problemen Probleme, es ist völlig ungeeignet. Wenn Sie OOP noch nicht kennen und der semi-prozedurale Spaghetti-Code die einzige Alternative ist, die Sie kennen, erscheint OOP natürlich als Geschenk des Himmels (und auf eine relative Art und Weise ist es das), und Sie werden sich wahrscheinlich nähern alle Probleme als Nägel für Ihren OOP-Hammer. Das ist nur natürlich und es ist nicht nur negativ, OOP an seine Grenzen (und darüber hinaus) zu bringen, um Ihre OOP-Fähigkeiten auszubauen. Aber vielleicht (nur vielleicht) braucht diese spezielle Codebasis doch keine OOP. Vielleicht würde es viel mehr von einer prozeduralen Architektur profitieren,

TL; DR: Wenn Sie überhaupt etwas evangelisieren möchten, lassen Sie es (plattformunabhängige) gute Codierungspraktiken sein, nicht irgendein bestimmtes Paradigma oder eine bestimmte Methodik.


4
+1: Um zu erkennen, dass OOP sie nicht speichert. Evangelisten vergessen oft, dass .....
Mattnz

1
+1: Aber ich würde 10 mal positiv stimmen, wenn ich könnte. Zwar bietet OOP eine bessere Unterstützung für die Strukturierung von Code als die prozedurale Programmierung, doch reicht OOP allein nicht aus. Dasselbe gilt für SCRUM, TDD und alle anderen. Ich denke, das sind alles nützliche Werkzeuge, aber sie können nicht ersetzen (1) die Grundeinstellung jedes Programmierers, einfachen, sauberen, modularen Code zu schreiben, (2) die Arbeit eines oder mehrerer Architekten, die vom gesamten Team als solche anerkannt werden und das Stellen Sie sicher, dass die gesamte Codearchitektur kohärent bleibt. Ohne diese Voraussetzungen kann ein Team leicht einen großen objektorientierten Schlammballen produzieren.
Giorgio

5

Sie können niemanden dazu bringen, sich zu ändern, der sich noch nicht ändern möchte. Aus diesem Grund sind die von Ihnen trainierten Teams zu ihren alten Gewohnheiten zurückgekehrt.

Ihre Frage sollte also lauten: "Wie bringe ich Entwickler dazu, auf OO-Ansätze umzusteigen?"

Fangen Sie einfach an, fangen Sie klein an, lassen Sie die Dinge von dort aus bauen. Zeigen Sie dem einzelnen Entwickler die Vorteile auf, anstatt dem Code, anderen Entwicklern oder der Firma abstrakte oder philosophische Vorteile zu bieten.

Zeigen Sie, wie die verschiedenen OO-Techniken zu weniger Code führen, den sie schreiben müssen, und zu kürzeren Entwicklungszeiten. Fast jeder Entwickler hört sich einen Vorschlag an, der seine Arbeit erleichtert.

Beginnen Sie dann mit der Demonstration, wie OO-Techniken zu einer einfacheren Pflege des Codes führen. Jeder in dieser Art von Umgebung hat Angst, " die Veränderung " vorzunehmen, die ein Drittel der Produktionsanwendung auslöscht. Die Kapselung ist der Schlüssel zur Vermeidung dieses Risikos und ermöglicht es jeder (zukünftigen) Schicht der Anwendung, ihren Vertrag mit den anderen Schichten aufrechtzuerhalten.

Ich würde schauen, wie Daten herumgereicht werden. Wenn es sich jedes Mal um eine lange Liste von Variablen handelt, sollten Sie als ersten Schritt erwägen, einige dieser Variablen in einer Struktur (oder keuch! Eine Klasse !!!) zusammenzufassen. Das einfache Einschließen der Daten in ein Objekt ist der Beginn von Verträgen zwischen Ebenen.

Auf einer breiteren Ebene - erwägen Sie, ein Management-Buy-in für diese Bemühungen zu erhalten, wenn Sie dies noch nicht getan haben. Das Management muss die konkreten Vorteile einer Verringerung der Mängel und des Risikos von Änderungen erkennen. Letztendlich sollte der Refactoring-Prozess zu schnelleren Entwicklungszeiten führen, aber das ist ein langfristiger Vorteil.

Ihre Vorstellungen von Überprüfungsteams und OO-Evangelisten sind gut. Es muss mehr als nur Sie sein, der diese Agenda vorantreibt.


Danke, dass du Glen antwortest! Ich habe das Gefühl, dass ich tue, was Sie vorschlagen. Es gibt einige Management-Buy-Ins und einige Team-Leads sind es leid, von Teams gebremst zu werden, die sich nicht an bewährte Praktiken halten. Infolgedessen wird ihre Arbeit schwieriger. Was Sie in Ihrem ersten Satz sagen, ist sehr wahr und gehört zum Problem. Ich denke, einige Leute sind es zu gewohnt, Dinge falsch zu machen und haben keine Motivation, sich zu verbessern.
Augusto,

4

Meiner Erfahrung nach ist der Wechsel von einer prozeduralen zu einer OO-Denkweise eine große Hürde. Es erfordert Ausdauer, die viele Entwickler nicht aushalten. Dies liegt hauptsächlich daran, dass die Grundlagen von OO überblickt werden.

Bilden Sie ein Team von OO-Evangelisten, die eine OO-Denkweise in unterschiedlichen Teams verbreiten (diese Personen müssten alle paar Monate das Team wechseln).

ist eine gute Idee. Dies sollte gründlich sein und OO sollte von Grund auf besprochen werden. Als ich OO lernte, halfen historische Anekdoten sehr.

Ich würde auch vorschlagen,

  • Da Motivation der Schlüssel ist, motivieren Sie sie, detailliert darzulegen, wie OO ihre Arbeit verbessern kann, insbesondere die Wartbarkeit des Codes.
  • Überprüfen Sie den Code und zeigen Sie, wie Sie das Anwenden von Komposition, Vererbung, Polymorphismus und Mustern umgestalten.
  • Führen Sie einen guten Prozess wie SCRUM ein und binden Sie Entwickler ein.
  • Machen Sie das Lesen von Büchern wie "Refactoring" und "Refactoring to Patterns" obligatorisch.

Danke für deine Antwort Shuvo. Wir machen bereits SCRUM- und Code-Reviews (aber oft ist der Reviewer einer der Leute, die die OO-Prinzipien nicht kennen) ... Und ich scheitere bei dem, was Sie als erstes vorgeschlagen haben. Ich versuche, Teams zu motivieren, aber mit sehr geringem Erfolg :(. Ich mache es zur Pflicht, einige Bücher zu lesen. Ich habe noch nie gesehen, wie es funktioniert, wenn Leute eine Kopie nehmen und sie nie lesen, und andere daran hindern, sie zu lesen.
Augusto

1

Ich stimme Shuvo Naser zu. Es ist eine große Hürde, also behandeln Sie es eher wie einen Aufstieg. Das Erlernen des Entwurfs einer gesamten Anwendung mit OOP wird einige Zeit in Anspruch nehmen.

  1. Identifizieren Sie diejenigen, die OOP verstehen, und bringen Sie sie näher zu Teamleitern, Trainern, Designern, Code-Reviewern usw.
  2. Verwenden Sie ein vorhandenes Projekt als Trainingsreferenz. Möglicherweise waren die in # 1 in diesem Team.
  3. Refactor einige bestehende Projekte. Dies kann einigen Leuten helfen, eine Brücke zwischen ihrem prozeduralen Code und dem OO-Code zu schlagen. Beginnen Sie mit den Grundlagen. Sie müssen sehen, wann, wo und warum Sie diese Prinzipien anwenden.
  4. Binden Sie sie in Design-Sitzungen mit Menschen ein, die wissen, was sie tun.
  5. Setzen Sie sie in Entwicklerteams mit jemandem zusammen, der Design-Anleitungen bereitstellt und sicherstellt, dass das Projekt den OO-Grundsätzen entspricht (vorausgesetzt, Sie möchten dies in erster Linie tun, weil es die Entwicklung verbessern wird).

Annahme geht selten dem Sehen der Nutzen voraus. Wir sprechen von komplexem Design und nicht von TPS Report Cover Sheets .


-1. Diese Antwort ist fast so, als wäre es für Manager, nicht für normale Entwickler. Er kann keine Menschen "bewegen" und er kann keine Menschen "involvieren". IMO.
Euphoric

+1. Dies ist ein Verwaltungsproblem, und es ist als eines zu behandeln. Das mittlere und untere Management (der Teamleiter ist das Management) bestimmt den Stil. Veränderungen in einem Unternehmen kommen nur dann von unten, wenn sie für das Management transparent sind. Der Wechsel zu OOP erfordert ein Umdenken an der Spitze. Das Beibehalten des Entwicklungsprozesses prozedural / waterfall ist für OOP ein bisschen furchtbar.
David Hammen

@Euphoric - Sie benötigen nur die Genehmigung des Managements. Das OP erwähnte "Mannschaften, die ich trainiert habe". Vielleicht ist er kein Management, hat aber Einfluss darauf, wie sie funktionieren.
JeffO

@ JeffO Ja, du hast recht. Aber es kommt alles darauf an, ob das Management solche Bemühungen unterstützen will. Bei meiner letzten Arbeit war es unmöglich, so etwas zu tun, weil das Management nicht an der Ausbildung von Entwicklern interessiert war.
Euphoric

Danke für eure Kommentare, Leute. Ich bin kein Manager, nur ein frustrierter Architekt. Ich habe eine gewisse Schlagkraft mit den Managern, besonders wenn es heißt: schneller, billiger und besser. Leider gibt es nicht genug Architekten im Unternehmen, um bei jedem Projekt zu helfen, und die meisten Projekte, bei denen die Qualität nicht gut genug ist, haben keinen engagierten Architekten.
Augusto

1

Sie haben bereits gute Ideen

Die Ideen, die Sie in Ihrer Frage skizzieren, klingen ausgezeichnet. Es ist eine große Überraschung, dass Sie keinen Erfolg finden. Es ist 2012 und die objektorientierte Revolution ist längst vom Stand der Technik zum Stand der Praxis übergegangen. Es scheint so, als ob es Ihnen schwer fallen würde, nicht mehrere Dutzend oder sogar hundert gute solide objektorientierte Programmierer zu finden, es sei denn, Sie haben einen sehr geringen Umsatz und nur sehr wenige Einstellungen.

Agil oder objektorientiert?

Sie erwähnen einige agile Technologien wie TDD und einige neuere Konzepte. Gehen Sie also nicht zu streng mit den Leuten um, wenn Sie etwas nicht akzeptieren, das noch immer von einigen Management-Teams aktiv bekämpft wird. Einige behaupten, Agile anzunehmen, aber wenn sie darüber sprechen, bedeutet das, was sie sagen, dass es bedeutet. Die Organisation zeichnet sich nicht durch Teams aus, die Entscheidungen treffen und sich anpassen, sondern durch eine starke hierarchische Kontrolle des Vertragsstils.

Aber zurück zu objektorientiert. Sie erwähnen keine objektorientierte Analyse oder Design, und ich bin nicht ganz sicher, welche Programmiersprache welcher objektorientierten Programmiersprache Platz macht. Ich weiß, dass UML bei vielen objektorientierten Programmierern Probleme mit der Popularität hat. Nachdem ich in OOAD gründlich geschult worden bin, glaube ich, dass es so sein kann, als würde man die Kultur und Geschichte eines Landes lernen, dessen natürliche Sprache man lernen möchte. Wenn ich zum Beispiel Griechisch lernen wollte, könnte ich das Alphabet, den Wortschatz und die Grammatik lernen, aber wenn ich die reiche Geschichte und Kultur ignoriere, würde ich viel vermissen. Auf jeden Fall, wenn Sie alles über eine objektorientierte Programmiersprache lernen, aber nichts über OOAD, denke ich, dass eine wichtige Gelegenheit vertan wurde.

Probleme zu überwinden?

Brücke zu weit? Wenn Sie die Leute bitten, eine kleine Sache pro Woche und Jahr unter den Teilnehmern zu lernen, wird sich viel ändern. Wenn Sie sie bitten, alles zu ändern, was sie wissen, wird es von wenigen begrüßt, von vielen hart und von anderen unmöglich. Einige Änderungen wie die Quellcodeverwaltung sind lokalisiert. Sie haben vorher keine Übergänge gemacht, Sie hatten ein Training, bei dem die Grenzen des Gedächtnisses nicht überstrapaziert wurden, jemand hat Sie das erste Mal begleitet, und dann war der Alltag ziemlich einfach.

Andere Veränderungen sind allgegenwärtig. Zum Beispiel erfordert das Sichern von C und das Wechseln zu Java umfangreiche Schulungen, Einstellungen und große Änderungen im Tagesgeschäft, um eine neue IDE, einen neuen Compiler, eine neue Sprache, eine neue API, ein neues Bereitstellungsmodell usw. zu übernehmen von Dingen, die am häufigsten in Verbindung mit einem Pilotprogramm oder einer Unternehmensumstrukturierung auftreten.

Eine Revolution anführen? Wenn die Leute, die gerade arbeiten, in der Vergangenheit belohnt wurden und das Unternehmen nicht in Gefahr zu sein scheint, was ist ihre Motivation für Veränderungen? Wenn Sie wie ein Außenseiter wirken, der die Richtung vorgeben und die Verantwortlichen für die Ergebnisse, die sie nicht vorhersagen können, zur Rechenschaft ziehen möchte, scheint dies alles Risiko zu sein, keine Belohnung.

Positionsmacht oder Ideenführung? Viele Organisationen arbeiten mit Positionsmacht. Wenn Sie keine sichtbare Unterstützung durch Manager, Abteilungsleiter, Direktoren und Vizepräsidenten haben, sind Sie lediglich ein Ideenführer. Manche Menschen sind in der gefährlichen Lage, eine Idee zu haben und keine zweite zu haben. Wenn du sie zeigen kannst, anstatt sie zu erzählen, ist das ein langer Weg, um Skeptiker zu beruhigen und talentierte Verbündete zu interessieren.

Support-Basis zu klein? Machen Sie eine Triage unter diesen 250 Leuten und sortieren Sie sie in drei Kategorien: bereit zu umarmen, bereit zu lernen und nicht bereit zu lernen. Sie haben gute Gründe, frustriert zu sein von einigen Leuten, die kein Interesse daran haben, etwas zu ändern. Sie könnten genauso gut an einem Seil schieben. Das ist ungenutzte Mühe. Wenn Sie ein Gefühl dafür haben, wer Veränderungen unterstützt, können Sie herausfinden, was sie interessiert.

Im Gegensatz zu einer medizinischen Triage, bei der die ethische und praktische Entscheidung darin besteht, der Mittelgruppe zu helfen, die es mit Hilfe schaffen kann, können Sie Ihre Energie und Zeit nach Ihrem Urteilsvermögen und Ihren Vorlieben investieren. Pflegen Sie für Ihren Erfolg die Gruppe, die bereit ist, neue Ideen anzunehmen. Es sind zwar nur wenige, aber wie bei einem Schneeball wird Ihre Sichtbarkeit und Glaubwürdigkeit als Anwalt zunehmen. Bald werden Sie gefragt, wann das nächste Training stattfinden wird.

Darin auf lange Sicht? Bis Sie einen Champion kultivieren, um Dinge nach sich zu tragen, sollten Sie damit rechnen, Zeit für den Aufbau von Beziehungen zu investieren. Möglicherweise müssen Sie länger als einen Monat bei den von Ihnen trainierten Teams bleiben. Bis das Team verbesserte Methoden für sich selbst besitzt, sind Sie nur ein Technologie- oder Methodik-Cop. Mentoring ist ein Prozess, der Jahre dauern kann. Es gibt eine Menge Dinge, die Ihre Entwickler nicht tun möchten, die Sie für wichtig halten (ich denke, Sie haben speziell Unit-Tests erwähnt). Es kann eine Weile dauern, bis eine gemeinsame Vision des damit verbundenen Werts entsteht. Ich weiß das aus Erfahrung, weil ich mich einmal für ein Code-Coverage-Tool in einem Fortune-500-Unternehmen ausgesprochen habe, das einen hervorragenden Ruf für Qualität hatte, aber Manager und Kollegen waren besorgt, wenn es darum ging, sich dazu zu verpflichten.

Experte oder Basis? Viel schneller als Mentoring wäre es, die Unterstützung der Basis zu fördern, die von jedem Teammitglied kommt. Ausgehend von einem Team von zehn Softwarespezialisten würde ich die zweite auswählen, wenn ich die Wahl hätte, dass eine Person die ganze Zeit am Prozess arbeitet oder zehn Personen zehn Prozent der Zeit am Prozess arbeiten. Der Basisprozess ermöglicht es den Befürwortern, die Auswirkungen des Ansatzes zu spüren und den Ansatz so anzupassen, dass die Probleme des Teams, dem die Arbeit gehört, am besten gelöst werden.

Sehen Sie die Freiheitslinie? Ein Teil der Einführung von "Best Practices" besteht darin, die Menschen dazu zu bringen, die Freiheit aufzugeben, Dinge auf eine gemeinsame Art und Weise zu tun. Die Diskretion des Programmierers aufzugeben, ist schmackhafter, wenn Sie nach Möglichkeiten suchen, den Entwicklern viele Optionen zu überlassen. Was sie auswählen, wird von einer Partition bestimmt, die wir als Freiheitslinie bezeichnen können. Möglicherweise müssen ähnliche, gut begründete Aufteilungen über organisatorische, regionale / standortspezifische, Team- und persönliche Praktiken getroffen werden.


0

Dies hätte ein Kommentar sein sollen, aber da ich anscheinend noch nicht in der Lage bin, Kommentare abzugeben, könnte dies auch eine Antwort sein.

Das Wichtigste bei dieser Art von Durchbrüchen (sei es OOP oder irgendein anderes Paradigmenwechsel, sagen wir, funktionale Programmierung oder was auch immer im nächsten Jahr herauskommt) ist DO CODE REVIEWS AND PEER PROGRAMMING . Begleite sie und leite die Teams auf eine andere Art und Weise, um Dinge zu tun, die ihnen helfen.

Mein persönlicher Weg zur objektorientierten Programmierung begann, als mich einige zufällige Asshats, die Code-Reviews durchführten, dazu verurteilten, Dinge auf modulare Art und Weise zu tun und den Status beizubehalten, ohne vollständig C ++ OO zu werden. denke Code wie

extern float clients_total;

void client_add(float sum);  
void client_substract(float sum);
float client_get_total();

(Beachten Sie, dass clients_total möglicherweise vollständig redundant ist, da dies ein besonders schlecht geplantes Beispiel ist.)

Und am Ende tat ich dies nur, wenn ein älterer Mitarbeiter auf meinen Bildschirm zeigte und sagte: "Wenn Sie dasselbe mehrmals schreiben, verwenden Sie eine Prozedur oder eine Funktion und rufen Sie es einfach immer wieder auf."

Vorträge und Besprechungen sowie optionale Übungen führen nicht zu einem Paradigmenwechsel oder einer Einführung einer neuen Praxis, da es keinen wirklichen Antrieb gibt, dies zu tun, außer Neugierde. Auf der anderen Seite erhöht es die Adoptionsrate sehr gut, wenn man es nicht schlecht macht oder es allgemein verpönt.

Seien Sie auf die jammernde und klassenorientierte Entwicklung vorbereitet, die folgen wird, bis sie das richtige Design in das integrieren, was sie tun. Du wirst viele Dinge sehen, die dich innerlich sterben lassen, aber so sieht der Weg zum Lernen aus.

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