This repository introduces the books I have read to strengthen my software engineering, programming, and system design skills. The collection spans topics from software architecture and mobile development to programming languages, design patterns, and multimedia programming.
Each book in this collection was chosen to deepen my understanding of core software concepts, improve coding practices, and explore modern development tools and technologies:
- Domain-Driven Design: Tackling Complexity in the Heart of Software – Mastering complex software design with DDD principles.
- Clean Code & The Clean Coder – Learning professional coding practices and writing maintainable, high-quality code.
- Android & iOS Development – Including Android Programming: The Big Nerd Ranch Guide, Head First Android Development, and Head First iPhone and iPad Development to gain practical skills in mobile app development.
- Programming Languages – The Way to Go, Head First Go, Python Basics, Java in a Nutshell, Head First Java for in-depth understanding of Go, Python, and Java.
- Design Patterns & Software Architecture – Head First Design Patterns, Building Microservices, Designing Fine-Grained Systems to improve architecture design skills.
- Systems & Multimedia Programming – Modern Operating Systems, Addison-Wesley OpenGL Programming Guide, FFmpeg Basics for low-level systems and multimedia programming.
- Cross-Platform GUI Development – Mastering Qt 5 to build stunning cross-platform applications.
- Modeling & UML – Learning UML 2.0 for visualizing and designing software systems.
- Networking & Web – HTTP: The Definitive Guide to understand how web protocols work at a deep level.
This collection has helped me:
- Improve coding skills and best practices.
- Learn modern mobile and desktop development.
- Understand design patterns, architecture, and system design.
- Gain insights into programming languages and frameworks.
- Explore networking, multimedia, and GUI programming.
- Reading books sequentially or based on current project needs.
- Taking notes and applying concepts in real-world projects.
- Revisiting critical sections when implementing advanced software solutions.