Was ist der produktivste Weg, um entwicklungsbedingte Fehler zu beheben? [geschlossen]


49

Das haben wir alle schon durchgemacht:

  • Ihr Projekt ist fehlgeschlagen oder wurde abgebrochen.
  • Der Code, an dem Sie tagelang gearbeitet haben, wurde von Ihrem Team abgelehnt.
  • Das Designmuster, das Sie dem Team vorgestellt haben, hat für Chaos gesorgt.
  • Jeder ignoriert Ihre Ideen.

Meine Frage ist, wie ein Programmierer am produktivsten mit solchen entwicklungsbedingten Fehlern umgeht.


Im Rahmen der laufenden Structured Tag Cleanup Initiative wird diese Frage auf unserer Metadiskussionsseite diskutiert .

Antworten:


79

Ihr Projekt ist fehlgeschlagen.

Die Softwareentwicklung ist sehr anfällig für Projektfehler, und je nach Schweregrad wird dies am besten vom Management gehandhabt.

Viele Projekte sind gescheitert und viele weitere scheitern. Machen Sie sich also Notizen! Erfahren Sie, warum Ihr Projekt fehlgeschlagen ist, damit Sie beim nächsten Mal nicht dieselben Fehler machen. Sie lernen viel mehr aus Ihren Fehlern als aus Ihren Erfolgen.

Wofür Sie Codierungstage verbracht haben, wurde von Ihrem Team abgelehnt.

Speichern Sie Ihre Arbeit (für später). Es gibt zwei Möglichkeiten: (a) Es ist zum Kotzen, und die Tatsache, dass mehrere Personen auf die gleiche Weise geantwortet haben, ist ein Hinweis darauf. Menschen mögen im Allgemeinen nicht, was sie nicht verstehen. Vielleicht ist es besser, es zu zeigen, wenn die Zeit reif ist ODER an einem anderen Ort mit einer anderen "Kultur"

Niemand hört in Ihrem Unternehmen auf Ihre Ideen.

Es ist wahrscheinlich eine schlechte Idee, ODER die Kultur ist nicht auf Ihr Denken abgestimmt. Entweder an einen Ort ziehen, der Ihre Kultur unterstützt, oder Ihre Idee erneut kritisch bewerten (objektiv ohne Ihre eigene Vorurteile) -> ist meine Idee wirklich so gut? <- Töte dein Ego

Das Designmuster, das Sie in Ihrem Team mit Gewalt eingeführt haben, hat ein Durcheinander verursacht.

Seien Sie ehrlich, Sie haben Ihr Bestes gegeben, aber es stellte sich nicht heraus, wie Sie es geplant hatten. Es ist vielleicht besser, als Team von vorne zu beginnen oder aus den Fehlern im Design zu lernen und voranzukommen.


29

Sie sind keine Misserfolge - sie sind Erfahrungen

Sie lernen und wachsen aus Ihren Erfahrungen, indem Sie darüber nachdenken, wie sie Sie gefühlt haben und ob Sie mehr von diesem Gefühl wollen.

Wenn es eine schlechte Erfahrung ist (wie diese Liste, die Sie angeboten haben), sollten Sie das damit einhergehende schlechte Gefühl vermeiden (vorausgesetzt, Sie sind nicht so dickhäutig, dass Sie sich nicht um die Auswirkungen Ihrer Handlungen kümmern).

Alles in allem, lassen Sie sich nicht zu sehr auf den Vergleich mit anderen ein, sie haben genauso viel Mühe, alles durchzuarbeiten wie Sie .


1
Nur zwei Worte: Reinforcement Learning .
Wok

-1: Sie sind sowohl Erfahrungen als auch Misserfolge.
Thomas Eding

14
  • Bleib ruhig - keine Panik, es wird nichts besser machen
  • Schadensbegrenzung - Speichern, was noch gespeichert werden kann
  • Lerne aus deinen Fehlern - wenn du das Falsche noch einmal tust, wird es wahrscheinlich nicht funktionieren
  • Betrachten Sie einen Neuanfang - starten Sie Ihren nächsten Versuch ohne einen Rucksack voller Enttäuschungen und Schuldgefühle
  • Betrachten Sie größere Fehler - im Vergleich zum ersten Flug der Ariane 5 ist Ihr Fehler vernachlässigbar
  • Wenden Sie sich an einen Psychotherapeuten, wenn Sie nicht alleine damit umgehen können

11

Du baust etwas.

Für mich (ich glaube nicht, dass es für alle geeignet ist) ist das Bauen von etwas (Comics, Zeichnungen, kleine Spiele, alles), ein bisschen Selbstvertrauen aufzubauen, um wieder gegen das Scheitern anzukämpfen. Es könnte auch eine gute Möglichkeit sein, Ihre Wut oder Bitterkeit oder Gefühle in Bezug auf das Scheitern auszudrücken, aber auf "konstruktive" Weise.

Das funktioniert bei mir sowieso.


6

Nun, du hast gefragt :) Einer nach dem anderen:

* Your project failed.

Das ist kaum neu. Wir sind alle privat gescheitert, und wir haben alle gescheitert, wenn wir unsere Kollegen im Blick hatten. Das hat jeder erlebt, der eine Grund- und weiterführende Ausbildung absolviert hat.

Wenn ich keine Fehler machen kann und eine stabile Beschäftigung erwarte, sollten Sie erwägen, ein Memo an die Personalabteilung zu senden, in dem sie darüber informiert werden, dass Menschen von zukünftigen Überlegungen ausgeschlossen sind.

Mehrere Fehler in Folge bedeuten, dass Sie entweder unzumutbare Anforderungen und Spezifikationen haben oder nicht aus Ihren Fehlern lernen. Jedes Szenario erfordert sofortiges Handeln.

Es ist vorstellbar, dass sich viele Leute nur anmelden, um eine Anstellung zu finden, und dann einen Weg finden, um die Anforderungen zu erfüllen.

* What you have spent days coding was rejected by your team.

Das passiert. Wie bereits erwähnt, speichern Sie es. Mach es nochmal. Deshalb nennen wir es Arbeit. Ich denke, in diesem Fall haben Sie das Team wahrscheinlich nicht so sehr in das involviert, was Sie taten.

Es könnte auch sein, dass sich die Anforderungen gestern oder vor einer Stunde geändert haben. Dies sollte jedoch eine Ausnahme und keine Norm sein. Peer Review ist ebenso brutal wie hilfreich. Wenn Ihr Code ständig als "unzureichend" (oder so ähnlich) abgetan wird, sollten Sie mehr Zeit damit verbringen, sich Gedanken zu machen und andere einzubeziehen. Ich glaube, dass diese Frage in den meisten Teameinstellungen ein Trugschluss ist, es sei denn, das „Team“ ist alles andere als selbsterklärend.

* Nobody listens to your ideas in your company.

Auch dies braucht Kontext. Wie lange warst du dort? Wie sehr vertrauen Ihre Hackerkollegen auf Ihre Fähigkeiten? Haben Sie darüber nachgedacht, dass Ideen, die für viele Menschen zu mehr Arbeit führen, JEDEN Grund zur Ablehnung auffordern könnten? Ich hatte einmal etwas entlassen, weil es nicht IPV6-fähig war, aber (ausschließlich) einen einfachen Domain-Socket auf dem Loopback-Gerät verwendete. Die Person, die es versenkt hat, konnte einfach keine Arbeit mehr erledigen.

Wie gut artikulieren Sie sich? Kannst du Freunde finden und Menschen beeinflussen?

* The design pattern you introduced with force in your team created a mess.

Deshalb sollte Gewalt vermieden werden. Reden zu können ist keine Voraussetzung, um zuhören zu können. Keine weiteren Kommentare.


5

Oh Mann, das ist eine Menge, wenn du wirklich meintest, dass dir alles passiert ist!

WARNUNG : In vielen der folgenden Punkte haben Sie möglicherweise das Gefühl, dass ich Sie kritisiere und dass ich Sie für die Missgeschicke verantwortlich machen und externe Faktoren nicht berücksichtigen möchte. Ich nicht. Es ist nur so, dass Sie nicht viele Details angeben, und ich stelle nur Checklisten mit Maßnahmen zur Verfügung, die ergriffen werden müssen, um sicherzustellen, dass nichts schief geht. Ich weiß, dass ich selbst viele Fehler gemacht habe (jeder macht es) und wir werden nur besser, wenn wir daraus lernen. Und um daraus zu lernen, müssen wir anfangen, sie als Fehler zu betrachten und Verantwortung für das zu übernehmen, was auf unserer Seite schief gelaufen ist. Zur Hölle, übernimm die Verantwortung für das, was in anderen Teilen schief gelaufen ist, du kannst auch daraus lernen.

Ihr Projekt ist fehlgeschlagen

Sie können jetzt nicht viel tun, um dies zu mildern.

Sie können jedoch viel tun, um zu verhindern, dass sich das in Zukunft reproduziert. Ich würde vorschlagen, Ihre Projekt- und Zeitmanagementfähigkeiten zu verbessern.

Eines der Bücher mit dem besten Verhältnis ((gültige Ratschläge) / Seiten), das ich zu diesem Thema gelesen habe, obwohl es vielleicht nicht das beste ist, ist Rob Thomsetts Radical Project Management .

Sie spezifizieren nicht wirklich, was Ihr Projekt gescheitert ist, aber ich würde eine Kombination von Dingen annehmen, die zu einem Ungleichgewicht im üblichen Kosten / Zeit / Qualitäts-Dreieck geführt hat . In meinen Augen ist es der wichtigste Faktor, das Projekt und die Entwicklung zu leiten und dabei stets mit Ihren technischen Akteuren (Entwicklern und Testern), aber auch mit Ihren Stakeholdern in Kontakt zu bleiben. Viel zu viele Projekte scheitern, weil sie nicht auf Sponsoren oder Interessengruppen hören und sie nicht dazu drängen, sich in den Prozess einzubringen.

Wenn sie nicht beteiligt sind, können Sie nicht wissen, was sie wollen. Wenn Sie nicht wissen, was sie wollen, können Sie es nicht liefern. Wenn Sie es nicht liefern, werden sie unglücklich sein. Das ist ein Misserfolg. Wenn Sie Ihre Stakeholder nicht einbeziehen, sind sie von der Realität des Software-Engineerings abgekoppelt, was bedeutet, dass sie Ihre Probleme nicht verstehen. Wenn sie häufig mit Ihnen in Kontakt treten, haben sie einen besseren Überblick darüber, mit was Sie zu tun haben. Sie werden es besser verstehen, wenn Sie ihnen sagen, dass eine "kleine" [Lach-] Funktion Monate dauern wird. Sie können Ihrer Planung besser vertrauen, weil sie beim Aufbau geholfen haben. Ein Projekt kann nicht nur mit "Spezifikationen am Anfang, Entwickeln, Testen, Ausliefern am Ende" erfolgreich sein. Das tut es einfach nie. Sie könnten liefern, was in den Spezifikationen gefragt wurde,

Am wichtigsten ist es auch, eine Retrospektive zu machen und sicherzustellen, dass es kein Ego ist und kein Schuldspiel. Identifizieren Sie einfach Probleme.

Was Sie tagelang programmiert haben, wurde von Ihrem Team abgelehnt

Ich war in dieser Situation. Auch hier können Sie nicht viel tun, um dies zu mildern, außer:

  • Bewahren Sie es für später im SCM auf.
  • Versuchen Sie vielleicht, kleine Teile und Teile schrittweise in die Hauptcodebasis zu verschieben, anstatt eine umfangreiche Umgestaltung vorzunehmen.

Aber es gibt wieder Dinge, die Sie tun können, um diese Art von Situation zu verhindern:

  • Warum ist es passiert? Was ist der Grund für die Ablehnung?
  • Die meiste Zeit, wenn ich das sehe (und das war auch für mich der Fall), bedeutet dies, dass der Entwickler solo oder im Cowboy-Codierungsmodus gearbeitet hat und Dinge produziert hat, nach denen nie gefragt wurde. Code, der nicht aus geschäftlichen Anforderungen stammt, ist vielleicht schick und "besser", aber oft eine Verschwendung von Zeit und Geld. Außerdem wird es noch mehr kosten, wenn Sie es integrieren, da es erneut getestet werden muss. Denken Sie wie die Leute, die Ihnen das Geld geben: Sie müssen auch auf dieser Ebene effizient sein.
  • War die Qualität der produzierten Software zufriedenstellend? Entsprach es den in Ihrem Unternehmen geltenden Standards und Konventionen?
  • Haben Sie den direkten Managern regelmäßig (und häufig!) Darüber berichtet? Haben Sie sich gelegentlich mit anderen Entwicklern des Teams ausgetauscht? Wenn nicht, wissen sie nichts darüber, es ist ein enormer Zeitaufwand für sie, es jetzt zu bewerten und zu überprüfen. Es wird am Ende NICHT zur selben Zeit abgerechnet. Es ist so, als würde man immer versuchen, die Reinigung einer Mietwohnung aufzuschieben und erst dann zu versuchen, wenn man auszieht: Es ist ein beschissener Job, es ist anstrengend, es ist schwieriger, als wenn man es regelmäßig gemacht hätte, und es wird oft nicht gemacht richtig.
  • Haben Sie Produkttests produziert? Unit-Tests? Integrationstests?
  • Wurde Ihr Code regelmäßig im SCM eingecheckt? War es in einer anderen Branche? Benötigte es einen anderen Zweig oder hätte es im Kofferraum gemacht werden können? Das Aufschieben von Code ist normalerweise ein schlechtes Zeichen. Offensichtlich sind Sie manchmal versucht, es zu tun, aber Sie schießen sich einfach in den Fuß.

Niemand hört in Ihrem Unternehmen auf Ihre Ideen

Nun, hier gibt es zwei Möglichkeiten, und wir werden uns beide ansehen:

  • Ihre Ideen waren schlecht.
  • Ihre Ideen waren gut.

Lassen Sie uns annehmen, dass sie schlecht waren (wieder einmal, dass es schwierig sein könnte, sich selbst darüber Gedanken zu machen und Ihre Idee einfach nur schlecht zu akzeptieren). Was tun Sie, um das zu ändern?

  • Warum bist du auf die Idee gekommen? Was ist das Grundprinzip ? Besteht ein wirklicher Bedarf daran, was Ihre Idee auf den Tisch zu bringen versucht?
  • Wie bist du auf die Idee gekommen? Hast du es alleine gemacht? Hast du geteilt? Brainstorming? Planen? Prototyp? (Tun Sie dies in der richtigen Reihenfolge. Wenn es auf dem Weg fehlschlägt, verwerfen Sie die Idee, machen Sie nicht weiter. Oder zumindest nicht in Ihrem Arbeitsplan.)

Ideen sind nur Ideen. Wenn Sie sie nur als Ideen vorschlagen und sie abgelehnt werden, verstehe ich nicht, warum Sie sich dabei schlecht fühlen würden. Wenn Sie jedoch auf sie einwirken, ohne jemanden zu benachrichtigen, und dann nur Ihre Ideen einreichen und sie abgelehnt werden, fühle ich offensichtlich die Frustration in der Zeit verschwendet. Und Ihre Manager tun das auch!

Vorausgesetzt, Ihre Ideen waren gut:

  • War Ihre Präsentation gut?
  • War Ihre Art, die Präsentation zu halten, gut? (Ich bin ein Entwickler, ich weiß wovon ich spreche: Wir sind mürrische, arrogante , pedantische PITAs, die immer Recht haben und mit denen es schwierig ist, wegen unserer oft unverhältnismäßigen Egos zu arbeiten. )
  • Haben Sie einen Plan, um es umzusetzen? Haben Sie über Kosten und Zeit nachgedacht? Haben Sie darüber nachgedacht, welchen Nutzen dies für Benutzer / Kunden hat? Haben Sie darüber nachgedacht, wie sich dies auf den Verkauf auswirkt? Haben Sie gedacht, wie sich die Arbeit an dieser Idee auf andere Projekte und Prioritäten auswirken könnte? Sie werden mir sagen: "Warum sollte ich all das tun, sie sind die Aufgabe meines Managers und der Marketing- oder Verkaufsteams ?!" Außer im Moment versuchen Sie, einen Teil ihrer Arbeit zu erledigen.

Das Designmuster, das Sie in Ihrem Team mit Gewalt eingeführt haben, hat ein Durcheinander verursacht

  • Warum haben Sie das Muster eingeführt?
  • Wenn es ein Durcheinander verursacht hat, dann ist es wahrscheinlich entweder:
    • war nicht das richtige muster,
    • wurde nicht richtig umgesetzt,
    • war nicht richtig integriert.
  • Wie hast du es vorgestellt? Wie genau definieren Sie den Zustand "Durcheinander"?
    • weniger lesbarer Code?
    • weniger wartbar?
    • Builds sind kaputt?
    • Es gibt verschiedene Arten von "Chaos". Zu wissen, was das Chaos ist, kann helfen, den Fehler zu ermitteln und festzustellen, ob das Entwurfsmuster daran schuld ist.

Ich bin auch ein bisschen überrascht von der Herangehensweise an sich. Sie mussten tatsächlich darauf drängen, ein Entwurfsmuster einzuführen? Das scheint ziemlich seltsam. Entweder ist bereits ein Muster vorhanden, oder Sie müssen einen Teil Ihrer Lösung entsprechend dem Muster umgestalten. Sie haben nicht schieben es , wie Sie würde die Annahme eines Rahmen oder Technologie (wie Menschen geschoben wirklich schwer XML überall zu haben, und jetzt wie Menschen drängen beginnen zu können , schreiben HTML5 in den großen hellen Buchstaben auf ihre Abdeckung des Geräts).

Warum musstest du pushen? Warum gab es Widerstand? Vielleicht war es gerechtfertigt.

Können Sie Beispiele nennen, die zeigen, dass dieses bestimmte Muster dazu beiträgt, die Codebasis in erheblichem Maße zu verbessern (z. B. indem es mit einem Beispiel für das Umgestalten auf Muster abgeglichen wird ) ?


Völlig abseits des Themas, aber daran dachte ich zuerst, als ich den Titel der Frage las, weil ich dachte, er beziehe sich auf Softwarefehler ... Ich hatte eine Software, die eine BlackHole-Klasse implementiert hat, um eine ganz besondere Art von Ausnahmen in einer der zu verwalten Komponenten. Es mag wie ein offensichtlich seltsamer und schmutziger Hack erscheinen (und ist es auch wirklich), aber die Benennung selbst war so hervorragend, dass wir alle es für eine ziemlich coole Art und Weise schätzten, mit einem Fehler umzugehen! :)


@ Rachel: Vielen Dank für die Änderungen, die an Ihren META-SO-Bemühungen ausgerichtet sind. Ich hatte nicht bemerkt, dass die Frage seitdem umformuliert worden war.
Haylem

3

Schritt 1: Es ist in Ordnung, wütend zu werden!

Erstens ist es verständlich, verärgert oder wütend zu sein, wenn ein Fehler auftritt. Wenn sie jemandem in einer solchen Situation einen Rat geben, werden sie höchstwahrscheinlich nicht hören wollen, dass "Einfach darüber hinwegkommen und weitermachen" oder "Einfach als Lernmöglichkeit betrachten".

Tatsächlich denke ich, dass es gesund und produktiv sein kann, sich aufzuregen und Ihre Frustrationen zu lindern, vorausgesetzt, Sie tun dies privat oder mit einem Freund. Die Leute haben verschiedene Möglichkeiten, dies zu tun, aber ich denke, eine der produktivsten Möglichkeiten ist es, einen verärgerten falschen Brief zu schreiben (Wichtig! Schicken Sie diesen Brief an niemanden ). Erklären Sie Ihre Gefühle, z. B. warum Sie das Gefühl haben, dass alles, was passiert ist, ungerechtfertigt war.

Schritt 2: Nehmen Sie sich etwas Zeit, um sich zu beruhigen.

Stellen Sie sicher, dass Sie alles ausgedrückt haben, was Sie fühlen, und nachdem Sie Ihren Ärger abgelegt haben, nehmen Sie sich etwas Zeit, um sich zu beruhigen. Vielleicht brauchen Sie nur ein paar Minuten oder vielleicht ein paar Stunden.

Schritt 3: Überprüfen Sie, was in Schritt 1 passiert ist

An diesem Punkt werden Sie hoffentlich objektiver über die Situation nachdenken können. Wenn Sie einen Brief geschrieben haben, lesen Sie ihn sich selbst vor. Wenn Sie sich jemandem anvertraut haben, versuchen Sie sich zu erinnern, was Sie gesagt haben. Wenn Sie sich nur vorgestellt haben, jemanden anzuschreien, dann wiederholen Sie dies in Gedanken.

Ich schreibe oft einen Brief, wenn ich wütend bin, und dann, nachdem ich mich beruhigt habe, werde ich daran arbeiten, den Brief zu verfeinern, um klarer zu kommunizieren, was ich ursprünglich sagen wollte, bis ich zufrieden bin, dass jemand, der ihn liest, verstehen würde, was ich war Gefühl zu der Zeit.

Der Punkt ist, objektiv zu versuchen, herauszufinden, was Ihre Punkte waren. Haben sie einen Sinn ergeben? Vielleicht brauchen sie eine Klärung oder nähere Einzelheiten. Sind sie unbegründet? Wenn Sie sich objektiv in die Lage eines anderen versetzen würden, würden Sie die Punkte verstehen, die Sie gemacht haben? Würden Sie diesen Punkten zustimmen? Sie können diese Gelegenheit nutzen, um sich selbst zu bewerten. Was hast du gut gemacht Was hätten Sie besser machen können?

Schritt 4: Entscheiden Sie sich für eine Vorgehensweise

Gibt es etwas, das getan werden kann, um die Situation zu beheben oder zumindest zu verbessern? Nehmen Sie sich einen Moment Zeit, um zu überlegen, ob realistisch etwas getan werden kann, um die Situation zu beheben oder zu verbessern. Oft gibt es nicht, aber manchmal gibt es.

Wenn Sie an etwas schuld sind, ist dies möglicherweise so einfach wie eine formelle Entschuldigung an jemanden, in der Sie klar erklären, was schief gelaufen ist, was Sie getan haben, warum Sie es getan haben und was Sie tun werden, um es zu beheben oder zu verhindern die Zukunft.

Überlegen Sie sich als Nächstes, was Sie tun können, um die Zukunft zu verbessern. Was können Sie tun, um zu verhindern, dass dasselbe erneut passiert? Entscheiden Sie, was Sie erreichen möchten, und verwenden Sie das, was Sie aus Schritt 3 gelernt haben, um einen Plan für sich selbst zu erstellen.

Wenn alles andere fehlschlägt, versuchen Sie einen Neustart:

        try
        {
            // ...
        }
        catch (OhNoes111Exception)
        {
            // reboot fixes everything!
            System.Diagnostics.Process.Start("ShutDown", "/r");
        }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.