Why do I read
I read a lot: from short blog posts and tutorials to books and whitepapers. (I watch courses, webinars, and conference talks as well). Reading helps me discover new things and remember the stuff I already know. It uncovers the “missing parts” of how things and processes work internally.
Practice, of course, matters. But if you do your work every day, the learning pace will slow down after some time. Only learning from other sources can boost your knowledge.
In this blog post, I collected the best books on testing and engineering that I read recently. Of course, there are more great books out there. So please, recommend your favorite books in the comments.
- Team Guide to Software Testability: Better software through greater testability Small but handy book about the theme that many people speak about but almost none can articulate adequately. If you want to understand testability and how to influence it as a test engineer - read it. It is worth the time and money.
- Understanding Distributed Systems. Good book for beginners where you find from which tiny (and not so little) bits and pieces modern systems contains.
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Huge and academic book on distributed systems. It is not easy to read, but worth every minute of effort. But be careful - it requires a lot of technical prerequisite knowledge to get the most from it.
- How Google Tests Software. Old one, but the approaches described in the book are still relevant. Some predictions about testing and SDET careers needed to be corrected.
- Software Engineering at Google: Lessons Learned from Programming Over Time. Better than the previous one - contains examples for testing and other aspects of software delivery.
- Leading Quality: How Great Leaders Deliver High-Quality Software and Accelerate Growth. A tiny but extremely useful book on how to drive quality in the organization.
- Effective Software Testing A developer’s guide. The best book on testing that you can share with your developer. The book contains a lot of tools and examples in Java. The book is structured so well that it can be easily taught as a course at university.
- Software Testing: A Craftsman’s Approach. If you wonder if testing a technical job - this book is for you! You will see how data structures and algorithms are used in testing.
- System Design Interview. System design is a must-have type of interview at many companies. In this book, you will learn approaches to these interviews and concrete examples of building well-known systems such as Facebook Feed, Youtube, and Twitter.
- Agile Testing and More Agile Testing. Good books on testing. Pay attention to the parts about integrating automation tests into the process.
- The Coding Career Handbook. Guides, Principles, Strategies, and Tactics. This book is for every engineer at any point of their career. From how to get to your first job, get to senior level, do blogging, and do conference talks.
- Staff Engineer: Leadership Beyond the Management Track. If you see yourself more as an individual contributor than a lead or a manager - this book can answer what the Staff engineers are and what they do at work.
- Complete Guide to Test Automation: Techniques, Practices, and Patterns for Building and Maintaining Effective Software Projects. The most practical book on modern test automation that I read. It contains many pieces of advice on how to approach automation, how to start a project, and how to survive on the way.
- Experiences of Test Automation: Case Studies of Software Test. Excellent read about how test automation and engineering were at the edge of the 20th and 21st centuries. Some problems are timeless and never change :)
Is there anything besides the books?
I have worked in the IT industry for more than eleven years now. The more you are here, the more challenging it is to find something new.
What can help you to learn new things:
- Change position: from engineer to manager and back
- Change project or company (technology stack and testing tools)
- Research whitepapers about testing and your industry. (Courses and webinars can be good when you start, but later it is more like a waste of time - for me).
- Find the topic that motivates you and research as much as possible on it. (No matter the programming language or stack.)
- Practice what you learned.
- Reflect on what you learned and how you can use it in your work now.
- Share the knowledge with others (tweet about it, write blog posts, share it in chats, etc.).