Wstęp
10 lat temu, gdy studiowałem, dostęp do internetowych kursów programowania nie był tak popularny, jak dzisiaj. Jednym z lepszych źródeł wiedzy była książka i dokumentacja (o ile ktoś ją napisał). Książki typu „Programowanie na Androida” traciły swoją ważność po roku od publikacji, ponieważ zmiany w tej platformie zachodziły bardzo dynamicznie.
Są jednak książki, które są ponadczasowe i mimo upływu 20 lat nie tracą na wartości. Nie opisują one języka, frameworka czy bilioteki, lecz zasady i prawa, jakim rządzi się tworzenie oprogramowania. Mimo ponad 50 lat istnienia języków pozostały one niezmienione.
W tym artykule chcę Ci przedstawić 10 pozycji, które sprawiły, że stałem się lepszym programistą. Są to książki ludzi, którzy mają więcej lat doświadczenia niż ja jestem na tym świecie. Może niektórym się wydawać, że technologia to domena młodych, ale tak jak w fizyce istnieją pewne podstawy i prawa, które są niezmienne.
Książki uporządkowałem od tej, którą należy przeczytać jako pierwszą i wymaga najmniej wiedzy programistycznej do tej, która wymaga ugruntowanej wiedzy z zakresu refaktorowania i testowania.
TL;DR Wrzuć do koszyka
Książki
1. Czysty Kod. Podręcznik dobrego programisty. Robert C. Martin
🔥
Jest to jedna z pierwszych książek, które polecam przeczytać, jeśli już zacząłeś programować. Robert C. Martin (zwany także Uncle Bob) jest 67-letnim programistą z ponad 40-letnim doświadczeniem zawodowym. Książki oraz kursy Uncle Boba są bardzo przyswajalne, ponieważ używa on prostego języka oraz przedstawia cały proces ewolucji kodu.
Pierwsze 7 rozdziałów „Czystego Kodu” możesz pochłonąć znając tylko same podstawy języka java lub innego obiektowego. Kolejne rozdziały 8-17 wymagają trochę większej wiedzy, dowiesz się w nich o podstawach testowania, wzorcach projektowych i współbieżności.
Mimo, że jest to książka zawierająca podstawy, to czasem do niej wracam, aby usystematyzować wiedzę, dlatego uważam, że jest to książka obowiązkowa na półce każdego programisty.
2. Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów. Robert C. Martin
🔥
W porównaniu do „Czystego Kodu”, „Mistrz czystego kodu” nie uczy programowania, ale uczy etyki oraz tego jak zostać profesjonalistą. Zawiera ona mądrości, które Martin zebrał przez ponad 40 lat pracy w projektach informatycznych.
Książkę polecam wszystkim członkom zespołu programistycznego tzn. Managerom, Testerom, Programistom, Product Ownerom, Analitykom etc. – każdemu, kto ma wkład w wytwarzanie oprogramowania. Znajdą oni tam bardzo cenne porady dotyczące marnowania czasu, wycen, zobowiązań i współpracy w zespole.
3. Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki. Robert C. Martin
🔥🔥
Zwinne wytwarzanie oprogramowania to książka o dobrych praktykach programistycznych, które uchronią Cię przed wieloma kosztownymi powtarzającymi się błędami. Kto może wiedzieć więcej o popełnianiu błędów jak nie programista z 40-letnim doświadczeniem?
To dzięki tej książce dowiesz się, czym jest zwinne wytwarzanie oprogramowania (nie myl ze zwinnym zarządzaniem projektami). Zwinne nie znaczy szybkie, ale ciągle dostępne, zgodne z wymaganiami, bezbłędnie działające i łatwe w zmianie.
Druga część książki zawiera mocno techniczną wiedzę między innymi o zasadach SOLID i praktycznym ich wykorzystaniu. Jeśli nie znasz lub nie umiesz zastosować tych zasad w praktyce, to ta książka jest dla Ciebie obowiązkowa.
4. Extreme Programming Explained. Kent Beck.
🔥🔥
Trudno dostępna w polskiej wersji językowej książka o XP, czyli Extreme Programming. Pewnie ta pozycja wywołała uśmiech na twarzy części z was, ponieważ pomyślicie, że „Teraz to jest SCRUM, a nie jakieś XP”. Tyle że SCRUM, jest zwinnym zarządzaniem projektem, a XP jest zwinną metodologią wytwarzania oprogramowania. XP jest zbiorem dobrych praktyk takich jak:
- programowanie parami
- ciągłe testowanie wszystkiego
- refactoring – zmiana systemu bez zmiany jego zachowania
- udoskonalanie architektury
- Continuous Integration
Nie są one w opozycji do SCRUM, wręcz przeciwnie! Można i powinno się w pewnych projektach stosować oba te podejścia. A przynajmniej jedno – XP.
5. TDD Sztuka tworzenia dobrego kodu. Kent Beck
🔥🔥
Jeśli przeczytałeś, którąś z poprzednich książek to już wiesz, że testowanie w zwinnym wytwarzaniu oprogramowania jest … konieczne! Dlatego właśnie TDD Kenta Becka jest najlepszą książką aby nauczyć się TDD. Kent Beck opisuje w niej krok po kroku, jak powinno się stosować technikę TDD – dosłownie krok po kroku!
W II części książki Kent Beck pokazuje, jak za pomocą TDD tworzył framework xUnit do testowania i testował ten framework właśnie tym frameworkiem, który tworzył 🤪.
Podczas nauki TDD ta książka dała mi wiele cennych wskazówek oraz wyjaśniła mi wiele szczegółów, których w internetowych kursach o testowaniu nie znajdziecie.
6. Ciągłe dostarczanie oprogramowania. Jez Humble, David Farrley
🔥🔥🔥
Jednym z ważniejszych elementów zwinnego wytwarzania oprogramowania jest Continuous Delivery, czyli ciągłe dostarczanie oprogramowania. Jest to zbiór zasad i technik określający, w jaki sposób dostarczać szybko i sprawnie oprogramowanie dla testerów i klientów.
Po przeczytaniu tej książki zrozumiesz, że jeśli powtarzasz jakąś czynność manualnie, to musisz ją zautomatyzować, aby zminimalizować czas dostarczenia produktu, zminimalizować ryzyko wystąpienia błędu oraz zmaksymalizować wydajność zespołu.
7. Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów. Robert C. Martin
🔥🔥🔥
Czysta architektura jest tak jakby kontynuacją książki „Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki”, lecz porusza problem bardziej ogólny – organizacji komponentów, klas, zależności i interakcji pomiędzy nimi.
Nauczyłem się z niej poprawnego rozdzielania komponentów oraz ich łączenia, tak aby w prosty sposób można było wprowadzać zmiany oraz nowe funkcjonalności. Z tej książki nauczysz się unikać tworzenia kodu, w którym jedna zmiana pociąga za sobą lawinę nieprzewidzianych problemów.
8. Refaktoryzacja. Ulepszanie struktury istniejącego kodu. Martin Fowler
🔥🔥🔥🔥
Pozycja przeznaczona dla zaawansowanych programistów, którzy mają doświadczenie komercyjne w szczególności z dużymi i długimi projektami. Książka zawiera różne techniki refaktoryzacji, która wbrew powszechnej opinii nie jest przepisaniem wszystkiego od nowa, lecz zmianą wewnętrznej struktury bez zmiany zewnętrznego zachowania w celu zwiększenia czytelności oraz zmniejszenia kosztu utrzymania.
Martin Fowler w książce zajmuje stanowisko, że ciągła refaktoryzacja jest częścią wytwarzania oprogramowania i nie można z niej rezygnować z powodu braku czasu, ponieważ to właśnie refaktoryzaja pozwala zaoszczędzić czas poprzez dostosowanie struktury kodu do zmieniających się warunków w projekcie. W pewnym sensie jest to poradnik jak unikać długu technologicznego i jak sobie z nim radzić.
9. Refaktoryzacja do wzorców projektowych. Joshua Kerievsky
🔥🔥🔥🔥
Martin Fowler w swojej książce „Refaktoryzacja. Ulepszanie struktury istniejącego kodu” opisał niskopoziomowe przekształcenia refaktoryzacyjne takie jak „ekstrakcja klasy” lub „zmiana nazwy metody”. Joshua Kerievsky postanowił rozszerzyć, to co zaczął Fowler i zaprezentował katalog reafktoryzacji ukierunkowany na wzorce projektowe.
Moim zdaniem jest to jedna z lepszych książek do studiowania wzorców projektowych, ponieważ Kerievsky w przeciwieństwie do innych książek opisuje, dlaczego użycie danego wzorca może przynieść korzyści i kiedy należy go zastosować, a kiedy nie.
10. Praca z zastanym kodem. Najlepsze techniki. Michael C. Feathers
🔥🔥🔥🔥🔥
Wprowadzając zmiany w starym nieprzetestowanym kodzie, który nie został napisany przez nas, ryzykujemy zepsuciem już działającej funkcjonalności. Rozwiązaniem oczywiście jest napisanie testów do istniejącego kodu. Jeśli kod ma bardzo dużo zewnętrznych zależności, to może być trudny albo wręcz niemożliwy w przetestowaniu. Zrefaktoryzowanie kodu bez testów także może spowodować zepsucie działającego kodu. Ten problem Michael Feathers opisuje w swojej książce i wykorzystuje różne niestandardowe techniki, aby dokonać bezpiecznej refaktoryzacji kodu.
Tę książkę kupiłem stosunkowo niedawno i ciągle jestem w trakcie jej studiowania. Niemniej ta część, którą przeczytałem, pokazała mi, jak efektywnie refaktorować stary kod oraz w jaki sposób dodać testy do kodu, który w żaden sposób nie jest przygotowany do testów. Aby zasiąść do tej książki, należy mieć wiedzę z zakresu testowania oraz refaktorowania.
Poleć mi swoją ulubioną książkę!
Jeśli jakaś książka wpłynęła pozytywnie na twoją karierę zawodową lub organizację pracy, proszę podziel się opinią na jej temat w komentarzu.
Tylko: Praca z zastanym kodem. Najlepsze techniki. Michael C. Feathers, mam do przeczytania. Wybrane przez Ciebie książki są naprawdę świetne:)
Najbardziej podobały mi się pozycje Roberta C. Martina. W przystępny sposób przekazuje naprawdę cenną wiedzę.
Pozdrawiam,
Dariusz Gruca
http://www.DariuszGruca.pl
Najlepsze książki na temat DDD:
1.Domain Driven-Design. Zapanuj nad złożonym systemem informatycznym
2. DDD dla architektów oprogramowania
3. Patterns, Principles, and Practices of Domain Driven-Design
Pozdrawiam,
Dariusz Gruca
http://www.DariuszGruca.pl
DDD Evansa i Vernona już zamówione 😉