Ich glaube, ich habe ein interessantes, ziemlich verbreitetes Problem mit einem der Entwickler in meinem Team. Der Typ ist ein großartiger Entwickler, arbeitet schnell und produktiv, produziert Code von ziemlich guter Qualität und so weiter. Guter Ingenieur. Aber es gibt ein Problem mit ihm - sehr oft kann er Randfälle in seinem Code nicht ansprechen.
Wir haben oft mit ihm darüber gesprochen und er versucht es, aber ich denke, er denkt einfach nicht so. Was am Ende passiert, ist, dass die Qualitätssicherung viele Probleme mit seinem Code findet und ihn immer wieder zur Entwicklung zurückschickt, was letztendlich dazu führt, dass Termine versäumt werden und alle im Team unglücklich sind.
Ich weiß nicht, was ich mit ihm machen soll und wie ich ihm helfen kann, dieses Problem zu überwinden. Vielleicht könnte jemand mit mehr Erfahrung raten?
quelle
Antworten:
Fordern Sie ihn auf, automatische Komponententests für seinen Code zu schreiben. Schreibeinheitentests zwingen zum Durchdenken der Randfälle.
Einige Angaben:
quelle
After some amount of feedback from his team about missed edge cases, he will probably learn to consider those
Entwickler, die schlechte Praktiken haben, argumentieren oft, dass der zusätzliche Aufwand für gute Praktiken irrelevant ist (weil sie den Nutzen davon nicht sehen). Der Entwickler kann zwar zustimmen, wenn Sie zusätzliche Edge-Cases hinzufügen, dies bedeutet jedoch nicht, dass er dies für relevant hält oder ob er sie selbst hinzufügen wird.Geben Sie ihm eine Checkliste, z
Die QA-Mitarbeiter können Ihnen bei der Erstellung der Checkliste behilflich sein
Geben Sie die Checkliste an alle Entwickler weiter, nicht nur an diese.
quelle
Okay.
Es ist eine Qualität, die gute Ingenieure nicht teilen.
Das Beobachten von Randfällen ist ein Merkmal, das bei Menschen entweder vorhanden ist oder nicht. Es hat nichts damit zu tun, Ingenieur oder Programmierer zu sein. Die Entwicklung dieser Eigenschaft wird durch den kulturellen Hintergrund, das Lebensumfeld, die Ereignisse in der Kindheit und die Lebenserfahrungen beeinflusst. Dann wird die Einstellung einfach auf jede Arbeit angewendet, die eine Person tut.
Was Sie brauchen, ist herauszufinden, ob Ihr Typ von dem Typ ist, der diesen bestimmten Sinn nicht entwickelt hat (vielleicht noch). Es ist auch sehr wahrscheinlich, dass er sich aus irgendeinem Grund nicht darum kümmert. Sie müssen die gesamte Situation analysieren, ob er in seinem Job glücklich ist. Wenn nicht, sollten Sie vielleicht zuerst etwas tun, um ihm zu helfen.
Wenn er mit dem Job gut zurechtkommt, aber noch nicht die Gefahr von Randfällen erlebt hat, können Sie anfangen, ihn zu unterrichten. Wenn er es ernst nimmt, könnte er im Laufe der Zeit sein Verhalten ändern. Obwohl ich in diesem Fall skeptisch bin, können Sie es trotzdem versuchen.
Sollte sich herausstellen, dass es sich um eine Person handelt, die sich mit Randproblemen nicht auskennt, haben Sie möglicherweise nichts anderes übrig, als ihn aus dem Team zu entfernen. Diese Eigenschaft ist für die praktische Programmierung von wesentlicher Bedeutung. Leider würde ohne sie selbst ein großartiger Mensch keine gute Arbeit leisten.
quelle
Könnten Sie früher im Prozess Code-Überprüfungen oder Design-Überprüfungen durchführen?
quelle
Bringen Sie ihm bei, zuerst den Test zu programmieren. Koppeln Sie mit ihm. Sie schreiben die Testfälle und er schreibt den Code, um die Tests zu bestehen.
quelle
Könnte es ihm helfen, die Qualitätssicherung früh genug in die Entwicklung von Features einzubeziehen, um eine Liste von Randfällen zu erhalten, die zu Beginn behandelt werden müssen? Während manche meinen, dass der Entwickler nicht alles abdeckt, kann dies eine Möglichkeit sein, dies zu umgehen, wenn er die Grenzfälle übersieht, die ein Tester anfangs möglicherweise gut abfängt.
Die andere Idee, die ich hier hätte, ist, wie er dieses Problem sieht. Ist er wirklich genervt und verärgert über dieses Muster oder sieht er das nur als normal an und nicht als etwas, um das er sich bei der Lösung Sorgen machen muss? Zugegeben, dies erfordert viel Vertrauen und die Offenheit für seine Perspektive, aber ich denke, dass hier ein gewisses Maß an Einfühlungsvermögen vorhanden ist, das hilfreich sein kann, wenn Sie die Dinge aus seiner Perspektive betrachten können.
quelle
Es gibt unendlich viele Randfälle, die alle abdecken, ist unmöglich. Was ist, wenn jemand tut
#define TRUE FALSE
? Es fügt Randfälle hinzu, werden Sie sie auch überprüfen?Außerdem würde ich nicht in Betracht ziehen, jede Funktion einer privaten Klasse oder einer internen Funktion gegen Narren zu prüfen.
Der Ansatz, den ich für Code wähle, der sehr solide und stabil sein muss, ist:
Auf diese Weise erhalten Sie solide Anwendungs-Dumps in der Qualitätssicherung. Zum Zeitpunkt der Veröffentlichung ist die App solide und sicher.
Fehler zu umgehen ist schlecht. OK, Sie können eine Funktion speichern, wenn das Dateihandle null ist und null zurückgibt. In den meisten Fällen liegt jedoch irgendwo ein Entwurfsfehler vor, und ein Absturz der App ist eine bessere Methode, um Sie zu zwingen, die Ursache zu finden. Die meisten Edge-Fälle maskieren den Fehler nur, indem sie ein Problem verbergen, beispielsweise, dass die Schaltfläche nicht mehr funktioniert. Absturz sagt Ihnen, dass einige Annahmen über das Produkt falsch sind, und Sie müssen die Logik, die den Absturz verursacht hat, überarbeiten.
quelle
Wenn es sich um einen Randfall handelt, muss dieser überhaupt berücksichtigt werden? Wenn die Randfälle wichtig sind, müssen die Randfälle in die Anforderungen / Features / User Story eingespeist werden.
Wenn die Edge-Cases als Teil einer Arbeit betrachtet wurden und Geräte installiert werden müssen, sollten sie Teil des Workitems sein. Per Definition ist das Workitem erst dann vollständig, wenn der Mechanismus für die Handhabung des Edge-Cases erfüllt ist an Ort und Stelle.
Dies gibt Ihnen als Teamleiter etwas zum Abhaken, nachdem die Arbeit während der Diskussion nach der Arbeit abgeschlossen wurde, und es gibt dem Entwickler etwas zum Abhaken, wenn er die Arbeit abgeschlossen hat.
quelle
Das Auffangen von Randfällen ist der Grund, warum QA existiert. Programmierer haben die Verantwortung, die Arbeit rechtzeitig zu verdrängen. Die ganze Zeit auf der Suche nach Randfällen zu verbringen, ist sehr ineffizient. Wenn Sie einen einigermaßen schnellen Iterationszyklus haben, sollte dies überhaupt kein Problem sein. Kantenfälle sind nahezu unendlich zahlreich. Wenn es ein Problem mit "Core" -Fällen geben würde, wäre ich ein bisschen besorgt. So wie Entwickler Experten in der Entwicklung sind, sollte ein Tester auch Experten im Testen sein. Wenn ein Tester ein Problem findet, sendet er es an die Entwicklung zurück. Der Entwickler behebt das Problem. Problem gelöst. Die Zeit, die ein Entwickler benötigt, um jeden Randfall aufzuspüren, ist viel länger, als der iterative Testzyklus dauern sollte. Beachten Sie auch, wenn ich über Tests spreche, meine ich nicht White-Box-Unit-Tests, sondern ausschließlich Black-Box-Tests.
quelle
Dies ist einer der Fälle, in denen meiner Meinung nach testgetriebene Entwicklung Abhilfe schafft, weil es hilfreich ist, in Randfällen und allem zu denken, was den Code beschädigen kann.
quelle