Somebody at work asked my input for good books for starting (Java) developers. As this is something that might be useful for others as well, I’ll post my list here as well. This list contains books that I found to be the most influencal to me - and are timeless. So, by design, I won’t include really specific books (the ‘how to use scrum’ of ‘spring 5.0’ type of books) and books that were really good, but I would not recommend in 2022 anymore (eg, ‘The Pragmatic Programmer’, ‘Extreme Programming Explained’).
Mythical Man-Month, Frederick Brooks
By far the oldest book in the list. And although, you could argue that the stories are not really applicable to the ‘modern times’, I still include this. If you read this book, you’ll find that a lot of things described are - even if the book is almst 50 years old - still applicable. It is really, really important to realize that most things that we bump into today, are the same things that people bumped into 50 years ago. So, the world of software is changing less than we think it does (so, no cool-library-v2 will not solve everything), and gave me also the realization that the world of software is really bad at learning from the past.
Software Estimation - Demystifying the Black Art, Steve McConnell
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. I would add: estimation. Somehow, people (including me…) are inheritently optimistic, believe in miracles, etc. And even with all the modern way-of-work-frameworks, people still want to have estimates (#noestimates, yay!). Having a book that systematically looks at estimations, and learns you the difference between an estimation and a commitment was really useful to me.
Code Complete, Steve McConnell
The only book in the list focussed on code. But a really timeless read to think about the structure of code. The thing I remember mostly was the 2 page discussion on whether the squarly brackets {} should start at the end of a line (convention in Java) or at the beginning of a line (convention in C#). This books really made me think about things that I have never given any thought.
Death March, Edward Yourdon
A book that tries to ‘objectively’ look at (unhealthy) deadlines. Are they always bad? Maybe not. How to differentiate between an actual deadline, and a date somebody just set to try to speed things up. And how should you then cope with these? Main take-away from the book: the unit of a bonus (for reaching the deadline for example) should year salary. If you can’t express it in a year salary, then it is not a bonus. This book will not solve the issue of dealines, and how to cope with it, but for me it gave me context so I could better understand them.