Ich entwickle ein Programm mit einer Bibliothek, die von einem anderen Programmierer erstellt wurde (er arbeitet in derselben Firma). Vor kurzem habe ich ein Leck in der Bibliothek entdeckt, das unter bestimmten Netzwerkbedingungen nach einigen Betriebsstunden auftritt. Ich habe einen Fehler mit einer Beschreibung der Bedingungen gemeldet, unter denen dieses Leck auftreten kann. Dieser Entwickler antwortete, dass "das nicht genug ist", "es nicht seine Verantwortung ist, Fehler zu reproduzieren", und ich muss einen Komponententest erstellen, um diesen Fehler zu reproduzieren, sonst macht er nichts.
- Hat er recht
- Was kann ich in dieser Situation tun? Das Erstellen eines Komponententests ist nicht möglich, da dies von zufälligen Netzwerkzeiten abhängt.
teamwork
collaboration
user626528
quelle
quelle
Antworten:
Ist er richtig ist wahrscheinlich eine Frage, die nicht wirklich beantwortet werden kann, ohne Ihr Unternehmen zu kennen. Er ist jedoch sicherlich nicht sehr hilfreich.
Ich würde den Fehler bei ihm ansprechen (was Sie getan haben). Wenn er ein Problem mit Ihrem Projekt verursacht, würde ich ihn als Blocker bei Ihrem Projektmanager ansprechen und klarstellen, dass Sie den Fehler mit "angemessen" angesprochen haben Person, aber es wird Ihr Projekt auswirken, wenn es nicht sofort behoben wird.
Ich würde auch mit dem Entwickler sprechen und erklären, warum es unmöglich ist, Komponententests zu erstellen, aber Sie würden ihn gerne auf Ihrem Computer zeigen (vorausgesetzt, das ist möglich?).
quelle
Er hat zu 100% Recht, dass Sie genügend Informationen bereitstellen müssen, um den Fehler reproduzierbar zu machen - andernfalls besteht keine Chance herauszufinden, ob eine von ihm bereitgestellte Korrektur wirklich funktioniert.
Aber - er ist meiner Meinung nach zu 100% falsch, dass dies in Form eines Unit-Tests erfolgen muss. Wenn Sie ein Testszenario so beschreiben können, dass er den Fehler reproduzieren kann (zumindest mit hoher Wahrscheinlichkeit in angemessener Zeit oder durch manuelles Testen), haben Sie den Beweis, dass das Problem vorliegt - was Ihren Kollegen veranlassen sollte in der Verantwortung, es zu beheben. Wenn Sie in der Lage sind, ein Szenario zu erstellen, das den Fehler schneller reproduziert, wäre das natürlich hilfreich für ihn. Im Idealfall würde man daraus einen automatisierten Test machen, und es hängt von Ihrer Organisation ab, wer dafür verantwortlich ist.
quelle
Beide Seiten sollten sich anstrengen.
Bibliotheksentwickler sollten auch ohne Unit-Tests zusätzliche Anstrengungen unternehmen, da einige Probleme mit Unit-Tests nicht reproduziert werden können. Manchmal ist es Hardware, manchmal ist es eine bestimmte Abfolge von korrekten Aktionen aus dem Rest des Programms, die dazu führen, dass die Bibliothek schlechte Ergebnisse liefert.
Sie sollten zusätzliche Anstrengungen unternehmen, da dies kein Fehler in der Bibliothek ist, sondern das Ergebnis falscher Aktionen des restlichen Programms ist (z. B. kann ein beschädigter Heap dazu führen, dass sich eine Bibliothek merkwürdig verhält). Daher ist es sinnvoll, den Anteil von Nicht-Bibliotheks-Code an der Fehlerreproduktion so gering wie möglich zu halten. Und Sie werden dies wahrscheinlich schneller und sauberer tun als eine Person, die mit dem Code Ihrer Anwendung nicht vertraut ist.
quelle
Wenn der Autor der Bibliothek den Fehler basierend auf Ihrem Bericht nicht reproduzieren kann, ist es nicht zumutbar, dass er viel Zeit damit verbringt, geschweige denn, ihn zu beheben.
Sie haben jedoch auch eine begrenzte Zeit, um an einem Produkt zu arbeiten, das für Sie nicht von Interesse ist. Leider kann dies bedeuten, dass der Fehler weiterhin besteht und keine Arbeit zur Behebung des Fehlers geleistet wird.
Glücklicherweise ist dies nicht unbedingt eine Katastrophe - in einer idealen Welt wäre jede Software fehlerfrei, das ist jedoch nicht der Fall, und wir müssen Prioritäten setzen, basierend auf den Problemen, die sie in den USA verursacht.
Dies bedeutet, dass es in der Tat Ihre Verantwortung ist, einen reproduzierbaren Testfall zu entwickeln, WENN SIE FESTGELEGT WOLLEN. Es ist Ihnen vielleicht egal, ob es behoben wird, und in diesem Fall haben Sie alles getan, was von Ihnen erwartet werden kann und sollte. Möglicherweise möchten Sie, dass es repariert wird, aber nicht genug Zeit aufgewendet wird, um es zu diesem Zeitpunkt reproduzierbar zu machen. Das ist durchaus akzeptabel.
Wenn Sie einen Fehler in der Zeit, in der Sie sich mit ihm befassen müssen, nach besten Kräften melden, ist dies einfach eine gute Staatsbürgerschaft. Sie müssen nicht darüber hinausgehen, es sei denn, dies ist für Ihr Programm erforderlich. Und vielleicht möchten Sie dies auch dann nicht, es gibt möglicherweise eine andere Bibliothek, die Sie verwenden könnten, oder es ist möglich, Ihre eigene in einem angemessenen Zeitraum zu rollen. Grundsätzlich liegt es an Ihnen, zu entscheiden, was und welche Anstrengungen es für Sie wert ist.
quelle
Ich wäre geneigt, schlafende Hunde vorerst liegen zu lassen - Sie haben das Problem angesprochen und es ist ihm zugewiesen. Vermutlich gibt es Prozesse, um ausstehende Fehler aufzuspüren und diese aufzuspüren?
Wenn Sie dies aktiv vorantreiben möchten, sollten Sie mit Ihrem Vorgesetzten sprechen, um festzustellen, ob Testtools verfügbar sind, mit denen das Problem zuverlässig reproduziert werden kann.
Von Seiten des Entwicklers - es wäre für ihn äußerst träge, nichts zu unternehmen, vorausgesetzt, Sie haben die erforderlichen Informationen bereitgestellt. Es ist jedoch möglich, dass sie eine enorme Arbeitsbelastung haben, sodass sie nicht die erforderliche Zeit verwenden können, um das Problem zu verfolgen.
quelle
Du hast einen Fehler gefunden, du hast ihn gemeldet und er ist ein Idiot.
Wären Sie beide enge Freunde gewesen, hätte er etwas getan, um zu helfen, aber er würde das Problem lieber zurückschieben.
Sie können mehr tun, indem Sie mehr Details melden und versuchen, Ihre Behauptungen zu untermauern, dass Speicherplatz verloren geht. Trotzdem haben Sie Ihre eigenen Aufgaben und müssen Ihre eigene Arbeit beenden.
Melden Sie so viele Informationen wie möglich im Bug-Tracker an und fahren Sie fort.
Wenn Sie diese Person in Zukunft wiedersehen. Sei freundlich, versuche über gemeinsame Interessen zu sprechen und verstehe, dass gute Beziehungen weitaus effektiver sind, um Dinge zu reparieren, als jede Menge Fakten, die du zur Unterstützung einer Behauptung zur Verfügung stellen kannst.
quelle
In ähnlichen Situationen bin ich oft auf die Annahme gestoßen, dass alle Fehler behoben werden sollten, und obwohl dies bewundernswert ist, ist es auf jeden Fall ein großartiges Ziel (seien wir ehrlich, wir haben uns nie vorgenommen, Fehler zu schreiben!), In dem es letztendlich unrealistisch ist Jedes Projekt mit einer anständigen Größe, um einen Fehler zu beheben, nur weil es ein Fehler ist (wenn Sie ihn finden können!) Deshalb haben wir Projektmanagement- und Codierungsmethoden, -muster und -praktiken usw.
Also, eine Sache, die ich zur Verteidigung des Bibliotheksbesitzers sagen würde (und die der Fall war, als ich an einigen großen Projekten gearbeitet habe), ist, dass Entwicklungszeit Geld kostet und eine begrenzte Ressource ist, so dass die Entscheidung darüber, wie ein Bericht behandelt wird Wer untersucht, welche Tests erstellt / benötigt werden und letztendlich, ob (und wenn ja, wann) eine Korrektur vorgenommen wird, basiert ausschließlich auf den geschäftlichen Auswirkungen. Was bedeutet es, wenn Sie Ihren lang laufenden Prozess von Zeit zu Zeit neu starten, wenn er fehlschlägt, und können Sie dies stattdessen problemlos automatisieren (und sollten Sie dies vielleicht nicht bereits als defensive Programmiermaßnahme tun?)? ?
Betrachten Sie es auch aus ihrer Sicht, einen Fehlerbericht von einem Benutzer über ein unvorhersehbares Problem in einem Teil des Codes, der sehr selten auftritt, nur in Verbindung mit ihrem Code, möglicherweise nur auf einem Computer und nur zu einem bestimmten Zeitpunkt Bedingungen haben einfach keine starke Rechtfertigung dafür, dass ein großer Teil der Entwicklungszeit gefunden und behoben werden muss - wenn es überhaupt möglich ist. Wenn es sich jedoch um ein hinreichend solides Geschäftsmodell handelt, bei dem sich der Benutzer die Zeit nehmen muss, eine gründlichere Untersuchung durchzuführen und einen zuverlässigen Testfall / eine zuverlässige Anwendung oder eine grundlegend detailliertere Problembeschreibung als die ursprüngliche bereitzustellen, kann es sich um ein ganz anderes Spiel handeln .
Dies ist möglicherweise ein Kommunikationsproblem, das der Bibliotheksbesitzer nicht in Betracht gezogen hat und bei dem Sie ein solides Geschäftsmodell haben (z. B. Ihr Code ist kostenintensiv für das Unternehmen, hat gesetzliche Konformitätsanforderungen, Sicherheitslücken oder ähnliches) anderen großen Anstoßeffekt), dann ist es an der Zeit, das Management zu überreden und es herausfordern zu lassen.
quelle
Sie haben erwähnt, dass 'ich einen Fehler mit einer Beschreibung der Bedingungen eingereicht habe, unter denen dieses Leck aufgetreten ist.'
Wenn Sie sicher sind, dass die Beschreibung wirklich ausreicht, um den Fehler zu reproduzieren, kennen Sie bereits die genauen Bedingungen. Wenn Sie nach Kenntnis der Bedingungen keinen Komponententest schreiben können, bedeutet dies eindeutig, dass Sie einige der beteiligten Komponenten nicht verspotten können oder einige Teile des Codes zu eng miteinander verbunden sind, um einen praktischen Komponententest zu erstellen.
Sie sollten den Bibliotheksbesitzer bitten, den Code umzugestalten, damit Sie einen Komponententest erstellen können. Sie müssen klar erklären, was in der Bibliothek Sie daran hindert, einen Komponententest zu erstellen. Er muss den Code umgestalten, ansonsten muss er zugeben, dass ein Unit-Test mit dem aktuellen Code nicht möglich ist. In beide Richtungen gewinnen Sie.
Wenn dies nicht funktioniert, haben Sie folgende Möglichkeiten:
quelle