It seems to me that every programmer comes in handy with “Design Patterns: Elements of Reusable Object-Oriented Software”. The book is also known by the name "Gang of four" or GoF, because four people wrote it. The first edition is 1994, but since then it has not lost relevance.
GoF is a book about programming patterns. It gives an understanding of how the program can be arranged, from which cubes to assemble it, so that it turns out beautifully and reliably. It happens that a person writes a class and does not even understand that he is applying this or that pattern or their aggregation. Read GoF, he would understand where the code is flawed, how to optimally stack the cubes and remove crutches. Whether or not to apply patterns in practice is a matter of taste, but the book at least gives an understanding of how it can be in principle.
I advise you to read strictly in English. In the Russian version, the names of the patterns were translated: from "Bridge" it turned out "Bridge", for example. As a result, the programmer who read the Russian version will not be understood in a professional environment. At least it will look strange.
And if in general, I divide books into two groups:
1. Fundamental, which are conditionally not tied to a programming language. GoF is in this group. Yes, examples in fundamental books are written in a specific language, but the point is not in it, but in emphasis. The essence is not attached to the syntax, so such books almost do not age. Knut Knut is of the same type. But Knut needs to be tackled when you yourself clearly understand why you need him. Otherwise, it won’t stop, it’s better not to start it.
2. "Syntactic" books are devoted to a specific language and its features. Here, perhaps, you can do not just without old books, but without books at all. Because any book is cast in concrete and fixes the state of the language at the time of its release. And the language develops if you do not take any Cobol, and with the advent of new features the principle of building programs changes. For example, Straustrup's book C ++ Programming Language was first published in 1986. Then C ++ was able to times less than now, and today the book is of historical interest. It’s more efficient to follow the development of the language through documentation, fresh articles, examples, and through experiments.