So treffen Sie wichtige technische Entscheidungen in kürzester Zeit

36

Ich habe 2 Tage Zeit, um eine sehr ernsthafte Entscheidung über die Tools und Plattformen zu treffen, die mein Unternehmen verwenden wird, um seine WPF-Anwendung auf Linux / Android / iOS zu portieren.

Natürlich kann ich meinen Senioren sagen, dass 2 Tage kaum ausreichen, um über alle möglichen Optionen zu lesen, und was ist mit dem Ausprobieren, dem Erstellen von Prototypen usw. Ich kann es sagen, es hilft mir kein bisschen, ich habe 2 Tage und Nach 2 Tagen würde die Entscheidung getroffen werden. Zeitraum.

Auf der einen Seite bin ich frustriert, auf der anderen Seite denke ich, dass dieser Ansatz ein Körnchen Wahrheit enthält. Andernfalls kann ich mich leicht unter Dutzenden heruntergeladener SDKs, Frameworks, APIs, Blog-Artikeln usw. begraben, die Bench-Arbeiten durchführen und Beispiele ausführen und dabei zu vergessen, wozu das alles gut war.

Trotzdem befürchte ich, dass eine falsche Entscheidung das Unternehmen teuer werden könnte. Was halten Sie für einen "idealen" Prozess, um solche Entscheidungen zu treffen?

Flot2011
quelle
4
Schreiben Sie irgendwo, dass die Entscheidung in zwei Tagen fast unmöglich ist. Versuchen Sie dann, eine nicht allzu schlechte Entscheidung zu treffen, und dokumentieren Sie, dass Ihre Entscheidung nicht die beste ist. Mit anderen Worten, bedecke deinen Arsch. Qt5 könnte in Betracht gezogen werden. Oder machen Sie aus Ihrem Produkt eine HTML5-Webanwendung (möglicherweise mit einer HTTP- Serverbibliothek, z. B. libonion oder FastCGI)
Basile Starynkevitch
2
@gnat Ich stimme nicht zu, dass es sich um eine subjektive Frage handelt, auch wenn es noch mehr als eine mögliche Antwort gibt, die wir alle aus anderen Erfahrungen gewinnen können.
Flot2011
9
In vielen Fällen gibt es keine "beste Option". Sie könnten es als PHP-Webanwendung schreiben und es würde funktionieren. Oder Sie könnten es als Qt-Programm schreiben und es würde funktionieren. Es könnte sich um eine OpenGL-Benutzeroberfläche handeln. All dies sind akzeptable Entscheidungen. Der Trick besteht darin, eine zu wählen und sie dann zum Funktionieren zu bringen. Lähme dich nicht vor Zweifeln, wenn du dich für etwas entschieden hast.
gbjbaanb
5
Sehr schlechtes Beispiel, da es im Fall des Beispiels eine Technologie gibt, die eine offensichtliche Wahl dafür ist - Xamarin. Behalten Sie den .NET-Backend-Code bei, ersetzen Sie einfach die Benutzeroberfläche durch etwas. Behandelt alle gegebenen Fälle. Dies ist also eher ein Fall von "Ich weiß nichts über plattformübergreifende Systeme für .NET".
TomTom
7
Zu sagen, dass 2 Tage nicht genug sind, ist nicht sehr konstruktiv. Reichen 3 Tage aus? Oder willst du eigentlich 2 Monate damit verbringen? Und wie viel besser wird Ihre Entscheidung wahrscheinlich sein? ~~~~ Wenn Sie sagen, dass Sie eine Woche brauchen und sich sicher sind, dass dies schnell Hunderte von Stunden Entwicklungszeit einspart, sollten Sie dies unbedingt erwähnen. Es mag nicht helfen, aber es besteht immer die Möglichkeit, dass die Stakeholder Ihren Business Case mögen.
Dennis Jaheruddin

Antworten:

48

Wenn Sie nur 2 Tage Zeit haben und keine Zeit haben, Prototypen zu erstellen oder gar alle Alternativen durchzulesen, gibt es nur 2 Möglichkeiten:

  1. Fragen Sie jemanden, der seinen Rat kennt und befolgt. Dies muss nicht unbedingt bedeuten, dass Sie eine Person fragen müssen, sondern Sie müssen die 2 Tage lang in Blogs und Artikeln suchen, um genügend Informationen zu erhalten, um eine Entscheidung zu treffen, die etwas besser ist als uninformiert.

  2. Machen Sie sich ein wenig mit allen gängigen Optionen vertraut und wählen Sie dann eine aus. Manchmal bedeutet Führung, keine Angst davor zu haben, die falsche Entscheidung zu treffen. Oft ist es wichtiger, eine feste Entscheidung zu treffen, als zu schwanken.

Sie können sich abdecken, indem Sie Architekturen entwickeln, die entkoppelt sind und daher einfacher zu ändern sind - z. B. können Sie mit einem Client / Server-Modell Ihre UI-Technologie mit minimaler Unterbrechung durch eine andere ersetzen.

gbjbaanb
quelle
10
+1 für "Hab keine Angst, die falsche Entscheidung zu treffen" Manchmal ist es schlimmer, in eine "Analyse-Lähmung" verwickelt zu sein, als überhaupt keine Entscheidung zu treffen. Wir sind alle Menschen. Gib dein Bestes und mach weiter mit dem Leben.
Semaj
1
schwanken: abwechselnd oder schwankend zwischen verschiedenen Meinungen oder Handlungen; sei unentschlossen.
TankorSmash
10
+1 für "Decken Sie sich mit Architekturen ab, die entkoppelt sind und daher einfacher zu ändern sind"
Darth Egregious
2
@emodendroket Windows Workflow Foundation.
MetaFight
2
Wenn Ihr Problem kein Mainstream ist, sollten Sie nicht erwarten, dass Mainstream-Lösungen gut funktionieren. Hier sind Entkopplung und Flexibilität entscheidend . Suchen Sie nach Frameworks / Bibliotheken, die es Ihnen leicht machen, Ihre eigenen Dinge zu tun, anstatt Sie dazu zu bringen, etwas in ihre Erwartungen zu stecken, wenn sie nicht zu ahnen schienen, was Sie tun müssen.
jpmc26
19

Es mag den Anschein haben, als würde ich mich gegen den Strom wenden, aber ich habe kürzlich das Buch Creativity, Inc. von Ed Catmull gelesen und es gab einen wirklich schönen Absatz, der sich mit dieser Situation befasste:

Andrew Stanton sprach als nächstes. Andrew sagt gern, dass man sich so schnell wie möglich irren muss. Wenn Sie in einer Schlacht vor zwei Hügeln stehen und sich nicht sicher sind, welchen Sie angreifen sollen, ist es die richtige Vorgehensweise, sich zu beeilen und zu entscheiden. Wenn Sie herausfinden, dass es der falsche Hügel ist, drehen Sie sich um und greifen Sie den anderen an. In diesem Szenario läuft die einzige inakzeptable Vorgehensweise zwischen den Hügeln.

Ich bin sicher, dass es auch für Ihre Situation angewendet werden kann. Vielleicht können Sie heute die Entscheidung treffen, indem Sie eine auswählen und damit beginnen, daran zu arbeiten. Wenn es funktioniert, haben Sie in diesen zwei Tagen etwas fertig und werden sagen: "Ich habe es ausgewählt und kann Ihnen zeigen, was wir damit machen können, weil ich nur wenige Tests durchgeführt habe ...". Wenn Sie an einem Tag feststellen, dass sich die ausgewählte Lösung überhaupt nicht lohnt, können Sie eine andere auswählen und am nächsten Tag damit arbeiten. Das schlimmste Szenario ist, dass Sie beide Tage verwenden, um zwei Plattformen zu testen und herauszufinden, dass keine von beiden funktioniert - aber das ist letztendlich die richtige Antwort, nicht wahr? Entfernen Sie das Unkraut, beseitigen Sie falsche Entscheidungen, damit jede nächste Entscheidung viel besser ist als die vorherige. Das beste Szenario ist, dass Sie

Natürlich werden Sie in zwei Tagen keine Plattform mehr beherrschen, aber wenn Sie sich für eine entscheiden, erhalten Sie auf jeden Fall einen besseren Überblick über die Funktionsweise (viel mehr als nur das Lesen) und erhalten eine bessere Antwort.

Michal
quelle
12
Auch wenn ich Ihnen auf globaler Ebene zustimme, ist es manchmal ziemlich selbstmörderisch, auf einem Kriegsfeld voranzukommen.
Flot2011
Niemand erwähnte das Rauschen. Ich habe heute nie gesagt, ich solle zum Chef gehen und sagen: "Hier ist die Lösung. Genau hier und genau jetzt." Stattdessen schlage ich vor, einen in den Kopf zu nehmen und zu versuchen, damit umzugehen und daran zu basteln. Einfach nur darüber zu lesen und es mit jemand anderem zu diskutieren, reicht nicht aus. Ich glaube, dass das Ausprobieren zu einer viel besseren Auswahl führt.
Michal
6
@ Flot2011 Wenn du einen MBA hast, bleibst du wo du bist und schickst alle deine Truppen, um einen der Hügel zu bekämpfen. Wenn sie alle sterben, naja, bekommen Sie mehr Truppen und machen weiter, aber diesmal sagen Sie, dass Ihre Erfahrung als General Sie so viel mehr ... verdient, als es ungeheuerlich ist.
gbjbaanb
1
"Wählen Sie einen ASAP, dann Prototyp" scheint mir in dieser Situation ein sehr schlechter Rat zu sein. Ja, Prototyping ist wichtig, aber auch zeitaufwändig. Nicht triviale Probleme haben oft mehr als zwei mögliche Lösungen, und zwei Tage reichen nicht aus, um mehrere Technologien zu prototypisieren.
Meriton - Streik
@meriton Ich fühle, was Sie meinen - ich stimme zu, Prototyping ist zeitaufwändig. Ich habe nicht explizit "Prototyping durchführen" angegeben - deshalb habe ich das Wort " Basteln " sorgfältig ausgewählt - die Plattform erkunden, ein wenig Code schreiben, einige grundlegende Implementierungsdateien öffnen und sehen, wie es im Inneren funktioniert. Es besteht die Möglichkeit, dass der Entscheider nicht alle Details richtig einschätzt, aber durch Ausprobieren die Qualität der Entscheidung definitiv verbessern kann.
Michal
10

gbjbaanb macht einige sehr gute Punkte. Ich dachte nur, ich würde ein bisschen hinzufügen.

Es ist offensichtlich, dass Sie nicht genug Zeit haben, um eine perfekt informierte Entscheidung zu treffen. Sie können nur versuchen, eine Entscheidung zu treffen, die zukünftige Schmerzen minimiert. Ich würde vorschlagen:

  1. Dokumentieren Sie klar die Art der Situation: Senden Sie eine E-Mail an Ihre Manager und CC deren Manager und die Stakeholder. Erklären Sie, dass das Ihnen zugewiesene Problem schwierig ist, Sie aber bereit sind, alles zu geben. Beachten Sie jedoch, dass Sie aufgrund der strengen Zeitbeschränkungen nicht garantieren können, dass Ihre Ergebnisse optimal sind.

  2. Finden Sie ein Framework / eine Plattform mit einer großen und aktiven Online-Community. Das Letzte, was Sie wollen, ist, nur ein undurchsichtiges Framework zu debuggen.

  3. Wie bereits von gbjbaanb erwähnt, sollten Sie Ihre Portierungsprobleme und -risiken durch die Verwendung einer lose gekoppelten Architektur mindern. Wenn alles mit einer Ihrer Technologiewahlen birnenförmig wird, wird es einfacher, es auszutauschen.

Ich war schon einmal in Ihrer Situation und es wurde schließlich ein politischer Albtraum. Als das System nicht auf magische Weise funktionierte, begannen die Leute, mit den Fingern zu zeigen, und die Dinge wurden hässlich. Deshalb ist meine Empfehlung Nr. 1, klar zu dokumentieren, dass Sie Ihr Bestes gegen unmögliche Chancen getan haben .

Viel Glück :)

MetaFight
quelle
17
Re: # 1. Niemand mag einen weinerlichen Verlierer, also heben Sie einfach hervor, dass Sie gegen unmögliche Umstände das Beste getan haben, was Sie können. Dann sehen Sie aus wie ein aktiver Gewinner im Team! Das Management mag so etwas. Im Übrigen gibt es viele Gründe, warum das große Umschreiben nicht funktioniert. Die Wahl einer Technologie gegenüber einer anderen ist normalerweise das geringste Problem.
gbjbaanb
Ja, mir wurde klar, dass es ein bisschen weinerlich war, also habe ich es modifiziert.
MetaFight
Persönlich wäre ich genauer als "nicht optimal", da das nicht die Schwere der Unsicherheit angibt. Ein Manager mit der Einstellung "Es muss nicht perfekt sein, nur gut genug" ignoriert diese Warnung leichtfertig, ohne zu wissen, dass Sie damit sagen wollten, dass die Technologie möglicherweise nicht gut genug ist.
Meriton - Streik
3
Stattdessen würde ich konkrete Risiken identifizieren und sie an das Management weiterleiten. Zum Beispiel: "Nach unserem derzeitigen Kenntnisstand halten wir Technologie A für die beste Wahl. Aufgrund der kurzen Frist konnten wir jedoch nicht überprüfen, ob dieser Ansatz die von diesem System erwartete Arbeitslast bewältigen kann." Das Management kann dann entweder das Risiko akzeptieren oder es reduzieren, indem es weitere Analysen anordnet.
Meriton - Streik
+1 für Punkt Nr. 2. Entscheiden Sie sich für eine Lösung mit einer ausgereiften und gut entwickelten Community. Wenn Sie mehr als eine solche Lösung gut finden, können Sie jederzeit in Online-Foren, Blogs, Fragen usw. stöbern und herausfinden, welche Lösung zu Ihnen passt Beste
Arnab Bhagabati
5

Da Sie effektiv nur wenig Zeit haben, um mehr zu tun, als Kandidaten aus dem Hut zu ziehen, würde ich den folgenden Ansatz wählen.

Wählen Sie Technologien aus, die:

  • Habe eine große Nutzerbasis
  • Aktive Unterstützung haben (über welche Kanäle auch immer)
  • Werden aktiv weiterentwickelt

Per Definition würde dies jede Spitzentechnologie ausschließen, wie gut sie auch sein mag.

Widerstehen Sie auch dem Drang, ohne weitere Analyse auf Technologie X umzusteigen, nur weil Fred, der Entwickler, sie in der Vergangenheit verwendet hat. Es ist unwahrscheinlich, dass es perfekt passt, und wenn Fred grüner auf die Weiden geht, ist Ihr Domain-Experte da.

Robbie Dee
quelle
Obwohl Technologie X gut genug passt und Fred bereit ist, die anderen Entwickler zu schulen, kann dies eine gute Möglichkeit sein, das Team anzukurbeln.
ein
Sicher - wenn es die anderen Kästchen anhakt ...
Robbie Dee
4

2 Tage sind eine sehr kurze Zeitspanne, um eine solche Entscheidung zu treffen. Da Sie dies jedoch in einer Liste von 2 Tagen tun müssen,

  1. Was sind die Zielplattformen?
  2. Welche benutzerdefinierten Komponenten / Komponenten von Drittanbietern werden in der aktuellen App verwendet, deren Portierung möglicherweise einen erheblichen Aufwand erfordert? Zum Beispiel: Diagrammkomponenten, Rasterkomponenten, Berichtskomponenten usw.
  3. Wie verbindet sich die aktuelle App mit der Welt und wie wird mit der Sicherheit umgegangen (Datenbankverbindungen / Webservices / etc ...)
  4. Wie es verteilt wird und wie Updates bereitgestellt werden

Jetzt müssen Sie nach Alternativen suchen, die Sie für alle Zielumgebungen verwenden können

Informieren Sie sich für jede Alternative über die Unterstützung für die Verwendung der Konnektivität / Sicherheit, die die aktuelle App verwendet.

Dann finden Sie für jede benutzerdefinierte Komponente / Komponente eines Drittanbieters heraus, ob es für jede Komponente einfach zu verwendende Alternativen gibt.

Überlegen Sie dann, wie die Verteilung für jede gefundene Alternative erfolgen kann.

Ich denke, für 2 Tage sollte dies der Umfang sein, den Sie abdecken können und basierend auf den Ergebnissen können Sie eine Lösung anbieten.

Tieffliegender Pelikan
quelle
4

So gerne ich neue Dinge lerne und experimentiere, ist es unter Zeitbeschränkungen immer die beste Option, das zu wählen, womit man besser arbeiten kann oder will. Bleib bei dem, was du weißt.

Auch wenn auf lange Sicht klar wird, dass Sie nicht die beste Option gewählt haben, ist alles, was Sie in der Zwischenzeit entwickelt haben, weiterhin wertvoll und bietet eine Art Feldwissen, das immer noch vollständig nutzbar und portabel ist. Und genau das liegt daran, dass der komfortable Kontext, die Tools und die Plattform, die Sie verwenden, Ihnen nicht im Weg stehen und Sie erkennen lassen, worauf es ankommt.

Ando
quelle
2

Erstellen Sie eine Liste der Faktoren, die bei der Auswahl berücksichtigt werden sollten, z.

Dies sollte weniger als eine Stunde dauern (eigentlich sollte es weniger als 15 Minuten dauern), dann setzen Sie sich mit dem Management in Verbindung und lassen Sie diese Faktoren priorisieren. (Die Wahrscheinlichkeit, dass ihre und Ihre Prioritäten gleich sind, ist gering, obwohl Sie Ihre Auswahl mit Vorschlägen zu Prioritäten ein wenig leiten können.) Jetzt wissen Sie, was Sie über die Technologie bewerten müssen.

Wählen Sie anhand einer Internetsuche drei oder vier gängige Lösungen für Ihr Problem aus.

Lesen Sie dann genug, um eine gute Vorstellung davon zu bekommen, wie gut jede der Auswahlmöglichkeiten zu ihren Top-3-4-Prioritäten passt. Weisen Sie jeder Auswahl einen numerischen Wert zu. Berechnen Sie, indem Sie die Bewertung jeder Priorität mit dem für diese Priorität festgelegten Wert multiplizieren (10 für Nummer 1, 8 für Nummer 2, 6 für Nummer 3, 4 für Nummer 4 oder eine beliebige Zahl). Jetzt haben Sie für jede Möglichkeit eine numerische Punktzahl. Grundsätzlich ist klar, welche den zugewiesenen Prioritäten am besten entspricht. Noch besser ist, dass Sie jetzt etwas Analytisches mitnehmen können, um Ihre Wahl zu beweisen. Sie kaufen normalerweise auf Ihrer Wahl ab, weil Sie die Zahlen haben, um sie zu stützen. Wenn die Nummern dies nicht unterstützen, müssen Sie sich fragen, warum Sie die andere bevorzugen und entweder numerisch die beste wählen oder die zugewiesenen Nummern erneut aufrufen.

Wenn Sie sich auf die wahren Priroiten Ihrer Wahl konzentrieren, können Sie viel Zeit für die Recherche einsparen. Sie können wahrscheinlich innerhalb eines Tages eine Vermutung anstellen und haben dann noch einen Tag Zeit, um die beiden besten Möglichkeiten zu nutzen und bei Bedarf Testversionen herunterzuladen und ein wenig mit ihnen zu spielen.

HLGEM
quelle
Was Sie beschrieben haben, wird als "analytischer Hierarchieprozess" bezeichnet. Es ist die häufigste Technik, die ich bei der Durchführung von Handelsstudien gesehen habe. Ihre Stärke besteht darin, dass sie auf relativ objektive Weise bei der Auswahl der besten Option hilft und die Meinungen aller Beteiligten berücksichtigt. Ich war überrascht zu sehen, wie kompliziert die Websites diese Technik erscheinen lassen. Lassen Sie sich nicht von der offensichtlichen Komplexität der Websites beeinflussen, denn die Bedienung ist sehr einfach. Da ich kein gutes Beispiel finden konnte, ist Wikipedia vermutlich ein ebenso guter Ausgangspunkt wie jeder andere en.wikipedia.org/wiki/Analytic_hierarchy_process .
Dunk
1
Es dauert weniger als zehn Minuten, um die Struktur in einer Tabelle einzurichten (der komplizierteste Teil ist die Entscheidung, auf welche Faktoren Sie Prioritäten vergleichen möchten), und dann ist das Ausfüllen ganz einfach.
HLGEM
So einfach ist das wirklich. Wir führen auch Umfragen durch, bei denen jeder jeder Kategorie einen Wert zuweist, um festzustellen, was jeder für wichtig hält, damit wir jeder Kategorie eine Gewichtung zuweisen können. Immerhin ist das Software-Team der Ansicht, dass Prozessorgeschwindigkeit und Arbeitsspeicher immer oberste Priorität haben, aber die Hardware-Leute scheinen gegensätzliche Meinungen zu haben, da die Akkulaufzeit für sie wichtig ist. Natürlich zählt der Kunde in der Regel mindestens zur Hälfte der Bewertungsgewichte und macht sich keine Gedanken über Software- oder Hardwareprobleme. Die Online-Beschreibungen scheinen wirklich kompliziert zu sein, wenn dies nicht der Fall ist.
Dunk