Zmuszeni do pisania gównokodów

0

Jak często zdarza się w Waszej pracy, że gdy okazuje się, że estymacja była zbyt optymistyczna i nie zdążycie, managerzy naciskają by za wszelką cenę dowieźć produkt kosztem jakości kodu i architektury?
Problem opisany od 3:00 do 4:33

Jak reagujecie na to? Czy faktycznie dobrą radą jest by mieć w dupie terminy i odmówić pisania gówna tak jak radzi ten konsultant od 10:45 do 12:45

Czy w ogóle są takie firmy, które dbają o jakość kodu ponad terminy? Bo może podążając za taką radą to będziemy zmieniać pracę co pół roku?

1

Brąz jest wszędzie?

Gównokody w zasadzie w pracy są nonstop, nawet jeśli zespół ma więcej czasu, wystarczy tylko:

  • bazować na frameworkach
  • lub tworzyć firmowe frameworki (przestrzelone kody, które się na ogół nie zwracają)
  • lub zupełne przeciwieństwo i stosować bardzo sztywne rozwiązania, bez właściwych abstrakcji

to gownokody są murowane.

Czy gownokod jest problemem?

Zależy.

Jeśli program ma typowo proceduralny charakter i nie ma zbyt wyszukanej logiki to gownokod jest błogosławieństwem, przyspisza pracę i pozwala skupić się na tym co ma większe znaczenie. Dobra rzecz jeśli w kółko struga te same płytkie rozwiązania i jeśli musimy szyć rozwiązanie pod jest konkretny budżet.

Jeśli jednak program ma głębszą logikę i robi coś więcej niż reszta projektów to na ogół przewalone jest z gownokodami.

Ja mam definicję płytkiej i głębszej logiki. Płytka jest wtedy, gdy program mogę skończyć w półtora miesiąca i jeśli już wracam to wcelu naniesienia bardzo drobnych zmian. Natomiast głęboka to przeciwność, to program przy którym spędzę conajmniej pół roku jak nie więcej. Przy takich programach gownokody na dłuższą metę spowalniają mnie i źle działają na psychę, stan projektu.

Natomiast praca na czas, na szybko itp sprawia, że lecimy na frameworku, często jakieś meta rzeczy do tego frameworka wpinamy, i praktycznie rzadko wyprowadzamy sensowne abstrakcje. Czyli mamy taki all in one, co po prostu przyspiesza proces tworzenia spaghetti.

Jak z tym żyć?

Jako programista pisz wolniej (nie super sztywno, czy super defensywnie czy super abstrakcyjnie, po prostu wybalansuj) i po prostu sygnalizuj problemy. To nie ty nawaliłeś, to nie ty podejmujesz kluczowe decyzje, tylko ktoś kto planował prace, także relax i bądź po prostu komunikatywny. Ostatecznie nawet jak się przyłożysz, wyprujesz swoje flaki nad klawiaturą to ostatecznie to nie Ty rozwiązałeś problem i wielkich zasług się nie spodziewaj, kto inny takie rzeczy sobie przypisuje. Także u mnie sprawdza się mieć dystans, i patrzeć na wszystko jak duch, traktować życie w pracy jakby już dawno się umarło.

Dobry kod nie ma wartości w typowych firmach. Jak piszesz elegancko to ludzie i tak tego nie dostrzegają, albo inaczej, widzą, ale o kodzie, który rozwiązał problem po prostu szybko zapominamy. W firmach lepiej być strażakiem, zamiast koncentrować się na kodzie, ogarniaj cały kontekst, a w kodzie możesz robić bubole, a na koniec to Ty jesteś gwiazda, bo łączysz w głowie wszystie końce i wiesz jak udzielić innym pomocy. Jesteś wtedy widoczny, proaktywny, łatwiej zdobyć zaufanie firmy i awansować wyżej.

Jak czujesz, że masz potencjał pisać wielkie rzeczy - pisz, ale nie w firmach. W firmach nie chodzi o wielkie rzeczy. Chodzi po prostu o uzyskanie rozwiązań mniej gowniane od tych, które oferuje konkurencja. Najgorzej, gdy nie ma żadnej konkurencji (startupy) wtedy jest brawurowa i jazda po bandzie, co kto lubi, ale bez sensownych udziałów taka praca jest słaba.

Marginalne decyzje i zły rozkład sił

Wracając do ekstra kodów, to możesz pisać własne rzeczy, ba.. nawet możesz założyć własna firma itp, i tutaj dobra lekcją jest zrozumienie, że najlepsze języki i praktyki niestety nie służą pomnażaniu kasy. Nawet bycie spoko w kodzie nie pomaga, bo to jak specjalizacja, ale w jednym zakresie. To zły rozkład sił, by tworzyć z tego produkty (to tak jakbyś miał postać w RPG i wszystkie punkty wpakował np. w inteligencję) ostatecznie postać jaka powstanie będzie zbyt krucha, kosztowna i mocno uciążliwa, tak samo jest w przypadku prowadzenia firmy.

Kod w firmach optymalizuje jakiś proces przy uzyciu komputera i tyle, nie ma tu nic ponadto. To ile to jest wszystko warte w zasadzie zależy od procesu, od wymyślenia co program powinien robić. Programista w dużym stopniu podejmuje marginalne decyzje, myśli w kategoriach poprawności, a Ci lepsi w kategoriach utrzymywalności, ale to i tak za mało. To tylko forma defensywy, a nie ataku. Mało widowiskowe stąd nikt nie oczekuje, aby programista był decyzyjną postacią, aby bezpośrednio wpływał na procesy i wartości w firmie. Analogicznie tak samo jak programiście tak samo np. grafikowi czy księgowej nie powierzyłbym wpływu na biznes.

Reasumując ten cały wywód, jeśli chcesz pisać ładnie i mieć szczęśliwe ego, to najpierw naucz się kształtować wartość, sprzedawać coś taniego drogo, działać na potrzeby/wyobraźnię klientów, atakowoć, podejmować ryzyko, a dopiero później na szarym końcu dobierać do tego odpowiedni środek.

Najlepszym pytaniem jest to nie wrócimy wtedy na sam początek? Oby nie :-D

2
Wawer0123 napisał(a):

Czy w ogóle są takie firmy, które dbają o jakość kodu ponad terminy?

Może nie tyle o jakość kodu, co jakość softu, ale to jest dość powiązane. Tylko to nie są software housy, które robią soft dla kogoś, lecz firmy, które robią dla siebie.

0
somekind napisał(a):
Wawer0123 napisał(a):

Czy w ogóle są takie firmy, które dbają o jakość kodu ponad terminy?

Może nie tyle o jakość kodu, co jakość softu, ale to jest dość powiązane. Tylko to nie są software housy, które robią soft dla kogoś, lecz firmy, które robią dla siebie.

Jeśil firma ma kontrakt z klientem na dostarczenie kodu na lata i będzie potem ten swój wysryw utrzymywać latami to do której grupy się wtedy zalicza? Robi to dla siebie czy dla kogoś?

0

Nadal dla kogoś, bo jej biznes nie jest oparty na tym konkretnym sofcie, tylko w ogólności na produkowaniu (i ewentualnym utrzymywaniu) oprogramowania dla kogoś innego.

1
Wawer0123 napisał(a):

Jeśil firma ma kontrakt z klientem na dostarczenie kodu na lata i będzie potem ten swój wysryw utrzymywać latami to do której grupy się wtedy zalicza? Robi to dla siebie czy dla kogoś?

Ale wtedy właśnie tym bardziej robi gównokod, bo ma wtedy pewność, ze inna firma nie przejmie utrzymania. Zwłasza przy zamówieniach publicznych. Mało która firma będzie chciała utrzymywać cudzy gównokod.

0

to teraz chyba czaję czemu odrzucili mnie na ostatniej rozmowie, w której mówiłem tak jak ten gość z filmiku kazał, że programmerzy nie mogą pozwolić sobie na wywieranie na nich presji kosztem jakości kodu xD

0

Pracowałem już w wielu firmach w branży IT i z tego co widzę, to 90% kodu pisanego to jest właśnie gównokod.
Osobiście, w ogóle się tym nie przejmuję, jeżeli mój PM chce mieć produkt szybko kosztem jakości, to to jest jego problem, ja bynajmniej nie mam zamiaru z tym walczyć ani się z tego powodu stresować. I wszystkim radzę robić tak samo, bo pewnych rzeczy jednak nie oszukacie, zwłaszcza tego, że firma robiąc jakiś produkt robi go dla zysku, a nie po to, żeby programista mógł się cieszyć jakością wykonanego przez siebie kodu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1