Pozornie książka ta nie zawiera wiele wiedzy. Napisana stylem nieomal poradnika psychologicznego, po głębszym wczytaniu zdradza głęboką wiedzę autorów i znaczenie ich wskazówek. Świat (a przynajmniej nasza branża) byłby dużo lepszy, gdyby ludzie częściej stosowali się do takich rad jak„Zamiast kiepskich usprawiedliwień, dostarcz rozwiązań” czy „Kosztowne narzędzia nie wytwarzają lepszego oprogramowania”. Być może takie rady są truizmami, jednak jak często spotykamy się z ludźmi, którzy nie rozumieją nawet podstawowych spraw?
Książka Hunta i Thomasa składa się z rozdziałów, z których każdy sam w sobie jest opowieścią o pewnym aspekcie tworzenia oprogramowania. Tworzenia – autorzy bowiem, nieco wbrew tytułowi, nie ograniczają się jedynie do samego „klepania” kodu, ale sięgają do przygotowań do rozpoczęcia projektu, omawiają zagadnienia współpracy w zespole, piszą o testowaniu, rozwoju kariery czy wreszcie o wyborze technik i języków programowania, czyli aktywnościach zaliczanych do sfery projektowania.
Już od pierwszego rozdziału autorzy wskazują, czym powinien się w życiu kierować profesjonalista tworzący oprogramowanie. Świadomość entropii oprogramowania, zdolność do komunikacji czy zrozumienie, że nie da się napisać idealnego programu, mogą się wydawać normalne, jednak wiele osób ciężko zdobywa tą wiedzę… Profesjonalizm wynika z doświadczenia, ale samo doświadczenie bez regularnego uzupełniania wiedzy staje się nic nie warte. „Kto nie idzie do przodu, ten się cofa”, często mówią informatycy. Hunt i Thomas posuwają się jeszcze dalej, porównując wiedzę posiadaną przez nas do portfela inwestycyjnego: można być guru jednej technologii i liczyć na nagły wzrost zainteresowania rynku podobnie jak można inwestować w jedną, jedyną firmę na giełdzie… Tylko czy nie jest to zbyt naiwne podejście?
Oprócz filozoficznego wprowadzenia, autorzy nakazują się nam zastanowić nad konkretnymi problemami, takimi jak powtórzenia w definicji informacji czy możliwość prostego odwrócenia i przebudowania wprowadzonej kiedyś do kodu zmiany. Jak zapanować nad rozjazdem specyfikacji bazy danych i jej aktualnego stanu? Jak wycofać się z błędnego modelu systemu i w szybki sposób wprowadzić poprawki? W jaki sposób tworzyć aplikacje, które nie okażą się całkowitymi niewypałami na skutek niezrozumienia potrzeb użytkowników i kiedy używać do tego celu prototypów? Na te i inne problemy autorzy nie udzielają odpowiedzi wprost – lecz w przedziwny sposób zmuszają czytelnika do znalezienia własnej odpowiedzi.
Czasami jednak autorzy decydują się prowadzić nas za rękę i sami rozwiązują stawiane przez siebie zagadki. Ma to miejsce na przykład przy omawianiu narzędzi informatycznych. Czego wymagać winniśmy od edytora, poza zwykłymi funkcjami kopiowania i wklejania? Okazuje się, że wiele typowych czynności podczas tworzenia oprogramowania można rozwiązać w prosty sposób, za pomocą już posiadanych przez nas narzędzi. Jak? To już wymaga przeczytania książki…
Kiedy w końcu nasz wspaniały kod zaczyna działać, czasami coś idzie źle… Cóż począć z wyjątkiem, jak go obsłużyć, zamieść go pod dywan, a może nie obsłużyć go wcale? Autorzy przeprowadzają bardzo ciekawą dyskusję tych problemów, proponując rozwiązania z którymi nie każdy się musi zgadzać, ale warto aby każdy nad nimi pomyślał… Czasami błąd jest wynikiem kiepskiej jakości kodu który należy przerobić. Tu także możemy się spodziewać dobrych rad. Rad, wynikających z praktyki.
Zakończenie książki to dyskusja na temat testowania i organizacji zespołów projektowych. Nie jest to rozważanie bujających w chmurach kierowników, ale prosta wiedza zarobiona poprzez obserwację zespołów…
Podsumowując: książka Hunta i Thomasa nie jest wszechstronnym podręcznikiem inżyniera. To jedynie cykl rozważań, które należy przeczytać na spokojnie i się nad nimi zastanowić. Zastanowić i zrozumieć. Dopiero wtedy można – na co liczą autorzy – stać się prawdziwym profesjonalistą.
Andrew Hunt, Thomas David: Pragmatyczny programista. Od czeladnika do mistrza, Wydawnictwa Naukowo – Techniczne, Warszawa 2002