Mimo moich całkiem niezłych projektów na GitHub https://github.com/jonkipro, wyłożyłem się dzisiaj całkowicie podczas testów rekrutacyjnych z algorytmiki do jednej z Wrocławskich korporacji. To była moja jedna z nielicznych szans na zaczęcie czegoś interesującego w moim życiu, a ja to tam spieprzyłem. Nie dałem rady rozwiązać ani jednego z 3 testów na Codility. 2 były mega trudne, jedno trochę mniej. Jestem całkowicie zdołowany. Uświadomiłem sobie jak niewiele wiem i jak dużo muszę jeszcze się nauczyć. Jednak po zastanowieniu się na sensem życia, nie mogę tego tak łatwo odpuścić i się rozpłakać. Postanowiłem, że inaczej podejdę do nauki programowania. Teraz, po krótkiej analizie timelapsu mojej przygody z programowaniem, jestem świadomy jak wiele podstaw ominąłem, podczas gdy tylko dążyłem do rozpoczęcia pisania programów okienkowych, a potem web. Patrząc na moje projekty brakuje w nich jakiejkolwiek czystości, wydajności, wzorców projektowych. Są pisanie całkowicie bez żadnego przygotowania. Nie przeczytałem nigdy ani jednej książki z programowania. Nie analizowałem profesjonalnych kodów. Szukałem tylko w necie potrzebnych mi elementów i łączyłem je potem bez żadnej analizy. Dlaczego tak, a nie inaczej? Czy będzie to wydajne? Nigdy nie użyłem w moich projektach np. generyków. Dlaczego? Bo tylko kiedyś z grubsza przeczytałem co to jest i tyle. Z powodu mojej niewiedzy o nich, nie wiedziałem jak to sensownie wykorzystać w programach. Mimo, że ich zastosowanie poprawiłoby wydajność kodu i przejrzystość. Chwytałem się tylko łatwych wersji kodu. Gdy trafiałem w internecie na bardziej skomplikowany kod, to od razu odpuszczałem go sobie i szukałem innych łatwiejszy wersji. Przykładowo w moich projektach wykorzystywałem Spring Security do logowania i rejestracji. Wydawało mi się, że znam go dobrze. Nawet to sobie wmawiałem. A mimo to nawet nie wiem o co chodzi z takimi podstawowymi pojęciami jak tokeny. Wiem tylko, że jest to jakiś identyfikator zalogowanego użytkownika i tyle. Potem wychodzi taki amator, który gubi się przy podstawowych pojęciach. Nie pamiętam kiedy ostatni raz obejrzałem lub przeczytałem jakikolwiek cały poradnik. Czekałem tylko na nazwę klasy, jakieś metody, jedno zdanie co robimy i już. Dodawałem takie elementy do moich projektów, mimo, że nie wiedziałem do końca jak one działają. Mimo mojej długiej znajomości z programowaniem znam tylko jeden najpopularniejszy wzorzec projektowy, a inne znam tylko z nazwy. Czy ktoś taki nadaje się na Juniora? Chyba tylko do polewania kawy. Mogę przestrzec innych jak to potem wychodzi nieznajomość podstaw. Musiałem się wyżalić.
Polecacie jakieś dobre książki do programowanie w Java, jakieś do pisania czystego kodu(niekoniecznie musi być to związane z Java) i do algorytmiki. Chciałbym przeczytać jakieś bardzo dobre książki, które uświadomią mi na czym polega pisanie dobrego profesjonalnego kodu, tak jak to robią najlepsi.