Ist Überentwicklung ein Warnzeichen? [geschlossen]

22

Daher stellen wir neuen Kandidaten mit einigen genau definierten Anforderungen eine einfache Codierungsübung vor. Gelegentlich erhalten wir Lösungen, die das vorliegende Problem nicht wirklich lösen, aber überarbeitet sind, um ein wahrgenommenes Problem zu lösen - häufig außerhalb der Grenzen der Übung.

Nun ist meine Frage, ist das ein Warnzeichen?

EDIT: Ein Großteil der Diskussion basiert darauf, dass der Test fehlerhaft ist - was ein fairer Punkt ist. Wie ich in einem Kommentar beschrieben habe, besteht die Grundvoraussetzung des Tests darin, zu zeigen, wie Sie die Daten aus der Datei auf vernünftige Weise lesen können (und Sie wären erstaunt über die Vielfalt der Ansätze, die wir sehen) und wie sie mit denen übereinstimmen Elemente vor dem Berechnen der Latenz zwischen den Aktualisierungen. Damit dies funktioniert, müssen bestimmte Annahmen zu den Daten getroffen werden. Wir suchen nach diesen Annahmen und geben ausdrücklich an, dass wir den von Ihnen gewählten Ansatz (einschließlich des OO-Ansatzes usw.) in zwei Stunden sehen möchten Zeitfenster.

IMHO, als ich interviewt habe, war es die vollständigste Übung, die mir begegnet ist.

Das spezielle Szenario, über das ich nachdenke, besteht darin, dass ein Kandidat in einer Multithread-Anwendung "Netzwerk" -Eingaben akzeptiert hat, anstatt sie aus der Datei zu lesen, was eindeutig nicht im Geltungsbereich liegt.

Nim
quelle
43
Kannst du bitte ein Beispiel für die Übung beifügen? Das Problem könnte in der Herausforderung und nicht im Kandidaten liegen.
Reactgular
13
Sind Sie sicher, dass die Kandidaten das in der Übung vorgestellte Problem verstanden haben? Unkompliziert für die Person, die die Übung präsentiert, ist nicht immer gleich unkompliziert für den Kandidaten, der unter Stress steht.
cdkMoose
23
Ist die Tatsache, dass Sie es als "Überentwicklung" bezeichnet haben, nicht die Antwort? Es ist so, als würde man fragen: "Ist ein übermütiger Kandidat ein Warnzeichen?" Sicher, es sei denn, er ist nur zuversichtlich, aber Sie haben Ihre Schlussfolgerung bereits in die Prämisse der Frage gesetzt.
PSR
3
@MathewFoscarini Ist Überentwicklung nicht immer negativ? Dies impliziert, dass sich die Person auf die falschen Dinge konzentriert und eine Lösung implementiert, die unnötig komplex, zeitaufwändig oder schwer zu verstehen und zu warten ist. Wie konnte es nicht als Fehler wahrgenommen werden?
Andres F.
2
@AndresF. Es ist ein Interview. Over Engineering die Antwort auf eine Frage in einem Interview, da die meisten Interviews nur eine Stunde dauern. Könnte eine Leistung sein. Ja, 1000 Codezeilen zu schreiben, um etwas zu sortieren, ist überflüssig, aber er hat 1000 Codezeilen in weniger als einer Stunde geschrieben! Wenn über Engineering ist ein Problem, das im Interview-Prozess herausgefiltert werden muss. Es sollte einen spezifischeren Test in Bezug auf den Entwurfsumfang und die Komplexität geben. Ich würde der Person lieber eine Softwarearchitekturherausforderung zum Lösen geben. Beispielsweise; msgstr "ein UML - Diagramm für ein selbstfahrendes Autosystem erstellen".
Reactgular

Antworten:

48

Das Problem ist, dass der Test schief läuft. Sie fordern jemanden auf, seine Fähigkeit zum Schreiben komplexer Unternehmenssoftware anhand einer einfachen Übung zu demonstrieren, die nur wenige Minuten dauert. Es gibt andere Interviewer in anderen Unternehmen, die sich darüber beschweren, dass die Kandidaten mit diesen Übungen nicht über ausreichende Kenntnisse im objektorientierten Design verfügen, sodass die Tendenz zu einer Überkompensation besteht. Dies bedeutet nicht unbedingt, dass Ihr Kandidat nicht in der Lage ist, einfacheren Code zu verwenden, wenn die Situation dies rechtfertigt.

Wenn Sie wissen möchten, ob dies bei Ihrem Kandidaten der Fall ist, bitten Sie ihn, es zu wiederholen, und geben Sie ihm einige spezifische Richtlinien. Sagen Sie: "Ich kann sehen, dass Sie Ihre objektorientierten Designfähigkeiten demonstriert haben, aber es scheint übertrieben für ein so einfaches Problem. Können Sie es mit nur zwei kleinen Funktionen umschreiben?"

Karl Bielefeldt
quelle
5
Wo steht in der Frage "komplexe Unternehmenssoftware"?
Reactgular
12
@Nim - Ich denke, Karl meint, was Sie als Überentwicklung bezeichnen, andere Interviewer könnten eine gute Darstellung des Verständnisses des Befragten für OOD in Betracht ziehen. Der Verweis auf Pseudo-Code ist möglicherweise nicht so explizit, wie Sie es bei der Beschreibung des von Ihnen erwarteten Ansatzes vermuten.
Mike Partridge
7
Ich sage nichts über deine Absichten, @Nim. Kandidaten lesen Dinge in Fragen, die nicht explizit angegeben sind, und viele Interviewer erwarten dies tatsächlich. Die Kandidaten haben keine Möglichkeit zu wissen, ob Sie diese Art von Interviewer sind oder nicht, also sind sie auf der sicheren Seite.
Karl Bielefeldt
5
@ KarlBielefeldt: Ja, manchmal lesen Leute Dinge in Fragen, die nicht explizit angegeben sind - zum Beispiel in Fragen, die hier auf PSE gestellt werden ;-)
Doc Brown,
3
Wie wäre es mit einer einfachen Lösung, einfach einen Satz am Ende der Übung
einzufügen,
30

Ich würde sagen, dass dies ein klares Warnsignal ist, aber nicht unbedingt für einen Kandidaten disqualifiziert.

Es gibt zwei verschiedene Probleme, die Kandidaten zu haben scheinen:

  1. Den Punkt der Übung verfehlen - Das ist ziemlich alarmierend. Alle Programmierkenntnisse der Welt führen nicht zu einem guten Ergebnis, wenn jemand nicht in der Lage ist, das Problem, das er richtig löst, zu beurteilen. Ich habe festgestellt, dass die produktivsten Ingenieure diejenigen sind, die in der Lage sind, das wahre zu lösende Problem zu identifizieren, auch wenn es nicht genau das Problem ist, das es darstellt. Die Fähigkeit, kritisch über die gestellte Frage nachzudenken und sie möglicherweise in etwas umzuformulieren, das einfacher zu lösen ist, ist eine entscheidende Fähigkeit. Das Fehlen des Punktes, an dem das Problem klar festgestellt wird, sollte eine große rote Fahne sein.
  2. Überarbeitung der Lösung - Dies ist ein sekundäres Problem und oft das Ergebnis des ersten Problems. Es gibt ein paar verschiedene Pathologien, die dieses Ergebnis haben können. Erstens kann ein unzureichendes Verständnis des Problems oder eine zu umfassende Darstellung zu einer zu komplexen Lösung führen. Dies hängt eindeutig mit dem ersten Punkt zusammen. Zweitens versuchen, durch Überlegen zukünftiger Szenarien, die möglicherweise nicht wirklich relevant sind, zu "protzen". Dies kann problematisch sein, da dies darauf hinweist, dass der Kandidat den Wert der Einfachheit der Lösungen und der Verschiebung der Komplexität nicht verstanden hat, bis dies wirklich notwendig ist. Dies kann mit einer guten Anleitung korrigiert werden, ist jedoch ein Hinweis, wenn Sie jemanden in die Organisation einbeziehen.

Ich würde vorschlagen, den Kandidaten über seine Antwort im Verlauf des Prozesses zu informieren. Anstatt nur ihr Ergebnis zu betrachten, versuchen Sie herauszufinden, was sie zum Ergebnis geführt hat, und geben Sie ihnen eine Anleitung, wie sie reagieren und ihre Antwort ändern würden. Dies wird wahrscheinlich mehr über ihre Fähigkeiten aussagen als nur über ihre direkte Reaktion auf das Problem. Das "Warum" ihrer Herangehensweise kann Ihnen ein Gefühl dafür geben, ob sie es einfach nicht verstehen oder ob ihr Verständnis in der Art und Weise, wie sie darauf reagiert haben, nur gering war. Diese Art der Nachverfolgung wird auch mehr über ihren Gesamtansatz zur Problemlösung verraten.

Untersuchen Sie auch das Problem selbst und prüfen Sie, ob es möglicherweise unklar ist und die Leute möglicherweise auf die falsche Spur kommen, wenn sie ihre Antworten formulieren.

DemetriKots
quelle
23

Nein, nicht während eines Vorstellungsgesprächs. Zu viele Interviewer machen Dinge wie das absichtliche Unterbestimmen der Anforderungen und erwarten vom Interviewten, dass er weitere Fragen stellt oder die Aufmerksamkeit auf reale Probleme lenkt, die nicht ausdrücklich erwähnt werden.

Hier sind einige Dinge, von denen Ihre Anforderungen wahrscheinlich nichts sagten:

  • Kodierungsstandards

  • Bemerkungen

  • Ausnahmebehandlung

  • Beschreibende Namen von Variablen, Klassen, Methoden

  • Nach idiomatischem Sprachgebrauch

  • Objektorientiertes Design

  • Aufmerksamkeit auf mögliche Parallelitätsprobleme

  • Schreiben von Testfällen für den Code

Haben Sie sich um eines dieser Dinge gekümmert, ohne es ausdrücklich zu erwähnen? Wie würde der Kandidat wissen, welche Sie interessieren und welche nicht?

Ein Interview ist eine höchst künstliche Umgebung. Der Interviewer versucht oft, den Kandidaten ein wenig "auszutricksen", um es dem Interviewten zu erschweren, ihm zu sagen, was er hören möchte, und der Interviewte versucht zu erraten, was der Interviewer wirklich will.

Im Allgemeinen ist es ziemlich anders, bei dieser Vermutung einen Fehler zu machen, als bei realen Designentscheidungen einen Fehler zu machen. Wenn Sie wissen möchten, ob jemand Dinge überarbeitet, müssen Sie wahrscheinlich über Design sprechen, anstatt sich eine sehr künstliche Codierungsübung anzusehen.

bA
quelle
Ich habe das noch nie gesehen. Tatsächlich wollen die meisten Unternehmen die einfachste und prägnanteste Lösung. Ich würde mich davor hüten, für ein Unternehmen zu arbeiten, das keine ordnungsgemäße Anfrage stellen kann, und da ein Bewerber nicht in der Lage ist, "klare Anforderungen" zu verstehen, würde ich ihn / sie nicht einstellen.
Shaun Wilson
1
@ ShaunWilson: Das hängt sehr davon ab. Ich stelle mir vor, dass große Unternehmen daran interessiert sein könnten, was Sie mit klaren Spezifikationen erreichen können. In kleineren Teams hängen die Mitarbeiter von den Fähigkeiten des jeweils anderen ab, um sich einzuleben, zu extrapolieren, zwischen den Zeilen zu lesen und den Problembereich selbst zu erkunden.
back2dos
@ShaunWilson Ich habe es schon oft gesehen. Geben Sie eine Aufgabe, weisen Sie den Kandidaten sogar an, Dinge wie die Fehlerprüfung zu ignorieren und nur die Grundlagen bereitzustellen, und scheitern Sie dann, weil sie nicht jeden einzelnen Eckfall und jede Eventualität enthalten. Es ist leider sehr, sehr häufig.
16.
Für eine Codierungsübung ist es ein wenig zu erwarten, dass sich die Kandidaten an Codierungsstandards und -stil halten - aber Konsistenz ist eine faire Erwartung. Wir erwarten, dass die Kandidaten die Sprache idiomatisch verwenden, aber wir sind nicht nach Testfällen - der Zeitrahmen beträgt nur zwei Stunden (ich halte es für unrealistisch.) Ich glaube nicht an Tricks in Interviews, es gibt keinen Grund - ich habe Ich war schon in solchen Situationen und ehrlich gesagt finde ich, dass sie eine Ego-Reise für den Interviewer sind und so am besten vermieden werden. Wir erwähnen OOD ausdrücklich (und dennoch ist es erstaunlich, Lösungen zu sehen, die kein OOD verwenden ..)
Nim
@jwenting, lass mich dir versichern, wir machen so etwas nicht, das ist nur hinterhältig. Wenn wir jedoch fortfahren, werden wir in den f2f-Interviews darüber sprechen, wie sie erweitert werden könnten, um Eckfälle hinzuzufügen, aber nur, wenn die Kandidaten dies ansprechen.
Nim
12

IMHO ist die Antwort eindeutig ja , es ist ein Warnzeichen, wenn

  • Die Codierungsübung hatte eine klare Aufgabe
  • hat gut definierte (und auch gut geschriebene) Anforderungen,
  • Die Kandidaten hatten die Möglichkeit, Fragen zu stellen, um sicherzustellen, dass sie das richtige Problem lösen.
  • Sie wollen Menschen, die klug sind und Dinge in Ihrem Team erledigen , nicht Architektur-Astronauten .
Doc Brown
quelle
1
+1 für das interaktive Element. In vielen Fällen sind Spezifikationen vage, unvollständig oder enthalten eine domänenspezifische Terminologie. Ohne die Gelegenheit, irgendwelche Fragen zu klären, kann es unangemessen sein, den Kandidaten zu beschuldigen.
HABO
1
+1 für die Tatsache, dass Ihre Antwort den Prozess perfekt modelliert. Sie haben genau die Frage, die das OP gestellt hat, eindeutig beantwortet.
Dcaswell
1
+1, das ist mein aktueller Denkprozess, ich denke, es ist gut zu sehen, dass es nicht naiv oder einfach nur dumm ist ... Danke für die beiden Joel-Links ...
Nim
1
Seien Sie nicht so schnell Architektur-Astronauten zu verachten. Ein Architektur-Astronaut zu sein, ist eine Phase, die ein Entwickler durchlaufen muss, um ein wirklich kompetentes Klebebandprogramm zu werden. Sehen Sie sich diese Antwort von Aaronaught an , um ehrlich zu sein , bevorzugen Sie Cowboy-Codierung? Frage.
Marjan Venema
1
@MarjanVenema: Ich habe Zweifel, dass Aaronaught das Wort im gleichen Sinne meinte wie Joel Spolsky, der diesen Begriff erfunden hat. Und ehrlich gesagt, ich glaube nicht, dass ich jemanden "verachtet" habe - wenn Sie möchten, dass Entwickler in Ihrem Team Lösungen entwickeln, können Sie diese gerne einstellen.
Doc Brown
5

Nicht annähernd so groß wie ein Warnsignal, als das vorliegende Problem nicht zu lösen . Die Tatsache, dass er das Quiz nicht bestanden hat und nicht die richtige Lösung geliefert hat, ist ein Warnsignal. Dies ist nicht unbedingt ein No-Go-Szenario, da es davon abhängt, wie und warum er nicht die richtige Lösung bereitgestellt hat.

Oft ist die Frage komplett beschissen und einfach unbeantwortbar. Tun Sie nicht so, als würden Interviewer niemals Fehler machen. Es ist immer noch ein Misserfolg für ihn, herauszufinden, warum die Frage beschissen ist. Wenn Sie einen Ingenieur einstellen, von dem erwartet wird, dass er die Anforderungen erfüllt, ist dies ein Problem. Wenn Sie einen Coder einstellen, erwarten Sie einfach nicht, dass er das tut.

Vorausgesetzt, dass die Codierungsübung nicht schrecklich durcheinander ist, scheint es, dass die Art und Weise, wie er versagt hat, eine Fehlinterpretation des Problems war und ins Unkraut ging, um ein Problem zu lösen, das nicht da war. Ja, das ist ein Warnzeichen.

Philip
quelle
3

Vielleicht.

Das Problem nicht zu lösen ist natürlich ein klares Warnsignal dafür, dass etwas nicht stimmt. Was schief gelaufen ist? Entweder haben sie das Problem missverstanden oder sie haben eine schlechte Lösung gefunden. Eine schlechte Lösung für etwas Einfaches ist ein klares Zeichen dafür, dass der Kandidat arm ist.

Wenn Sie das Problem falsch verstanden haben, schauen Sie sich Ihre Anforderungen genau an. Sogar Dinge, die Ihnen kristallklar erscheinen, können für andere, die mit einer Domäne nicht vertraut sind, oder aus einem anderen Hintergrund (Gebietsschema, Alter, Erziehung) unklar sein. Wenn der Kandidat mit Ihnen im Raum war oder die Gelegenheit bot, Fragen zu stellen, und dennoch versagte, würde ich dies als ein Versagen ihrer Seite betrachten. Wenn die Anforderungen über die Mauer geworfen würden, würde ich ihnen wahrscheinlich den Vorteil des Zweifels geben (und darüber nachdenken, den Interviewprozess zu regeln).

Wenn die Lösung richtig war, wird es weniger klar. Persönlich denke ich, dass einige Leute YAGNI zu weit bringen. Wenn Sie ein bestimmtes Problem lösen und eine allgemeine Lösung erstellen können, ohne die Komplexität zu erhöhen oder die Wartbarkeit zu beeinträchtigen, warum dann nicht die allgemeine Lösung? (Denken Sie daran, einen String umzukehren oder eine Sammlung umzukehren.) Diese Art von "Überentwicklung" ist meiner Meinung nach eindeutig gut.

Alles andere ist dieser graue Mittelweg. Befasst sich die Lösung mit wahrscheinlichen Änderungsachsen? Fügt die Lösung Komplexität hinzu oder beeinträchtigt sie die Wartbarkeit? Ein wenig Komplexität hinzufügen, um zukünftige Probleme zu lösen, die fast garantiert zum Sieg führen. Die Wartbarkeit stark zu beeinträchtigen, um etwas zu erklären, das absolut unwahrscheinlich ist, ist es nicht.

Ein guter Softwareentwickler zu sein, bedeutet hier die richtige Balance zu finden. Ein guter Interviewer zu sein, bedeutet, das richtige Urteil / den richtigen Schluss zu ziehen, wie und warum der Kandidat dieses Gleichgewicht gewählt hat, und dabei oft andere Teile des Interviews zur Bewertung heranzuziehen.

Telastyn
quelle
2
Wenn das Problem schwer zu verstehen ist oder nicht gut kommuniziert wurde, ist dies die Zeit für sie, um die kritischen Fähigkeiten zu demonstrieren, die ein moderater Programmierer haben MUSS - das Problem zu definieren.
Adam Davis
Die Frage besagt nicht, dass der Kandidat die Gelegenheit nicht genutzt hat, Fragen zu stellen.
Dcaswell
3

Vielleicht aber folgendes beachten:

  • Interviews sind hart: Die Menschen stehen unter Stress. Dies sollte bei jedem Problem, das Sie jemandem geben, stark berücksichtigt werden

  • Anforderungslänge: Wie lang und unkompliziert sind die Anforderungen? Haben Sie sie besonders wortreich gestaltet, um sicherzustellen, dass Sie alles einschließen? Infolgedessen können sie für Sie klar sein, aber die Anforderungen können überentwickelt sein! Ich habe einmal pro Stunde ein Vorstellungsgespräch mit ca. 3 Seiten Text für ein relativ einfaches Problem geführt. Manchmal ist der gesamte Text in einem Interview schwer zu lesen und zu interpretieren und kann auch falsch interpretiert werden.

  • Manchmal ist weniger mehr: Ich hätte lieber ein paar Aufzählungspunkte, Sätze und / oder Beispiele, die die wichtigsten Anforderungen zeigen, und dann eine Diskussion mit jemandem, dem ich Fragen stellen und den ich bei Bedarf auf dem Weg erreichen kann. Ich denke, ich versuche zu sagen, dass Sie zuerst überprüfen sollten, ob Ihre Testanforderungen für ein einfaches Problem nicht übermäßig kompliziert sind.

  • Kommunikationsfähigkeit: Sie sollten die Fähigkeit der Kandidaten testen, zu kommunizieren und intelligente Fragen zu dem Problem zu stellen. Wenn Sie wissen, dass sie das Problem verstanden haben, können Sie sie auf ihre Implementierung hinweisen.

  • Fazit: Wenn Sie nicht überprüft haben, ob das Problem verstanden wurde, wissen Sie wirklich nicht, was Sie mit dem Over Engineering anfangen sollen. Wie andere gesagt haben, kann es gut oder schlecht sein, aber wenn Sie das Verständnis nicht überprüft haben oder nicht mit dem Kandidaten über das Problem im Vorfeld gesprochen haben, ist es schwieriger, dessen allgemeines Verständnis des Problems zu kennen und zu verstehen, was man daraus machen kann.

Jackfly
quelle
1
Solide Antwort, aber es ist schwer, durch die Textwand zu waten. Überlegen Sie , ob Sie Ihre Antwort bearbeiten und die wichtigsten Abschnitte auflösen möchten.
2

Ein Großteil davon könnte darauf zurückzuführen sein, wie Sie die Frage formulieren und wie Sie das gesamte Interview relativieren.

Es ist wie: "Mal sehen, wie kreativ Sie sind. Was ist 2 + 2?" Vier? Alles, was Sie sich einfallen lassen könnten, ist die einfachste, naheliegendste und genaueste Antwort? Junge / Einsteiger-Entwickler, die während eines Interviews so beeindrucken möchten, werden den Test "Wir möchten Ihre Codierfähigkeiten testen oder sehen, wie gut Sie als Programmierer sind." um "etwas sehr raffiniertes zu tun." Wir alle denken gerne, dass Einfachheit das Beste ist, außer wenn es die Dinge schwieriger macht.

Es gibt Möglichkeiten, um zu sehen, ob jemand dazu neigt, Dinge immer zu übertreiben. Geben Sie ein Codebeispiel für etwas, das zu komplex war, und fordern Sie eine einfachere Lösung an. Wenn jemand eine Lösung anbietet, von der Sie nicht glauben, dass sie funktioniert, ist dies eine großartige Gelegenheit, um zu sehen, wie er auf Kritik reagiert. Persönlich würde ich gerne sehen, dass jemand offen für neue Ideen ist und eine bessere Lösung erkennt als jemand, der immer wieder dieselben Fehler macht.

Und in Wirklichkeit haben wir nicht immer die Möglichkeit, unseren Code zu ändern, wenn er nicht funktioniert? Sie können anfänglich unter- oder überentwickeln. Sollte die Implementierung der einfachen Lösung nicht einfacher sein?

JeffO
quelle
"Was ist 2 + 2?" 4 versus "Mal sehen, wie kreativ Sie sind. Was ist 2 + 2?" Die Grenze der Sequenz 3.9, 3.99, 3.999, 3.9999, ...
Emory
"Mal sehen, wie kreativ du bist. Was ist 2 + 2?" 5, für ausreichend große Werte von 2.
Michael
und definieren Sie "Überentwicklung". Abhängig von der Umgebung kann davon ausgegangen werden, dass etwas, das für jemanden, der mit dieser Umgebung nicht vertraut ist, überarbeitet erscheint, zu viele Freiheiten und Verknüpfungen für jemanden in dieser Umgebung enthält. Denken Sie an Raketensteuerungssoftware, wenn Sie von jemandem gesehen werden, dessen Hauptgebiet das Schreiben von Spielen für Mobiltelefone ist ...
Uhr
2

Kommt drauf an, aber generell nein.

Design im Allgemeinen ist eine Fähigkeit, die mit Erfahrung erlernt wird. Aaronaughts Beschreibung dieses von Marjan verknüpften Fortschritts ist im Allgemeinen gut.

Kommunikation in jeglicher Form hängt auch stark vom Kontext ab. Was als eins in einem Kontext völlig klar erscheinen mag, kann ebenso klar etwas anderes in einem anderen Kontext bedeuten. Zu wissen, welche Fragen gestellt werden müssen, ist auch eine Erfahrung.

Ihr Denkprozess und die Art und Weise, wie sie über ihre Entscheidungen urteilen, sind weitaus wichtiger als ihre Lösung. Ohne ihre Lösung und ihre Entscheidungen mit ihnen zu überprüfen, können Sie den Kontext, unter dem sie entwickelt wurde, nicht vollständig beurteilen.

In Anbetracht des obigen Fortschritts kann ein Kandidat mit der überentwickelten Lösung weiter als der Kandidat mit der einfachen Lösung sein.

Außerdem: Für welche Levelposition stellen Sie ein? Ein Überengineering eines Kandidaten auf Einstiegs- oder Mittelstufe ist weniger problematisch als ein Überengineering eines Kandidaten auf höherem Niveau.

Mr.Mindor
quelle
1

Wenn der Programmierer das Problem nicht gelöst hat, ist der gesamte zusätzliche Code der Versuch des Codierers, die Nichtantwort zu verschleiern. Es ist die gleiche Technik, die bei einem Aufsatztest von einem Studenten angewendet wird, der nicht viel über das Thema weiß. Er oder sie wird über ein zwingendes, aber nicht verwandtes Thema streifen, in der Hoffnung, dass seine Ignoranz durch die Anzahl der Wörter maskiert wird.

Wenn der Programmierer das Problem gelöst hat, aber wesentlich mehr Code hinzugefügt hat, berücksichtigen Sie den Hintergrund des Programmierers, da in einigen Bereichen der Programmierung größere Toleranzen erforderlich sind als in anderen.

Zum Beispiel hat Code, der den Autopiloten in einem Passagierflugzeug ausführt, viel weniger Fehlertoleranzen als ein kostenloses Android-Spiel. Ein Entwickler, der es gewohnt ist, schwer zugängliche und kaum zu aktualisierende eingebettete Geräte zu programmieren, codiert in der Regel mehr Was-wäre-wenn als ein Entwickler, der 15 Aktualisierungen pro Tag veröffentlichen kann.

Andrew Neely
quelle