poniedziałek, 11 listopada 2013

Classic Books on Software Development - TOP 10 of must read

Często ktoś mnie pyta, jakie książki o programowaniu bym polecił na poziom wyższy niż klepanie kodu. Dlatego właśnie stworzyłem niniejszą listę. Jest to kompilacja podobnych enumeracji z Internetu, ale głównie opiera się na własnym doświadczeniu.

Poniższe książki to klasyka gatunku - przedstawiają one tak zwany Core*, czyli to, co jest stabilną częścią wiedzy w Inżynierii Oprogramowania. Uważam, że najlepsza jakościowo wiedza zgromadzona jest właśnie w tych książkach i powinni je poznać wszyscy, którzy interesują się swoim rzemiosłem. Nie chodzi o to, żeby ślepo stosować opisane praktyki - nie taka jest idea. Moim zdaniem są one podstawą do rozwijania własnego doświadczenia w dobrym kierunku.
(* - artykuł "Software Engineering Principles", From the Editor, IEEE Software, Vol. 16, No. 2, March/April 1999)

Classic Books on Software Development - TOP 10 of must read
(czyli najlepsze książki dla programistów o programowaniu ogólnie pojętym - w proponowanej kolejność czytania)

1) The Pragmatic Programmer: From Journeyman to Master - Hunt Andrew, Thomas David
(pl: Pragmatyczny programista)

2) Code Complete: A Practical Handbook of Software Construction - McConnell Steve
(pl: Kod doskonały)

3) Applying UML and Patterns - Craig Larman
(to nie jest książka o UML ani wzorcach! to książka o tym jak wykorzystać programowanie obiektowe, o design w OOD. Słowa UML i Patterns zostały wykorzystane jako haczyki marketingowe. Poza tym ta książka to podstawa.)

4) Agile Software Development, Principles, Patterns, and Practices - Robert C. Martin
(albo) Agile Principles, Patterns, and Practices in C# - Robert C. Martin
(pl: Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki)

5) Head First Design Patterns, Eric Freeman

6) The Art of Unit Testing, Roy Osherove

7) Rapid Development: Taming Wild Software Schedules - Steve McConnell

8) Peopleware: Productive Projects and Teams - Tom DeMarco, Timothy Lister

9) Refactoring: Improving the Design of Existing Code - Kent Beck

10) The Mythical Man-Month: Essays on Software Engineering - Frederick P. Brooks
(pl: Mityczny osobomiesiąc)

Kiedyś twierdziłem, że przeczytanie jednej książki jest jak zdobycie doświadczenia z udziału w jednym projekcie. Teraz bym powiedział, że może nawet jak dwa do pięciu "przebytych" projektów. 

Za podium, ale warto wspomnieć:

11) Clean Architecture, Robert C. Martin (Czysta architektura)

12) Clean Code, Robert C. Martin (Czysty kod)

Disclaimer: niektóre z tych książek (głównie PoEAA) dotyczą mainstreamowych systemów. Programiści systemów embedded dużo z nich nie wyniosą.