Es gibt viele Geschichten über absichtlich schlechten Code, nicht nur auf TheDailyWTF, sondern auch auf SO. Typische Fälle sind:
- Mit einem unnötig zeitraubenden Konstrukt (z. B. einer leeren Schleife, die bis zu einem gewissen Wert zählt) können Programmierer die Anwendung auf einfache Weise "beschleunigen", indem sie sie entfernen, wenn sie dazu aufgefordert werden.
- Bereitstellung absichtlich irreführender, falscher oder keiner Dokumentation zur Generierung teurer Supportanfragen.
- Bereit, Fehler zu generieren, oder schlimmer noch, es wird generiert, obwohl alles einwandfrei funktioniert hat, und die Anwendung wird gesperrt, sodass zum Entsperren ein teurer Supportanruf erforderlich ist.
Diese Punkte weisen eine mehr oder weniger böswillige Haltung auf (auch wenn dies manchmal aus Versehen geschieht), insbesondere der erste Punkt tritt eher häufig auf.
Wie soll man mit solchen Konstrukten umgehen? Das Problem ignorieren oder einfach den fehlerhaften Code entfernen? Benachrichtigen Sie ihren Vorgesetzten oder sprechen Sie mit der Person, die die "Funktion" eingeführt hat?
Antworten:
Die meisten schlechten Code ist aufgrund eines Mangels an Verständnis und die Lösung ist die Bildung.
Absichtlich fehlerhafter Code unterscheidet sich grundlegend von dem, was der Programmierer oder der Rest des Projekts erlebt hat. Als solches müssen Sie herausfinden, warum sie den Code absichtlich sabotieren, und sich mit diesem Problem befassen. Dies bedeutet meistens keine Büropolitik, und das ist für niemanden eine angenehme Situation.
Wie ich mit der Politik umgehen würde, hängt von vielen (oben nicht genannten) Umständen ab. Wie ich mit dem Code umgehen würde, ist zunächst sicherzustellen, dass ich nicht das einzige Missverständnis bin - dass es sich wirklich um schlechten Code handelt - und dann die offensichtlichen Mängel zu beheben. Wenn möglich, schreiben Sie Tests, bei denen der fehlerhafte Code fehlschlägt. Eine Überprüfung, ob ich den Code richtig verstanden habe, würde bedeuten, mit der Person zu sprechen, die den Code geschrieben hat. Dies sollte auf eine sehr nette, höfliche Art und Weise geschehen, ohne die Absicht zu übernehmen, und es kann hilfreich sein, den zugrunde liegenden (politischen) Grund zu finden, der später benötigt wird.
Die Schifffahrt ist wichtiger als die Perfektion des Elfenbeinturms, aber es gibt zwei Punkte, die es wert sind, angesprochen zu werden. Wenn Sie offensichtliche Mängel beheben, erhalten Sie 80% der Ergebnisse mit 20% des Aufwands, und diese Art von tief hängenden Früchten ist es selten wert, ignoriert zu werden. Aber was noch wichtiger ist: Wenn Sie den zugrunde liegenden (politischen) Grund nicht ansprechen, wird wahrscheinlich absichtlich schlechter Code geschrieben, der weitere Probleme verursacht - und möglicherweise den Versand verhindert.
quelle
Ich bin (in über 20 Jahren) nie auf absichtlich schlechten Code gestoßen, aber die Beispiele, die Sie zitieren, scheinen (zumindest für mich, aber für IANAL) Versuche zu sein, entweder einen Arbeitgeber oder einen Kunden zu betrügen, sodass Sie wahrscheinlich einen legalen haben Verpflichtung, Ihren Vorgesetzten darauf hinzuweisen.
quelle
Kommt auf die Kultur des Unternehmens an. Meistens ist es nicht Ihre Aufgabe, schlechten Code zu reparieren und zu bereinigen.
Jamie Zawinskis Überlegungen zu Overengineering von Coders at Work , die auch in dieser Situation angewendet werden können:
Es gibt viele schlechte Programmierer und Codes, und der Versuch, sie alle zu beheben, wenn Sie auf sie stoßen, auf Kosten des aktuellen Projekts / der aktuellen Aufgabe, kann sich einfach nicht lohnen, wenn das Produkt "funktioniert". Zu oft sind wir alle nur Klebebandprogrammierer.
Siehe auch Joel Spolskys Beitrag: The Duct Tape Programmer
quelle
Diese Haltung ist das Symptom für etwas Schlimmeres.
Fördert das Management den Wettbewerb der Entwickler?
Wo ist der Teamgeist?
Werden Aufgaben von einer anderen Person als dem Team selbst zugewiesen?
...
In jedem Fall reicht es nicht aus, den fehlerhaften Code zu entfernen. Sich bei seinem Manager zu beschweren, wird sicherlich nicht dazu beitragen, den Teamgeist zu verbessern.
Ich würde versuchen, mit der Person direkt zu sprechen und zu verstehen, warum, indem ich viele Fragen stelle, ohne sie zu beurteilen. Das ganze Team muss auf Aggressivität verzichten.
In den meisten Fällen hat dieses konstruktive Verhalten das eigentliche Problem (das schlimmere) ins Licht gerückt, und dann können Sie daran arbeiten.
Wenn es wirklich nicht geht. Entfernen Sie diesen Entwickler aus dem Team.
quelle
Wenn ich es für beabsichtigt halten würde, würde ich den Kerl wahrscheinlich feuern! Wenn jemand nicht gut genug programmiert, würde ich an seinen Fähigkeiten arbeiten. Wenn es von oben geschoben würde, würde ich wahrscheinlich anfangen, nach einem neuen Job zu suchen.
quelle
Abhängig vom Kontext ist möglicherweise einer davon der am besten geeignete. Andere Möglichkeiten umfassen die Aufforderung, zu einem anderen Projekt zu wechseln, einen neuen Job zu bekommen, und verschiedene fragwürdige moralische und / oder rechtliche Handlungen.
Da wir jedoch die wahren Fakten und die beteiligten Personen nicht kennen, sollte niemand in der von Ihnen beschriebenen Position unseren Ratschlägen / Wert von 2 Cent viel Aufmerksamkeit schenken.
Wenn es sich um eine reale Situation handelt, über die Sie sprechen, kann es sich lohnen, mit Ihrem Vorgesetzten ein leises Gespräch zu führen und ihn um Rat zu fragen, was Sie tun sollten. Wenn möglich, versuchen Sie das Gespräch darüber zu führen, was Sie tun können / sollten, und nicht, mit dem Finger zu zeigen. Nennen Sie möglichst keine Namen. Es besteht die Möglichkeit, dass Ihr Manager das Problem bereits ahnt.
Aber die Kehrseite ist, dass Sie dies überproportional blasen könnten. Denken Sie lange und gründlich darüber nach, bevor Sie etwas unternehmen. Denken Sie an die Konsequenzen, einschließlich der Möglichkeit, dass alle Schritte, die Sie unternehmen, auf Sie zurückschlagen könnten ... schlimm.
quelle