2009-03-31 17 views
4

Erfüllen (ein Portmanteau von "satisfy" und "suffice") ist eine Entscheidungsstrategie, die versucht, Kriterien für die Angemessenheit zu erfüllen, anstatt eine optimale Lösung zu identifizieren. Eine Satisfizierungsstrategie kann oft (fast) optimal sein, wenn die Kosten des Entscheidungsprozesses selbst, wie etwa die Kosten zum Erhalten vollständiger Informationen, in dem Ergebniskalkül berücksichtigt werden. (Source)Gibt es Strategien, um Satisficing zu vermeiden?

Die meisten Entscheidungen im Software-Engineering sind leicht genug, um ohne zu diesem Thema stundenlang grübeln zu nehmen. Die erste Lösung, die Ihnen in den Sinn kommt, ist normalerweise gut genug, damit wir sie schnell verwenden und zur nächsten Entscheidung übergehen können.

Es gibt jedoch auch die seltenen Fälle, in denen Sie ein schwierigeres und/oder kritischeres Problem lösen müssen. Diese Probleme können viel Geld oder Zeit kosten, wenn sie nicht optimal gelöst werden.

In diesen Fällen versuche ich normalerweise, mehrere völlig verschiedene Lösungen/Ansätze zur Lösung des Problems zu finden. Ich wähle dann einen aus und verfeinere ihn, bis ich mit meiner Lösung vollkommen zufrieden bin.

Normalerweise funktioniert das, aber manchmal kann ich nur eine adäquate, aber nicht wirklich gute Lösung finden. Ich bin mir bewusst, dass meine Lösung nicht sehr gut ist und das Problem kritisch genug ist, um etwas mehr Aufwand zu rechtfertigen. Das Wissen über die Lösung, die ich bereits gefunden habe, blockiert jedoch meine Kreativität, so dass ich keine zweite finden kann (zumindest nicht sofort). Ich bleibe bei meiner mittelmäßigen Idee stecken, und wenn ich nicht jemand anderen fragen kann, muss ich es umsetzen, um voranzukommen.

Gibt es Techniken, um dies zu überwinden? Die zwei Dinge, die ich mir vorstellen kann, sind ein Brainstorming mit jemand anderem oder ein Spaziergang.

Was machen Sie in diesen Fällen?

+0

Was ist zufrieden stellend? –

+0

Das ist, was ich versucht habe, in meiner Frage zu erklären, aber es gibt auch diesen Artikel auf Wikipedia darüber: http://en.wikipedia.org/wiki/Satisficing –

+0

Obwohl ich denke, dass dies nicht geschlossen werden sollte (ich bemerke zwei bereits dort) Dies ist * eine subjektive Frage und sollte als solche gekennzeichnet werden - und subjektive Fragen sollten immer Community Wiki sein. Ich kann das Etikett hinzufügen. Adrian, du solltest es Community Wiki machen. – Randolpho

Antwort

4

Normalerweise hätte ich zwei Probleme damit, ein Problem für eine Woche beiseite zu legen: a) mein Chef würde wahrscheinlich nicht darauf eingehen, weil das Geschäft früher eine Lösung früher als später benötigt, und b) ich habe Aufmerksamkeitsspanne eines Goldfisches, also wenn ich ein Problem so lange hinlasse, werde ich Zeit brauchen, um das Problem durchzugehen, weil ich in der Zwischenzeit mein Gehirn mit Dutzenden anderer Probleme gefüllt habe.

Das ist nicht ganz schlecht, denn manchmal finde ich eine bessere, elegantere Lösung, wenn ich mich auf den Code und die Geschäftsbeschränkungen, die das Problem definieren, konzentrieren muss, aber manchmal verbringe ich nur einen halben Tag damit in die gleichen Sackgassen.

Alles, was gesagt wird, die Idee, ein Problem beiseite zu legen, ist ein guter, aber es ist der Zeitrahmen, der wichtig ist. Ich habe oft eine Lösung beim Frühstück am Morgen nach einem Ende des Tages Spaghetti-Code Gehirn Lock-up Fiasko erkannt.

Der Versuch, das Problem mit Kollegen zu artikulieren, hilft oft, nur weil der Aufwand Lücken in Ihrem Verständnis des Problems aufdeckt. In der Regel wird die andere Person keine bessere Lösung finden, wenn sie nicht von Anfang an mit Ihnen an dem Problem arbeitet, nur weil sie nicht alle Einschränkungen verstehen, mit denen Sie wahrscheinlich Tage in Ihrem Kopf verbracht haben.

Um die ursprüngliche Frage zu beantworten, ist meine bevorzugte Methode, nachdem Sie eine Pause gemacht und es von einigen Kollegen ausgeführt wurde, die angemessene Lösung zu implementieren und nur etwas zum Laufen zu bringen.

Ein Grund ist, dass, wenn der Klient entscheidet, dass das nicht das war, was er wollte, weil er nie wirklich weiß, was er von Anfang an will, Sie nicht zu viel Zeit für etwas ausgegeben haben, das rausgeworfen wird sowieso. Ein anderer Grund ist, dass die adäquate Lösung nur das sein könnte: adäquat. Sie können weitermachen. Der beste Grund ist, dass eine Implementierung Sie schnell in die schwierigen Fragen bringt und von dort aus eine bessere Lösung zu sehen ist.

Es ist wie Modelle als Architekt zu bauen. Sie können viele Zeichnungen machen und sogar viel Zeit mit schönen Renderings verbringen, aber es ist effektiver, schnell eine Klebepistole zu bekommen und Pappmodelle zusammen zu werfen. Sobald Sie es in 3D sehen können, können Sie sehen, wo die Dinge nicht richtig ausgerichtet sind, und Sie haben nicht Ihre Zeit für schöne Renderings verschwendet, die die Mängel überdecken.

3

In meiner Erfahrung adressiere ich das, indem ich das Problem für eine Weile beiseite lege, sagen wir eine Woche. Lass es ruhen. Dann komm mit einem frischeren Geist zurück und du wirst beginnen Dinge zu sehen, die du vorher nicht getan hast.

Natürlich, YMMV.

2

Beschreiben Sie das Problem einem anderen und fragen Sie, wie sie es lösen würden. Manchmal ist es die gleiche Lösung, die Sie entwickelt haben. In diesem Fall weisen Sie auf die Fehler hin, die Sie bereits wahrgenommen haben, und setzen Sie den Dialog fort.

Manchmal ist es eine Lösung, an die Sie nicht gedacht haben oder die Ihnen hilft, Probleme mit der Lösung zu lösen, an die Sie gedacht haben.

Wie auch immer es funktioniert, ich habe gefunden, das Problem mit anderen zu besprechen, um normalerweise eine sehr nützliche Strategie zu sein.

0

Zufriedenstellend ist die Technik, die AI geboren hat. Einige sehr wichtige Software, einschließlich Fahrtrichtungsgeneratoren und Netzwerkrouting, werden beide basierend auf einem Effizienzkompromiss der Vollständigkeit halber durchgeführt.

Der beste Weg, um mit diesem Problem umzugehen, besteht darin, die Lösung zu implementieren und die unvollständigen Teile davon zu reparieren, wenn und falls es offensichtlich wird, dass andere Teile des Projekts eine Korrektur erfordern.

Offensichtlich gibt es eine Menge Spielraum in die falsche Richtung zu gehen und am Ende mit etwas schlampig zusammen, aber bedenken Sie, dass der Kontext des gesamten Systems ist, wo die Qualität von dem, was Sie schreiben, geht gemessen werden.

0

Ich finde es nützlich, die Lösung nicht mehr zu betrachten und das Problem zu betrachten. Vielleicht versuche ich das falsche Problem zu lösen. Schau, und schau, ob da tatsächlich ein anderes Problem ist. Wenn Sie glauben, dass Ihre Lösung nur "ausreichend" ist, könnte es gut sein, weil sie nicht das richtige Problem anspricht.

Vielleicht bittet Sie Ihr Kunde, einen besseren Wasserkocher zu machen. Wollen sie wirklich einen besseren Kessel oder einen schöneren Kaffee? Vielleicht musst du ihnen keinen Kessel bauen und sie stattdessen ins Café um die Ecke bringen.

0

Warum möchten Sie Satisficing vermeiden? Es ist notwendig für das Überleben.

+0

Ich denke, es hängt von der Frage ab. Normalerweise ist das Satisfizieren in Ordnung, wenn es nicht sinnvoll ist, aber es gibt selten Fälle, in denen die Qualität viel wichtiger ist als der Verbrauch von Zeit oder Ressourcen. –

2

Ich weiß, das ist ein bisschen ketzerisch, aber ich finde schriftliche Dokumentation für die Lösung hilft. Wenn Sie es auf Papier schreiben, müssen Sie das Problem anders denken und organisieren, als wenn Sie es programmieren. Der Versuch, die Lösung im Hinblick auf das Geschäftsproblem zu beschreiben, hilft zu zeigen, wo die Lücken liegen und diese wiederum alternative Lösungen vorschlagen.Im besten Fall haben Sie neue Ansätze. Im schlimmsten Fall endet die Dokumentation. Gib dir eine bestimmte Menge an Zeit. Beginnen Sie mit einer Gliederung und arbeiten Sie, bis Ihnen die Zeit ausgeht, Sie die Dokumentation vervollständigen oder sich mit alternativen Lösungen inspirieren lassen.

Verwandte Themen