Einen Fehler an einen erfahrenen Entwickler melden?

Ich bin ein Junior-Programmierer, der in einem Programmierprojekt arbeitet. Ich bin ziemlich neu in der verwendeten Programmiersprache sowie in der Gesamtstruktur des Programmprojekts (es existierte, bevor ich anfing, daran zu arbeiten).

Aufgrund meiner Unerfahrenheit musste ich wiederholt einen erfahrenen Entwickler um Hilfe bitten. Dieser Entwickler musste meinen Code aufgrund von dummen Fehlern meinerseits auch mehrmals korrigieren. Ich kann sagen, dass es eine gute Chance gibt, dass er etwas genervt wird.

Jetzt habe ich einen meiner Meinung nach großen Fehler in einem Bereich des Programms gefunden, an dem er arbeitet. Es wirkt sich nicht wirklich auf meine Arbeit aus, da mir an anderer Stelle im Code kleine Aufgaben zugewiesen wurden. Ich habe erwähnt, dass mein Compiler mir Fehler in diesen Zeilen gibt, aber er scheint zu glauben, dass es ein Fehler in meinem Computer-Setup ist. Ich habe den Fehler untersucht und weitere Tests durchgeführt, und ich bin mir fast sicher, dass es sich um ein Problem mit seinem Code handelt.

Während es für ihn und nicht für mich kompiliert, scheint sein Compiler mit diesen Fehlern in Ordnung zu sein (anscheinend ist der Compiler eine Ausnahme). Wenn ich die Fehler in der Kopie des Programms behebe, die ich auf meinen Computer herunterlade, läuft das Programm einwandfrei.

Meine Frage ist, ob ich ihm das noch einmal vortragen und meine Argumentation erläutern soll. Ich habe das Gefühl, dass es vielleicht besser ist, es zu lassen und einfach bei dem zu bleiben, was mir im Projekt zugewiesen wurde. Ist es eine gute Idee, dies weiter voranzutreiben, insbesondere angesichts meiner derzeitigen misslichen Lage?

Sein Code verhindert, dass das gesamte Programm ausgeführt wird, zumindest auf meinem Compiler. Um meine Teile des Codes zu testen, behebe ich seine Fehler und dann läuft das Programm einwandfrei. Ich mache das natürlich nur mit einer Kopie des Projekts, das ich auf meinen Computer heruntergeladen habe.
Wie kommt es, dass der Code für ihn kompiliert wird, aber nicht für Sie? Er ist vielleicht genau hier, wenn überhaupt, können Sie ihn um Hilfe bitten, um Ihr Computer-Setup zu reparieren.
Bei meinen Recherchen fand ich heraus, dass der Compiler, den er benutzt, zu akzeptieren scheint, was er geschrieben hat (dieser Compiler ist eine Ausnahme). Das würde erklären, warum er denkt, was er getan hat, ist richtig. Ich weiß auch, dass es nicht mein Computer-Setup ist, da ich das Programm auf mehreren Computern und auf mehreren Compilern getestet habe.
@Masked Man Auch wenn ich seine Fehler in meiner Kopie des Programms behebe, läuft es gut für mich. Ich bin mir also ziemlich sicher, dass das, was er geschrieben hat, falsch ist.
@InertialIgnorance Warum installierst du dann nicht einfach seinen Compiler? Warum sollten Sie es auf mehreren Computern und mehreren Compilern testen, es sei denn, dies ist die Ihnen zugewiesene Aufgabe? Und wie kommt es, dass sonst niemand im Team irgendwelche Probleme mit seinem Code hat?
@Masked Man Ich habe seinen Compiler installiert und verwende ihn, um auf derselben Seite zu sein. Wenn der Code jedoch für das endgültige Projekt bereitgestellt wird, glaube ich nicht, dass dieser Compiler verwendet wird (er wird von uns nur zum Testen verwendet). Infolgedessen befürchte ich, dass es in diesem Fall zu einem schwerwiegenden Fehler kommen kann.
Vielleicht sollten Sie herausfinden, welchen Compiler sie für das endgültige Projekt verwenden werden, anstatt anzunehmen. Außerdem hat das Management wahrscheinlich eigene Pläne, den Code von der Testumgebung in die Produktionsumgebung zu "migrieren". Untersuchen Sie das Problem nicht, ohne Ihren Vorgesetzten auf dem Laufenden zu halten.
Nebenbemerkung: Es scheint eine schreckliche Idee für Leute zu sein, die an demselben Projekt arbeiten, verschiedene Compiler zu verwenden. Wenn ich Sie wäre, würde ich mich für das entscheiden, was alle anderen verwenden, oder mit meinem Vorgesetzten sprechen, wenn nicht klar ist, welcher Compiler der "richtige" ist. Das sollte Ihr Problem indirekt lösen und ist eine viel bessere Lösung, als zu versuchen, ein Problem in seinem Code zu "beheben", das ihm nicht wie ein Problem erscheint. Oder wird der Fehler Probleme verursachen, egal welcher Compiler verwendet wird?
@Dukeling Ja, das macht Sinn. Wenn es für ihn funktioniert, schätze ich, sollte ich es einfach lassen, da er derjenige ist, der für alle Managementangelegenheiten zuständig ist. Ich denke, der Fehler wird ein Problem verursachen, wenn er auf einem normalen Compiler ausgeführt wird, aber ich habe keine Ahnung, welcher Compiler im endgültigen Projekt verwendet wird.
Was hat es mit den verschiedenen Compilern auf sich? Besteht Ihr Unternehmen nicht darauf, dass alle die gleichen Tools verwenden? Wenn nein, warum nicht?
@InertialIgnorance Warum haben Sie überhaupt einen anderen Compiler verwendet? Was war das Ziel, das Sie vor Augen hatten? Wurden Sie beim Einrichten Ihres Computers angewiesen, welchen Compiler Sie verwenden sollten?
"Ich habe keine Ahnung, welcher Compiler im endgültigen Projekt verwendet wird". Finden Sie das heraus. Vermute nicht. Annahmen zu überprüfen braucht Zeit, aber es lohnt sich. Welche Sprache ist das? Ich nehme an, es wird zur Laufzeit kompiliert.
Stimmen Sie dem Schließen als Off-Topic zu, da es sich um ein Softwareentwicklungsproblem handelt und nicht um etwas, das den Arbeitsplatz navigiert. Ich denke, Software Engineering SE oder woanders wäre ein besserer Ort, um diese Frage zu stellen.
Ich würde um eine zweite Meinung (von einer entsprechend qualifizierten Person) bitten, ob Ihre Meinung zu diesem potenziellen Fehler richtig ist.
Ich bin neugierig, woher wissen Sie, welche Compiler-Version er verwendet? Warum bitten Sie nicht einen anderen Kollegen, den Fehler zu reproduzieren?
Lass es in Ruhe; es gibt absolut kein positives Ergebnis für Sie.
Finden Sie den Senior/Lead/Manager heraus, der dafür verantwortlich ist, Ihnen mitzuteilen, welche Tools Sie verwenden sollen, und fragen Sie ihn.
Wenn der Code etwas tut, was die Spezifikation für illegal erklärt, handelt es sich um einen Fehler, selbst wenn Ihr aktueller Compiler ihn wie erwartet kompiliert. Dies gilt insbesondere für C und C++, wo Sie undefiniertes Verhalten wirklich vermeiden möchten.
@InertialIgnorance warum sollte es Sie überhaupt interessieren, welche Version des Compilers in der endgültigen Version verwendet wird? Wenn der endgültige Build Fehler verursacht, korrigiert er entweder seinen Code oder verwendet seinen Compiler, um das Produkt zu erstellen. Nicht in jeder Hinsicht oder Form Ihr Problem.
Vielleicht fehlt Ihnen eine .dll. Dies macht etwa die Hälfte der Diskrepanzen "funktioniert auf meinem Computer" aus, die ich gesehen habe.
Fragen Sie den spezifischen Teil auf Stackoverflow und sehen Sie, was dabei herauskommt.

Antworten (9)

Ich habe erwähnt, dass mein Compiler mir Fehler in diesen Zeilen gibt, aber er scheint zu glauben, dass es ein Fehler in meinem Computer-Setup ist.

An diesem Punkt sollten Sie aufhören und sicherstellen, dass Ihr Computer genau so konfiguriert ist wie er.

Wenn der Fehler weiterhin auftritt, bitten Sie um weitere Anleitung.

Meine Frage ist, ob ich ihm das noch einmal vortragen und meine Argumentation erläutern soll.

Nein. Ihnen wurde bereits gesagt, was das Problem ist. Es ist an der Zeit, zuzuhören, Ihren Computer zu reparieren und sich wieder den Dingen zuzuwenden, die in Ihren Verantwortungsbereich fallen.

Ist es eine gute Idee, dies weiter voranzutreiben, insbesondere angesichts meiner derzeitigen misslichen Lage?

Nehmen wir an, jemand, der mir berichtet, sagte, die Software würde nicht kompilieren. Nachdem ich nachgeforscht habe, stelle ich fest, dass sie nicht die richtigen Werkzeuge verwenden, also fordere ich sie auf, die Maschine zu reparieren, um sie in Übereinstimmung zu bringen.

Wenn diese Person dann zu mir zurückkäme und darauf bestand, dass das Programm mit dem falschen Werkzeugsatz kompiliert werden sollte, hätten wir ein "nettes" Gespräch darüber, wie ausgerechnet Programmierer verstehen sollten, wie man Anweisungen befolgt. Wenn es ein drittes Mal passierte, würde ich sie feuern.

Ich würde dringend vorschlagen, dass Sie Ihren Computer reparieren, bevor Sie dieses Problem erneut ansprechen. Informieren Sie sich dann darüber, warum sie diesen speziellen Compiler/diese spezifische Konfiguration ins Visier genommen haben. Es gibt einige Gründe, einen Compiler einem anderen vorzuziehen - bevor Sie verstehen, warum die anderen ausgeschlossen wurden, gibt es keinen Grund, darauf zu bestehen, dass sie verwendet werden.

Ich höre gerne jemandem zu, der mir sagt, dass ich falsch liege. Was ich jedoch nicht ertragen werde, ist, dass jemand behauptet, etwas sei falsch, bevor er sich die Mühe gemacht hat, das Problem oder die Gründe für die bereits getroffenen Entscheidungen zu verstehen.

Wenn ich herausfände, dass diese Person, anstatt die Tools wie angewiesen auszuwählen, damit beschäftigt war, mehrere andere Tools auszuprobieren, nur um zu „beweisen“, dass die Tools, die ich verwenden sollte (und diejenigen, mit denen der Rest des Teams keine Probleme hat), die „ falsche" Wahl, ich würde sie sofort feuern. Ich vermute stark, dass OP einige seltsame Beweggründe hinter diesem ganzen Fiasko hat.
@MaskedMan: Ich stimme zu. Das klingt nach ernsthaftem passiv-aggressivem Verhalten.
Diese Antwort ist definitiv im Wettbewerb um mein Kopfgeld.
Die Idee, dass Sie "jemanden sofort feuern" würden, lenkt meiner Meinung nach von dieser Antwort ab, da sie wirklich nicht zum Thema gehört.
@Chris: Ich bin mir nicht ganz sicher, wie du "sofort" von mir bekommen hast; Meine Antwort besagt im Grunde, dass Sie beim dritten Mal, wenn Sie die Anweisungen bei dieser einen Aufgabe nicht befolgen, raus sind. Meine Übereinkunft mit Masked Man war, dass das OP seltsame Beweggründe hat.
@Chris Selbst wenn seine Antwort lautete "ihn sofort feuern", verstehe ich nicht, warum das die Antwort "off-topic" macht (was ist überhaupt eine off-topic-Antwort?). Es gibt mehrere Szenarien, in denen Leute sofort gefeuert werden, also kann das Teil einer legitimen Antwort sein. Dies ist hier möglicherweise nicht der Fall, aber nur das Vorhandensein dieses Satzes macht eine Antwort nicht "vom Thema".
Die ganze Antwort ist nicht vom Thema abgekommen, aber ich denke, dass das Reden über das Schießen melodramatisch und unnötig erscheint, um die gestellte Frage zu beantworten.

Wenn das Projekt derzeit nur auf einer bestimmten Version eines bestimmten Compilers korrekt funktioniert, ist zu erwarten, dass derselbe Compiler auch in der endgültigen Version verwendet wird, es sei denn, dieser Compiler wird irgendwann in der Zukunft nicht mehr unterstützt - andernfalls Vielleicht gibt es einige gute Gründe, die Sie nicht kennen, um diesen speziellen Compiler zu verwenden.

Angenommen, Sie können dieses Projekt zum Laufen bringen, indem Sie Ihren Compiler ändern und die richtigen Config/Flags verwenden, ist dies nicht wirklich ein "Fehler" als solcher - es ist jedoch ein Indikator für eine potenziell fragile Projektkonfiguration, die auftreten könnte als potenzielles Risiko für das Projekt in der Zukunft - das scheint jedoch derzeit nicht der Fall zu sein; es klingt, als gäbe es noch keinen Grund, sich darüber Sorgen zu machen.

Die konstruktiven nächsten Schritte, die Sie unternehmen könnten, wären, zuerst Ihre Entwicklungs-/Test-/Build-Umgebung mit den richtigen Tools und Konfigurationen zu reparieren und dann diese anfänglichen Einrichtungsverfahren in Form einer Dokumentation zu erfassen (falls noch nicht vorhanden). ) - beispielsweise eine Readme-Datei, eine private Wiki-Seite, eine OneNote-Seite usw.

Während Sie Ihre Entwicklungsumgebung reparieren, notieren Sie sich alle einmaligen Schritte, an die Sie sich wahrscheinlich in ein paar Monaten nicht mehr erinnern werden. Zum Beispiel: "Install [Tool] [Version] into [Folder]", oder "Create an Environment Variable called [Name] set to [Value]", oder "edit [Configuration File] and change [Line] to [Something else]", usw.

Wenn eine solche Dokumentation bereits vorhanden ist, aber zufällig unvollständig/ungenau ist, können Sie diese Erfahrung sinnvoll nutzen, indem Sie die Dokumentation bearbeiten, um fehlende Informationen hinzuzufügen oder Anweisungen zu klären, die Sie selbst nur schwer verstehen oder befolgen konnten. Diese Informationen werden für Entwickler wertvoll sein, die sich Ihrem Projekt in Zukunft anschließen (oder sogar für Sie selbst, wenn Sie feststellen, dass Sie Ihr Betriebssystem neu installieren müssen).

Während ausgereifte Projekte in der Regel einen einfachen One-Step-Build-Prozess haben, erfordern neue und unvollständige Projekte oft andere klobige/unordentliche Verfahren, bis jemand Zeit hat, den Prozess zu rationalisieren. In Wirklichkeit braucht so etwas Zeit, um es zu verfeinern, und hat normalerweise eine niedrige Priorität im Vergleich zur Behebung echter Fehler und der Implementierung neuer Funktionen. Bis dahin ist es sinnvoll, die Projektkonfigurationsdokumentation auf dem neuesten Stand zu halten, damit neue Entwickler direkt in den Code einsteigen und schneller produktiv sein können.

Im Allgemeinen ist diese Antwort völlig richtig, in diesem speziellen Fall würde ich nicht zu dem Schluss kommen, dass „erste Einrichtungsvorgänge für dieses Projekt nicht ausreichend dokumentiert sind“. Das OP scheint eine seltsame Motivation zu haben, einen "Fehler" im Code des leitenden Entwicklers zu beweisen, da er den Code auf mehreren Compilern und mehreren Computern (?!) Erprobt hat, anstatt ... ähm, nur seine Arbeit zu erledigen. Es hört sich so an, als hätte er all diese zusätzlichen Compiler aus eigenem Antrieb installiert, obwohl er möglicherweise angewiesen wurde, einen zu verwenden, den der leitende Entwickler und der Rest des Teams verwenden.
Ich arbeite an einem Hochleistungscode, der auf Intel-Plattformen ausgerichtet ist. Auf dem Ziel kompilieren wir mit dem Intel C++ Compiler (ICC), da dieser auf diesen Maschinen im Allgemeinen mehr Leistung bietet als GCC. Da die daran arbeitenden Wissenschaftler an ihrem Institut keine ICC-Lizenz haben, bauen wir es mit GCC auf unseren Workstations. Der Nebeneffekt ist, dass wir gezwungen sind, keine proprietären C++-Zusätze ohne #ifdef. Um Bugs zu umgehen, bei denen es auf einer Maschine aufbaut, aber nicht auf der anderen, führen wir Kompilierungstests immer auf neutralem Boden durch, dh Travis CI.
@MaskedMan Sie haben Recht, ich nahm an, das OP war im Wesentlichen nur frustriert, weil es mit einem undokumentierten Projekt ins kalte Wasser geworfen wurde, aber jetzt, wo Sie es erwähnen, stimme ich zu, dass die ganze Frage ein wenig ungünstig klingt, ohne dass eine Anforderung besteht oder Grund, diese anderen Compiler zu verwenden.

Das Problem liegt woanders: Wie Sie sagen, wird auf Ihrem PC nicht kompiliert, aber auf seinem System funktioniert alles einwandfrei.

In allen Unternehmen, in denen ich je gearbeitet habe, gab es einen zentralen Build-Server: Jeder hat eine Programmierumgebung auf seinem eigenen PC, aber wenn ein Stück Quellcode geändert wird, wird dieser in ein zentrales Versionierungssystem, den zentralen Build-Server, eingegeben ruft dann die letzten Versionen aller Quellcodeteile ab und versucht zu kompilieren. Wenn dies funktioniert, ist alles in Ordnung. Wenn nicht, dann liegt ein Problem vor.

Das könnte also ein wertvoller Ansatz für Ihr Anliegen sein: „Mein Herr, wir haben hier die Situation, dass auf dem einen PC etwas funktioniert, auf dem anderen aber nicht Server bauen, und wenn wir in Zukunft jemals wieder in eine solche Situation geraten, wird dieses System darüber entscheiden, wer Recht hat."

Viel Glück

Suchen Sie nach einer Lösung, die bei beiden Setups funktioniert

Ein allgemeines Prinzip in solchen Situationen ist die Pfadfinderregel :

Lassen Sie den Code (mindestens) in der gleichen oder (vorzugsweise) besseren Form, als Sie ihn gefunden haben.

Ihr leitender Kollege hat also seine Entwicklungsumgebung auf eine bestimmte Weise eingerichtet. Dafür kann es viele Gründe geben, einige mögliche gute und sehr gültige, einige unnötige und vielleicht sogar schädliche.

Gute Gründe für dieses Setup können sein, dass ...

  • Es beschleunigt Entwicklung, Debugging und/oder Bereitstellung
  • Es enthält Funktionen, die in anderen Setups nicht vorhanden sind
  • Es befasst sich mit der Abwärtskompatibilität, die für die Interoperabilität mit anderen Modulen erforderlich ist
  • Der Wechsel zu einem anderen Setup kann umfangreiche Arbeit erfordern, um sicherzustellen, dass der Rest des Codes weiterhin wie beabsichtigt funktioniert (*) .

Schlechte Gründe für dieses Setup können sein ...

  • Faulheit oder anderweitig irrationaler Widerstand, die Entwicklungsumgebung auf dem Laufenden zu halten ("Bei mir läuft es gut, ich rühre es nicht an!")
  • Vorurteil gegenüber neueren Versionen als "Unerprobt, daher unsicher".
  • „Das haben wir schon immer so gemacht“

Was Sie hier tun können, ist, Ihren älteren Kollegen zu fragen : "Wie kommt es, dass Sie das verwenden? Gibt es einen bestimmten Grund?". Und sie werden es dir sagen. Vielleicht ist ihr Grund – Ihrer Meinung nach – gut und gültig, oder es wird – wiederum Ihrer persönlichen Meinung nach – ein schlechter Grund sein. Beachten Sie jedoch, dass sie höchstwahrscheinlich der Meinung sind, dass der Grund gültig ist.

Was am wenigsten Aufhebens machen würde, wäre, wenn Sie eine Änderung vornehmen, die auf beiden Setups funktioniert, vorausgesetzt, Sie führen die Änderung korrekt durch. Dazu muss man ein...

Checkliste

Wenn Sie die Scout-Regel anwenden und ein Problem "beheben" möchten, das nicht direkt mit Ihrer Arbeit zusammenhängt, wird es normalerweise geschätzt, wenn Sie dies tun. Aber nur, wenn Sie sicherstellen, dass das, was Sie tun, tatsächlich besser ist. Als solches müssen Sie sicherstellen, dass ...

1. Meine Änderungen werden nichts kaputt machen

Der Weg zur Hölle ist mit guten Vorsätzen gepflastert

Das erste, was Sie tun müssen, ist sicherzustellen, dass Ihr Fix nichts beschädigt. Die üblichen Sicherheitsvorkehrungen – keine Compilerfehler, Codeüberprüfung, automatisierte Tests – helfen Ihnen dabei. Vermeiden Sie es, einen Scout Rule Fix in den Hauptentwicklungspfad einzuchecken, verwenden Sie stattdessen den Nebenzweig des Codes und lassen Sie die Änderung vor allem anderen testen .

2. Meine Änderungen werden die Dinge nicht verwirrender machen oder unnötige Komplexität hinzufügen

Dieser Punkt ist ziemlich selbsterklärend. Es ist eine Tugend, den Code einfach und wartbar zu halten. Wenn Ihre Änderung dazu führt, dass es schwieriger wird, den Code zu lesen, zu erstellen oder bereitzustellen, lassen Sie die Änderung am besten weg. Wenn es jedoch ohne Änderung der Komplexität des Codes oder des Build- und Bereitstellungsprozesses hinzugefügt werden kann, ist es in Ordnung.

3. Meine Änderungen werden die Dinge verbessern

Genauso wie der leitende Entwickler denkt, dass sein Setup für ihn funktioniert, könnten Sie in dieselbe Falle tappen. Und obwohl eine Verbesserung für Sie Grund genug ist, eine Veränderung zu bewirken, möchten Sie vielleicht auch andere fragen: „Lohnt sich das?“. Wenn sie zustimmen, dass dies eine Verbesserung ist, dann fahren Sie fort.

(*) Ich hatte einen Codebruch, weil ich einfach auf eine neue Unterversion eines Entwicklungskits aktualisiert habe ... nicht einmal die Nebenversion, sondern die Unterversion .

Diese Antwort ist definitiv im Wettbewerb um mein Kopfgeld.

Um die Wahrscheinlichkeit zu erhöhen, dass er Ihre Eingabe akzeptiert, beginnen Sie nicht mit einem einfachen „Ich habe einen Fehler in Ihrem Code gefunden“. Nehmen Sie es von der Seite und bitten Sie ihn, sich zu Ihnen zu setzen und den Code durchzugehen, damit Sie die Logik verstehen.

Erklären Sie, was und warum Sie für falsch halten, und hören Sie sich seine Antworten an. Es gibt zwei Möglichkeiten:

  1. Sie haben Recht, und er wird den Fehler verstehen, ohne sich über Ihre "kühne" Aussage zu "ärgern".
  2. Sie liegen falsch, und Sie haben sich die Mühe gemacht, den Code mit ihm zu verstehen, ohne zu behaupten, er sei verwanzt.
Das ist im Grunde das, was ich sagen wollte. Bitten Sie den leitenden Entwickler, Sie Stück für Stück durch den relevanten Code zu führen. Gestalten Sie es so, als ob Sie nur versuchen würden, daraus zu lernen, aber bleiben Sie kritisch. Wie diese Antwort sagt, werden Sie entweder besser verstehen, warum Sie falsch lagen, oder der leitende Entwickler kommt zu dem Schluss, dass es tatsächlich ein Problem im Code gibt, und behebt es. Das einzige, was ich dieser Antwort hinzufügen möchte, ist ein allgemeiner Tipp, immer dieselbe „Build-Umgebung“ wie die anderen Personen in Ihrem Team zu verwenden, um Fehlalarme zu vermeiden.

Stellen Sie zunächst sicher, dass Sie die genauen Sprachregeln für die Software kennen. In der Regel werden neue Funktionen hinzugefügt, wenn sich Sprachen und ihre Standards weiterentwickeln. Manchmal haben bestimmte Compiler Funktionen, die über jeden formalen Standard hinausgehen. Welche Sprachfunktionen verwendet werden dürfen, ist normalerweise eine Entscheidung der erfahrenen Entwickler, kann aber von Marketingproblemen beeinflusst werden, wenn Kunden in der Lage sein müssen, den Code zu kompilieren. "Können wir die Spracherweiterung X verwenden?" ist eine legitime Frage, die Sie stellen sollten.

Wenn Sie vorhaben, mit dem leitenden Entwickler nicht einverstanden zu sein, welche Funktionen verwendet werden sollten, brauchen Sie sehr gute Gründe, warum es unbedingt so sein muss, wie Sie es vorschlagen. Wenn es nur um Meinungen und Vorlieben geht, gewinnt die Meinung des Senior Developers.

Nachdem Sie den beabsichtigten Satz von Sprachfeatures herausgefunden haben, müssen Sie als Nächstes sicherstellen, dass Ihr Compiler alle Features unterstützt, die die Regeln zulassen. Dies kann die Installation eines anderen Compilers, zusätzlicher Bibliotheken oder das Setzen von Compiler-Flags erfordern, um Funktionen zu aktivieren, die standardmäßig deaktiviert sind.

Wenn der Code nicht mit einem Compiler und einer Konfiguration kompiliert werden kann, die alle im Programm zulässigen Funktionen unterstützen, müssen Sie diesbezüglich ein Problem mit dem leitenden Entwickler besprechen.

Ich werde hier ein kleines bisschen vom Thema abschweifen und mich zwanghaft auf eine kleine Sache konzentrieren, die Sie gesagt haben ...

dumme Fehler meinerseits

Dafür gibt es eine Lösung. UNIT-TESTS ! Warum nicht für jede wichtige Funktion, die Sie schreiben, eine Reihe von Komponententests haben, die die erwartete Ausgabe für eine bestimmte Eingabe kennen? Während Sie diese Tests schreiben, werden Sie anfangen, über seltsame Grenzfälle in den Eingaben nachzudenken. Verdammt, für ein paar Schlüsselfunktionen schreiben Sie vielleicht sogar zuerst die Tests und beobachten, wie sie langsam von Rot zu Grün wechseln, während Sie Ihr fn implementieren.

Dieser Ansatz wird bei diesen „dummen Fehlern“ sehr hilfreich sein, da Sie explizit nach ihnen suchen, anstatt nur Code für die Qualitätssicherung über die Wand zu werfen.

Finden Sie heraus, welche Art von Unit-Test-Framework Ihre Gruppe verwendet. Wenn es keinen gibt (ich heule und knirsche hier mit den Zähnen), bitten Sie um etwas Zeit, um einen zu finden und zu instrumentieren. Es gibt viele gute mit ähnlichen Namen (nUnit, jUnit, xUnit, ...)

Sie werden es nicht bereuen.

Es ist ziemlich klar, dass Entwickler unterschiedliche Setups auf ihren Computern haben, und die Welt ist perfekt, wenn die Lösung auf ihrem eigenen Computer aufbaut.

Offensichtlich ist dies Quatsch und verlässt sich darauf, dass mindestens eine Person die Lösung in ihrer eigenen Sicht der Welt erstellt und bereitstellt.

Die Antwort ist die Standardisierung durch die Verwendung eines Jenkins- Build-Servers oder etwas Ähnlichem.

Wir haben einen für unsere großen Lösungen. Alle paar Minuten holt es sich die neuesten Codedateien aus dem Quellcode-Manager (in unserem Fall TFS) und versucht dann, die Lösung zu erstellen. Wenn der Build fehlschlägt, erhält jeder im Team automatisch eine E-Mail, und wer den Build kaputt gemacht hat, wird implizit benannt und beschämt.

Offensichtlich sind die Compiler-Optionen und die Umgebung auf dem Jenkins-Server Vanilla und auf einen vollständig gültigen/echten Build ausgerichtet.

Dadurch werden alle Mehrdeutigkeiten beseitigt, die durch Personen verursacht werden, die auf lokale Kopien von Quellcodes/DLLs in freier Wildbahn verweisen, und Sie werden keine Lösung bereitstellen, die auf ein Stück Code verweist, das auf dem Entwicklungscomputer einer anderen Person vorhanden ist.

Die Verwendung eines solchen Build-Servers nivelliert und standardisiert das Spielfeld und stellt eine vollständige Konsistenz des Endergebnisses sicher.

Es ist ziemlich klar, dass Entwickler unterschiedliche Setups auf ihren Computern haben, und die Welt ist perfekt, wenn die Lösung auf ihrem eigenen Computer aufbaut. Offensichtlich ist dies Quatsch und verlässt sich darauf, dass mindestens eine Person die Lösung in ihrer eigenen Sicht der Welt erstellt und bereitstellt. +1

Tatsache ist, dass Sie das Problem bereits diesem leitenden Entwickler gemeldet haben. Was Sie wirklich fragen, ist nicht, wie Sie es melden können, sondern wie Sie ihn davon überzeugen können, eine Änderung vorzunehmen.

Sie haben Ihre Verantwortung erfüllt. Sie haben gemeldet, was Ihrer Meinung nach ein Fehler ist. Er ist der leitende Entwickler, er hat entschieden, dass Sie sich geirrt haben und der Code richtig ist, also das war's. Jetzt gibt es zwei Möglichkeiten: Entweder er hat Recht, oder er hat Unrecht. Wenn er falsch liegt, ist er entweder nicht sehr erfahren oder er ist dumm und akzeptiert nichts von einem Junior-Entwickler. In beiden Fällen bringt Sie Beharrlichkeit nicht weiter.

Anstatt einen Fehler im Code zu finden, bei dem Ihre Meinung gegen seine ist, finden Sie heraus, ob dies zu einem Fehlverhalten der Software führt. Das ist etwas, das objektiv überprüft werden kann und möglicherweise behoben werden muss. Wenn Sie nicht herausfinden können, wie dieser Fehler zu einem Fehlverhalten der Software führt, liegt entweder kein Fehler vor oder er ist unwichtig.