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?
Odpowiedzi:
Jeśli masz tylko 2 dni i nie masz czasu na prototypowanie, a nawet przeczytanie wszystkich alternatyw, wtedy naprawdę są tylko 2 opcje:
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ę.
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.
źródło
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:
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.
źródło
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:
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.
Znajdź platformę / platformę z dużą i aktywną społecznością online. Ostatnią rzeczą, której chcesz, jest utknięcie w debugowaniu samej niejasnej struktury.
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 :)
źródło
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:
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.
źródło
2 dni to bardzo krótki okres na podjęcie takiej decyzji, ale ponieważ musisz to zrobić w ciągu następnych 2 dni,
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.
źródło
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.
źródło
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ę.
źródło