Na początku swojej kariery myślałem że "Spaghetti Code" to zapomniana legenda, mająca nas programistów ostrzec przed takim "zjawiskiem" -
dawno zapomniane, lecz może powrócić jak za dużo ifów zrobisz w kodzie
To znaczy, że sam nigdy nie pisałeś spaghetti kodu? Wydaje mi się, że każdy pisze spaghetti kod, przynajmniej na początku (chociaż mi też się zdarza do dzisiaj pisać, jak robię exploratory code. Ew. jak coś pójdzie nie tak - i kod, który na początku ładny, zaczyna poddawać się entropii i wychodzi spaghetti kod. Wtedy refaktoruję albo przepisuję od nowa, jeśli mogę).
Z drugiej strony często ludzie, którzy dowiadują się, że spaghetti kod jest brzydki mogą popaść w drugą skrajność i będą starać się pisać kod na pokaz "elegancki", z mnóstwem niepotrzebnych wzorców, z niesamowitymi abstrakcjami, mnóstwem dziwnych klas, taki kod w stylu enterprise (co może przy projektach klasy enterprise z mnóstwem wymagań biznesowych to ma jakiś sens - ale jeśli ktoś pisze prosty projekt tak, jakby pisał drugiego SAPa to nie jest to raczej dobra droga)
Potem dopiero człowiek się opanowuje, i widzi się, że najważniejsze, żeby kodzik był prosty. Spaghetti kod jest zły, ale przeinżynierowanie jest równie złe, a nawet gorsze (w przypadku spaghetti kodu, możesz przynajmniej pierdyknąć i powiedzieć "kod to syf", w przypadku przeinżynierowania widzisz, że jest to syf, ale jednak jest to syf jakoś uporządkowany, zrobiony wg jakichś wzorców, nawet jeśli zaimplementowanych od czapy... w przypadku przeinżynierowania ciężej przekonać innych, że syf to syf, i że trzeba coś z tym zrobić)
testy jednostkowe? jak będzie czas to sobie tam pisz (ale czasu nigdy nie ma :) ) ogolnie szkoda czasu na testy.
Testy są tym bardziej potrzebne, im większy jest projekt. Przy małych projektach brak testów nie jest aż taką tragedią, ale przy dużych projektach brak testów to proszenie się o problemy, i jeśli ktoś ma podejście, że szkoda czasu na testy, to ja bym się zastanowił, czy z taką osobą, chciałbym współpracować w ogóle.
somekind:
Tylko to nie będzie software house, agencja interaktywna ani inna firma projektowa - bo jeśli coś ma się sprzedać raz, to o jakość się nie dba.
Sugeruję szukać pracy w firmach, które mają swoje produkty i mają zamiar je wiele lat utrzymywać.
Myślę, że zależy też jak wielka jest rotacja programistów w firmie. Jak za mała to niezbyt dobrze - programista, który siedzi w jednym projekcie przez kilka lat, poznaje go na wylot, co niestety sprawia, że taki programista przestaje dostrzegać problemy z architekturą czy kodem projektu, przyzwyczaja się, ponieważ zna kod na pamięć i jest w stanie się poruszać w spaghetti ze sprawnością widelca. A potem wynikają teksty o których OP wspomniał typu "nie umiesz tego wprowadzić? przecież to proste! to tylko jeden button" (gdzie dla osoby, która siedzi w projekcie i go pisała coś jest proste, jednak osoba nowa w projekcie ma problemy z ogarnięciem tego, ponieważ kod wcale obiektywnie prosty ani ładny nie jest, a jedynie się taki wydaje osobom, które go pisały).
Aha - jak za duża rotacja programistów to też jest niedobrze - bo jest wielki chaos, brak standardów w projekcie. Każdy nowy programista narzuca swój styl pisania, a w razie potrzeby kopiuje/wkleja coś z innego modułu, bo mu tak wygodnie. Plus to, że nie ma do kogo się zwrócić o pomoc, bo "autor tego modułu już tu nie pracuje" itp.
Shalomfragile base class problem
i objawia się szybko jak ktoś się lubuje w dziedziczeniu zamiast po ludzku robić delegacje, bo nagle cośtam trzebaby zmienić ale sie nie da bo jest już 10 poziomów klas "pochodnych" które w rzeczywistości dziedziczą tylko żeby mieć dostępne jakieś utilsy ;)