This is part 2 of a series in how to get better as an automated testing engineer. In part 1 we talked about working with people better than us. Today I want to talk about ingesting content, specifically books.
Recently, on the podcast I co-host, we talked about getting better through reading and our favorite programming books. Make sure to look at those 4 books (Refactoring: Improving the Design of Existing Code, Test Driven Development by Example, Structure and Interpretation of Computer Programs, and Working Effectively with Legacy Code).
Additionally, I’ll add a few more that made a difference in my career.
Design Patterns – these are patterns commonly occurring in programming. Knowing them is like understanding cultural idioms. You’ll see where people used them and they’ll clue you into likely problem sets the authors faced and architectural decisions that are most likely nearby.
Further, understanding this will help you communicate better with software engineers (at least the good ones) and have a leg up in design conversations.
I will mention for this and most of these books, if you’re not already a pro with object-oriented design and principles, go back and learn that first.
Effective Java – While this book is for Java, the ideas I learned in this one carry over to helping my understanding of different languages. For instance, in Java Strings are immutable. This has a certain impact on performance of the system and memory usage when strings are poorly used. But then what does that mean in other languages? And how does immutability occur in other languages or does it? This is just one example among many lessons by Joshua Bloch.
You’ll note this was originally written for Java 6. I looked for a version tied to a newer version of Java and I didn’t find one. Glancing over it briefly this morning, I realized most of the concepts at still relevant to Java and working in Java.