Books

If you have time, reading a good book is one of the best ways to get a deeper understanding of software engineering. This, in turn, can also help on the interviews, especially on the system design rounds.

Here are some books that I recommend:

  • Effective Java – the best book on Java, and I would recommend reading it even if you mostly use some other programming language.

  • Designing Data-Intensive Applications – a very good overview of the big distributed systems, and one of the best technical books I have ever read.

  • Clean Code – a classic book on writing good code.

  • Building Microservices – a good book on microservices (without any unnecessary hype around them) that also provides a good overview of the topics of security, testing, deployment, and others.

  • Design Patterns by Gang of Four – a classic book on design patterns. If you don't read all of it, make sure to at least know the following patterns: Singleton, Builder, Observer, Decorator, Facade.

  • Cracking the Coding Interview – I have read just several interesting chapters from here, but it is still a solid book about interview preparation.

  • Modern Operating Systems – this book provides a nice overview of the hardware, memory management, and other systems related concepts.

  • Learning PHP, MySQL & JavaScript – this book, which you can just skim in one evening, surprisingly provides a good overview of many important web concepts.

  • Coders at Work – a book of motivating interviews with great programmers.

Action Items
0 / 1 completed (Log in to complete action items)
1. Start reading some software engineering book.
Pick a book that you like from the list above (or any other good software engineering book), and start reading!

Books are long and methodical – learning from them is different from any other way of learning. Don't miss out on this opportunity!