To i ja coś dorzucę od siebie.
Pracowałem w dwóch firmach (jedna mała, druga korporacja gdzie aktualnie siedzę).
W małej firmie pracowało 3 programistów, a projekty nie miały jakiegoś ultra deadline. Pomyśleć naturalnie można, że w takim przypadku jakość kodu mogła być doskonała, bo przecież czas mimo, że gonił to nie był tragiczny, zespół był mały, a projekty nie były kobyłąmi 20-letnimi.
Realnie to wyglądało tak, że był sobie starszy Pan programista, który jeb*ł projekt za projektem gorzej niżby to był student bez doświadczenia. Całość praktycznie statyczna, co jednocześnie wyklucza testy jednostkowe (jakiekolwiek testy w sumie), facet nie miał pojęcia co to UML (gość z 10-letnim doświadczeniem zawodowym!!!), a jego jakość kodu można było opisać krótko: masakracja. Funkcje długie na 100 linijek, na dodatek powtórzenia i elementarne braki w wiedzy na temat czystego kodu.
Co, więcej zespół do siebie nie pasował. Starszy programista to był burak nawet dla własnej żony (dla mnie coś niepojętego) oraz dla koleżanek - grafików.
Drugi programista był zastraszony przez tego starszego.
Młodszy mówi: "Wiesz co, lepiej zróbmy to tak" (i faktycznie miał rację)
Starszy mówi: "NIE!"
Młodszy mówi: "eee... ok."
Tak to wyglądało. Spierdo*łem stamtąd szybciej niż samolot :) Na dodatek szefunio też był niezłym cwaniaczkiem.
Po tej akcji szukałem pracy trochę bardziej wybredniej. Odrzuciłem mnóstwo ofert, w tym opowiem Wam małą historię z mojej pewnej rozmowy kwalifikacyjnej.
Wysłałem CV do pewnej firmy. Face zadzwonił po kilku godzinach od wysłania i mówi, że chciałby na początek poznać mnie przez telefon, moje oczekiwania, to czym się zajmowałem itd. Taka rozmowa kwalifikacyjna, ale przez telefon.
Wszystko w miarę szło ok, dopóki gość nie spytał: "A jak u Pana z finansami?"
WTF sobie myślę, ale ok, odpowiadam: "Nie narzekam, dziękuję. Nie mam, ani nigdy nie miałem żadnych długów, a moja aktualna sytuacja jest stabilna."
Na co słyszę w słuchawce... UWAGA:
"Ach... szkoda"
Uszom normalnie nie wierzyłem co usłyszałem :D
Zaskoczony lekko i rozbawiony pytam: "ooo a dlaczego szkoda?".
Na co facet odpowiada totalnie poważnie: "Wie Pan, z doświadczenia wiem, że jak ktoś nie ma problemów finansowych to ma mniej motywacji do pracy.".
Padłem i dalsza dyskusja z owym pracodawcą nie miałą sensu. Odpowiedziałem jedynie: "No cóż, wie Pan zależy to od mentalności danego programisty. Jeden nie przykłada się do swojej pracy niezależnie od swojej sytuacji finansowej, wszak ważne są umiejętności, ja zaś ze swej strony mogę zaoferować..." itd...
Po kilku miesiącach facet znów do mnie zadzwonił czy jednak jestem chętny tam pracować :D Pewnie wziął kilku frustratów co mu naje*li w kodzie babole i się facet ocknął. Oczywiście odmówiłem.
No i tak sobie szukałem pracy z 3 tygodnie, aż w końcu trafiłem do korporacji. Kod tam pisany jest... słaby. Ani testów nie ma w kodzie, ani też super wybitnych programistów. Jestem osobom młodą w zespole, a mimo to bez skrupułów upominam osoby starsze ode mnie (dużo starsze) by pisały ładniej. Przykład: Pisałem konstruktor i zauważyłem, że w kodzie ktoś pisał 4 prawie identyczne konstruktory. Zgłosiłem to autorowi i powiedziałem, że to poprawiam w ten sposób i żeby patrzył, by potem nie popełnił tego błędu raz jeszcze.
Powtórzenia w kodzie zdarzają się np w takich miejscach jak:
if (cos || cos || aaa && bb || cos || cos && aa || aaaaa)
{
// cos robi
}
if (cos || ddd|| aaa && bb || cos || cos && aa || aaaaa)
{
// cos robi
}
if (cos || eee|| aaa && bb || cos || cos && aa || aaaaa)
{
// cos robi
}
if (cos || fff|| aaa && bb || cos || cos && aa || aaaaa)
{
// cos robi
}
Jak to zobaczyłem to pierwszy mój efekt był wymiotny. Potem zgłosiłem to znów autorowi i powiedziałem, by tego nie pisał tak, bo gdy dojdzie do edycji pewnych powtarzających się danych to będzie udręka. Na co usłyszałem... "Ale to nie ulegnie zmianie"
WTF!!!
Mówię do niego: "Skąd Ty to możesz wiedzieć? Przecież za rok ten kod może wyglądać zupełnie inaczej."
i wystarczyło zrobić funkcję:
private bool Verify(int data)
{
return (cos || data|| aaa && bb || cos || cos && aa || aaaaa)
}
i ify wyglądały już dużo lepiej:
if (Verify(cos))
{
// cos robi
}
if (Verify(ddd))
{
// cos robi
}
if (Verify(eee))
{
// cos robi
}
if (Verify(fff))
{
// cos robi
}
Mimo tych przeciwności losu, firma jest bardzo fajna. Atmosfera jest świetna, nikt nikogo nie zmusza do pracy jakby był niewolnikiem.
Każdy się lubi, i nikt gburem nie jest. Co więcej przełożeni mają łeb na karku i potrafią utrzymać projekt w miarę w sensownym stanie.
Wiecie co?
problem złej jakości kodu wynika z tego, że ludzie boją się upominać kogoś. Widzimy zły kod to, albo go olejemy, albo nie powiemy autorowi, że dał d**y po całości. W ten sposób ten słaby programista dalej będzie klepał babole, a my po nim będziemy poprawiać.
Jednak, czy istnieje firma gdzie kod jest czysty i piękny? Taaaa pewnie tak wygląda niebo programisty :)
Za mało jest dobrych programistów, by znaleźć firmę gdzie kod jest taki jakbyśmy tego chcieli. A sami pracodawcy (co udowodniłem powyżej o tym mistrzu z finansami) nie zdają sobie sprawy z tego czym kończy się zatrudnianie partaczy.