A curated list of timeless resources for learning and understanding software engineering principles, practices, and methodologies. This repository aims to gather high-quality and still-relevant materials, including books, articles, and tools, even if they were originally created before 2010.
- Introduction
- General Software Engineering
- System Design and Architecture
- Testing and Quality Assurance
- Project Management and Methodologies
- DevOps and Security
- Contributing
- License
This repository serves as a one-stop collection of valuable resources for software engineering enthusiasts and professionals. Many of these resources were created before 2010 but remain incredibly relevant in today's industry. The goal is to preserve and highlight these gems while also encouraging contributions to keep this repository comprehensive and useful.
-
"Code Complete" by Steve McConnell
- A comprehensive guide to software construction techniques.
- Read
-
"The Unified Modeling Language User Guide" by Grady Booch, James Rumbaugh, and Ivar Jacobson
- A comprehensive introduction to the Unified Modeling Language (UML) and its applications in system design.
- Read
-
"The Pragmatic Programmer" by Andrew Hunt and David Thomas
- Essential reading for developers aiming to improve their craft.
- Read
-
"Clean Code" by Robert C. Martin
- A guide to writing clean, maintainable code.
- Read
-
"The Clean Coder: A Code of Conduct for Professional Programmers" by Robert C. Martin
- A guide that focuses on the professional behavior, work ethic, and code of conduct for software developers.
- Read
-
"A Philosophy of Software Design" by John Ousterhout
- Focuses on creating robust, efficient, and maintainable software.
- Read
-
"Working Effectively with Legacy Code" by Michael C. Feathers
- A guide to refactoring and improving existing codebases.
- Read
-
"Software Engineering: A Practitioner's Approach" by Roger S. Pressman
- A foundational book covering key principles and practices in software engineering, offering practical advice on software development processes.
- Read
-
"The Computer and the Brain" by John von Neumann
- An exploration of the similarities and differences between computers and the human brain, delving into their operational structures.
- Read
-
"No Silver Bullet" by Fred Brooks
- Insightful article on the inherent complexities of software development.
- Read Online
-
"Programming in the Large vs. Programming in the Small" by Frank DeRemer and Hans Kron
- Unified Modeling Language (UML)
- A standardized modeling language for software design.
- Learn More
-
"Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- The classic book on software design patterns.
- Read
-
"Software Architecture in Practice" by Len Bass, Paul Clements, and Rick Kazman
- A comprehensive introduction to software architecture.
- Read
-
"Head First Design Patterns" by Eric Freeman and Elisabeth Robson
- A beginner-friendly guide to design patterns.
- Read
-
"Refactoring: Improving the Design of Existing Code" by Martin Fowler
- A practical guide to improving the structure, design, and maintainability of existing code through refactoring.
- Read
-
"Object-Oriented Analysis and Design with Applications" by Grady Booch
- A foundational book that explains object-oriented analysis and design (OOAD) principles with practical applications in mind.
- Read
-
"Patterns of Enterprise Application Architecture" by Martin Fowler
- A comprehensive guide to the patterns and best practices for designing enterprise-level applications.
- Read
-
"Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans
- A deep dive into the principles and techniques of domain-driven design for tackling complex software projects.
- Read
-
"Modern Structured Analysis" by Edward Yourdon
- A comprehensive guide to structured analysis and design techniques for building large-scale software systems.
- Buy
-
"Designing the User Interface: Strategies for Effective Human-Computer Interaction" by Ben Shneiderman
- A foundational guide to creating user-friendly and efficient interfaces, focusing on principles for optimal human-computer interaction.
- Buy
- "The Cathedral and the Bazaar" by Eric S. Raymond
- A seminal essay on open-source software development methodologies.
- Read Online
- Architecture Decision Records (ADR)
- A simple format for capturing architectural decisions.
- Learn More
-
"Testing Computer Software" by Cem Kaner, Jack Falk, and Hung Q. Nguyen
- A foundational book on software testing.
- Buy
-
"xUnit Test Patterns: Refactoring Test Code" by Gerard Meszaros
- A guide to improving automated tests.
- Read
- "The Humble Programmer" by Edsger W. Dijkstra
- A reflection on the responsibilities of programmers.
- Read Online
- Selenium
- An open-source tool for automating web browser testing.
- Read
-
"The Mythical Man-Month" by Fred Brooks
- Timeless lessons on software project management.
- Read
-
"Death March: The Complete Software Developer's Guide to Surviving 'Mission Impossible' Projects" by Edward Yourdon
- A guide to surviving high-pressure, mission-critical software projects with practical strategies for developers and managers.
- Buy
-
"Agile Software Development, Principles, Patterns, and Practices" by Robert C. Martin
- A comprehensive guide to the principles, patterns, and practices that form the foundation of Agile software development.
- Read
-
"Scrum: The Art of Doing Twice the Work in Half the Time" by Jeff Sutherland
- A practical guide on how Scrum can be used to improve productivity and project efficiency.
- Read
-
"The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses" by Eric Ries
- A book that applies Lean principles to startups and product development, focusing on creating efficient processes and fast iteration.
- Read
-
"The Agile Samurai: How Agile Masters Deliver Great Software" by Jonathan Rasmusson
- A hands-on guide to Agile methodology, explaining how to adopt Agile techniques in real-world scenarios.
- Read
-
"Agile Estimating and Planning" by Mike Cohn
- Provides a comprehensive guide to estimating and planning in Agile projects, focusing on practical approaches to deliver value effectively.
- Read
-
"Managing Successful Projects with PRINCE2" by Axelos
- A detailed guide on the PRINCE2 project management methodology, providing best practices for successful project delivery.
- Read
-
"Extreme Programming Explained: Embrace Change" by Kent Beck
- A foundational book on Extreme Programming (XP), discussing how to integrate change and adaptability into the software development lifecycle.
- Read
-
"Manifesto for Agile Software Development"
- The foundational document of the Agile movement.
- Read Online
-
"Reflections on Barry W. Boehm's 'A Spiral Model of Software Development and Enhancement'"
- A critical exploration of the Spiral Model, emphasizing iterative development and risk management in software projects.
- Read
-
"Pro Git" by Scott Chacon and Ben Straub
- A comprehensive guide to version control with Git.
- Read
-
"The DevOps Handbook" by Gene Kim, Jez Humble, Patrick Debois, and John Willis
- A guide to adopting DevOps practices and principles.
- Read
-
"The Web Application Hacker's Handbook" by Dafydd Stuttard and Marcus Pinto
- An essential guide to web application security.
- Read
-
"The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win" by Gene Kim, Kevin Behr, and George Spafford
- Through a novel format, this book explores the principles of DevOps and how they can be applied to IT operations and project management.
- Read
Contributions are welcome! Please read the contribution guidelines first. If you have a resource you think should be included, feel free to open a pull request.
This repository is licensed under the CC0-1.0 license, allowing maximum freedom for sharing and reusing the content. See the LICENSE
file for details.