Z mojego doświadczenia:
- brak znajomości przez zespół i programistów więcej niż 1 paradygmatu / języka
- brak czytania oficjalnych dokumentacji frameworków / bibliotek / języka gdy ktoś musi się przestawić do danej rzeczy
- brak stosowania OOP i strukturyzowania kodu
- brak stosowania dziedziczenia
- wciskanie na siłę wszędzie tam gdzie nie trzeba FP
- brak dbania o warstwę danych - logikę można bardzo łatwo zaorać i przepisać w krótkim czasie, ale jak ktoś ma dziwnie ułożone dane, nie otypowane, nie mające sensu do problemu - to potem trzeba robić wokół tego fikołki, a najczęściej wystarczy dobrze zaprojektować sobie dane do przetwarzania
- brak spójności, słabe nazwy zmiennych
- brak refactoringu tam gdzie to się to przydaje i upraszczanie rzeczy
Od kiedy brak czytania dokumentacji to wzorzec? Idziemy nieubłaganie w kierunku "Programistycznych WTFów" (to kolejny post w tym tonie) , a tematem były wzorce, czyli coś co zostało przyjęte przez społeczność z aprobatą, było umyślnie używane, a okazuje się nie być tak dobre po czasie (jak Active Record choćby).
@Saalin inni komentujący ten temat spotkali się z ludźmi co robili antywzorce lub z wzorców antywzorce - ja natomiast miałem N przypadków, gdzie w danej bibliotece / języku / frameworku było w dokumentacji (której przeczytanie zajmuje max 2-3h) jak zrobić XYZ zamiast tego ludzie kombinowali i robili jakieś potworki. Akurat miałem dużo przypadków, gdzie dużo koszmarów / antywzorców programistycznych powstało z braku chęci czytania dokumentacji :/
Np.
Dla GWT zamiast owrapować przez JSNI javascript do klas Javowych aby pisać kod w javie i się komunikować między obiektami JavaScript <-> Java, ludzie dodawali globalne zmienne w window, które służyły do komunikacji lub kolejki doczepiane do window, lub bezpośrednie referencje do obiektów i próba ich hakowania przez wywoływanie funkcji. Takie skrypty były jeszcze dodawane na "lewo" zamiast prawidłowo przez plik konfiguracyjny XML frameworka GWT, zgodnie z dokumentacją.
Później takie fikołki powodują, że ludzie szukają te rzeczy, walczą z globalnymi obiektami i grafami zależności, bo komuś nie chciało się przeczytać dokumentacji.
Po prostu jak w memie "6h debugowania może zaoszczędzić Tobie 5 min czytania dokumentacji".
Moim zdaniem nie trzeba być programistą XYZ, żeby wiedzieć, że jak siadam do czegoś nowego jak nowy język i framework wypadałoby sprawdzić dokumentację / internety aby spradzić jak to się robi poprawnie w danym języku.
Chyba też na mikroblogu ktoś wrzucił ostatnio kod z Pythona, gdzie lista w zdefiniowanym domyślnym argumencie się mutuje i hejt na Pythona - znowu ten sam problem, Python tłumaczy swoje decyzje projektowe i czemu coś działa, ale trzeba sięgnąć do prawilnego źródła jakim jest tutorial 1-3h z Pythona w Pythonie a nie szukać na lewych hinduskich stronach.