Suggested Reading List for New Developers
Software development is a career where continual learning is vital. One’s skill as a developer should not be measured by how long you’ve held a position. While it is crucial to learn new technologies as needed, but also new development strategies, design patterns, algorithms, etc.
In this post, I want to list the books that have had the biggest effect on me as a developer during my past 10 year career.
Code Complete: A Practical Handbook of Software Construction by Steve McConnell
This book has had the biggest influence on me for developing my coding style. Everytime I reread this book, I find new insights into it. Topics include writing self-documenting code, variable usage, and software layout and style.
Head First Design Patterns: A Brain Friendly Guide by Eric Freeman and Elisabeth Robson
Design patterns are usable high level designs that can be reused to solve common problems in software engineering. Object and class patterns will describe the interactions that occur between them but will not provide the final classes themselves.
The Head First Series uses a writing style to include jokes, odd humor, visual imagery to promote memory retention.
This particulary volume covers the Gang of Four design patterns such as State Pattern, Adapter Pattern, Factory Pattern and Singleton Pattern. While the original Gang of Four book (Design Patterns) is the authorative source, the Head First Series provides excellent tutorials and walkthroughs for each of the patterns.
Thinkertoys: A Handbook of Creative-Thinking Techniques by Michael Michalko
Have you ever wondered how some people seem to flow with creativity when you struggle to come up with a new idea. This book provides techniques to look at things in different ways. We tend to think as creativity as something you either have or you don’t. This book provides pen and paper techniques to get the creative juices flowing.
Programming Pearls by Jon L. Bentley
Programming Pearls centers on finding the correct algorithm for a specific problem. Bently discusses common problems he has encountered in his developer career and traces the process of arriving at efficient and elegant solutions to the problem at hand.
Each chapter focuses on a specific problem such as heaps, sorting, binary searches. The problems are not the typical vanilla problems covered in basic computer science books. The problems covered often have a unique requirement that require a unique implementation of a common problem.
Effective Python: 59 Specific Ways to Write Better Python by Brett Slatkin
Python is one of the most popular scripting languages due to its elegance of style, and simplicity. If you Google the “Zen of Python” you will see the principles that govern the style of this language. This book describes many of the gotchas of the language and offers many suggestions to make the most of the language constructs. This book is one of my favorite Python language books. I would recommend reading this after you have understanding of the fundamentals of Python.
Conceptual Blockbusting: A Guide to Better Ideas by James L. Adams
The concepts of this book are more relevant today than when it was first published in the early 1970’s. The premise of this book is that there are mental blocks that prevent us from reaching our potential in solving problems. These block may be cultural, psychological, or environmental. Adams describes. Using examples, Adams shows us how our brains can easily fall back into these thought patterns. This is another book I come back to every few years.