W XXI w. wiedza jest bardzo łatwo dostępna. Wszystko czego potrzebujemy, jest na wyciągnięcie ręki, wystarczy sięgnąć do kieszeni, wyciągnąć smartfona i wpisać interesujące nas hasło. W ciągu ułamka sekundy otrzymamy dostęp do setek tysięcy materiałów w postaci artykułów, podcastów czy wideo.
Wśród tych wszystkich źródeł, bardzo często zapominamy o tym, które dostarcza wiedzy ludzkości od pokoleń. Książki – bo o nich mowa – istnieją od wieków i są jednym z najlepszych źródeł wiedzy. Mimo tego, coraz mniej ludzi decyduje się po nią sięgać (zarówno w wersji papierowej, jak i elektronicznej). Programista czytający książkę to jeszcze rzadsze zjawisko. Najczęściej szukamy rozwiązań i odpowiedzi w sieci. Bardzo często za pewnik przyjmujemy artykuły i informacje, które nie są sprawdzone, ani w żaden sposób przefiltrowane.
Technologia obecnie rozwija się w niespotykanym do tej pory w historii ludzkości tempie. Częstotliwość pojawiania się nowych języków, standardów rośnie z roku na rok.
Prawda jest natomiast zgoła inna. Wiele osób przed nami napotykało już te same problemy i znalazło sposób, jak najlepiej je rozwiązać. Swoje sposoby na radzenie sobie w takich sytuacjach postanowili opisać w ponadczasowych książkach.
Po tym dłuższym wstępie chciałbym zaprosić was do zapoznania się z moją listą 6 książek, które każdy programista powinien przeczytać (oczywiście jest to subiektywna opinia).
A room without books is like a body without a soul.
Marcus Tullius Cicero
1. Clean Code
Czy jakakolwiek lista polecanych książek dla programistów może zaczynać się od innej pozycji? Czy miałeś kiedyś sytuację, w której patrząc na czyjś kod i powiedziałeś “O Boże, co to jest?”. Jeżeli tak, to pierwsze co powinieneś zrobić, to zarekomendować autorowi tę właśnie książkę.
Każdy kod, nawet ten zły i brzydki może działać. Ale jeżeli jest on nieczytelny, może zniszczyć projekt od środka. Codziennie wielu programistów, w wielu firmach traci niepotrzebnie czas i chęci do dalszej pracy, naprawiając źle napisany kod (często nakładając na to iluzoryczną powłokę jeszcze gorszym kodem).
“Clean code” to esencja kunsztu programistycznego. W książce przeczytamy nie tylko o tym, jak pisać dobry jakościowo kod, ale także jak w efektywny sposób rozwijać oprogramowanie. To nie tylko czytanie o dobrych praktykach, ale przede wszystkim kod. Dużo kodu. Naprawdę dużo. Niemal na co druga strona to listening kodu źródłowego. Naszpikowana przykładami lektura przeprowadzi nas od najprostszych hello world, po bardziej skomplikowane struktury. Autor wskazuje najczęściej popełniane błędy oraz sposoby na ich poprawę.
“Clean code” składa się z trzech części. Pierwsza poświęcona jest teorii, w której zapoznamy się z zasadami, wzorcami i praktykami pisania dobrego kodu. Druga część to masa przykładów o różnej złożoności. Każde studium posiada listę ćwiczeń, które polegają na oczyszczeniu i usprawnieniu kodu. Ostatnia część zatytułowana “Zapachy kodu i heurystyki” to zbiór przemyśleń, który powstał w trakcie tworzenia książki. To taka ściągawka, do której można wrócić w każdym momencie.
Mimo tego, że wszystkie przykłady zawarte w książce napisane zostały w języku Java, są one na tyle intuicyjne, że przeniesienie i zastosowanie ich w każdym innym języku nie będzie stanowiło żadnego problemu, nawet dla początkujących.
2. The Clean Coder: A Code of Conduct for Professional Programmers
Druga pozycja autorstwa Roberta C. Martina na mojej liście. Kolejność nie jest przypadkowa. Zalecam najpierw przeczytać “Clean code”, który odnosi się do kodu, a następnie “The Clean Coder”, który dotyczy programisty.
Książka ma charakter bardziej filozoficzny. Jej celem jest przedstawienie filozofii autora oraz jakie cechy powinni przejawiać programiści – odpowiedzialność, profesjonalizm oraz asertywność – aby umieć odmówić, kiedy to konieczne.
“The Clean Coder” przedstawia techniki, narzędzia oraz praktyki prawdziwego rzemiosła programistycznego. Składa się z wielu historii, nawiązujących do doświadczeń z kariery Martina, obejmującej cztery dekady. Ma ona charakter autobiograficzny.
Poruszane są w niej tematy często ignorowane przez programistów. Takie jak:
- Zarządzanie czasem
- Kiedy powiedzieć “nie”
- Radzenie sobie z presją i napiętym harmonogramem
- Znaczenie słowa “profesjonalny” w pracy programisty
- Jak uniknąć wypalenia
… i wiele, wiele więcej.
Pozycja “must read” zarówno dla początkujących, jak i tych bardziej doświadczonych.
3. The Pragmatic Programmer: From Journeyman to Master
“Diament w koronie” na każdej półce z książkami dla programistów. Ten tytuł (obok “Clean Code”) znajduje się niemal na każdej liście “must read” książek dla programistów.
Bardzo lekka lektura, pozwalająca spojrzeć na zawód programisty z nieco innej perspektywy – rzemieślniczej. “Od czeladnika do mistrza” (bo tak brzmi polski tytuł) – to droga jaką przechodzi każdy software developer. Książka jest swego rodzaju mapą, która pozwoli nam przejść tę drogę szybciej i bezpieczniej. Ostrzeże nas przed zagrożeniami i pokaże pułapki, w jakie najczęściej wpadają programiści.
Porady – jak chociażby używaj kontroli wersji nawet w najmniejszych projektach – zawarte w książce, pozwalają zachować równowagę pomiędzy przesadnym perfekcjonizmem, a pragmatyzmem.
Autorzy to praktycy, a co za tym idzie, wiedzą jak wygląda programistyczna codzienność. Przedstawiają sytuacje, z jakimi przyjdzie nam się zmierzyć w pracy. Bez zbędnego słodzenia i pakowania swoich porad w sztywne ramy teorii. To zbiór praktycznych porad, które ułatwią Ci pracę, a jednocześnie pozwolą stać ci się mistrzem w swoim fachu.
4. Head First Design Patterns
Każdego dnia, tysiące programistów zmagają się z tymi samymi problemami – projektowaniem oprogramowania. Jest szansa, że większość z tych problemów, została już rozwiązana przez kogoś innego.
O tym właśnie jest “Head First Design Patterns”. Najbardziej nietechnicznie wyglądająca książka, która w pełni poświęcona jest programowaniu. Memy, diagramy, dymki, strzałki – to elementy, które napotkamy niemal na każdej stronie. Sprawiają wrażenie, że książka jest lekka i przyjemna, ale faktem jest, że porusza bardzo istotne zagadnienia – wzorce projektowe.
Lektura nie stara się zmieścić wszystkich wzorców, jakie wymyśliła ludzkość, w jednym miejscu i zbombardować nas tysiącami przykładów ich zastosowania. Skupia się na tych najbardziej przydatnych. Tych, które rozwiązują rzeczywiste problemy.
Po skończeniu tej książki, będziesz uzbrojony w najlepszy oręż do walki z projektowaniem oprogramowania. Skondensowana i przedstawiona w przystępny sposób wiedza, poparta dobrze przygotowanymi przykładami, zilustruje Ci krok po kroku, w jaki sposób powinieneś podejść do problemów, z jakimi przyjdzie Ci się mierzyć.
Większość książek o wzorcach projektowych mówi o tym, jak wdrożyć dany wzorzec. Autorzy “Head First Design Patterns” wyjaśniają również dlaczego. Jakie korzyści i przede wszystkim problemy, będą płynąć, jeżeli zdecydujemy się użyć właśnie tego patternu.
5. Cracking the Coding Interview: 189 Programming Questions and Solutions
“Nie jestem rekruterem. Jestem inżynierem oprogramowania. I jako programista wiem, jak to jest być poproszonym o szybkie wymyślenie genialnego algorytmu, a następnie napisanie kodu bezbłędnie na tablicy. Przeszedłem ten etap zarówno jako kandydat, jak i rekruter”.
Takimi słowami wita nas autor “Cracking the Coding Interview”. Jest to 6 wydanie książki, które na półkach zagościło w 2008 roku. Jest to lektura, która pozwoli Ci przygotować się do potencjalnych rozmów kwalifikacyjnych. Obecnie panuje przekonanie, że rynek programistów, to rynek pracownika. To firmy ścigają się, w coraz to większych benefitach i udogodnieniach dla potencjalnych nowych członków swoich zespołów. A co jeśli się to zmieni?
Dzięki tej książce, przygotujesz się na taką ewentualność. W środku znajdziesz 189 zagadnień, które pomogą Ci w przygotowaniu się na każde, nawet najtrudniejsze pytanie. Gayle przedstawia także schematy, w jakich należy podejść do najbardziej skomplikowanych algorytmów. Jak rozłożyć je na części pierwsze i ułatwić sobie zadanie.
Z lektury dowiesz się także, w jaki sposób największe firmy, takie jak Google czy Facebook, podchodzą do etapu rekrutacji nowych pracowników. Poznasz także techniki, które pomagają w przygotowaniu się do części nie technicznej (pytania behawioralne).
Tę książkę można znaleźć za darmo w formie PDF w sieci. Niestety nie wiem, czy jest ona tam legalnie, dlatego nie zamieszczam linku.
6. Soft Skills: The Software Developer’s Life Manual
To kolejna książka, która nie porusza technicznej części życia programisty. “Soft Skills: The Software Developer’s Life Manual” jest przewodnikiem, w pełni skupiającym się na tym, co programiści często pomijają – umiejętnościach miękkich.
Otrzymamy zbiór uniwersalnych porad od programisty i trenera Johna Sonmeza, na temat kariery, wydajności, produktywności, ale także finansów osobistych czy nawet zdrowia i – tutaj zapewne Cię zaskoczę – filozofii.
Książka składa się z ponad 70 krótkich rozdziałów, które możemy dowolnie przeskakiwać i skupiać się na tych, które interesują nas najbardziej.
Na końcu każdego działu, znajdziemy sekcję “Podejmowanie działań”. Pokaże Ci ona, w jaki sposób uzyskać rezultaty w krótkim czasie. Książka “Soft skills” pozwoli Ci stać się lepszym programistą, bardziej wartościowym pracownikiem, a także szczęśliwszym i zdrowszym człowiekiem.
Ta książka pozwala wypełnić luki, jakie mogą powstać przy zaniedbaniu swoich umiejętności miękkich. (O których pisałem w artykule 7 Grzechów głównych programisty)
UWAGA! Ta książka w formie audiobooka, dostępna jest za darmo na okres 30 dni w sklepie Amazon. Kliknij tutaj. Nie jest to link sponsorowany i nie czerpię żadnych korzyści jeśli go użyjesz 🙂
Podsumowanie
Tak prezentuje się moje TOP 6 książek “must read”. Co znajduje się na waszej półce najbardziej wartościowych pozycji dla programistów? Jakie książki polecilibyście swoim znajomym?
Podzielcie się tytułami w komentarzu, a może dzięki Wam zaktualizuję swoją listę już wkrótce.