Pragmatyczny programista. Od czeladnika do mistrza (wyd II)
Book information
Description
Książka dotyczy sztuki tworzenia dobrego i niezawodnego oprogramowania. Autorzy - praktycy w dziedzinie programowania - rozważają, jakie warunki muszą być spełnione, żeby oprogramowanie zadowalało ludzi, którzy mają go używać. Jest więc mowa o tworzeniu elastycznego kodu, który da się łatwo zaadaptować i który będzie się nadawał do wielokrotnego użytku, ale też o osobistej odpowiedzialności programisty i o jego drodze do kariery. Czytelnik dowie się, jak: - walczyć z postępującym "rozkładem" oprogramowania; - nie wpaść w pułapkę powielania pomysłów; - pisać elastyczny, dynamiczny i łatwy do adaptacji kod; - unikać programowania na chybił trafił; - uwzględniać stawiane wymagania; -testować programy bez skrupułów i efektywnie; - zadowolić użytkowników; - tworzyć zespoły pragmatycznych programistów; - osiągnąć większą precyzję przez automatyzację poszczególnych prac. Uświadomi sobie pułapki, jakie czyhają na poszczególnych etapach tworzenia oprogramowania. Warto, by skorzystał z rad autorów - bez względu na to, czy jest początkującym programistą, doświadczonym programistą, czy też szefem zespołu programistów. Stosując się do tych wskazówek, zwiększy swoją wydajność i dokładność, a poza tym będzie miał satysfakcję z wykonywanej pracy. Zdobędzie umiejętności i nabierze nawyków, które ułatwią mu karierę. Stanie się pragmatycznym programistą. Spis treści Opinie na temat drugiego wydania książki Pragmatyczny programista Słowo wstępne Przedmowa do drugiego wydania Jak zorganizowano tę książkę Co to znaczy? Kod źródłowy i inne zasoby Prześlij nam opinię Podziękowania do wydania drugiego Z przedmowy do pierwszego wydania Kto powinien przeczytać tę książkę? Co decyduje o byciu pragmatycznym programistą? Pojedynczy pragmatycy, wielkie zespoły To proces bez końca Rozdział 1. Filozofia pragmatyczna 1. To jest Twoje życie Pokrewne podrozdziały 2. Kot zjadł mój kod źródłowy Zaufanie zespołu Bierz odpowiedzialność Pokrewne podrozdziały Wyzwania 3. Entropia oprogramowania Po pierwsze nie szkodzić Pokrewne podrozdziały Wyzwania 4. Zupa z kamieni i gotowane żaby Mieszkańcy wsi Pokrewne podrozdziały Wyzwania 5. Odpowiednio dobre oprogramowanie Angażowanie użytkowników w rozstrzyganie o jakości Warto wiedzieć, kiedy przestać Pokrewne podrozdziały Wyzwania 6. Portfolio wiedzy Portfolio wiedzy Budowa własnego portfolio wiedzy Cele Okazje do nauki Krytyczne myślenie Pokrewne podrozdziały Wyzwania 7. Komunikuj się! Poznaj swoich odbiorców Należy wiedzieć, co powiedzieć Należy wybrać właściwy moment Należy wybrać odpowiedni styl Należy zadbać o warstwę estetyczną Należy zaangażować odbiorców Należy słuchać innych Należy wracać do rozmówców Dokumentacja Podsumowanie Pokrewne podrozdziały Wyzwania Rozdział 2. Postawa pragmatyczna 8. Istota dobrego projektu ETC jest wartością, a nie regułą Pokrewne podrozdziały Wyzwania 9. DRY — przekleństwo powielania DRY to więcej niż kod Powielanie w kodzie Nie każde powielenie kodu jest powieleniem wiedzy Powielanie w dokumentacji Naruszenia zasady DRY w danych Powielanie na poziomie reprezentacji Powielanie za pośrednictwem wewnętrznych interfejsów API Powielanie za pośrednictwem zewnętrznych interfejsów API Powielanie za pośrednictwem źródeł danych Powielanie wśród wielu programistów Pokrewne podrozdziały 10. Ortogonalność Czym jest ortogonalność? System nieortogonalny Zalety ortogonalności Wyższa produktywność Mniejsze ryzyko Projekt Zestawy narzędzi i biblioteki Kodowanie Testowanie Dokumentacja Życie z ortogonalnością Pokrewne podrozdziały Wyzwania Ćwiczenia 11. Odwracalność Odwracalność Elastyczna architektura Pokrewne podrozdziały Wyzwania 12. Pociski smugowe Kod rozświetlający mrok Pociski smugowe nie zawsze trafiają w cel Kod smugowy kontra prototypy Pokrewne podrozdziały 13. Prototypy i karteczki samoprzylepne Co może być przedmiotem prototypu Jak używać prototypów Tworzenie prototypów architektury Jak nie używać prototypów Pokrewne podrozdziały Ćwiczenia 14. Języki dziedzinowe Przykłady języków dziedzinowych RSpec Cucumber Trasy Phoenix Ansible Cechy języków dziedzinowych Kompromisy pomiędzy językami wewnętrznymi a zewnętrznymi Tani wewnętrzny język dziedzinowy Pokrewne podrozdziały Wyzwania Ćwiczenia 15. Szacowanie Kiedy dokładne jest wystarczająco dokładne? Skąd się biorą oszacowania? Należy zrozumieć przedmiot pytania Należy zbudować model systemu Należy podzielić model na komponenty Każdemu parametrowi należy nadać wartość Należy obliczyć odpowiedzi Należy śledzić własne umiejętności szacowania Szacowanie harmonogramów projektów Malowanie pocisku Jedzenie słonia Co odpowiedzieć na prośbę o oszacowanie Pokrewne podrozdziały Wyzwania Ćwiczenia Rozdział 3. Podstawowe narzędzia 16. Potęga zwykłego tekstu Czym jest zwykły tekst? Potęga tekstu Trwałe bezpieczeństwo zamiast starzenia się Szerokie możliwości stosowania Łatwiejsze testowanie Najmniejszy wspólny mianownik Pokrewne podrozdziały Wyzwania 17. Powłoki Twoja własna powłoka Pokrewne podrozdziały Wyzwania 18. Efektywna edycja Co to znaczy „płynny”? Zmierzanie w kierunku płynności Rozbudowa edytora Pokrewne podrozdziały Wyzwania 19. Kontrola kodu źródłowego Wszystko zaczyna się od kodu źródłowego Gałęzie kodu System kontroli wersji jako centralna część projektu Pokrewne podrozdziały Wyzwania 20. Debugowanie Psychologia debugowania oprogramowania Właściwa postawa Od czego zacząć Strategie debugowania Reprodukcja błędów Programista we wrogim świecie Złe wyniki Wrażliwość na dane wejściowe Regresja w wydaniach Wyszukiwanie binarne Logowanie i śledzenie Przemawianie do gumowej kaczki Proces eliminacji Element zaskoczenia Lista kontrolna debugowania Pokrewne podrozdziały Wyzwania 21. Operowanie na tekście Pokrewne podrozdziały Ćwiczenia 22. Dzienniki inżynierskie Pokrewne podrozdziały Rozdział 4. Pragmatyczna paranoja 23. Projektowanie kontraktowe Projektowanie kontraktowe (DBC) Niezmienniki klas i języki funkcyjne Implementacja koncepcji projektowania kontraktowego Asercje Projektowanie kontraktowe i wczesne wykrywanie usterek Niezmienniki semantyczne Kontrakty dynamiczne i agenty Pokrewne podrozdziały Wyzwania Ćwiczenia 24. Martwe programy nie kłamią Złów i wypuść to dobra praktyka podczas wędkowania Awaria, nie śmiecenie Pokrewne podrozdziały 25. Programowanie asertywne Asercje i skutki uboczne Pozostaw asercje włączone Ćwiczenia Pokrewne podrozdziały 26. Jak zrównoważyć zasoby Zagnieżdżanie przydzieleń Obiekty i wyjątki Równoważenie i wyjątki Antywzorzec obsługi wyjątków Kiedy nie można zrównoważyć zasobów Sprawdzanie równowagi Pokrewne podrozdziały Wyzwania Ćwiczenia 27. Nie prześcigaj swoich świateł Czarne łabędzie Pokrewne podrozdziały Rozdział 5. Zegnij lub złam 28. Eliminowanie sprzężeń Pociągi-wraki Prawo Demeter Łańcuchy i potoki Zło globalizacji Singletony to też dane globalne Zewnętrzne zasoby to także dane globalne Dziedziczenie dodaje sprzężenia Najważniejsza jest możliwość wprowadzania zmian Pokrewne podrozdziały 29. Żonglerka realnym światem Zdarzenia Maszyny stanów skończonych Anatomia pragmatycznej maszyny stanów skończonych Dodawanie akcji Maszyny stanów to dobry początek Wzorzec Obserwator Publikowanie i subskrypcje Programowanie reaktywne, strumienie i zdarzenia Strumienie zdarzeń to kolekcje asynchroniczne Zdarzenia są wszechobecne Pokrewne podrozdziały Ćwiczenia 30. Programowanie transformacyjne Wyszukiwanie transformacji Kolejne transformacje Co z operatorem |>? Dalsze transformacje Połączenie transformacji w całość Dlaczego potoki są takie wspaniałe? Co z obsługą błędów? Najpierw wybierz reprezentację Następnie obsłuż ją wewnątrz każdej transformacji Albo obsłuż błędy w potoku Transformacje zmieniają programowanie Pokrewne podrozdziały Ćwiczenia 31. Podatek od dziedziczenia Wprowadzenie Problemy związane z używaniem dziedziczenia do współdzielenia kodu Problemy związane z użyciem dziedziczenia do budowania typów Istnieją lepsze alternatywy Interfejsy i protokoły Delegacje Domieszki, cechy, kategorie, rozszerzenia protokołów… Dziedziczenie rzadko jest dobrym rozwiązaniem Pokrewne podrozdziały Wyzwania 32. Konfiguracja Konfiguracja statyczna Konfiguracja jako usługa Nie należy pisać kodu-dodo Pokrewne podrozdziały Rozdział 6. Współbieżność Wszystko jest współbieżne 33. Eliminowanie związków czasowych Poszukiwanie współbieżności Okazje do współbieżności Okazje do przetwarzania równoległego Identyfikowanie możliwości to łatwa część Pokrewne podrozdziały Wyzwania 34. Współdzielony stan jest zły Nieatomowe aktualizacje Semafory i inne formy wzajemnego wykluczania Tworzenie zasobów transakcyjnych Transakcje obejmujące wiele zasobów Aktualizacje bez transakcji Inne rodzaje uzyskania dostępu na wyłączność Panie doktorze, to boli… Pokrewne podrozdziały 35. Aktorzy i procesy Aktorzy mogą działać wyłącznie współbieżnie Prosty aktor Brak jawnej współbieżności Erlang ustawia scenę Pokrewne podrozdziały Wyzwania 36. Czarne tablice Czarna tablica w praktyce Systemy wymiany komunikatów mogą działać jak czarne tablice Ale to nie jest takie proste… Pokrewne podrozdziały Ćwiczenia Wyzwania Rozdział 7. Kiedy kodujemy… 37. Słuchaj swojego jaszczurczego mózgu Obawa przed czystą kartką Walka z samym sobą Jak rozmawiać z jaszczurem Przedstawienie czas zacząć! Nie liczy się tylko Twój kod Nie liczy się sam kod Pokrewne podrozdziały Wyzwania 38. Programowanie przez koincydencję Jak programować przez koincydencję Przypadkowa implementacja Blisko to nie znaczy dokładnie Wzorce-widma Przypadkowy kontekst Ukryte założenia Jak programować celowo Pokrewne podrozdziały Ćwiczenia 39. Szybkość algorytmu Co właściwie rozumiemy przez szacowanie algorytmów? Notacja O() Szacowanie zdroworozsądkowe Szybkość algorytmu w praktyce Najlepsze nie zawsze jest najlepsze Pokrewne podrozdziały Wyzwania Ćwiczenia 40. Refaktoryzacja Kiedy należy refaktoryzować? Komplikacje występujące w praktyce Jak refaktoryzować? Pokrewne podrozdziały 41. Kod łatwy do testowania Myślenie o testach Testy sterują kodowaniem Programowanie sterowane testami TDD: musisz wiedzieć dokąd zmierzasz Wracamy do kodowania Testy jednostkowe Testowanie według kontraktu Testy ad hoc Budowa okna testowego Kultura testowania Pokrewne podrozdziały 42. Testowanie na podstawie właściwości Kontrakty, niezbędniki i właściwości Generowanie danych testowych Znajdowanie złych założeń Testy właściwości często zaskakują Testy właściwości wspomagają projekt Pokrewne podrozdziały Ćwiczenia Wyzwania 43. Pozostań w bezpiecznym miejscu Pozostałe 90% Podstawowe zasady bezpieczeństwa Minimalizowanie przestrzeni ataku Zasada najmniejszego poziomu uprawnień Bezpieczne wartości domyślne Szyfrowanie wrażliwych danych Zarządzanie aktualizacjami zabezpieczeń Zdrowy rozsądek a kryptografia Pokrewne podrozdziały 44. Nazewnictwo Szanuj kulturę Spójność Zmiany nazw są jeszcze trudniejsze Pokrewne podrozdziały Wyzwania Rozdział 8. Przed projektem 45. Kopalnia wymagań Mit wymagań Programowanie jako terapia Wymagania to proces Spróbuj „wejść w buty” swojego klienta Wymagania a strategia Wymagania kontra rzeczywistość Dokumentowanie wymagań Dokumenty wymagań nie są przeznaczone dla klientów Dokumenty wymagań służą do planowania Zbyt duża liczba szczegółów Jeszcze tylko jedna malutka funkcja… Utrzymywanie glosariusza Pokrewne podrozdziały Ćwiczenia Wyzwania 46. Rozwiązywanie niemożliwych do rozwiązania łamigłówek Stopnie swobody Musi istnieć prostszy sposób! Szczęście sprzyja przygotowanym umysłom Pokrewne podrozdziały Wyzwania 47. Praca zespołowa Programowanie w parach Programowanie mob Co powinienem zrobić? 48. Istota zwinności Nie istnieje coś takiego, jak proces Agile Co powinienem robić? To steruje projektem Pokrewne podrozdziały Wyzwania Rozdział 9. Pragmatyczne projekty 49. Pragmatyczne zespoły Żadnych wybitych okien Ugotowane żaby Zaplanuj portfolio swojej wiedzy Komunikacja Nie powtarzaj się Pociski smugowe zespołu Automatyzacja Należy wiedzieć, kiedy przestać dodawać nowe warstwy farby Pokrewne podrozdziały Wyzwania 50. Nie próbuj przecinać kokosów Kontekst ma znaczenie Rozmiar uniwersalny nikomu dobrze nie pasuje Prawdziwy cel Pokrewne podrozdziały 51. Zestaw startowy pragmatyka Sterowanie projektem za pomocą systemu kontroli wersji Bezlitosne testy Testy jednostkowe Testy integracyjne Walidacja i weryfikacja Testy wydajnościowe Testowanie testów Gruntowne testowanie Testowanie na podstawie właściwości Zacieśnianie pętli Pełna automatyzacja Pokrewne podrozdziały Wyzwania 52. Wpraw w zachwyt użytkowników Pokrewne podrozdziały 53. Duma i uprzedzenie Posłowie Kompas moralny Wyobraź sobie wymarzoną przyszłość Bibliografia Możliwe odpowiedzi do ćwiczeń Odpowiedź do ćwiczenia 1. Odpowiedź do ćwiczenia 2. Odpowiedź do ćwiczenia 3. Odpowiedź do ćwiczenia 4. Odpowiedź do ćwiczenia 5. Odpowiedź do ćwiczenia 6. Odpowiedź do ćwiczenia 7. Odpowiedź do ćwiczenia 8. Odpowiedź do ćwiczenia 9. Odpowiedź do ćwiczenia 10. Odpowiedź do ćwiczenia 14. Odpowiedź do ćwiczenia 15. Odpowiedź do ćwiczenia 16. Odpowiedź do ćwiczenia 17. Odpowiedź do ćwiczenia 18. Odpowiedź do ćwiczenia 19. Odpowiedź do ćwiczenia 20. Odpowiedź do ćwiczenia 21. Odpowiedź do ćwiczenia 22. Odpowiedź do ćwiczenia 23. Odpowiedź do ćwiczenia 24. Odpowiedź do ćwiczenia 25. Odpowiedź do ćwiczenia 26. Odpowiedź do ćwiczenia 27. Odpowiedź do ćwiczenia 28. Odpowiedź do ćwiczenia 29. Odpowiedź do ćwiczenia 30. Odpowiedź do ćwiczenia 31. Odpowiedź do ćwiczenia 32. Odpowiedź do ćwiczenia 33.
Similar books
Pragmatyczny programista. Od czeladnika do mistrza. Wydanie II
2021 · PDF
Pragmatyczny programista. Od czeladnika do mistrza. Wydanie II
2021 · EPUB
The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition)
2019 · EPUB
The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition)
2019 · MOBI
The Pragmatic Programmer - 20th Anniversary Edition
2020 · PDF
The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition
2019 · PDF
Pragmatyczny programista. Od Czeladnika do Mistrza
2011 · PDF
The Pragmatic Programmer: Your Journey to Mastery
2019 · PDF