Summaries of books about Software Development:
Data Structure and Algorithmic Thinking with Python
Data Structure and Algorithmic Puzzles
Narasimha Karumanchi
The book provides a comprehensive guide to understanding data structures and algorithms using Python, with a focus on problem-solving techniques and coding puzzles. It covers fundamental concepts, time and space complexity, and includes numerous examples and exercises to reinforce the application of algorithms in practical scenarios.
See full summary
User Friendly
How the Hidden Rules of Design Are Changing the Way We Live, Work, and Play
Cliff Kuang|Robert Fabricant
The book explores the evolution of user experience (UX) design and its profound impact on technology, products, and services, shaping our daily lives and interactions. It delves into the stories behind the design of familiar interfaces and examines how designers are solving complex problems to create intuitive, seamless experiences for users.
See full summary
Software Engineering at Google
Lessons Learned from Programming Over Time
Titus Winters|Tom Manshreck|Hyrum Wright
The book provides insights into Google's software engineering practices and culture, emphasizing the importance of code maintainability, scalability, and technical decision-making. It covers topics such as project management, development tools, testing, and the concept of "software engineering versus programming" within the context of large-scale systems.
See full summary
UNIX
A History and a Memoir
Brian Kernighan
The book provides a personal account of the development of the UNIX operating system, detailing its evolution, impact, and the contributions of key figures involved. It offers insights into the technical innovations and design philosophies that have made UNIX foundational to modern computing.
See full summary
Extreme Programming Explained
Embrace Change
Kent Beck|Cynthia Andres
The book introduces the principles and practices of Extreme Programming (XP), a software development methodology that emphasizes customer satisfaction, simplicity, and frequent iterations. It covers techniques such as test-driven development, pair programming, and continuous integration, aiming to improve software quality and responsiveness to changing customer requirements.
See full summary
Working Effectively with Legacy Code
Michael Feathers
The book provides strategies for improving and refactoring legacy codebases, focusing on techniques to identify change points, add tests, and incrementally improve the structure and design of existing code. It emphasizes the importance of testing in understanding and safely altering legacy systems, offering practical advice for dealing with large codebases and complex dependencies.
See full summary
Agile Estimating and Planning
Mike Cohn
The book provides a comprehensive guide to estimating the size and scope of software development projects in an agile context, and outlines strategies for planning iterations and releases while adapting to changing project requirements. It emphasizes the use of user stories, planning poker, and velocity to create realistic schedules that accommodate uncertainty and foster collaboration among team members.
See full summary
Coding For Dummies
Nikhil Abraham
The book serves as an introductory guide to the basics of computer programming, covering fundamental concepts, languages, and tools for beginners. It provides step-by-step instructions and practical examples to help readers understand coding principles and start writing their own programs.
See full summary
Monolith to Microservices
Evolutionary Patterns to Transform Your Monolith
Sam Newman
The book provides a comprehensive guide on transitioning from a monolithic architecture to a microservices approach, detailing strategies, patterns, and practical considerations for breaking down a large-scale legacy system into smaller, manageable services. It covers technical and organizational challenges, including decomposition techniques, database strategies, and team dynamics, to ensure a smooth and effective transformation.
See full summary
Microservices Patterns
With examples in Java
Chris Richardson
The book provides a comprehensive guide to designing, implementing, and deploying microservice architectures, using Java as the primary programming language for examples. It covers patterns for developing individual services, communication between services, and strategies for refactoring a monolithic system into a microservices-based application.
See full summary