Java >> Java Tutorial >  >> Java

Die dunkle Seite der Best Practices

Best Practices sind das Rückgrat der Softwareentwicklung (so sagt man uns). Jeder Entwickler hat seine eigene Meinung zu Softwareentwicklungsprozessen, Architektur und Programmierung.

Diese Meinungen basieren auf Bildung, persönlichen Erfahrungen und den Erfahrungen anderer Softwareentwickler.

Diese Meinungen sind auch als Best Practices bekannt, und jedes Softwareunternehmen hat sie.

Sind Best Practices etwas Gutes? Nicht unbedingt. Ich behaupte, dass Best Practices eine dunkle Seite haben, die oft übersehen wird.

Vorsicht vor der dunklen Seite

Best Practices selbst sind nicht gefährlich. Sie werden gefährlich, wenn sie missbraucht oder missverstanden werden. Leider ist das ziemlich üblich.

Meiner Erfahrung nach sind die drei häufigsten Arten des Missbrauchs von Best Practices:

Best Practices werden als Wundermittel behandelt

Wenn Best Practices als endgültige Lösung behandelt werden, ist es nicht erlaubt, sie in Frage zu stellen. Wenn wir die Gründe für eine bestimmte Best Practice nicht in Frage stellen können, können wir nicht verstehen, warum sie besser ist als die anderen verfügbaren Lösungen.

Dies bedeutet, dass wir die Gelegenheit verpassen, zu lernen und die aktuelle Situation zu verbessern.

Dies wäre eine gültige Strategie, wenn wir in einer statischen Welt leben würden. Dies ist natürlich nicht der Fall. Wir alle wissen, dass neue Technologien in rasantem Tempo entstehen.

Sind wir sicher, dass wir zurückgelassen werden wollen?

Best Practices werden für die Büropolitik verwendet

In dieser Situation werden Best Practices eingesetzt, um die Interessen einer bestimmten Gruppe durchzusetzen. Die zwei gebräuchlichsten Möglichkeiten, dies zu tun, sind:

Zuerst , werden Best Practices verwendet, um die Position und Autorität von erfahrenen Entwicklern und Architekten zu sichern. Die gesamte Organisation muss die Technologien und Programmiersprachen verwenden, die erfahrenen Entwicklern und Architekten vertraut sind. Alle neuen Technologien und Programmiersprachen werden als zu jung und unreif abgeschaltet.

Zweiter werden Best Practices als Marketinginstrument eingesetzt. Ihr Zweck ist es, die Illusion zu erwecken, dass die Organisation gute Softwareentwicklungspraktiken befolgt. Eine gut aussehende Fassade ist das Einzige, was zählt, weil

  1. Es lässt das Unternehmen in den Augen der Kunden gut aussehen.
  2. Es lässt das mittlere Management in den Augen ihrer Vorgesetzten gut aussehen.

Die Realität ist jedoch, dass es niemanden interessiert, ob dies wirklich der Fall ist.

Nun, das ist nicht ganz richtig. Die Entwickler interessieren sich wahrscheinlich dafür, aber sie werden oft "gefordert", sich zu bücken und einen für das Team zu nehmen.

Das Problem der Büropolitik ist, dass sie dazu neigt, alle zu demotivieren, die nicht davon profitieren. Klingt das für uns nach einem würdigen Ziel?

Best Practices ermutigen zu Over Engineering

Manchmal führen Best Practices dazu, dass Konzepte wie Architektur, Designmuster und Wiederverwendung über alles andere gestellt werden. Die Programme (oder Komponenten), die nach diesen Prinzipien implementiert werden, sind oft überdimensionierte Monster. Es ist erstaunlich, wie kompliziert Software sein kann, wenn sie von einem Team von Architekten entworfen wird.

Diese Situation wird durch die Unfähigkeit verursacht, den Unterschied zwischen einer wiederverwendbaren Komponente (Framework, Bibliothek oder Dienst) und einer Anwendung zu verstehen. Dieser Unterschied ist deutlich:

  • Wenn wir eine wiederverwendbare Komponente erstellen, müssen wir sie so gestalten, dass sie wiederverwendet werden kann.
  • Wenn wir eine Anwendung erstellen, müssen wir uns auf die Anforderungen dieser Anwendung konzentrieren.

Es macht keinen Sinn, einen Code zu überarbeiten, der möglicherweise nie wiederverwendet wird. Und doch passiert genau das, wenn wir denken, dass wir in jeder Situation die gleichen Designprinzipien anwenden sollten.

Was sollen wir dann tun?

Zunächst einmal sollten wir unseren Job machen. Wenn Best Practices im Weg stehen, sollten wir ihnen nicht folgen. Das mag etwas radikal klingen, aber wir sollten verstehen, dass die ganze Idee von Best Practices darin besteht, den bestmöglichen Weg zur Entwicklung von Software zu finden. Daher macht es keinen Sinn, einer Best Practice zu folgen, die uns nicht dabei hilft, dieses Ziel zu erreichen.

Wir müssen verstehen, dass es keine Wunderwaffe gibt. Das bedeutet, dass es keine Methode gibt, die auf alle Situationen anwendbar ist. Die meisten von uns verstehen das, aber aus irgendeinem Grund vergessen wir es, wenn wir die Worte Best Practice hören.

Anstatt Best Practices als Wundermittel zu behandeln, sollten wir verstehen, dass eine Best Practice eine Methode ist, die in einer Situation funktioniert, in der bestimmte Voraussetzungen erfüllt sind. Wenn wir das verstehen, ist klar, dass

  • Wir müssen neugierig genug sein, ständig nach besseren Lösungen für unsere Probleme zu suchen. Die Sache ist, dass wir jeden Tag neue Dinge lernen. Eine bewährte Methode, die heute absolut sinnvoll ist, kann sich nächste Woche dumm anfühlen. Wir müssen uns daran erinnern, dass nichts ewig dauert. Nicht einmal Best Practices.
  • Wir müssen mutig genug sein, bewährte Verfahren in Frage zu stellen, wenn sie keinen Sinn ergeben. Es ist möglich, dass wir uns irren, aber wenn wir die Best Practices nicht hinterfragen, werden wir die Wahrheit nie erfahren. Können wir wirklich damit leben?
  • Wir sollten nicht einer Best Practice folgen, die nicht richtig erklärt wird. Stattdessen sollten wir eine bessere Erklärung fordern. Wenn keine angegeben ist, sollten wir sie ignorieren. Nur ein Dummkopf folgt einer Methode, die er nicht versteht.

Am Ende sind Best Practices nur Meinungen. Es stimmt, dass einige Meinungen mehr Gewicht haben als andere, aber das bedeutet nicht, dass diese Meinungen nicht als falsch erwiesen werden können. Ich denke, dass es unsere Pflicht ist, so viele bewährte Verfahren wie möglich zu stürzen.

Wieso den?

Es hilft uns, bessere Wege zu finden, um unsere Arbeit zu erledigen.


Java-Tag