This is an old unpublished post. Published now.
Writing good code:
- Clean code: The content is excellent. Each section is short and to the point. This is a very pleasant read, and the content applies to most if not all languages.
Mastering your tools: Java
- Effective Java: The title is an excellent description for what this covers. It helps you understand how to use different Java constructs effectively, common mistakes to watch out for and how to avoid them, etc.
- Java Concurrency in Practices: Understand how to write concurrent programs, concerns that you need to think about, and how to use Java correctly to write safe and performant concurrent programs.
- Release It: Excellent book on how to build non-trivial applications (applications that are not just 1 program running on 1 computer). It covers the entire life cycle of planning, developing and supporting software.
- Site Reliability Engineering: This book will teach you how to manage cloud or enterprise applications effectively. It’ll help you understand how to ensure the application is healthy and keeps going.
- Refactoring: This is a very tactical book. It teaches you methods to transform code — how do you work your way out of common anti-patterns in code. I love the small chapters that are example driven.
- Test Driven Development: by Example: This is a very practical and approachable book. It contains two simple and clean examples that show you how to start using TDD in your practice. It’s a very easy read.
- Working Effectively with Legacy Code: Practical book that describes various problems you face in legacy code and explains ways to work yourself out of those problems.
- Programming Interviews Exposed: A very easy read. You can get a crash course or refresher on basic computer science reading this book. It’ll help you warm up to the technical interview process used by most companies.