Jak podejmować istotne decyzje techniczne w bardzo krótkim czasie

36

Mam 2 dni na podjęcie bardzo poważnej decyzji dotyczącej narzędzi i platform, z których moja firma zamierza korzystać, aby przenieść swoją aplikację WPF na system Linux / Android / iOS.

Oczywiście mogę wskazać moim seniorom, że 2 dni to za mało, żeby przeczytać o wszystkich możliwych opcjach, a co z próbowaniem, tworzeniem prototypów itp. Mogę powiedzieć, że to mi trochę nie pomoże, mam 2 dni i po 2 dniach decyzja zostanie podjęta. Kropka.

Z jednej strony jestem sfrustrowany, z drugiej strony myślę, że w tym podejściu jest ziarno prawdy, w przeciwnym razie mogę łatwo znaleźć się pochowany pod dziesiątkami pobranych zestawów SDK, frameworków, interfejsów API, artykułów na blogach itp. Wykonujących testy, uruchamiając próbki i zapominając przy okazji, po co to wszystko było.

Mimo to obawiam się, że zła decyzja będzie drogo kosztować firmę. Jak myślisz, co jest „idealnym” procesem podejmowania takich decyzji?

Flot2011
źródło
4
Napisz gdzieś, że decyzja jest prawie niemożliwa do podjęcia w ciągu dwóch dni. Następnie spróbuj podjąć niezłą decyzję i udokumentuj, że twoja decyzja nie jest najlepsza. Innymi słowy, zakryj swoją dupę. Qt5 można rozważyć. Lub spraw, aby Twój produkt był aplikacją internetową HTML5 (ewentualnie wykorzystującą bibliotekę serwerów HTTP, np. Libonion lub FastCGI)
Basile Starynkevitch,
2
@gnat Nie zgadzam się, że jest to subiektywne pytanie, nawet jeśli istnieje więcej niż jedna możliwa odpowiedź, którą wszyscy możemy uzyskać z doświadczenia innych.
Flot2011
9
W wielu przypadkach nie ma „najlepszej opcji”, możesz napisać ją jako webową aplikację PHP i zadziała. Możesz też napisać to jako program Qt i zadziałałoby. Może to być interfejs użytkownika gry OpenGL. Wszystkie są akceptowalnymi wyborami, sztuczka polega na tym, aby wybrać jedną, a następnie zacząć działać. Nie paraliżuj się wątpliwościami, kiedy coś wybierzesz.
gbjbaanb
5
Bardzo zły przykład, ponieważ w tym przykładzie jest jedna technologia, która jest oczywistym wyborem - Xamarin. Zachowaj kod zaplecza .NET, po prostu zamień interfejs użytkownika na coś. Obsługuje wszystkie podane przypadki. Tak więc jest to raczej przypadek „Wiem już wszystko o systemach wieloplatformowych dla platformy .NET”.
TomTom,
7
Mówienie, że 2 dni to za mało, nie jest zbyt konstruktywne. Czy 3 dni będą wystarczające? A może chcesz spędzić 2 miesiące? A o ile lepsza może być twoja decyzja? ~~~~ Jeśli powiesz, że potrzebujesz tygodnia i jesteś przekonany, że to z łatwością pozwoli zaoszczędzić setki godzin czasu programowania, pamiętaj o tym. Może to nie pomóc, ale zawsze istnieje szansa, że ​​interesariusze polubią twoje uzasadnienie biznesowe.
Dennis Jaheruddin,

Odpowiedzi:

48

Jeśli masz tylko 2 dni i nie masz czasu na prototypowanie, a nawet przeczytanie wszystkich alternatyw, wtedy naprawdę są tylko 2 opcje:

  1. zapytaj kogoś, kto zna ich rady i postępuj zgodnie z nimi. Nie musi to koniecznie oznaczać pytania osoby, ale spędzić 2 dni na przeszukiwaniu blogów i artykułów, aby zebrać wystarczającą ilość informacji, aby podjąć nieco lepszą niż niedoinformowaną decyzję.

  2. Zrób trochę badań na temat wszystkich opcji głównego nurtu, a następnie wybierz jedną. Czasami przywództwo oznacza nie banie się podjęcia złej decyzji, często ważniejsze jest podjęcie stanowczej decyzji niż wahanie się.

Możesz się osłonić, proponując architektury, które są bardziej odsprzężone, a zatem łatwiejsze do zmiany - np. Model klient / serwer pozwoli ci zastąpić twoją technologię interfejsu użytkownika inną przy minimalnym zakłóceniu.

gbjbaanb
źródło
10
+1 za „nie bój się podjąć złej decyzji” Czasami złapanie się w „paraliżu analizy” jest gorsze niż brak podjęcia jakiejkolwiek decyzji. Wszyscy jesteśmy ludźmi. Daj z siebie wszystko i żyj dalej.
semaj
1
wahać się: naprzemiennie lub wahać się między różnymi opiniami lub działaniami; bądź niezdecydowany.
TankorSmash,
10
+1 za „
zasłoń się, wymyślając
2
@emodendroket Windows Workflow Foundation.
MetaFight
2
Jeśli Twój problem nie dotyczy głównego nurtu, nie oczekuj, że rozwiązania głównego nurtu sprawdzą się dobrze. To właśnie tam kluczowe znaczenie ma rozdzielenie i elastyczność . Szukaj frameworków / bibliotek, które ułatwiają robienie własnych rzeczy, zamiast sprawić, byś spełnił ich oczekiwania, gdy wydawało się, że nie przewidują tego, co musisz zrobić.
jpmc26
19

Może się wydawać, że idę pod prąd, ale niedawno czytać książki kreatywność, Inc. przez Ed Catmull i było naprawdę miło ustęp przeciwdziałanie tej sytuacji:

Andrew Stanton przemówił następnie. Andrew lubi mówić, że ludzie muszą się mylić tak szybko, jak to tylko możliwe. Mówi, że w bitwie, gdy masz do czynienia z dwoma wzgórzami i nie masz pewności, które z nich zaatakować, właściwym działaniem jest pośpiech i wybór. Jeśli dowiesz się, że to niewłaściwe wzgórze, odwróć się i zaatakuj drugie. W tym scenariuszu jedynym niedopuszczalnym działaniem jest bieganie między wzgórzami.

Jestem pewien, że można to zastosować również w twojej sytuacji. Być może możesz podjąć decyzję już dziś, wybierając ją i zacząć nad nią pracować. Jeśli to zadziała, będziesz miał coś gotowego w ciągu tych dwóch dni i powiesz: „Wybrałem to i mogę ci pokazać, co możemy z tym zrobić, ponieważ przeprowadziłem kilka testów ...”. Jeśli w ciągu dnia zauważysz, że wybrane rozwiązanie nie jest tego warte, możesz wybrać inne i pracować nad tym następnego dnia. Najgorszym scenariuszem jest to, że wykorzystasz oba dni na przetestowanie dwóch platform, dowiadując się, że żadna z nich nie działa - ale to ostatecznie właściwa odpowiedź, prawda? Usuń zioło, pozbądź się niewłaściwych możliwych wyborów, aby każda następna decyzja była znacznie lepsza niż poprzednia. Najlepszym scenariuszem jest to, że „

Oczywiście nie opanujesz żadnej platformy w ciągu dwóch dni, ale wybranie jednego JAK NAJSZYBCIEJ na pewno da ci lepszą perspektywę na to, jak to działa (znacznie więcej niż tylko czytanie o niej) i doprowadzi cię do lepszej odpowiedzi.

Michał
źródło
12
Chociaż zgadzam się z tobą na poziomie globalnym, czasami pęd do przodu na polu walki jest dość samobójczy.
Flot2011,
Nikt jednak nie wspomniał o pośpiechu. Nigdy nie powiedziałem, żeby iść dziś do szefa i powiedzieć: „Oto rozwiązanie. Tu i teraz”. Zamiast tego proponuję wybrać jeden w głowę i spróbować go uruchomić i majstrować przy nim. Po prostu czytanie o tym i omawianie go z kimś innym nie załatwi sprawy. Wierzę, że pójście naprzód i wypróbowanie go doprowadzi do wyboru o wiele wyższej jakości.
Michał
6
@ Flot2011 jednak, jeśli masz MBA, pozostajesz tam, gdzie jesteś i wysyłasz wszystkie swoje wojska, aby walczyły na obu wzgórzach. Jeśli wszyscy zginą, no cóż, dostaniesz więcej żołnierzy i będziesz kontynuować, ale tym razem mówiąc, że twoje doświadczenie jako generała czyni cię o wiele bardziej ... zasługującym na potwornie większą pensję.
gbjbaanb
1
„Wybór jednego jak najszybciej, a potem prototypu” wydaje mi się w tej sytuacji bardzo złą radą. Tak, prototypowanie jest ważne, ale także czasochłonne. Nietrywialne problemy często mają więcej niż 2 możliwe rozwiązania, a 2 dni to za mało, aby prototypować kilka technologii.
meriton - podczas strajku
@meriton Czuję, co masz na myśli - zgadzam się, prototypowanie jest czasochłonne. Nie określiłem wyraźnie „rób prototypy” - dlatego ostrożnie wybrałem słowo majsterkowanie - eksploruj platformę, pisz trochę kodu, otwieraj podstawowe pliki implementacyjne, zobacz, jak to działa. Istnieje prawdopodobieństwo, że osoba podejmująca decyzje nie poda wszystkich szczegółów, ale na zasadzie prób i błędów zdecydowanie poprawi jakość decyzji.
Michał
10

gbjbaanb robi kilka bardzo dobrych punktów. Pomyślałem, że trochę dodam.

To oczywiste, że nie masz wystarczająco dużo czasu na podjęcie świadomej decyzji. Jedyną opcją jest próba podjęcia decyzji, która zminimalizuje przyszły ból. Sugerowałbym:

  1. Wyraźnie udokumentuj charakter sytuacji: Wyślij wiadomość e-mail do swojego kierownika (-ów) i CC, ich menedżerów i interesariuszy. Wyjaśnij, że przydzielony Ci problem jest trudny, ale jesteś gotów dać z siebie wszystko. Pamiętaj jednak, że biorąc pod uwagę ścisłe ograniczenia czasowe, nie możesz zagwarantować, że twoje ustalenia będą optymalne.

  2. Znajdź platformę / platformę z dużą i aktywną społecznością online. Ostatnią rzeczą, której chcesz, jest utknięcie w debugowaniu samej niejasnej struktury.

  3. Jak wcześniej wspomniano przez gbjbaanb, złagodź swoje problemy związane z portowaniem i ryzyko, używając luźno powiązanej architektury. Jeśli wszystko wybierze kształt gruszki przy użyciu jednego z wybranych przez ciebie rozwiązań technologicznych, ułatwi to zamianę.

Byłem już w twojej sytuacji i ostatecznie stał się politycznym koszmarem. Kiedy system nie działał magicznie, ludzie zaczęli wskazywać palcami, a sprawy stały się brzydkie. Właśnie dlatego moim zaleceniem nr 1 jest wyraźne udokumentowanie, że dałeś z siebie wszystko wbrew niemożliwym szansom .

Powodzenia :)

MetaFight
źródło
17
Odp: # 1. Nikt nie lubi bzdurnego przegranego, więc po prostu zaznacz, że zrobiłeś najlepiej, jak potrafisz w niemożliwych okolicznościach, a następnie wyglądaj jak aktywna wygrana w drużynie! Zarząd lubi takie rzeczy. Nawiasem mówiąc, istnieje wiele powodów, dla których duże przepisywanie nie działa, wybór jednej technologii nad drugą jest zwykle najmniejszym problemem.
gbjbaanb
Tak, zdałem sobie sprawę, że to trochę marudne, więc zmodyfikowałem to.
MetaFight,
Osobiście byłbym bardziej konkretny niż „nieoptymalny”, ponieważ nie określa on wagi niepewności. Menedżer o mentalności „nie musi być doskonały, wystarczy dobry” beztrosko zignoruje to ostrzeżenie, nieświadomy, że chciałeś powiedzieć, że technologia może nie być wystarczająco dobra.
meriton - podczas strajku
3
Zamiast tego zidentyfikowałbym konkretne zagrożenia i przekazałbym je kierownictwu. Na przykład: „W oparciu o naszą obecną wiedzę uważamy, że technologia A jest najlepszym wyborem. Jednak ze względu na krótki termin nie byliśmy w stanie zweryfikować, czy takie podejście jest w stanie obsłużyć oczekiwane obciążenie systemu”. Kierownictwo może następnie zaakceptować ryzyko lub zmniejszyć je, zlecając dalszą analizę.
meriton - podczas strajku
+1 za punkt nr 2. Wybierz rozwiązanie, które ma dojrzałą i dobrze rozwiniętą społeczność. Jeśli wpiszesz więcej niż jedno takie rozwiązanie, zawsze możesz przeglądać fora internetowe, blogi, pisać pytania itp. I dowiedzieć się, które Ci odpowiada najlepiej
Arnab Bhagabati,
5

Ponieważ skutecznie dali ci niewiele czasu na zrobienie więcej niż wybieranie kandydatów z kapelusza, przyjmuję następujące podejście.

Wybierz technologie, które:

  • Mają dużą bazę użytkowników
  • Aktywne wsparcie (przez dowolne kanały)
  • Aktywnie się rozwijają

Z definicji wykluczałoby to wszelką najnowocześniejszą technologię, jakkolwiek by to nie było dobre.

Opieraj się też chęci korzystania z technologii X bez dalszej analizy tylko dlatego, że Fred, twórca aplikacji, korzystał z niej w przeszłości. Jest mało prawdopodobne, aby idealnie pasowało, a jeśli Fred przejdzie na zielone pastwiska, pójdzie ekspert w dziedzinie.

Robbie Dee
źródło
Chociaż jeśli technologia X jest wystarczająco dobrze dopasowana, a Fred chętnie kształci innych programistów, może to być dobry sposób na rozpoczęcie działalności zespołu.
CVn
Na pewno - jeśli zaznaczy pozostałe pola ...
Robbie Dee
4

2 dni to bardzo krótki okres na podjęcie takiej decyzji, ale ponieważ musisz to zrobić w ciągu następnych 2 dni,

  1. Jakie są platformy docelowe?
  2. Jakie niestandardowe / zewnętrzne komponenty są używane w bieżącej aplikacji, gdzie ich portowanie może wymagać dużego wysiłku. na przykład: komponenty wykresu, komponenty siatki, komponenty raportowania itp.
  3. W jaki sposób bieżąca aplikacja łączy się ze światem i w jaki sposób obsługiwane są zabezpieczenia (połączenia z bazami danych / usługi sieciowe itp.)
  4. Jak to jest dystrybuowane i jak dostarczane są aktualizacje

Teraz musisz znaleźć alternatywy dla wszystkich docelowych środowisk

Dla każdej alternatywy dowiedz się, jak korzystać z łączności / zabezpieczeń używanych przez bieżącą aplikację.

następnie dla każdego niestandardowego / zewnętrznego komponentu dowiedz się, czy istnieją łatwe w użyciu alternatywy dla każdego z nich.

Zastanów się, jak można dokonać dystrybucji każdej znalezionej alternatywy.

Myślę, że przez 2 dni powinien to być zakres, który powinieneś być w stanie objąć i na podstawie wyników, które możesz dostarczyć rozwiązanie.

Nisko latający pelikan
źródło
4

O ile lubię się uczyć i eksperymentować z nowymi rzeczami, pod ograniczeniami czasowymi najlepszą opcją jest zawsze wybranie tego, co jest lub z czym wygodniej się pracuje. Trzymaj się tego, co wiesz.

Nawet jeśli na dłuższą metę stanie się jasne, że nie wybrałeś najlepszej opcji, wszystko, co opracowałeś, jest w międzyczasie cenne i zawiera rodzaj wiedzy terenowej, która jest nadal całkowicie użyteczna i przenośna. A to właśnie dlatego, że wygodny kontekst, narzędzia i platforma, którą wybrałeś, nie przeszkadzają i pozwalają zobaczyć, co naprawdę ma znaczenie.

Ando
źródło
2

Zrób listę czynników, które należy wybrać, takich jak: bezpieczeństwo wydajności Wydajność łatwość użycia możliwość wykonania X zdolność wykonania Y znajomość programisty czas wprowadzenia na rynek itp.

Powinno to zająć mniej niż godzinę (w rzeczywistości powinno to zająć mniej niż 15 minut), a następnie usiąść z kierownictwem i sprawić, by priorytety te czynniki. (Szanse na to, że ich priorytety i twoje będą takie same, są niewielkie, chociaż możesz nieco poprowadzić ich wybór z sugestiami co do priorytetów.) Teraz wiesz, co ocenić na temat technologii.

Wybierz trzy lub cztery typowe rozwiązania swojego problemu na podstawie wyszukiwania w Internecie.

Następnie przeczytaj wystarczająco dużo, aby dobrze zgadnąć, jak dobrze każdy z wyborów pasuje do ich najwyższych 3-4 priorytetów. Przypisz wartość liczbową do każdego wyboru. Wykonaj matematykę, mnożąc ocenę każdego czasu priorytetu jako wartość ustawioną dla tego priorytetu (10 dla liczby 1, 8 dla liczby 2, 6 dla liczby 3 4 dla liczby 4 lub jakiejkolwiek wartości liczbowej lubisz). Teraz masz wynik liczbowy dla każdej możliwości. Zasadniczo będzie oczywiste, które najlepiej spełniają wyznaczone priorytety. Jeszcze lepiej, że masz teraz coś analitycznego do zabrania, aby udowodnić swój wybór. Zwykle wykupią się na twój wybór, ponieważ masz na to odpowiednie liczby. Jeśli liczby nie obsługują tego, musisz zadać sobie pytanie, dlaczego wolisz drugi i albo wybrać najlepszy numerycznie, albo ponownie sprawdzić przypisane numery.

Koncentrując się na tym, jakie są prawdziwe priroity z wyboru, możesz zaoszczędzić dużo czasu na badania. Prawdopodobnie możesz zgadnąć w ciągu jednego dnia, a następnie masz dzień, aby skorzystać z 2 najlepszych możliwości i pobrać wersje próbne, jeśli to konieczne, i zagrać z nimi trochę.

HLGEM
źródło
To, co opisałeś, nazywa się „procesem hierarchicznej analizy”. Jest to najczęstsza technika stosowana do przeprowadzania badań handlowych. Jego mocną stroną jest to, że pomaga wybrać najlepszą opcję w dość obiektywny sposób i uwzględnia opinie wszystkich zainteresowanych stron. Byłem zaskoczony, widząc, jak skomplikowane strony internetowe sprawiają, że ta technika wydaje się. Nie pozwól, aby pozorna złożoność pokazana przez strony internetowe Cię kołysała, jest naprawdę bardzo łatwy w użyciu. W każdym razie, ponieważ nie mogłem znaleźć dobrego przykładu, przypuszczam, że Wikipedia jest tak dobrym punktem wyjścia jak każdy en.wikipedia.org/wiki/Analytic_hierarchy_process .
Dunk
1
Przygotowanie struktury w arkuszu kalkulacyjnym zajmuje mniej niż dziesięć minut (najbardziej skomplikowana część decyduje, na jakich czynnikach chcesz porównać priorytety), a następnie wypełnienie jest łatwe.
HLGEM
To naprawdę takie proste. Przeprowadzamy również ankiety, w których każdy przypisuje wartość do każdej kategorii, aby ustalić, co wszyscy uważają za najważniejsze, abyśmy mogli przypisać wagi do każdej kategorii. W końcu zespół programistów uważa, że ​​szybkość procesora i pamięć są zawsze priorytetem, ale faceci ze sprzętu wydają się mieć przeciwne opinie, ponieważ żywotność baterii jest dla nich ważna. Oczywiście, klient zazwyczaj zalicza się do co najmniej połowy wag ratingowych i nie dba o obawy dotyczące oprogramowania lub sprzętu. Opisy online wydają się bardzo skomplikowane, gdy tak nie jest.
Dunk