# :smiling_imp: Senior

## :pencil: C++

- There are no specific recommendations for books for senior level students. At this level, it is assumed that you have a good understanding of the fundamentals of C++. The only challenge is to stay updated on the latest standards, new features, and tools in the C++ ecosystem.


## :muscle: Team management

- [J. Hank Rainwater - Herding Cats: A Primer for Programmers Who Lead Programmers ](https://www.amazon.com/Herding-Cats-Primer-Programmers-Lead/dp/1590590171)

    This classic book sheds light on the challenges that arise when managing developers. Although some aspects of the book may be outdated, it still serves as a great starting point for learning about managing programmers. Many of its chapters are still relevant and provide an initial understanding of people management, which can be helpful when overseeing junior developers.

- [Michael Lopp - Managing Humans: Biting and Humorous Tales of a Software Engineering Manager](https://www.amazon.com/Managing-Humans-Humorous-Software-Engineering/dp/1484221575)

    This book explains the responsibilities and challenges faced by leaders. It will help you develop the skills to think like a manager and understand the issues faced by those in management positions. This knowledge can help improve communication and collaboration between you, your manager, and the development team.

- [Frederick Brooks - Mythical Man-Month, The: Essays on Software Engineering](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959)

    This book is considered a classic in project management and focuses on the mistakes that lead to project failures. Although partially outdated, it is a great starting point for new managers to protect themselves from typical mistakes.

- [Tom DeMarco - The Deadline: A Novel About Project Management](https://www.amazon.com/Deadline-Novel-About-Project-Management-ebook/dp/B006MN4RAS)

    The book is a novel that tells the story of a manager and their work in project management. It is incredibly useful because it conveys the everyday experiences of a manager in an artistic manner. It provides a comprehensive look into the various challenges a manager faces on a daily basis.

- [Daniel Kahneman - Thinking, Fast and Slow](https://www.amazon.com/Thinking-Fast-Slow-Daniel-Kahneman/dp/0374533555)

    The classic book about the logical fallacies in human thinking is a must-read. It is useful in helping you take a more rational approach in making decisions, by considering the cognitive biases and distortions in human thought. This is an essential skill for specialists involved in making critical decisions. If the book seems dull, you can try looking for alternative works that discuss cognitive biases.


## :clipboard: Requirements and software architecture

- [Karl Wiegers - Software Requirements](https://www.amazon.com/Software-Requirements-Developer-Best-Practices/dp/0735679665)

    This book is an excellent resource for anyone involved in the process of gathering and refining software requirements. It provides guidance on how to effectively communicate with managers, customers, and developers to gather requirements and turn abstract ideas into concrete, technical solutions with well-defined limitations. Whether you are new to software requirements or an experienced practitioner, this book will be a valuable resource.

- [Len Bass, Paul Clements, Rick Kazman - Software Architecture in Practice](https://www.amazon.com/Software-Architecture-Practice-SEI-Engineering/dp/0136886094)

    A classic work on the basics of architectural approaches in software design, containing a collection of classic architectural patterns and techniques for constructing large software systems.

- [Mark Richards, Neal Ford - Fundamentals of Software Architecture: An Engineering Approach](https://www.amazon.com/Fundamentals-Software-Architecture-Comprehensive-Characteristics/dp/1492043451)

    This book provides an overview of the fundamental concepts of software design with a focus on engineering principles. It covers topics such as reliability, repeatability, and predictability of system components, and offers an approach to software design from an engineering perspective.

- [Martin Fowler - Patterns of Enterprise Application Architecture](https://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420)

    The book provides a comprehensive overview of different architectural approaches for building corporate systems. It covers a wide range of applications, from financial transactions to document management, and is designed to be relevant for systems of varying degrees of complexity and focus. Whether you are an experienced software engineer or just starting out in the field, this book can be an invaluable resource for building robust and scalable corporate systems.

- [Chris Richardson - Microservices Patterns](https://www.amazon.com/Microservices-Patterns-examples-Chris-Richardson/dp/1617294543)

    This book will be useful for those who want to learn about microservices architecture, as well as for developers and architects who are looking for ways to build scalable and maintainable systems. The book provides practical insights and real-world examples to help readers understand how to design, build, and deploy microservices-based systems. Whether you're just starting to learn about this architectural approach or looking to deepen your existing knowledge, this book can provide valuable guidance and best practices to help you succeed in your projects.

---

[**Go back**](Overview.md) | [**To main page**](../../README.md)