Szukam porady, jak poradzić sobie z okazją o wysokim ryzyku.
Mój pracodawca musiał ostatnio zwolnić z powodu zmiany podstawowych technologii używanych w jego produktach (np. przejście z C na C ++ , migracja z CVS do GIT itp.). Z jakiegoś głupiego powodu nalegali, aby większość deweloperów otrzymała tylko 3 miesiące wypowiedzenia, ale w rzeczywistości musieliby nad tym popracować, zamiast otrzymywać 3 miesiące wypłaty. Jeden ze starszych pracowników, który został zwolniony, dostał niezłą wypłatę za 5 miesięcy, podczas gdy reszta z nas musi pracować w pracy, której teraz nienawidzimy, a niektórzy z moich współpracowników muszą szkolić niedopłacane zastępstwa.
Tak więc, wszyscy są mniej niż przychylni, przekraczając werbalne bariery językowe itp. Jestem jednak w bardzo wyjątkowej sytuacji. Pracuję jeszcze około 6 tygodni, zanim będę musiał oddać swoją kartę i szukam nowej pracy. Ze względu na tandetną politykę IT wszyscy programiści mają dostęp do tego samego hasła głównego do naszych serwerów danych i wersjonowania. Jedna osoba z działu IT (na szczęście nie ja) zdecydowała się zrobić coś bardzo podłego: zmigrował repozytorium CVS z całym naszym kodem do GIT, ale tylko z wersją HEAD i nie ma kopii danych serwera ze starego CVS, które można by znaleźć serwer.
Kod kompiluje się dobrze z nowym serwerem GIT, więc pomyśleliśmy, że wszystko jest w porządku. Źle! Sprawdziliśmy najnowszą kopię kluczowego fragmentu kodu (40 000 wierszy), od którego zależą nasze produkty. Ktoś (nie możemy określić kogo, ponieważ wydaje się, że dzienniki dzierżawy DHCP i „ostatnie” dzienniki SSH nie sięgają wystarczająco daleko wstecz, konto użytkownika „admin” służyło do tego) i ktoś przepuścił to przez parser, który:
- Usunięto WSZYSTKIE komentarze (są to kluczowe, ponieważ mamy ogromne tabele przeglądowe wartości rejestrów i pól bitowych).
- Usunięto wszystkie wcięcia.
- Zamieniono wszystko literały liczb całkowitych, więc są dziesiętne, a nie szesnastkowe, więc wartości pól bitowych nie są widoczne.
- Zmieniono nazwy wszystkich funkcji na bezużyteczne, nieopisowe nazwy.
Przykład wyglądałoby następująco:
Stary kod
#include <iostream.h>main () {initDevice (); int i = 0x8001; // Ustaw MSB i LSB, aby włączyć tryb diagnostyczny w starszych modelach. cout << "Hello World!"; shutdownDevice (); return 0;}
Nowy kod
#include <iostream.h>main () {foo_0001 (); int i = 32769; cout << "Witaj świecie! "; foo_0082 (); return 0;}
Pamiętaj, że zostało to zrobione dla około 40 000 linii kodu w setkach plików.
Nikt tego nie zauważył, ponieważ automatyczne prace budowlane po prostu działały dobrze. Teraz, gdy trzeba coś zmienić, jesteśmy prawie nad strumieniem bez wiosła. Ja i kilku innych programistów znamy dużo tego kodu, ponieważ go napisałem, ale naprawienie tego bałaganu, aby był przynajmniej użyteczny do tego stopnia, że możemy go ulepszyć, wspierać nowe produkty byłoby wielkim przedsięwzięciem , itp. Kierownictwo jest wściekłe, a jeden z menedżerów oprogramowania dosłownie rzucił różnymi rzeczami po swoim biurze z wściekłością, gdy dowiedział się, że nie można znaleźć kopii zapasowych. Mają kopie zapasowe oparte na czasie, ale wygląda na to, że ta zmiana nastąpiła kilka tygodni temu, więc najstarszą kopią zapasową jest również ten kod śmieciowy.
Około pół roku temu wykonywałem pracę zdalną z domu. Firma zachęca nas do poświęcenia dodatkowego czasu przez VPN, ale nie liczy się to jako „czas pracy”. Jest to w zasadzie sposób na darmowe dodatkowe zajęcie po godzinie 17:00. Nie ma zasad zakazujących używania osobistych zasobów komputerowych do wykonywania pracy. Mam kopię kodu źródłowego sprzed SNAFU.
Środowisko pracy nie jest świetne, ale płaci DUŻO więcej niż to, co zrobiłbym gdzie indziej. Kiedy odpuszczę mnie za 6 tygodni, spłacanie kredytu i utrzymanie rodziny będzie bolało, ale przeżyjemy. Czy jest jakiś sposób, żebym mógł to wykorzystać? Przemyślałem następujące scenariusze i potrzebuję porady, którą trasę wybrać. Pamiętaj, że jestem w 100% szczery, kiedy stwierdzam, że NIE byłem osobą, która sabotowała bazę kodu:
- Powiedz właścicielom, że mam zapasową kopię kodu.
- Może pozwolili mi zachować pracę, są szanse, że nie.
- Naprawdę nie mogę żądać, żeby przygotowali dla mnie nową ofertę pracy, ponieważ cuchnie szantażem / wymuszeniem, a oni prawdopodobnie mógłby pozwać mnie do sądu. Mogą nawet pomyśleć, że sam zaprojektowałem sabotaż.
- Bardzo wysokie ryzyko, minimalna nagroda.
- Powiedz właścicielom, że pracowałem nad projektem tak pilnie, co zrobiłem, że większość z nich zapamiętałem, ale całkowite odtworzenie zajęłoby mi prawdopodobnie 2 lata.
- Najbezpieczniejsza opcja, jaką przychodzi mi do głowy.
- Właściwie mam około 70% z tych rzeczy zobowiązanych do głowy lub wiem, jak rozwiązać większość z nich w około 6 miesięcy.
- Pomaga mi jeszcze przez jakiś czas opłacać rachunki.
- Powiedz im to samo co powyżej i że mogę to naprawić, ale jako zewnętrzny wykonawca musielibyśmy wynegocjować lepszą stawkę wynagrodzenia (3x aktualna stawka).
- Jedynym problemem w porównaniu z powyższym jest to, że może sprawić, że pomyślą, że jestem sabotażystą. Nie jest to coś, o czym chcę, żeby pomyśleli.
- Zostaw tę sytuację w spokoju i rozstaj się za 6 tygodni.
- Oczywiście najbezpieczniejszy wybór.
Nie czuję, że mam obowiązek nieodpłatnie przekazać kod firmie jako wolontariusz. Nie jestem wsparciem IT i nie odpowiadam za to, że nie wiedzą, jak wykonać testy kopii zapasowej. Nie jestem też szczęśliwy, że muszę pomagać w szkoleniu ludzi, którzy zastąpią mnie i moich przyjaciół. Chcę skorzystać z tej sytuacji, więc nie sięgam po swoje oszczędności, żeby spłacić kredyt hipoteczny, gdy szukam pracy, i nie chcę, aby właściciele podejrzewali, że to spowodowałem i idą po mnie z prawnikami, spalając moje oszczędności jeszcze szybciej.
Czy są jakieś legalne drogi, które pozwolą mi wyjść z tej całkowitej katastrofy?
Aktualizacja
Okazuje się, że się pomyliłem. Nigdy nie miałem kopii kodu.
Krzyczący menedżer został zwolniony, więc przynajmniej trochę z tego wyszło.
Wszyscy z nas na wezwanie zostali wezwani do sali konferencyjnej z dyrektorem technicznym i szefem zespołu prawników, a oni przedstawili całą historię, którą właśnie opisałem, i używając jasnych słów, powiedzieli „wy, mały pasożytniczy kurwa, jedzący **** waciki ... wiemy, że to była jedna z you "i zażądał od nas wszystkich podpisania pisemnej umowy stwierdzającej, że nie mamy udziału w całej sprawie, z klauzulą prawniczą na dole, która daje im prawo do sprawdzenia naszej osobistej poczty e-mail, aby to potwierdzić.
Jeden ze starszych programistów powiedział wszystkim, aby niczego nie podpisywali, ponieważ nie ma możliwości, aby to przyniosło nam korzyści. Nikt nic nie podpisał.
Po prostu będę trzymać się z daleka od tego i przez następne 6 tygodni jechać z uśmiechem na twarzy. Przepraszamy za wiele kont, próbuję chronić moją prywatność.
I nie, Jake / Jacob nie jest moim prawdziwym imieniem.
Ostatnia aktualizacja
Po pierwsze, oto „hello world” zaszyfrowane hasłem, które używane na kilku ostatnich jednorazowych kontach e-mail. Prześlij go przez openssl enc -d -a -aes-256-cbc
z hasłem do mojego konta dla tego konta i dwóch poprzednich w celu sprawdzenia.
U2FsdGVkX1 / Q0Xq + Ium6X5BxoZ7ZhhpLtz7ltU + / WrM =
W każdym razie dzisiejszy dzień był szalony. Jakaś szalona osoba z zespołu znalazła ten wpis i udostępniła go zespołowi. Oczywiście tymczasowy menedżer oprogramowania musiał to zobaczyć. Cóż, ktoś wysłał e-mail do zarządu z żądaniem zapłaty za pośrednictwem bitcoin. Nie mam pojęcia, czy faktycznie mają kod, czy nie. Z tego, co wiemy, to troll posuwający się za daleko.
Dziękuję za rozsądną radę. Trzymanie się z daleka od tego. Wciąż jestem zdumiony, że nie tylko spłacili deweloperom i nie wysłali ich do pakowania, zamiast zmuszać grupę złośliwych programistów do przeszkolenia swoich zastępców.
Odpowiadając na jeden z komentarzy: tak, „zrzut pensji”. Programiści C również biegle posługują się C ++, razem z CVS, SVN, git, mercurial itp.
Tak, myślałem, że mam kopię kodu, ale się pomyliłem. To był osobny projekt, który nie został zmieniony, nie żeby to miało znaczenia. Zdecydowałem się dzisiaj rzucić palenie i po prostu wyczyszczę mój osobisty dysk twardy w domu. Problem rozwiązany.