Mario Cervera

Mario Cervera



πŸ“š I've read many technical books during my career as a software engineer. So, people often ask me for book recommendations. This is a thread about the most common recommendations that I give (grouped in 5 knowledge areas) πŸ§΅πŸ‘‡

1⃣ Algorithms and Data Structures. The canonical reference is the CLRS book: πŸ“” "Introduction to Algorithms". This book is thick and it contains a lot of algorithm analysis, so it's quite math-heavy. But it's the best, in my opinion.

If you want something more accessible, you won't waste time reading: πŸ“” "The Algorithm Design Manual" (by Steven Skiena). The second part of the book is a gold mine. It contains a catalog of algorithmic problems that arise commonly in practice.

If you prefer video content, I recommend the "Algorithms" specialization at @coursera. The author of the course is Tim Roughgarden (@algo_class), who also wrote a series of books (which are based on the video lectures): πŸ“” "Algorithms Illuminated".

2⃣ Good coding practices. If you want to write code that is a pleasure for others to read and work with, you must read: πŸ“” "Code Complete" (by Steve McConnell). It's a thick book, but it will take you to the next level.

If Code Complete is the bible, the handbook is: πŸ“” "Clean Code" (by Robert C. Martin, @unclebobmartin). Some people say that the technology-specific content is outdated. Even if this is true, most of the advice in the book is timeless and invaluable.

3⃣ Software Design. In my opinion, the best book to learn about software design is the GoF book: πŸ“” "Design Patterns: Elements of Object-Oriented Software". But the book is dense. If you want something more accessible, I recommend: πŸ“” "Head-First Design Patterns".

I know that it's been almost 30 years since the GoF book was written. Some people argue that design patterns are not relevant anymore. In this article, I shared why I think this is not true.

There also two other great books that are full of tips for writing flexible designs: πŸ“” "Refactoring: improving the design of existing code" (by Martin Fowler, @martinfowler). πŸ“” "Working effectively with legacy code" (by Michael C. Feathers, @mfeathers).

4⃣ Software Testing. If you want to know what clean tests look like, you should read: πŸ“” "xUnit Test Patterns: Refactoring Test Code". It's a thick book, but it contains a lot of repetition because the patterns are self-contained. So, it reads quite fast.

If, on the other hand, you want to delve into TDD, the best book is: πŸ“” "Test-Driven Development by Example" (by Kent Beck, @KentBeck). But you can also complement your knowledge about TDD by reading: πŸ“” "Growing object-oriented software guided by tests"

5⃣ Professionalism. Tips about how to be a good software professional are also important. In this topic, I've read two books that I can recommend: πŸ“” "The Software Craftsman" (by Sandro Mancuso, @sandromancuso). πŸ“” "The Clean Coder" (by Robert C. Martin, @unclebobmartin).

And this ends the thread. If you liked it, please contribute by adding your own book recommendations. For more content about Software Engineering, you can follow me on Twitter or at my blog:

Follow us on Twitter

to be informed of the latest developments and updates!

You can easily use to @tivitikothread bot for create more readable thread!
Donate πŸ’²

You can keep this app free of charge by supporting 😊

for server charges...