# Senior

## C++

- There are no concrete advice about books for seniors. At this grade, you should already know the foundations of C++ well enough. There is only one challenge for you: to monitor the latest standards and new features for C++ or tools for C++ ecosystem.


## 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)

    The classic books that tells about the difficulties that arise when managing developers. Although this book is outdated in some aspects, nevertheless it will be an excellent start for finding information about managing programmers. Many chapters are still relevant, and will also give an initial idea of managing people. Such knowledge can be useful when monitoring 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 about how to be a leader, what difficulties such a person faces. It will help you learn to think like a manager, to understand what problems bother your manager. This will allow you to build a more effective interaction between you, the 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 also considered a classic in project management. The book is focused on the mistakes that are made on projects that lead to their failures. Today, this work is also partly considered outdated, but for those developers who are just starting their way as a manager, this book will be a great start 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 about the work of a manager and how project management takes place. It is extremely useful because it conveys in an artistic manner the colossal experience of managerial everyday life. It is extremely useful because it most fully reveals the issues that the 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 errors of human thinking. It is useful because it will help to take a more rational approach to making various decisions, taking into account cognitive distortions in human thinking. This is an extremely necessary skill for specialists who are in the area of making key decisions. The book may seem rather boring, in which case you can try to look for alternative works that tell about cognitive distortions.


## Requirements and software architecture

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

    The book will be useful for those who are busy collecting and working out software requirements. It will explain about how to interact with managers, customers and developers when collecting requirements, and how to turn verbal ideas into a technical solution with clear requirements and limitations.

- [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 to software design. Contains a collection of classic architectural patterns and techniques for building 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)

    The book is about the basics of software design. This book, like the previous one, also tells about the basics of design. The difference from the previous book is that this one offers to consider approaches to software design from an engineering point of view: the ability to achieve reliability, repeatability of system components, their predictability, etc.

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

    A set of architectural approaches for building various corporate systems. This book can be useful for those who build large corporate systems with varying degrees of complexity and focus: financial transactions, document management, etc.

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

    The book focuses on the modern architectural approach of system design - microservices. This work will explain how to make a consistent transformation of an application from a "monolithic" state into a set of microservices. It contains a set of patterns, as well as tips for refactoring existing code in order to perform this procedure most effectively.

---

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