13+ książek "hakerów" i nie tylko, które powinien przeczytać każdy programista
W życiu każdego człowieka nadchodzi taki moment, że musi odłożyć pracę na bok i naostrzyć piłę. Możesz (i powinieneś!) ją ostrzyć, czytając artykuły na Webhosting.pl, albo przeczytać jakąś dobrą książkę. Wybraliśmy 13 książek, które powinien przeczytać każdy programista, webdeweloper, a także każdy, kto ma wpływ na sposób prac nad projektami informatycznymi. A więc kierownicy działów, programiści i menadżerowie grup deweloperskich.
Lista została skompletowana na podstawie własnej listy rekomendowanych książek autora oraz rekomendacji najlepszych książek od programistów na StackOverflow. Co ważne, mimo iż pewnie znasz język angielski i mógłbyś czytać te książki po angielsku, książki są w języku polskim i można je nabyć choćby teraz.
1. Kod doskonały
Software Development Magazine uznało Stevena C. McConella jednym z najbardziej wpływowych ludzi w branży oprogramowania. W dodatku chodzi tu o prawdziwie wpływowych ludzi, jak Bill Gates czy Linus Torvalds.
Pracował on w Microsofcie nad TrueType dla Windows 3.1 oraz w Boeingu w ramach projektu "gwiezdnych wojen (http://pl.wikipedia.org/wiki/Strategic_Defense_Initiative)". Po tych doświadczeniach napisał książkę "kod doskonały", opublikował serię artykułów o najlepszych praktykach programowania w magazynie "IEEE Software".
Jeśli więc chcesz wiedzieć, jak pisać kod, który potrafi bezpiecznie sterować laserami, rakietami balistycznymi i innymi przełomowymi wynalazkami, musisz sięgnąć do jego książki.
2. Pragmatyczny programista. Od czeladnika do mistrza
Andrew Hunt (http://blog.toolshed.com/) nie pisze zbyt wiele o sobie w Sieci. Wiadomo, że pracował jako programista, tworząc systemy do zarządzania przedsiębiorstwem, po czym został konsultantem i odkrył, że wiele firm programistycznych zmaga się ciągle z tymi samymi problemami.
Dave Thomas z kolei zasłynął między innymi przez publikowanie "Code Kata" - specyficznych zadań dla programistów, które mają na celu pomóc im doskonalić sztukę programowania. Do tej pory opublikował ich 21 (http://codekata.pragprog.com/codekata/).
Obaj panowie stworzyli jedną z najlepszych pozycji na rynku dla programistów. Pragmatyczny programista to książka, na filozofii której programowania nauczyło się wielu koderów w USA, a od niedawna coraz szersze kręgi programistów w Polsce.
3. Refaktoryzacja. Ulepszanie struktury istniejącego kodu
Martin Fowler również zaczynał swoją przygodę z programowaniem w latach osiemdziesiątych. W czasach gdy dopiero popularyzowały się komputery osobiste, powstało CD, a szczytem marzeń myśli technicznej był walkman, Fowler szkolił swoje umiejętności programowania obiektowego, aby w końcu szkolić innych z metod poprawnego programowania.
Książka "refaktoryzacja" jest dziełem wielu autorów. Oprócz Fowlera przeczytasz w niej też teksty m.in. Kenta Beck-a, twórcy programowania ekstremalnego i programowania opartego na testach. To on stworzył pojęcie "zapachu kodu" (http://pl.wikipedia.org/wiki/Zapachy_kodu) przewijającego się później w publikacjach innych uznanych autorów, m.in. Roberta C. Martina.
Oprócz refaktoryzacji książka wskazuje na typowe błędne konstrukcje kodu, które należy poprawić oraz sposób modyfikacji kodu, tak aby zachować jego spójność. Przykłady w książce są w języku Java.
4. Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku
Zanim Erich Gamma, szwedzki inżynier informatyki, napisał książkę wspólnie z Kentem Beckiem, popełnił inną lekturę o wymienionej wyżej nazwie. Książka powstała w 1994 roku. Współpracowali przy niej Ralph Johson zaangażowany od początków w Smalltalka oraz inżynier oprogramowania i konsultant John Vlissides z Uniwersytetu w Stanfordzie.
Mimo iż książka ma już kilka lat, nadal jest aktualna. Składa się z dwóch części. W pierwszej omawiane jest programowanie obiektowe. Pokazane są możliwości, zalety i wady tego podejścia. W drugiej części szczegółowo opisano wzorce projektowe wraz z przykładami w kodzie źródłowym.
5. Wzorce projektowe. Rusz głową!
Skoro mamy już na liście jedną książkę o wzorcach projektowych od takich sław, to czy należy jeszcze wymieniać tę pozycję? Jej autorzy nie są mniej znaczący. To Eric Freeman, inżynier informatyki, wymyślił koncepcję "lifestreamingu", a więc dzielenia się z innymi ludźmi obrazami ze swojego życia na żywo. Kathy Sierra z kolei to programistka tworząca gry komputerowe i pracująca jako główna trenerka w firmie Sun Microsystems.
Oni oraz inni autorzy stworzyli książkę, która wyjaśnia wzorce projektowe w realnych scenariuszach. W efekcie bardzo łatwo jest je zrozumieć. No cóż... może nie do końca łatwo, ale na pewno łatwiej, niż w innej, czysto naukowej literaturze.
Książka nie jest jednak pseudnonaukową beletrystyką. Faktycznie sięgnięcie po nią pozwoli wejść na nowym poziom zrozumienia wzorców. Poza tym, jest świetna do czytania i oglądania. Bo książki z tej serii słyną z atrakcyjnej zawartości. Rzadko kiedy znajdziesz suchy akapit tekstu ciągnący się od lewego do prawego marginesu.
6. Czysty kod. Podręcznik dobrego programisty
Robert Cecil Martin rozpoczął pracę jako programista w 1970 roku. Dwadzieścia lat później został konsultantem, a kolejne 11 lat później zainicjował powstanie grupy, która stworzyła podwaliny programowania zwinnego. Niektórzy z Was pewnie kojarzą go jako autora książki właśnie na ten temat powstałej w 2002 roku. Jednak teraz chciałbym zwrócić uwagę na inną książkę, nie mniej ważną.
Czysty kod to książka nietypowa i nie da się ukryć, że dla bardziej zaawansowanych programistów. Dowiesz się z niej, jak dobrze nazywać funkcje i zmienne, kiedy i dlaczego stosować komentarze, w jaki sposób formatować kod oraz obsługiwać błędy tak, aby kod był przejrzysty i łatwy w utrzymaniu. Choć wydaje się to prozaiczne, niektórych rad nie znajdziesz w standardowych publikacjach.
Dalsza część wymaga już większej wiedzy. Martin opowiada, jak projektować systemy, korzystać ze współbieżności i pisać testy jednostkowe. W każdym momencie zawsze przewija się jeden aspekt: kod ma być napisany bezkompromisowo dobrze. Doświadczenie autora nie daje wątpliwości co do pożyteczności tej książki.
7. Sztuka programowania. Sekrety wielkich programistów
Czasem dobrze jest przeczytać, co na temat programowania sądzą znani w świecie programiści. Niektórzy z nich mogą dać jakąś radę, albo zainspirować do rozwoju w odpowiednim kierunku. Peter Seibel postanowił zapytać się programistów o początki nauki programowania, ciekawe historie z pracy w zawodzie i wyobrażenie o tym, jak będzie wyglądać jego przyszłość.
Znajdziemy tu wypowiedzi współtwórcy pierwszych wersji przeglądarki Netscape, twórcy JavaScriptu, pomysłodawcy JSON-a, twórcy języka Erlang, Haskell, Smalltalk, systemu UNIX, programu TeX czy oprogramowania ARPANET, sieci, która zapoczątkowała Internet. Jeśli szukasz inspiracji i pasji w zawodzie programisty, ta książka z pewnością spełni swoje zadanie.
8. Architektura systemów zarządzania przedsiębiorstwem. Wzorce projektowe
O Martinie Fowlerze pisałem już w punkcie trzecim. Chociaż wymieniłem już dwie inne ważne pozycje traktujące na temat wzorców projektowych, ta zasługuje na szczególną uwagę. Autor spogląda na proces projektowania aplikacji z punktu widzenia osoby tworzącej systemy dla przedsiębiorstw. Polski tytuł zdaje się sugerować, że chodzi tylko o systemy zarządzania przedsiębiorstwem, ale faktycznie chodzi o wszystkie systemy klasy biznesowej.
Nie jest to zadanie proste, a wraz z rozbudową systemu, dużą liczbą osób zaangażowanych w jego rozwój, wielu użytkowników błache sprawy nagle potrafią stać się znacznie bardziej skomplikowane. Dlatego też z punktu widzenia programisty tak ważne jest, aby utrzymać porządek w kodzie i pewną spójną, bezpieczną i elastyczną architekturę.
9. Nie każ mi myśleć
Jeśli jesteś webdeweloperem, musisz czasem podejmować decyzje, które wpływają na użytkowy aspekt projektowanej strony internetowej. W takiej sytuacji książka Steve'a Kruga okaże się niezwykle przydatna. Autor pracował przez 20 lat jako konsultant usability dla takich firm jak Apple... no i wystarczy, że skończymy na tej jednej firmie, prawda?
Drugie wydanie książki otwiera oczy na kwestie związane z użytecznością stron internetowych, pokazuje jak rozmieszczać komponenty, aby były łatwe do odnalezienia przez odwiedzających, w jaki sposób uwzględniać preferencje konkretnych użytkowników, którzy będą korzystać ze strony, testować ją i wprowadzać ulepszenia w mechanizmach nawigacji.
Jeśli nie czytałeś jeszcze nic na temat użyteczności, polecam tę książkę. Porusza najważniejsze zagadnienia i pokazuje kierunki, w jakich można dalej rozwijać swoją wiedzę z tego zakresu.
Drugą popularną książką tego samego autora jest "przetestuj ją sam". Jeśli przeczytasz ją, koniecznie napisz w komentarzu dla innych Czytelników, czy warto ją zakupić.
10. Getting Things Done
Szkoleniowcy z zakresu zarządzania czasem i zadaniami żartują, że nie można zarządzać czasem, a tylko sobą w czasie. Cóż, na pewno wie o tym dużo David Allen, konsultant, który uważa, że przed 35 rokiem życia pracował w 35 zawodach. Następnie zajął się kwestią poprawny produktywności m.in. dla takich firm jak Lockheed.
Książka Getting Things Done nie mówi o programowaniu, ale wiele osób zajmujących się programowaniem wskazuje, że pomogła ona im uporać się z rosnącą liczbą zadań od szefów, przełożonych, menadżerów i klientów. Stała się też inspiracją dla wielu firm, które stworzyły systemy zarządzania zadaniami oparte na regułach opisanych przez Davida Allena. Nie pozostaje więc nic innego, jak polecić tę książkę.
11. Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#
W punkcie 6. przedstawiłem książkę "Czysty kod" Roberta C. Martina. Wspomniałem tam o książce "Agile. Programowanie zwinne..." tego samego autora, którego w pracy wspierał Micah Martin.
Jest to jedna z najlepszych książek na rynku omawiająca metodyki zwinne. Nic dziwnego, w końcu została napisana przez jednego z inicjatorów całego ruchu. W książce znajdziesz techniki programowania ekstremalnego, zasady planowania rozwoju oprogramowania w zespole według nowego podejścia, sposoby testowania i refaktoryzacji kodu. Z drugiej części dowiesz się, jakich zasad programowania powinieneś przestrzegać, jak korzystać z diagramów i wzorców projektowych w celu lepszej organizacji kodu.
Bardzo ciekawe są studia przypadków, które w konkretnych sytuacjach pokazują, jak teoria programowania zwinnego przekłada się na konkretne zmiany w sposobie rozwijania oprogramowania.
Czy lepiej wdrożyć wszystkie metody zwinne, a może tylko część? Zdania są podzielone. Jednak niezależnie od tego, musisz przeczytać tę książkę, jeśli chcesz dowiedzieć się od osoby znającej się na rzeczy, czym agile jest.
12. Zarządzanie projektami informatycznymi. Subiektywne spojrzenie programisty
Myślę, że nie trzeba przedstawiać osoby Joela Spolsky'ego, współtwórcy serwisu StackOverflow, sieciowej mekki programistów. Joel również napisał kilka interesujących książek.Szczególnie ciekawa jest dosyć niedawna publikacja o zasadach zarządzania projektem informatycznym. Spolsky przedstawia 12 reguł, sposób tworzenia harmonogramu realizacji projektu, radzenia sobie z błędami oraz metody doboru odpowiednich technologii (uwzględniając Open Source).
W porównaniu do poprzednich lektur jest to dosyć świeże spojrzenie na zagadnienia nowoczesnych projektów informatycznych. Joel Spolsky znany jest z metodycznego podchodzenia do rozwiązywania problemów zespołów programistycznych i wykazywania się przy tym niezłą pomysłowością (np. pracuje kilka lat nad algorytmem płac dla swoich pracowników).
Książka ta będzie dobra nie tylko dla osób zarządzających projektami, ale też dla webdeweloperów i freelancerów, którzy chcą lepiej panować nad projektami, które realizują samemu. W końcu stykają się w mniejszym lub większym stopniu z problemami znanymi większym zespołom pracowników.
W książce znajdziesz też sposoby na zatrudnienie dobrego programisty. Jednak powstała na ten temat też oddzielna publikacja. Możesz też zobaczyć, co osoba na stanowisku decyzyjnym będzie brać pod uwagę, zastanawiając się, czy przyjąć Cię na wymarzone miejsce pracy.
Przy okazji nie można też zapomnieć o istnej perełce tego samego autora, która zawiera zbiór najciekawszych tekstów różnych znanych programistów o sztuce pisania oprogramowania. Pod tym względem jest ona podobna do książki z punktu siódmego, ale zamiast wywiadów mamy tu do czynienia z wyborem tekstów Joela Spolsky'ego. Świetna lektura, jeśli kolejne stricte techniczne książki zaczęły Cię nudzić i potrzebujesz trochę inspiracji.
13. Lekcja programowania. Najlepsze praktyki
Co wspólnego ma program antywirusowy MKS z językiem programowania AWK? W obu przypadkach nazwa pochodzi od nazwisk autorów. W przypadku AWK literka K pochodzi od Briana Kernighana, znanego też jako uczestnika prac nad Uniksem oraz współautora słynnej i pierwszej książki o języku C napisanej razem z samym jego ojcem, Dennisem Ritchie.
Ponadto, to właśnie Kernighan jest twórcą pierwszego programu komputerowego, który przywitał zadowolnego programistę frazą "hello world".
W 1999 roku napisał on z Robem Pike'em książkę, w której podsumował wiedzę i doświadczenie zebrane przez swoje życie na temat dobrych metod pisania oprogramowania. Z książki dowiesz się, jak pisać czytelny kod, dobierać odpowiednie rozwiązania, budować interfejsy jako zapory przed programistyczną dżunglą, testować kod, znajdować błędy, dbać o wydajność, przenośność (w końcu człowiek ze świata Uniks) i odpowiednie nazewnictwo komponentów w kodzie.
Czy książka jest lepsza czy gorsza niż "Czysty Kod" Roberta Martina? Nie odpowiem na to pytanie, bo nie chcę wywoływać kłótni. Pozostawiam ocenę czytelnikom.
A Ty? Jakie książki polecasz? Która książka najbardziej wzbogaciła Twoje spojrzenie na sprawy programistyczne? Otworzyła oczy na nowe sposoby rozwiązywania starych problemów? Napisz w komentarzu!
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
19
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
15 faktów o polskim e-biznesie, których nie znasz – zobacz wideo!
Z okazji wypuszczenia akcji Facebooka przypomnijmy sobie, kim jest Zuckerberg
10
Nowy problem z Windows 8: bootuje się za szybko
10
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Co czeka programistów po czterdziestce?
27
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Społeczność
lol Jak ktoś tu wcześniej zauważył - artykuł jest o niczym, a właściwie ukrytą...
grzybecki To raczej powinien być znak dla programistów Social Media, aby swoje...
facebug @rychu
Strona wchodzi, ślamazarnie ale wchodzi mam takie...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
inna niedawno temu miałam kod, którym można było od razu zmienić wszystkie...
asdfgh przeciek kontrolowany
Bilberry cytat: "Flash jest już z nami od roku 1996, podczas gdy HTML5 ma dopiero...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |
























#1 Pascal® 2011-11-09 12:24:03 0
IP: 83.12.10.[...] Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2
#2 agilob® 2011-11-09 13:21:58 0
IP: 144.124.212.[...] Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Iceweasel/7.0.1
#3 tomaszs® 2011-11-09 13:56:44 0
IP: 89.69.28.[...] Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
#4 agilob® 2011-11-09 14:19:36 0
IP: 144.124.212.[...] Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Iceweasel/7.0.1
#5 tcpl 2011-11-09 14:22:22 0
IP: 91.217.152.[...] Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.932.0 Safari/535.8
#6 Caritas 2011-11-09 14:49:00 0
IP: 93.182.132.[...] Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0
#7 tomaszs® 2011-11-09 14:54:36 1
IP: 89.69.28.[...] Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
#8 DawidS28® 2011-11-09 17:53:06 0
IP: 79.191.211.[...] Mozilla/5.0 (Windows NT 6.0; rv:8.0) Gecko/20100101 Firefox/8.0
#9 DawidS28® 2011-11-09 17:56:54 0
IP: 79.191.211.[...] Mozilla/5.0 (Windows NT 6.0; rv:8.0) Gecko/20100101 Firefox/8.0
#10 pid 2011-11-09 20:06:47 0
IP: 89.72.248.[...] Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.32 Safari/535.7
#11 agilob® 2011-11-09 22:11:57 0
IP: 144.124.212.[...] Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Iceweasel/7.0.1
#12 ogmios 2011-11-11 13:35:37 1
IP: 87.105.113.[...] Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
#13 sadasd 2011-11-11 21:38:18 1
IP: 194.247.62.[...] Opera/9.80 (Windows NT 6.1; U; Edition Labs Camera and Pages; en) Presto/2.9.220 Version/12.00
#14 asd 2011-11-11 21:42:07 0
IP: 194.247.62.[...] Opera/9.80 (Windows NT 6.1; U; Edition Labs Camera and Pages; en) Presto/2.9.220 Version/12.00
#15 eimi® 2011-11-12 12:33:36 0
IP: 90.156.32.[...] Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0
#16 akoder 2011-11-14 21:42:33 0
IP: 77.255.180.[...] Mozilla/5.0 (Windows NT 6.0; rv:7.0) Gecko/20110929 Firefox/7.0 PaleMoon/7.0
#17 windziarz 2011-11-18 22:06:20 0
IP: 89.72.178.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0
#18 eimi® 2011-11-18 22:40:13 0
IP: 90.156.32.[...] Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0
#19 Mikz 2011-12-05 23:56:44 0
IP: 83.9.97.[...] Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0
#20 gdflgj 2011-12-18 13:32:08 0
IP: 83.3.165.[...] Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
#21 zalesz® 2012-02-02 20:06:24 0
IP: 46.113.199.[...] Mozilla/5.0 (Ubuntu; X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1