logo

📕 Cztery najważniejsze książki, które zrobiły ze mnie programistę

Długość wpisu: 7 min

Od czasu do czasu zdarza mi się, że ktoś zapyta o jakieś wartościowe książkowe polecajki. Mam kilka książek, które mnie ukształtowały i przekształciły mój sposób pracy.

Poniżej pierwsze cztery, które polecam w pierwszej kolejności.

Clean Code - Robert Martin

Clean Code

Gdy byłem na studiach, to myślałem, że dobrze napisany kod to taki, który działa, pokrywa wszystkie przypadki brzegowe i nie ma żadnych bugów. Drabinka ifów wydawała mi się sensownym i eleganckim rozwiązaniem.

Gdy poszedłem na praktyki, a potem do pracy, to okazało się, że tak naprawdę jest to wymagane minimum, a tworzenie oprogramowania, to coś znacznie więcej.

Jednym z ważniejszych elementów jest pisanie czystego kodu. Jest to istotne nie tylko dla programistów, którzy nawazajem czytają swój kod i muszą go rozumieć, ale też dla biznesu.

Kod, którego nie można łatwo zmieniać, powoduje, że dowożenie ficzerów i naprawianie bugów będzie się przeciągać, fundusze będą topnieć, a użytkownicy będą się denerwować.

Podstawowym źródłem wiedzy o pisaniu czystego kodu jest klasyczny już Clean Code od Uncle Boba. Jest to najprawdopodobniej najczęściej polecana książka dla programistów, więc nikogo nie powinno dziwić, że wpadła na pierwsze miejsce na mojej liście.

Pamiętam, że czytałem tę książkę jeżdżąc autobusem i wywarła na mnie tak duże wrażenie, wciągnęła tak mocno, że do dzisiaj nie pamiętam, dokąd ten autobus mnie woził 🙃.

Pamiętam za to uczucie - jakby ktoś budził mnie ze snu i pokazywał kolejne rzeczy, które od razu mogę wdrażać podczas pisania kodu w pracy.

Dzieki tej ksiażce, mój kod stawał się lepszy z dnia na dzień.

Jedyny minus, który tak naprawdę nie jest minusem, jest to, że przykłady napisane są w Javie, a nie każdy w Javie kodzi. Dla programistów C# to nie problem, dla JavaScriptowców może być.

Niestety książka nie ma sensownego zamiennika. Są repozytoria i setki wpisów na blogach, które starają się wyjaśnić zasady opisane w książce stosując inne języki (w tym JS), ale nie spotkałem jeszcze przykładów, które nie byłyby poprzekręcane w jakiś sposób.

Zasady tam opisane są uniwersalne i ponadczasowe, trzeba je tylko dostosować do aktualnego stacku technologicznego.

Dlatego nadal uważam, że najlepiej samemu sięgnąć do źródła. Uważam, że jest to podstawowa lektura każdego programisty i kto jeszcze jej nie czytał, powinien zrobić to w następnej koleności.

Clean Coder - Rober Martin

Clean Coder

Po przeczytaniu Czystego Kodu postanowiłem, że zabiorę się za kontynuację. Clean Coder był reklamowany jako druga część, więc spodziewałem się książki technicznej.

Zamisat tego dostałem solidnego liścia w pysk od Uncle Boba, który miał mi pokazać, że nie samym kodzikiem programista żyje.

Clean Coder to książka, która doskonale opisuje, co to znaczy być profesjonalistą. Pokazuje odpowiedzialności dobrego programisty i sposoby pracy z innymi osobami uczestniczącymi w procesie tworzenia softu.

Dzięki niej nauczyłem się też, czego mogę wymagać od innych i znalazłem swoje miejsce w całym procesie.

Jest to książka, która pozwoliła mi ściągnąć do końca pieluchę juniora i dzięki której zacząłem chodzić na dwóch nogach, zamiast pełzać na czworakach.

Wydaje mi się, że dwie największe zalety tej książki to:

  • zrozumienie profesjonalnej postawy
  • znalezienie swojego miejsca w procesie

Warto spojrzeć na Clean Codera, jeśli interesuja Cię te dwa tematy.

Extreme Programming Explained - Kent Beck, Cynthia Andres

XP

Extreme Programming to w mojej głowie ksiażka, która pokazuje romantyczną (dla mnie) wizję grupki znajomych siedzących w jednym pokoju, naparzających pair-programming i robiących quality software z szybkością hackathonową.

Z jednym, ważnym wyjątkiem.

Tryb pracy na hackathonie pozwala na pisanie spaghetti. Natomiast XP pokazuje jak pracować, żeby kod z każdą iteracją przeistaczał się w twór o ekstremalnie wysokiej jakości i jednocześnie rozwiązywał tylko te problemy, które trzeba w danej chwili rozwiązywać.

Podoba mi się ten opis z https://www.agilealliance.org/glossary/xp/:

Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team.

Ten drugi aspekt, czyli wyższa jakość życia dla development teamu jest dla mnie nawet ważniejszy niż kod.

Wielu programistów lubi XP, bo jest metodyką agile (taką jak Scrum, czy Kanban), która jest mocno nastawiona na działania zespołu programistów. Pokazuje, jak taki zespół powinien pracować oraz jakie praktyki stosować, żeby samodzielnie tworzyć kod we współpracy z klientem.

Managerowie, Scrum Masterzy, czy Agile Coache nie rozmawiają zbyt często o Extreme Programmingu. Podejrzewam, że powód w jest prosty. W momencie, gdy zespół może wszystko zrobić samemu, bo ma do tego narzędzia, te role po prostu stają się zbędne.

XP w czystej postaci jest ekstremalnie rzadko spotykany, jednak skutecznie udawało mi się przemycać różne metodyki do Scruma, Kanbana innych hybryd, których używaliśmy. Są one po prostu kompatybilne, więc wielu programistów robi dokładnie to samo.

Zespół, który pracuje korzystając z praktyk XP szybko staje się samodzielny i zaczyna podejmować bardziej dojrzałe decyzje projektowe. A to jest coś co uwielbiają Scrum Masterzy i liderzy, którzy często nawet nie wiedzą, że źródłem przemiany jest stosowanie praktyk XP.

Zdarzyło mi się kilka razy pracować w XP i dla mnie jest to idealny tryb pracy.

An additional, and equally important, contribution of XP is the focus on practice excellence.

The method prescribes a small number of absolutely essential practices and encourages teams to perform those practices as good as they possibly can, almost to the extreme.

This is where the name comes from. Not because the practices themselves are necessarily radical (although some consider some of them pretty far out) rather that teams continuously focus so intently on continuously improving their ability to perform those few practices.

Jeśli interesuje Cię “focus on practice excellence”, to ta książka jest dla Ciebie.

💡 Note: C2 Wiki podaje kilka sytuacji, w których nie warto stosować XP (lub jest to utrudnione) i w takich sytuacjach lepiej pożyczać konkretne praktyki, niż wprowadzać XP w całości.

Slipstream Time Hacking - Benjamin P. Hardy

Slipstream Time Hacking

Ta książka może być zaskoczeniem, bo prawie nikt jej nie zna i nie ma nic wspólnego z programowaniem. A jednak wywarła na mnie taki sam wpływ, jak Clean Code.

W największym skrócie Ben Hardy wykorzystuje Szczególną Teorię Względności Einsteina, żeby zasugerować, że nasze życie warto mierzyć jako przebyty dystans, a nie jako czas, który upłynął.

Zamiast mierzyć, jak dużo czasu minęło, możemy mierzyć, jak daleko zaszliśmy.

Zamiast mierzyć lata doświadczenia, możemy mierzyć faktyczne doświadczenie.

Od samego początku pracy w IT wiedziałem, że mierzenie doświadczenia w latach, to największy bullshit w tej branży. Głównie za sprawą “seniorów” z “wieloletnim doświadczeniem”, których wiedza i umiejętności znajdywały się na znacznie niższym pozimie, niż sugerowałyby to czas. Przekonywano mnie, że otrzymam od takich osób pomoc i mentoring, a w praktyce nie można było wymagać zbyt wiele.

Na szczęście spotykałem też osoby ze znacznie krótszym stażem, którzy zjadali tych seniorów na śniadanie pod względem wiedzy, umiejętności i sposobu, w jaki potrafili przekazywać swoją wiedzę.

A to wszystko dlatego, że te osoby z krótszym stażem przebyły znacznie większy dystans, w krótszym czasie.

A to z kolei znaczy, że szybciej się poruszali.

I właśnie w tym momencie staje się jasne, że aby przebyć większy dystans, w krótszym czasie, warto szukać tuneli czasoprzestrzennych. Jest to motyw przewodni książki.

Takie tunele, to działania i okazje w naszej karierze, które pozwalają zdobyć lata doświadczenia w kilka miesięcy lub czasem tygodni.

Ta metafora bardzo do mnie przemawia, więc zacząłem szukać tuneli czasoprzestrzennych, do których mógłbym wskoczyć. Już wtedy, po przeczytaniu książki, okazało się, że z kilku tuneli już skorzystałem. Jednym z nich jest np. prowadzenie szkoleń. Ten tunel zaprowadził mnie do miejsca, w którym mocno doszlifowałem swoją wiedzę oraz umiejętności, nauczyłem dzielić się wiedzą i pokazałem się w bardzo dobrym świetle.

Teraz, kilka lat świetlnych dalej wiem, że to podejście działa nawet zbyt dobrze i że można przypadkiem skoczyć zbyt daleko. Z przeciętnego programisty, możesz stać się osobą, od której każdy coś będzie chciał, a będziesz wiedzieć, że możesz im pomóc. Jednak angażując się w te inicjatywy, czasem z rozpędu, efektywnie zmniejszasz czas na programowanie i rozwój. Czyli na to, po co wielu z nas przyszło do tej branży. Warto na to uważać.

Twarz Matiego na poniższym obrazku pokazuje, że takie skakanie nie jest łatwe i że można zabrnąć zbyt daleko.

Trzeba się przygotować na to mentalnie i ta książka opisuje jak to zrobić.

Mati Płacze

Mam już w głowie kolejne cztery ksiażki (i chyba na tym skończę), które mocno pomogły mi znaleźć się w tym miejscu, w którym jestem teraz. Kiedyś się pewnie zabiorę za ich opisanie. W międzyczasie daj znać, czy takie podsumowanie jest pomocne i czy Ty masz jakieś książki, które wniosły wiele dobrego do Twojej pracy.

Notatki z tych książek będę stopniowo umieszczał na blogu, więc warto tam zaglądać.

Podziel się:

Instagram, Twitter, YouTube, Facebook, LinkedIn