alama@world: ~/
./toggle-theme
cd ./books
home
experience
projects
books
blog
conferences
contact
#
Books
A collection of books I've read and my thoughts on them.
Grokking Algorithms, Second Edition
By Aditya Y Bhargava
completed
Programming
Algorithms
Computer Science
An illustrated guide to the most important algorithms and data structures—covering search, sort, graph, greedy, and NP-complete algorithms with Python 3 examples and over 400 illustrations, aimed at readers without advanced mathematics or prior programming experience.
Read my notes →
Refactoring: Improving the Design of Existing Code
By Martin Fowler
completed
Software Engineering
Object-Oriented Programming
Software Reengineering
A guide to improving the design of existing code through behaviour-preserving transformations, covering a catalogue of code smells and the techniques used to address them.
Read my notes →
Docker Deep Dive
By Nigel Poulton
completed
A zero-to-Docker introduction covering container fundamentals through practical usage, by the author's own subtitle: 'Zero to Docker in a single book'.
Read my notes →
The Object-Oriented Thought Process
By Matt Weisfeld
completed
Programming
Object-Oriented Design
An introduction to object-oriented concepts covering how to think in objects, encapsulation, inheritance, and design principles, intended to be language-independent.
Read my notes →
Clean Code
By Robert C. Martin
completed
Agile Software Development
Software Engineering
Coding Theory
A handbook of agile software craftsmanship covering principles and practices for writing clean, maintainable code, structured across foundational techniques, case studies, and a reference catalogue of code smells.
Read my notes →
Concise Guide to Databases
By Peter Lake
completed
Databases
Computer Science
Software Engineering
A comprehensive introduction to databases covering relational systems and modern alternatives including NoSQL and big data, with attention to real-world concerns such as scalability, security, and performance.
Read my notes →
Principles of Package Design: Creating Reusable Software Components
By Matthias Noback
completed
Object-Oriented Programming
Software Engineering
A guide to creating reusable software components, covering how SOLID principles and package cohesion and coupling principles apply at the package level.
Read my notes →
The Pragmatic Programmer
By Andrew Hunt & David Thomas
in progress
Progress: 180 /352 pages (51%)
Computer programming
Software Engineering
Project management
Vocational education
A guide covering programming philosophy, practical approaches, essential tools, defensive coding, flexible design, coding practices, project planning, and team dynamics for software developers.
Read my thoughts so far →
Design Patterns
By Erich Gamma, John Vlissides, Richard Helm, Ralph Johnson
to read
Programming
Architecture
Software Engineering
Elements of Reusable Object-Oriented Software — a catalog of reusable solutions to recurring problems in object-oriented software design, covering creational, structural, and behavioral patterns.