Umieszczenie problemów, które widzisz w ustrukturyzowanej formie, związanej z ich praktycznym wpływem na biznes, bardzo Ci pomoże:
Przemyśl problemy i dowody, które możesz znaleźć, i pogrupuj je w ten sposób :
- Obserwacje, które sugerują, że jeśli zostanie wprowadzony na rynek, nie będzie używany i wykaże luki . Nie można go skompilować. W kodzie są błędy logiczne. Dane wejściowe nie są sprawdzane. Dane nie są przetwarzane w sposób zapewniający wysokie prawdopodobieństwo braku korupcji. Brakuje aspektów bezpieczeństwa, a dane mogą zostać wyeksportowane / zhakowane. Nie można zagwarantować, że kluczowe funkcje będą działać z dobrego powodu, lub możesz pokazać kilka, które wypróbowałeś z nich, często nie działają zgodnie z przeznaczeniem. Takie rzeczy.
- Obserwacje sugerujące, że mogą istnieć problemy, które nie ujawnią się podczas testów, ale niosą ze sobą znaczne ryzyko problemów, jeśli zostaną wprowadzone na rynek . Podobnie jak powyżej, ale nr 1 to rzeczy, które znalazłeś, jest to dowód, który sugeruje, że należy spodziewać się / przewidywać / uważać znaczące nierozpoznane problemy za znaczące ryzyko. Na przykład, jeśli masz ustalone przypadki związane z nieprawidłowym przetwarzaniem w niektórych przypadkach walidacji danych, sugeruje to, że mogą istnieć inne przypadki i nie są znane, co może prowadzić do utraty / uszkodzenia danych. Jeśli zastosowali znane, przestarzałe / wątpliwe podejście do jednego problemu, oznacza to, że zrobili to samo w innych kwestiach. Jeśli baza danych podlega warunkom wyścigu / aktualizacjom niepodzielnym w jednym obszarze, sugeruje to ogólnie, że może to być problem w kodzie. A jeśli jest to wielu użytkowników, ale przetwarzanie po stronie serwera nie pozwala na subtelne zderzanie danych wejściowych / procesów wielu użytkowników, sugeruje to, że może spaść pod odpowiednim obciążeniem.
- Obserwacje sugerujące, że oryginalna załoga oszukała kierownictwo (celowo lub nie, a może po prostu nie będąc siłą i zbyt łatwo ją pominąć / zignorować: mogła to być wina kierownictwa, a nie ich!). W tej chwili poprzednia załoga jest darem od Boga dla kierownictwa, ponieważ dostarczyła lśniący produkt. Masz do nich wątpliwości, ponieważ mimo że jest to świetny produkt, nie jesteś szczęśliwy, nie możesz sprawić, by działał, nie rozumiesz itd. Ale jeśli masz obserwacje, które bezpośrednio zaprzeczają temu, co powiedzieli, stajesz się ten, który wie, co się dzieje, a but zwraca się przeciwko nim. Twoja praca staje się wtedy łatwiejsza. Na przykład, jeśli powiedzieli kierownictwu, że projekt ma odpowiednie zabezpieczenia interfejsu webUI i zauważysz miejsca, w których nie sprawdzili poprawności danych wejściowych / skryptu krzyżowego / wstrzyknięcia SQL, lub kierownictwo uważa, że projekt poradzi sobie z pewną istotną rzeczą i możesz konkretnie pokazać, że może czego nigdy nie mógł zrobić, możesz pokazać kierownictwu, że zostali oszukani.
- Obserwacje, z których wynika, że po wprowadzeniu na rynek zwykłe poziomy realizacji / oczekiwań / usług będą niepraktyczne / niewykonalne lub koszty będą znacznie wyższe niż oczekiwano . Na przykład, jeśli kod jest zbyt słaby lub brakuje w nim aspektów związanych z debugowaniem, wtedy gdy klient ma problem, nie będzie praktycznego sposobu śledzenia błędów, a naprawienie problemu może zająć tygodnie, a nie godziny. Jeśli kod jest powtarzany, oznacza to, że zmiany walidacji lub ulepszania struktur danych nie można wykonać „tylko w jednym miejscu”. Jeśli jest nieudokumentowany lub ma złą strukturę, wówczas próby jego ulepszenia lub ulepszenia będą bardzo utrudnione, ponieważ nie będzie praktycznego sposobu na dokonanie znaczącego rozwoju i upewnienie się, że wszystko się nie zepsuje, w przeciwnym razie sprawdzenie pęknięcia zajmie tyle czasu, że być nieekonomiczne. Jeśli to zły bałagan, to gdy pojawią się na rynku, będą polegać na tobie osobiście za każdym razem, gdy pojawi się problem; Ponieważ nie możesz zagwarantować, że będziesz tam w weekendy i 23:00 tylko z powodu jakiegoś terminu klienta, w którym wystąpił błąd, lub możesz wpaść w autobus, co zrobią? Jeśli dane można przesuwać, ale wymagają one nadmiernej ręcznej uwagi, wówczas w produkcji wsparcie może nie być w stanie skalować, aby to zapewnić lub zagwarantować, że będzie wystarczająco proste, więc błędy przetwarzania mogą być większe ryzyko. Jeśli zależy to od konkretnych platform, a te platformy nie są jasno zarządzane w kodzie, wówczas zmiany na platformach (aktualizacje systemu Windows, wersje przeglądarek, wersje bibliotek) mogą być niewykonalne w zwykłych lub komercyjnych ramach czasowych lub naprawienie tego, co zepsują, może być złożone , przez co klienci nie mogą obsługiwać ani używać swoich platform zgodnie z oczekiwaniami.
- Spostrzeżenia, które Cię po prostu denerwują . To twoja praca. Jeśli nie mieszczą się w powyższych kategoriach, napraw je najlepiej, jak potrafisz w wolnym czasie. Problemem kierownictwa są pierwsze 4 elementy powyżej, a nie to.
Pomogą Ci one dopasować techniczną i praktyczną perspektywę do perspektywy biznesowej. Jeśli potrafisz wykazać, że istnieją problemy w pierwszych 4 powyższych kategoriach i jasno je przedstawić, będziesz na dobrej drodze do rozwiązania swojego problemu - pokazując im dobre powody, dla których to ich problem, a nie twój brak
Jeśli umieścisz taką listę razem i wygląda ona atrakcyjnie, utwórz prezentację, przedstaw ją im i przeprowadź ich przez przykładowe problemy - w tym określony kod lub fragmenty przepływu danych, które ilustrują ten punkt.
Twoja prezentacja
Aby była skuteczna,
- Znajdź innego programistę, któremu ufają - lub poproś o pozwolenie na przyprowadzenie kolegi na jeden dzień - i mieć kogoś, kto jest gotów cię wesprzeć. W ten sposób to nie wszystko, co mówisz; masz kogoś, kto może powiedzieć: „Tak, pokazał mi ten kod i przepraszam, nie przesadza z powagą”.
- Spodziewaj się, że będziesz musiał trochę się uczyć - krótko. Nie są programistami, ale mają zdrowy rozsądek. „Dlatego używamy ustrukturyzowanego kodu, dokładnie tak, abyśmy mogli wykonać każde zadanie tylko raz, wyodrębnić części i mieć pewność, jak elementy oddziałują na siebie. Ale ci faceci nie, spójrz tutaj , tutaj i tutaj . Problem polega więc na tym, że w ich kodzie nie możesz zobaczyć, jak elementy oddziałują na siebie, lub jeśli występują błędy logiczne lub niespójności i nie można być pewnym, że niezależne części są naprawdę niezależne lub co trzeba zmienić gdzie indziej, jeśli coś wymaga zmiany, a nawet że będzie się zachowywać pod obciążeniami w świecie rzeczywistym, jak podczas testowania. Zakładając, że możemy to realistycznie przetestować, a także naprawić to w mniej niż 3 lata pełnoetatowej pracy zespołu dziesięciu osób, co jest wątpliwe. Właśnie dlatego profesjonaliści programują ostrożnie - ponieważ znamy w przeciwnym razie wpływ na biznes byłby poważny ”.
- Spodziewaj się presji lub przymusu, aby powiedzieć, że nie jest tak źle.
Mów otwarcie. - Przepraszam, cokolwiek ci powiedzieli, najwyraźniej nie jest to prawdą. Doceniam to, że jest to szok, ale jako profesjonalista, tak też jest. Powiedz im: „Nie, to nie jest praca wysokiej jakości, jest to niedbała praca przestępcza i okłamywano cię do końca”. (Tak, możesz powiedzieć, że dla podkreślenia, to nie tak, że mówisz, że są przestępcami !!) Powiedz „Tak, przepraszam, ale jestem pewien”.
- Podaj szczegółowe informacje. Jeśli powiesz po prostu „klucze SSH są w postaci zwykłego tekstu”, to świetnie dla kogoś na twoim poziomie i widzisz to tak jak ty. Dla kierownictwa znajdującego się pod presją i wierzącego, że jest świetny i dlaczego tak się dzieje, jest to zbyt mało szczegółowe. Zamiast tego: „Klucze szyfrowania używane do blokowania panelu konfiguracyjnego klienta dla użytkowników zdalnych są przechowywane w niebezpieczny sposób, w sposób, który każdy z niewielką wiedzą graniczy z kryminalnym niechlujstwem. (Ponownie, tak, możesz powiedzieć, że dla podkreślenia nie tak, jak mówisz, że są przestępcami !!) . Jeśli spojrzysz tutaj (OK, nie mogą śledzić kodu, ale pobierają kod i i tak wskazują na ten fragment , ze względu na wiarygodność) zobaczysz, że klucz jest przechowywany w otwartym formacie. Nie wykonali nawet podstawowego szyfrowania z lat 90. Umieść to w Internecie, a dane klienta / użytkownika zostaną zhakowane, gdy tylko ktoś uzna, że jest wart 10 to zajmie minut. " Pokaż im „Ponad tutaj , tutaj i tutaj możesz zobaczyć rutynowe wywołanie systemowe [API], które może, ale nie musi, nie działać w różnych przypadkach, ponieważ podano niepoprawne dane dla połączenia ”. Powiedz im: „To są podstawowe, fundamentalne błędy. Tak jest wszędzie”. Pokaż im „W tym module używają tej biblioteki, ale ponad tutaj używają tej biblioteki. Ale producent wyjaśnia, że te dwie biblioteki nie są w rzeczywistości zgodne. Nigdy, przenigdy nie powinny być używane w tym samym kodzie, ponieważ mogą one pozostawić nieprawidłowe dane / mogą uszkodzić dane / ponieważ wynik jednej z nich będzie przetwarzane nieprawidłowo / uszkodzone / niewłaściwie obsługiwane, jeśli zostały przekazane drugiej stronie. " W ten sposób, aby mogli to zrozumieć i dostrzec znaczenie. Powiedz im: „Czy mogę to naprawić? Cóż, innymi słowy, jeśli ten kawałek jest tak okropny, jak myślisz, jak realistyczna jest ponowna instalacja całej infrastruktury bezpieczeństwa dla projektu w mniej niż 6 miesięcy?” Takie podejście. Pokaż im to.
- Wybierz wstępnie przemyślane rozwiązanie. Co byś zrobił na ich miejscu? W rzeczywistości wybierz 3 rozwiązania i zalety / wady / przybliżone szacunki ich wpływu. Nigdy nie zapominaj, że opcje „nic nie rób” lub „mimo wszystko kontynuuj” to opcja , uwzględnij to (wraz z zaletami / wadami / zagrożeniami) również na swojej liście.
- Daj im czas być zszokowanym, zdenerwowanym, zaprzeczającym i winnym. To ludzkie i oni też mają presję. Spodziewaj się, że to się wydarzy i albo usiądź, zaakceptuj ich szok, poprowadź ich obok niego, przypomnij im delikatnie, że poszukiwanie winy i autopsja mogą poczekać; w rzeczywistości nie rozwiązują problemów firmy. Bądź ich doradcą.
- W razie potrzeby po chwili powiedz po prostu „Mam kilka propozycji rozwiązań. Żadne nie są idealne - idealnym byłoby, gdyby ten bałagan nie istniał. Ale są wykonalne. To był ciężki Poświęćmy 10 minut / Czy możemy spotkać się ponownie po krótkiej przerwie na kawę / po obiedzie / Mam spotkanie, spotkajmy się później, aby skupić się na rozwiązaniach i co robimy, aby to naprawić. ” Umieszczając to w osobne spotkanie po mentalnej „zmianie scenerii” - nawet po drugiej stronie przerwy na kawę - bardzo pomoże.
- Mówienie, że masz rozwiązania, często może trochę poczekać, aż nastąpią pierwsze eksplozje, ponieważ ludzka reakcja często polega na zignorowaniu lub zaprzeczeniu potrzebie na wczesnych etapach. Dopiero gdy rozproszą część swojego zdenerwowania (jeśli są tego typu), warto to powiedzieć, ponieważ u tak wielu ludzi po prostu nie usłyszą tego, jeśli jest to powiedziane, gdy nadal są w gorącym, gniewnym, zawstydzonym trybie winy. Jeśli to nie jest problem, przejdź bezpośrednio do rozwiązań po wyjaśnieniu powagi / ryzyka uderzenia, jeśli uważasz, że słuchają.
Ostrożnie unikaj wszystkiego, co mogłoby sugerować, że jesteś perfekcjonistą lub robisz nie więcej niż minimum dla rentowności rynku. W tym momencie nic więcej niż to, co najważniejsze, nie jest priorytetem.
Przemyślane rozwiązania i prezentacja
Jeśli chodzi o wstępnie przemyślane rozwiązanie, moje byłyby dodatkowe zasoby. Jeśli ci nie uwierzą, i tak wszystko jest martwe (zakładając, że masz rację). Oprogramowanie się zatankuje, a skojarzenie cię spali: szukaj nowej pracy, zaczynając teraz. Ale jeśli po twojej prezentacji ci uwierzą, martwią się lub oczekują, że ty to naprawisz, przyniesie to twoją korzyść.
Ponieważ potrzebujesz zespołu . Powiedz coś takiego:
„Przepraszam, ale 1,5 G takiego kodu, bez podstaw i dokumentacji, zajmie około roku zrozumienie, może 5 lat, aby naprawić. Może przepisanie zajmie będą potrzebne i możemy zapisać to, co można ponownie wykorzystać, może tylko części GUI, podstawowe koncepcje przepływu danych, aby nie odkrywać na nowo koła, a następnie przerobić zaplecze i wszystko inne. ”
„ moim zdaniem pierwszym priorytetem jest ocena. Widzę, że jest źle, ale jak bardzo i jakie jest minimum, aby można było bezpiecznie rozpocząć produkcję? ” [odzwierciedla ich najwyższe obawy]
„Jak widzę, musimy wiedzieć, że w ciągu 4 do 6 tygodni - powiedziałbym, że 3 tygodnie, ale to główny zadanie samo w sobie i wymaga przeglądu linia po linii. Od 4 do 6 tygodni z zespołem 3-osobowym, a dowiemy się, jak duże są szkody ”. [Jeśli nie możesz lub jest zbyt duży, zastąp to, co jest rozsądne]
„W takim razie musimy to naprawić. Mogę zapalić świece, zastanawiając się, co zrobić , ale potrzebuję rąk na klawiaturach. Od 4 do 6 z nich, do 6 miesięcy ”.
[W razie potrzeby dodaj: „I potrzebuję do tego kompetentnego nr 2. Nie mogę przejrzeć wszystkiego, co włożyli, jedną ręką, jeśli również poruszam się po problemach i poprawkach. " ]
„To uciążliwe, że jest tak dotkliwy, ale tak właśnie jest i musimy najpierw wykopać się z dziury, a później wnieść winy i sporu sądowego. W tym celu daj mi na razie dwie osoby i budżet na kolejne 2 lub 4 za około 4-6 tygodni i zrobię to dobrze. Albo przynajmniej w minimalnym stopniu wykonalne ”. [Ponownie, jeśli nie możesz lub jest to zbyt duże, zastąp to, co jest rozsądne]
„Możesz również zapytać [nazwa kontaktu, który znają, kto jest dyrektor w jakiejś odpowiedniej firmie informatycznej], aby wysłać kogoś na jeden dzień, aby dokładnie sprawdzić mój początkowy widok, podejście i harmonogram, zanim ustalę budżet. To będzie dobre, a także uspokajające. Ale jeśli to się sprawdzi - i to będzie - wtedy musimy działać szybko, a jedyną rzeczą, która pozwoli nam zaoszczędzić czas na wprowadzanie na rynek, jest szybkie i intensywne wykorzystanie zasobów. ”
„ Moim zdaniem byłoby to rozsądne rozwiązanie . Nie możemy go wykorzystać w obecnym stanie i więcej tracimy na opóźnieniach i uszkodzeniach, niż oszczędzamy płacąc za wykonawców lub odciągając pracowników od innych prac. ”
„ Przepraszam, że przyniosę złe wieści. Dobra wiadomość jest taka, że możemy wykopać się z dziury. ”
„ Pytania? ”