Och chłopcze, to dużo, jeśli naprawdę miałeś na myśli, że wszystko ci się przytrafiło!
OSTRZEŻENIE : W wielu punktach poniżej możesz czuć się tak, jakbym cię krytykował i że chciałbym uczynić cię odpowiedzialnym za nieszczęścia i nie brać pod uwagę czynników zewnętrznych. Ja nie. Po prostu nie podajesz zbyt wielu szczegółów, a ja po prostu dostarczam listy kontrolne działań, które należy podjąć, aby upewnić się, że wszystko pójdzie nie tak. Wiem, że sam popełniłem wiele błędów (wszyscy to robią) i stajemy się lepsi tylko wtedy, gdy się z nich uczymy. Aby się od nich uczyć, musimy przede wszystkim zacząć postrzegać je jako błędy i przyjąć odpowiedzialność za to, co poszło źle z naszej strony. Do diabła, przyjmij odpowiedzialność za to, co poszło nie tak w cudzych częściach, możesz się z tego również nauczyć.
Twój projekt nie powiódł się
Teraz niewiele można zrobić, aby to złagodzić.
Możesz jednak wiele zrobić, aby tego uniknąć w przyszłości. Proponuję spróbować poprawić swoje umiejętności zarządzania projektem i czasem.
Jedna z książek o najlepszym stosunku ((ważna rada) / strony), które przeczytałem na ten temat, choć może nie najlepsza, to radykalne zarządzanie projektami Roba Thomsetta .
Naprawdę nie określasz, co nie powiódł się twój projekt, ale zakładam kombinację rzeczy, które spowodowały nierównowagę w zwykłym trójkącie koszt / czas / qualiy . Najważniejszym czynnikiem w moich oczach jest kierowanie projektem i rozwojem, przy jednoczesnym stałym kontakcie zarówno z waszymi aktorami technicznymi (deweloperami i testerami), jak i zainteresowanymi stronami. Zbyt wiele projektów kończy się niepowodzeniem, ponieważ nie słuchają sponsorów ani interesariuszy i nie zmuszają ich do zaangażowania się w proces.
Jeśli nie są zaangażowani, nie możesz wiedzieć, czego chcą. Jeśli nie możesz wiedzieć, czego chcą, nie możesz tego dostarczyć. Jeśli go nie dostarczysz, będą niezadowoleni. To jest porażka. Ponadto, jeśli nie angażujesz swoich interesariuszy, są oni odłączeni od rzeczywistości inżynierii oprogramowania, co oznacza, że nie rozumieją twoich problemów. Jeśli często się z tobą kontaktują, lepiej rozumieją, z czym masz do czynienia. Będą mogli lepiej zrozumieć, gdy powiesz im, że „mała” funkcja [śmiech] potrwa miesiące. Mogą lepiej ufać Twojemu planowaniu, ponieważ pomogli go zbudować. Projekt nie może odnieść sukcesu z „specyfikacjami na początku, opracowaniem, testowaniem, dostarczeniem na końcu”. Po prostu nigdy tego nie robi. Możesz dostarczyć to, o co proszono w specyfikacjach,
Co najważniejsze, zrób retrospektywę i upewnij się, że jest to gra pozbawiona ego, a nie wina. Wystarczy zidentyfikować problemy.
Zespół, który spędziłeś dni na kodowaniu, został odrzucony
Byłem w takiej sytuacji. Ponownie niewiele można zrobić, aby to złagodzić, z wyjątkiem:
- Zachowaj go w SCM na później.
- Może spróbuj stopniowo wypychać małe fragmenty do głównej bazy kodu zamiast ogromnego refaktoryzacji.
Są jednak rzeczy, które możesz zrobić, aby zapobiec takiej sytuacji:
- Dlaczego to się stało? Jaki jest powód odrzucenia?
- Przez większość czasu, kiedy widzę, że tak się dzieje (i tak też było w moim przypadku), oznacza to, że deweloper poszedł solo lub w trybie kodowania krów i produkował rzeczy, o które nigdy nie proszono. Kod, który nie pochodzi z wymagań biznesowych, może być wymyślny i „lepszy”, ale często jest stratą czasu i pieniędzy. Co więcej, będzie go kosztować jeszcze więcej, jeśli go zintegrujesz, ponieważ będzie musiał ponownie przetestować. Myśl jak ludzie, którzy rozdają ci pieniądze: musisz także być wydajny na tym poziomie.
- Czy jakość produkowanego oprogramowania była satysfakcjonująca? Czy był zgodny ze standardami i konwencjami dotyczącymi działalności w Twojej firmie?
- Czy okresowo (i często!) Informowałeś o tym bezpośrednich menedżerów? Czy od czasu do czasu wymieniasz się z innymi programistami zespołu? Jeśli nie, nic o tym nie wiedzą, ich ocena i przegląd będzie ogromnie kosztowny. W końcu NIE uwzględnia tego samego czasu. To tak, jakby zawsze próbować odkładać sprzątanie wynajętego mieszkania, a następnie próbować je wyczyścić dopiero po wyprowadzce: To kiepska praca, męcząca, trudniejsza niż byłaby to, gdyby była wykonywana regularnie i często nie da się jej zrobić dobrze.
- Czy produkowałeś testy produkcyjne? Testy jednostek? Testy integracyjne?
- Czy Twój kod był regularnie sprawdzany w SCM? Czy to było w innej branży? Czy potrzebował innej gałęzi, czy można to zrobić w bagażniku? Odkładanie popełnionego kodu jest zwykle złym znakiem. Oczywiście czasami masz ochotę to zrobić, ale po prostu strzelasz sobie w stopę.
W Twojej firmie nikt nie słucha twoich pomysłów
Są tutaj dwie opcje, a my przyjrzymy się obu:
- Twoje pomysły były złe.
- Twoje pomysły były dobre.
Zacznijmy zakładać, że były złe (znowu, zastanawianie się nad tym i zaakceptowanie twojego pomysłu było po prostu złe, wiem). Co robisz, żeby to zmienić?
- Dlaczego wpadłeś na ten pomysł? Jakie jest uzasadnienie ? Czy naprawdę istnieje potrzeba tego, co Twój pomysł próbuje przedstawić na stole?
- Jak wpadłeś na ten pomysł? Zrobiłeś to sam? Udostępniłeś? Burza mózgów? Plan? Prototyp? (rób to w odpowiedniej kolejności. Jeśli się nie powiedzie, odrzuć pomysł, nie kontynuuj. A przynajmniej nie w swoim harmonogramie pracy.)
Pomysły są tylko pomysłami. Jeśli po prostu zaproponujesz je jako pomysły i zostaną one odrzucone, nie rozumiem, dlaczego źle się z tym czujesz. Jeśli jednak zareagujesz na nie, nie powiadamiając nikogo, a NASTĘPNIE prześlesz swoje pomysły, a one zostaną odrzucone, oczywiście odczuwam frustrację w tym czasie. I twoi menedżerowie to robią!
Zakładając, że twoje pomysły były dobre:
- Czy twoja prezentacja była dobra?
- Czy Twój sposób na dostarczenie prezentacji był dobry? (Jestem programistą, wiem o czym mówię: jesteśmy zrzędliwymi, aroganckimi , pedantycznymi PITA, które zawsze mają rację i z którymi ciężko jest pracować, ponieważ często mamy nieproporcjonalne ego ).
- Czy masz plan na jego wdrożenie? Czy myślałeś o koszcie i czasie? Czy zastanawiałeś się, jakie korzyści odniosą użytkownicy / klienci? Czy myślałeś, jak to wpływa na sprzedaż? Czy zastanawiałeś się, jak praca nad tym pomysłem może wpłynąć na inne projekty i priorytety? Powiesz mi: „dlaczego mam to wszystko robić, to zadanie mojego menedżera oraz zespołów marketingu lub sprzedaży ?!” Z wyjątkiem teraz, próbujesz wykonać część wszystkich swoich zadań.
Wzorzec projektowy, który wprowadziłeś siłą w swoim zespole, spowodował bałagan
- Dlaczego wprowadziłeś wzór?
- Jeśli stworzył bałagan, prawdopodobnie albo:
- nie był odpowiedni wzór,
- nie został zaimplementowany poprawnie,
- nie został poprawnie zintegrowany.
- Jak to wprowadziłeś? Jak dokładnie definiujesz stan „bałagan”?
- mniej czytelny kod?
- mniej do utrzymania?
- kompilacje są zepsute?
- Istnieją różne rodzaje „bałaganu”. Wiedząc, co bałagan jest może pomóc wiedzieć, jaka była awaria tam, a jeśli było to winą za wzorzec projektowy.
Jestem też nieco zaskoczony tym podejściem. Musiałeś w rzeczywistości naciskać na wprowadzenie wzorca projektowego? To wydaje się dość dziwne. Wzór już tam jest, albo musisz zmienić część rozwiązania zgodnie ze wzorem. Nie naciskać go jak byś przyjęcie ram lub technologii (jak ludzie pchnął naprawdę trudno mieć XML wszędzie, a teraz jak ludzie zaczynają popychanie, aby móc napisać HTML5 na ich okładce produktu w dużych jasnych liter).
Dlaczego musiałeś pchać? Dlaczego był opór? Może to było uzasadnione.
Czy byłbyś w stanie podać przykłady, że ten konkretny wzorzec pomógłby w znaczący sposób poprawić bazę kodu (na przykład poprzez dopasowanie go do przykładu Refaktoryzacja do Wzorów ).
Zupełnie nie na temat, ale o tym pomyślałem po raz pierwszy, czytając tytuł pytania, ponieważ myślałem, że odnosi się to do awarii oprogramowania ... Miałem oprogramowanie, które zaimplementowało klasę BlackHole, aby zarządzać wyjątkowymi wyjątkami w jednym z składniki. Może się to wydawać (i naprawdę jest) dziwnym i brudnym hackowaniem, ale samo nazewnictwo było tak wspaniałe, że wszyscy doceniliśmy to za całkiem fajny sposób radzenia sobie z awarią! :)