Jak mogę zmienić niechlujną kulturę firmy? [Zamknięte]

28

Czasami, gdy mam problem, który należy rozwiązać, okazuje się, że najprostszym sposobem na jego rozwiązanie jest napisanie małego programu jako osobistego narzędzia. Nie sprawiam, że jest super użyteczny ani super solidny, ponieważ jestem jedynym, który będzie go używał i nie mam czasu, aby go udoskonalać i dokładnie testować.

Następnie współpracownik widzi program i prosi o niego, ponieważ napotkał ten sam problem i narzędzie może pomóc. Daję mu zastrzeżenie „To nie jest ładne, ale wykona zadanie” i daję mu to.

Następnie wiem, że mój przełożony dzwoni do mnie, mówiąc mi, że próbuje zmusić oprogramowanie do pracy na komputerze klienta, ale wyświetla komunikat o błędzie X. WTF ?? To oprogramowanie nie jest gotowe do wydania, ani nie powiedziano mi, że musi być gotowe do wydania. Ale z jakiegoś powodu mój przełożony uznał, że jest wystarczająco dobry i wypuścił go bez informowania pierwotnego dewelopera.

Teraz ten konkretny problem można łatwo naprawić za pomocą MessageBox.Show("DO NOT GIVE TO CLIENTS!");. Problem wskazuje jednak na znacznie głębszy problem: kultura naszej firmy jest niechlujna. Oprogramowanie niechlujstwa jest w porządku, a procesy niechlujstwa są w porządku. Nie martw się o przyszłość - włóż wystarczająco dużo wysiłku, aby ledwo działała, umieść pliki binarne w pliku .zip i wyślij. Wystarczająco dobry do prac rządowych.

To mała firma z 10 pełnoetatowymi pracownikami, rozwija się i istnieje już od dłuższego czasu. Nie zrozum mnie źle; Uwielbiam tu pracować i kocham firmę. Nie każ mi biec; Chcę być częścią ulepszania firmy. Jak zacząć wprowadzać dobre zmiany w tego rodzaju kulturze?

Phil
źródło
8
Stare rosyjskie powiedzenie „Ryba śmierdzi z głowy!”!
3
Pewnego razu możesz zagwarantować, że proces zostanie wdrożony po poważnym nalocie. Częścią tego błędu będzie to, że klienci będą wymagać przeglądu procesów, aby upewnić się, że to się więcej nie powtórzy. Kiedy kierownictwo dowie się, że takie rzeczy się zdarzają, wkrótce znajdziesz nowy błyszczący proces. Może uda ci się stworzyć koguta. ŻART! Proszę, nie bierz poważnie :)
Paul T Davies,
Wydaje mi się, że powinien to być test (jednostka lub integracja) zamiast aplikacji ....
devlife,
2
Nie chcę cię obrażać, ale czy sam przyczyniasz się do niedbałej kultury? Jeśli mówisz o problemie, którego doświadczają zarówno klienci, jak i członkowie zespołu, być może nieszablonowe narzędzie, które tylko Ty masz, nie jest najmniej niechlujnym rozwiązaniem.
Dan Olson,
@ DanOlson Masz absolutną rację, ale w tamtym czasie nie wiedziałem, że klienci będą go potrzebować. Gdybym tak zrobił, zamieniłbym to w pełnowymiarowy projekt oprogramowania.
Phil

Odpowiedzi:

20

Jedynym sposobem na zmianę jest sprawienie, aby wszyscy inni zobaczyli wady niechlujnej kultury i, co ważniejsze, mieć możliwość zakupu przez zarząd, aby to naprawić. W rzeczywistości tak się jednak nie dzieje i nie będzie można tego zmienić. To może nie być odpowiedź, której spodziewałeś się usłyszeć, ale po około pięciu latach próbowania i nieudanej pracy na kilku stanowiskach, aby zmienić niechlujną kulturę, mogę z pewnym autorytetem powiedzieć, że zwykle nie warto tego robić.

Pierwszym krokiem byłoby ustalenie, czy ktokolwiek wie o zaniedbanej kulturze lub dba o nią; jeśli jesteś jedyną osobą, która widzi jakiekolwiek problemy, twoje wysiłki są daremne.

Wayne Molina
źródło
+1 za otrzymanie wpisowego od kierownictwa. Uważam, że bez wyższego autorytetu, który dawałby sobie radę i wywierał presję na coś do zrobienia, większość ludzi nie byłaby skłonna się zmienić i trzymać się tego, co jest obecnie zobowiązana.
dreza
+1 z tego samego powodu, co @dreza. Ale powodzenia z zarządzaniem wkupić.
talonx
8

Być może będziesz musiał usiąść ze współpracownikiem i szefem i wyjaśnić, że posiadasz prototyp i nie byłeś gotowy do użycia przez klientów. Jeśli chcieli, aby był gotowy do użycia przez klientów, możesz wprowadzić te zmiany, mając wystarczająco dużo czasu, ale nie zabieraj „szybkich i brudnych” rzeczy i przekaż je klientom. To, że coś działa, nie sprawia, że ​​lekcja jest dobra. Chociaż złożyłeś zrzeczenie się odpowiedzialności, można powiedzieć coś o szacunku, ponieważ w przeciwnym razie może się to zdarzyć.

JB King
źródło
5
Jako PO chciałbym znaleźć wyjaśnienie, dlaczego zostało to odrzucone.
Phil
4
nie wspominając o tym, że szybkie i brudne rzeczy mogą nadal zawierać istotne informacje, które nigdy nie powinny opuszczać budynku (na przykład hasła do testów)
ratchet maniak
3

Nie możesz naprawić głupka. Jeśli twój szef robi rzeczy, które opisujesz, jest to mało prawdopodobne, będziesz w stanie to zmienić. Zwłaszcza jeśli nie jest właścicielem - pamiętaj, że wywiera presję z innego kierunku, a ten kierunek podpisuje jego czek płacowy. To samo z pozostałymi współpracownikami. Najlepszym pierwszym działaniem, jakie możesz podjąć, jest nawyk ochrony siebie. Użyj takich technik, jak opisywane okno komunikatu. Zachowaj wszystkie e-maile. Zdobądź jak najwięcej w formie pisemnej. W ten sposób nie bierzesz na siebie siły, gdy uderza głupota. Następnie, w miarę awansowania, wprowadzaj zmiany, które chcesz, pod tymi pod nadzorem.

Grandmaster B.
źródło
O ile się zgadzam, w końcu jest to smutna strategia. Kto chce pracować w takim środowisku? Taka kultura po cichu zabije kreatywność. Staraj się być jak najlepiej , a nie najbardziej opiekuńczy. Jeśli kultura już nie pasuje, przejdź dalej.
JensG,
2

Któregoś dnia kolega opowiedział mi historię o prostym narzędziu testowym, które pozwala inżynierowi w laboratorium wydać jedno polecenie widżetowi i zmienić zmienną odpowiadającą poleceniu. Zostało to napisane 9 lat temu, a ostatnio wiedział, że jest nadal w użyciu. Narzędzie, które zostało napisane w ciągu kilku godzin przy minimalnych testach, aby udowodnić w laboratorium, że coś działa, było podstawą całego narzędzia do testowania laboratoryjnego. Po napisaniu kod istnieje. Jeśli robi coś pożytecznego i jest widziane przez innych ludzi, ludzie będą tego chcieli. Jeśli jest dobry w tym, co robi, ludzie będą prosić go o wykonanie X. Następnie wiesz, że twoje proste narzędzie jest ważnym elementem.

Myślę, że na pierwszym etapie spoczywa obowiązek twórcy oprogramowania, aby upewnić się, że każdy, kto patrzy na kod lub korzysta z narzędzia, rozumie, że jest to prototyp, a nie system produkcyjny, i mówi, dlaczego tak jest. Wygląda na to, że to zrobiłeś, jednak twoi współpracownicy zaniedbali wypełniania tej odpowiedzialności. Aby rozwiązać ten problem, polecam z nimi porozmawiać, powtarzając, że nie był to kod produkcyjny i został napisany wyłącznie w celu ułatwienia pracy. Jeśli uznają to za przydatne, być może zaoferują pracę nad narzędziem lub wsparcie innych osób pracujących nad narzędziem w celu ulepszenia go i uczynienia go bardziej odpowiednim do produkcji.

Jeśli chodzi o proces organizacyjny lub zmianę kultury, spodziewaj się, że zajmie to trochę czasu. Zacznij od podania przykładu. Jeśli nie czytałeś The Pragmatic Programmer , zrób to. Zwróć uwagę na takie wskazówki, jak Dbaj o swoje rzemiosło, Bądź katalizatorem zmian (pokaż ludziom lepsze sposoby), Nie żyj ze zepsutymi oknami, Napraw problem, a nie winę. Wygląda na to, że rozpoznajesz niektóre problemy omówione w tych wskazówkach, więc zacznij pracować i dawać przykład swoim kolegom.

Thomas Owens
źródło
Całkowicie się z tobą zgadzam. Mój pomysł jest taki, że kiedy piszesz kod, piszesz tak dobrze, jak potrafisz, zwykle wymaga to tego samego czasu, aby napisać zły kod. Jakość to coś, czego nie można uzyskać w trakcie realizacji projektu.
Andrea Girardi
1

Dopóki decydenci nie będą już ponosić konsekwencji złego kodu i będą gotowi zapłacić / zmienić swoje sposoby rozwiązania problemu.

To trudne decyzje dla małych i rozwijających się firm. Nie wiedzą, gdzie wkładać wszystkie swoje wysiłki. Istnieje ryzyko, że kod będzie zbyt niezawodny, gdy reguły biznesowe, a czasem całe linie biznesowe pojawią się, zmienią i znikną z dnia na dzień.

Staraj się pisać dobry kod. Pamiętaj, aby poinformować wszystkich o konsekwencjach, aby mogli oni podejmować świadome decyzje. Jeśli niepoprawny kod zostanie wprowadzony do produkcji, uważnie go obserwuj, jeśli to możliwe, i nadal sugeruj ulepszenie, szczególnie jeśli ta część firmy stanie się krytyczna.

Zmuszanie ludzi do czekania na kod, który widzisz jako minimalnie wykonalny, wydaje się przekraczać obecne oczekiwania.

JeffO
źródło
+1 za „Zmuszanie ludzi do czekania na to, co widzisz jako minimalnie wykonalny kod, wydaje się przekraczać ich obecne oczekiwania”. Niestety prawda.
Phil
@Phil - i większość z nich po prostu nie chce wdawać się w szczegóły. Czasami możesz kusić ich możliwością łatwego wprowadzania zmian w przyszłości, bezpieczeństwa lub obsługi większej liczby użytkowników.
JeffO
1

Zwracam uwagę, że część problemu polega na tym, że napisałeś szybkie i brudne narzędzie. To prawda, że ​​były dobre powody. To prawda, że ​​to zadziałało. Ale odkryłem, że wszystko , co rozwiązuje problem, wpadnie w pułapkę „wystarczająco dobrego” rozwiązania, jeśli zaczniesz go mdleć.

Jeśli twój facet tego chce, albo uprzejmie powiedz mu, że nie jest w pełni funkcjonalny, a ty trzymasz klucze. Od czasu do czasu możesz dla niego uruchomić. Lub dodaj dodatkową funkcjonalność, najlepiej od początku projektu.

Wszystkie moje szybkie i brudne narzędzia w tym momencie pochodzą z mocno przetestowanego pliku szkieletu. Pozwala mi szybko rozpocząć pracę, zapewnia mi działający punkt wyjścia i pozwala zapomnieć o dodaniu wszystkich niezbędnych tępych krawędzi. Nie muszę się martwić biblioteką getopts i jej dziwactwami. Nie muszę pamiętać szczegółów dotyczących zarządzania pamięcią podczas korzystania z Pythona. Zbuduj program, aby wykonywał jedno proste zadanie i tylko jedno . Ułatwia to sprawdzenie, czy próbują go zgiąć z kształtu.

Wreszcie skorzystaj ze skończonej architektury automatu stanów. Jeśli znasz przejście we wszystkich możliwych stanach, o wiele łatwiej jest upewnić się, że bez względu na wszystko użytkownik nigdy nie będzie mógł przeskakiwać ścieżek. Mam program, który napisałem, aby stosować się do tego paradygmatu. Akceptuje dowolne pliki wejściowe, które odczytuje bajt po bajcie. Nawet gdyby klient kazał mu odczytać plik binarny, nie miałby żadnych problemów. Ponieważ nie znalazłby żadnej rzeczy, której szuka, wewnętrzny bufor wypełniłby się. To spowodowałoby, że z wdziękiem posprząta, zamknie i poinformuje użytkownika, że ​​potrzebuje mnie, aby na to spojrzeć.

Spencer Rathbun
źródło
0

Cóż, odpowiedź nie ma wiele wspólnego z programowaniem, z wyjątkiem tego, że oprogramowanie jest dobrem, w którym trudno jest łatwo ocenić jakość.

Możesz nie być w stanie zmienić kultury, ponieważ ludzie mogą nie mieć prawdziwego motywu, aby nie być niechlujnym, ponieważ ludzie dotknięci jakością oprogramowania nie mają wiele wspólnego z tym procesem. Na przykład Twoi klienci mogą być zobowiązani do zakupu i używania oprogramowania do wykonywania swoich zadań, ale mają niewielki osobisty udział w skuteczności tego oprogramowania, ponieważ nie zostaną osobiście obwinieni za problemy lub wynagrodzeni za jego zalety (w dużej mierze ponieważ nikt tak naprawdę nie wie, czy konkurencyjne oprogramowanie byłoby lepsze). Być może będziesz musiał tylko spełnić ich prośby o funkcje, nie zajmując zbyt długo, ale nie musisz się zbytnio martwić, czy jest to wadliwe. Możesz więc być dość niechlujny bez konsekwencji (dla każdego, kto podejmie decyzje, które cię dotyczą).

Nie wiem, czy coś takiego jest w tym przypadku, ale jeśli tak, to może być ci ciężko zmienić kulturę, ponieważ ludzie, których próbujesz zmienić, nie będą lepiej, jeśli tak zrobią.

Jeśli będzie im lepiej, możesz mieć na to łatwiejszy czas, ponieważ możesz potencjalnie przekonać ich, dlaczego tak będzie. Niestety, gdyby nie istniała jakaś sytuacja polityczna, która sprawia, że ​​niechlujstwo jest OK, prawdopodobnie nie byłyby niechlujne, więc prawdopodobnie będzie ciężko. Zawsze możesz wypróbować argument „pewnego dnia możesz mieć pracę, która wymaga robienia rzeczy we właściwy sposób” (być może bardziej dyplomatycznie…)

psr
źródło