Momencik, trwa przetwarzanie danych   loading-animation

piekielni.pl

Pokaż menu
Szukaj

Jestem programistą i jakieś sześć miesięcy temu zacząłem pracować w pewnym software…

Jestem programistą i jakieś sześć miesięcy temu zacząłem pracować w pewnym software housie. Dla niewtajemniczonych jest to firma, która na zlecenie kontrahentów tworzy różnego rodzaju oprogramowanie. Pierwszy miesiąc spędziłem z ekipą, która już praktycznie kończyła swój projekt i w tym czasie jedynie wdrażałem się i dowiadywałem jak ta firma w ogóle działa. Po tym okresie przydzielony zostałem do nowego projektu jako kierownik jednej z dwóch grup programistycznych. Nade mną stał tylko główny project manager.

Aplikacja z jaką przyszło mi się zmierzyć miała dwa moduły (stąd dwie grupy programistów), które w pewnych kwestiach komunikują się ze sobą. Natomiast estymowany czas zakończenia projektu to jakieś dwa - trzy lata.

Historia będzie dotyczyć zarządcy drugiej grupy, dla porządku niech będzie Maciuś. Na samym początku projektu nie miałem z nim zbyt wiele do czynienia. Ogólnie działamy na takich zasadach, że komunikujemy się ze sobą w dwóch przypadkach. Gdy przychodzi potrzeba komunikacji pomiędzy systemami, omawiamy wtedy jak będzie wyglądało API (tłumacząc na ludzkie sposób komunikowania się dwóch rożnych systemów między sobą). Oraz podczas comiesięcznych spotkań z głównym project managerem.

Po pierwszym spotkaniu nie miałbym Maciusiowi nic do zarzucenia. Ot facet po czterdziestce, taki trochę śmieszek, kucharz z zamiłowania. Na tym właśnie spotkaniu otrzymaliśmy od project managera wstępne założenia do naszych aplikacji. Niestety firma nie była w stanie wyłożyć od razu pełnych wymagań, więc byliśmy zmuszeni budować aplikację modularną (stąd też taka rozbieżność w estymacji czasu pracy nad całą aplikacją).

Pierwszy miesiąc prac nad projektem przeleciał dość spokojnie. Pierwsze dwa dni spędziliśmy nad ogarnianiem założeń i wybraniem odpowiedniego środowiska i strategii. Dalej ekipa zajęła się stawianiem środowiska a ja w tym czasie zgłębiałem założenia i spisywałem zadania do wykonania na kolejne 2 miesiące. Na początku drugiego tygodnia zaakceptowałem środowisko i zaczęliśmy pracę.

Dlaczego to opisuję? Ano dlatego, że na pierwszym comiesięcznym spotkaniu spotkaniu okazało się, że grupa Maciusia ma gotowe około 30% ze wstępnych założeń a moja niecałe 15%. Śmieszków od strony Maciusia nie było końca... "Łuki (imię zmienione) co wy tam robicie? Kawkę cały czas pijecie?", "Jak tak dalej pójdzie to moja ekipa pół projektu w chill roomie przesiedzi czekając na was.", "Oddam ci dwóch swoich, może wtedy będą równe szanse.". Już tutaj zapaliła mi się lampka ostrzegawcza. Znacie to, szybko ale ujowo, albo wolno i porządnie?

Po tym spotkaniu zostałem na rozmowie z project managerem. Ten kazał mi po prostu działać dalej. Ogólnie koleś konkretny, ale istny milczek.

Dalsze problemy nadeszły gdy pojawiła się pierwsza potrzeba zintegrowania dwóch systemów. Gdy wiedziałem w planach, że coś takiego będzie potrzebne, pisałem do Maciusia mail z tygodniowym wyprzedzeniem, że będziemy potrzebowali to, to i to. Zwykle odpowiedź dostawałem po kilku dniach i brzmiała ona zawsze tak samo: "Nie wyrobimy się, dajcie nam jeszcze X dni", Gdzie ostatecznie X zwykle okazywało się X + Y. Natomiast z jego strony wyglądało to tak: "Na jutro potrzebujemy to, to, to i to". Na odpowiedź, że nie ma szans zwykle dostawałem mail typu: "Łuki kurde wstrzymujecie nas...". I tutaj informacyjnie, przygotowanie takiego API, nawet ze sztucznymi danymi, gdy nie mamy danego modułu skończonego, to około dwa, trzy dni pracy.

Na drugim comiesięcznym spotkaniu Maciuś nie omieszkał naskarżyć, że stopuję ich pracę. Tutaj obyło się bez śmieszków, gdyż Maciuś nie był do końca świadomy, że PM widzi całą naszą korespondencję (nie wiem czy wspomniałem, ale Maciuś też jest nowym pracownikiem). Na tym spotkaniu zapadła decyzja o przeprowadzeniu tak zwanego code review, czyli sprawdzeniu kodu pod kątem poprawności i dobrych praktyk. W tym przypadku obie grupy miały sprawdzić swój kod nawzajem, ale nieoficjalnie dowiedziałem się, że sprawdzi go też dwóch niezwiązanych z projektem programistów. Na ten moment druga grupa wyprzedzała nas mając 80% gotowych założeń, gdy my mieliśmy 55%. Kolejne założenia miały dojść za dwa miesiące, czyli grupa Maciusia mogłaby spędzić ponad miesiąc na nic nierobieniu.

Kod drugiej ekipy do przeglądu mieliśmy dostać dwa tygodnie od w/w spotkania. W tym czasie dostawałem od PMa informacje o skargach na mnie od Maćka, które dementowałem jednym mailem. A Maciuś miotał się z lewa na prawo próbując udowodnić mi, że API, które wystawiła moja drużyna nie działa. Oczywiście nie był w stanie nic ugrać, bo kod działał tak jak opisał, że ma działać.

I nadszedł dzień gdy dostaliśmy kod Maciusia do przejrzenia. I tu nastaje trudny moment tej historii, gdyż muszę się postarać by wyjaśnić jaki dramat wtedy ujrzałem. Po pierwsze od czasu gdy dowiedzieliśmy się o code review moja grupa zdołała dotrzeć do 65% założeń a grupa Maćka stanęła na 80%. I to jest najbardziej piekielne, wiedział, że piszą totalne bagno i postarał się zredagować kod dopiero gdy nastało widmo jego sprawdzenia. Ale co dadzą dwa tygodnie poprawek do dwóch miesięcy pisania kodu? Ano dały jeszcze większe bagno... I na prawdę nie wiem jak wam to opisać. Kod wyglądał jakby kilkunastu malarzy z kilku odrębnych epok spotkało się i postanowiło namalować razem obraz. Istny miszmasz bez ładu i składu. Bez jakiejkolwiek szansy na rozbudowę. A przypominam, że kolejne założenia mieliśmy dopiero dostać.

W efekcie Maciuś został zwolniony. Ja na miesiąc zostałem kierownikiem dwóch grup, a teraz z nowym kierownikiem nowej grupy staramy się ogarnąć projekt tak aby go dostarczyć bez opóźnień. Niby mamy ponad dwa lata, ale druga aplikacja jest do wywalenia. Aktualnie staramy się ją zaprojektować od nowa.

by Satsu
Zobacz następny
Dodaj nowy komentarz
avatar Lostsoul
11 13

Ja mam parę pytań, Po pierwsze grupa Maciusia tak pracowała nad tym bagnem i mimo że Maciuś był nowy nikt z jego grupy się nie poskarżył? Nie miał żadnych wątpliwości? Nawet jeśli to byliby sami juniorzy (w co wątpię?) to powinni zauważyć. Po 2 jeśli Maciuś wiedział co robi to znaczy ze nie poniósł by żadnych konsekwencji gdyby ludzie z góry, po roku straconego czasu zorientowali się, że on odwala fuszerkę?

Odpowiedz
avatar Satsu
9 11

@Lostsoul: Przy tak dużych projektach programista patrzy tylko na kod, który dotyczy tasku jaki otrzymał i próbuje go dowieźć do końca sprintu. A nawet jeśli ktoś źle wyliczył czas pracy nad danym zadaniem i skończył je 5 dni wcześniej to nie traci czasu na przeglądanie kodu tylko informuje, że skończył i jest przydzielany do kogoś kto z jakiś względów ma opóźnienie. Ogarnianiem całości kodu, akceptowaniem kolejnych modułów i tak dalej, zajmowałem się ja i Maciuś i tylko my wiedzieliśmy jak wygląda ten kod jako całość. I nie mówię, że chłopaki z drużyny Maciusia pisali zły kod. Po prostu sam zamysł aplikacji i to jak te moduły były ze sobą złączone to była istna katastrofa. Jeśli chodzi o po drugie, nie wiem czy dobrze zrozumiałem. Jednak z tego co wiem Maciuś na rozmowie z PMem żalił się, że nie wie o co mu chodzi i że on zawsze w taki sposób programuje i nikt nigdy nie miał pretensji. Nie mam pojęcia gdzie wcześniej pracował, ale na prawdę współczuje tym firmom, bo kod jaki stworzył to istny węzeł gordyjski. Już na tak wczesnym etapie ciężko było się połapać co jest z czym powiązane. Dlaczego go przyjęli? To bardzo proste, miał duże doświadczenie wpisane w papiery. Jeśli chodzi o branżę programistyczną to w przypadku seniorów, którzy mają za sobą pracę w więcej niż czterech firmach nie sprawdza się na rozmowie jego kodu, tylko wybiera się tego, który zna jak najwięcej technologii jakie będą używane w danym projekcie.

Odpowiedz
avatar bazienka
0 6

@Satsu: "naprawdę", razem w odróżnieniu od "na pewno"

Odpowiedz
avatar Satsu
0 4

@bazienka: Wiem bazienka wiem... Człowiek, który się nie myli nie żyje. Proponuję ci trochę pożyć i dziękuję za wyczerpujący komentarz :)

Odpowiedz
avatar Lostsoul
4 4

@Satsu: Ok dzięki za odpowiedź :) Pytałam głównie z ciekawości, ale też dziwnie było dla mnie że może po prostu do takiej sytuacji dojść. Ale teraz wszystko ma sens :D

Odpowiedz
avatar decPL
1 3

@Satsu: > Przy tak dużych projektach programista patrzy tylko na kod, który dotyczy tasku jaki otrzymał i próbuje go dowieźć do końca sprintu. Troszkę nie mogę się zgodzić, bo jednak peer review kodu (dla czytelników spoza naszego świadka - sprawdzenie kodu przez kolegę z zespołu na przykład) istnieje. Jeśli u Was akurat nie jest stosowany (polecam pod rozwagę) to nie tyle "przy tak dużych projektach" ile "w specyfice naszej pracy"...

Odpowiedz
avatar Koralik
1 3

@decPL: Zgadzam się. Code review robiony przez kogoś z zespołu przed dorzuceniem zmian do całej reszty to podstawa.

Odpowiedz
avatar Satsu
1 1

@decPL: Nie no oczywiście chłopaki sprawdzają swój kod, ale to i tak nie daje pełnego wglądu w to jak wygląda pełen kod aplikacji. Pominąłem ten fakt w opisie, gdyż według mnie to norma, od której nie można odejść. W przypadku mniejszych projektów rzeczywiście można poznać cały projekt, ale nie w przypadku gdy nad kodem pracuje 20 osób (a mówię tutaj tylko o pierwszej grupie). Tym bardziej, że podzieleni są oni na mniejsze grupy zajmujące się różnymi częściami systemu. Dlatego osoba z grupy X na 90% nie zobaczy na oczy kodu z grupy Y. Nie lubię pracować w takiej metodyce, ale patrząc na specyfikę systemu, jego rozmiar jak i brak pełnych założeń na starcie był to najlogiczniejszy wybór.

Odpowiedz

Zmodyfikowano 2 razy. Ostatnia modyfikacja: 14 grudnia 2020 o 10:59

avatar Vivelee
0 2

@Satsu: Serio? Jesteś niby programistą, przeżywasz kilka razy dziennie code review i w taki sposób reagujesz na zwrócenie uwagi? "proponuję Ci trochę pożyć". Nie, popraw swój błąd, napisz samo dzięki bez bzdur i na przyszłość staraj się być lepszy. Taka jest idea code review, które Ci @bazienka właśnie zrobiła, tylko nie code a plaintext :P

Odpowiedz
avatar big_zygi
-1 1

chciałbym mieć możliwość chociaż przez 1-2 dni zobaczyć jak wygląda taka praca przy "kodzie". To co tworzę, robię tylko na użytek własny, bardzo mnie ciekawi sposób i zasada działania w takim "zespole".

Odpowiedz
avatar Lostsoul
0 0

@big_zygi: Poczytaj sobie o metodologii Agile, albo konkretniej o Scrum. Dużo większych (i małych w sumie może też) firm używa takiej metody działania :D

Odpowiedz
Udostępnij