I was recently asked what books I would recommend for a new developer.
There are so many great books that have influenced me I decided to do a few posts recommending books I’ve read.
This first post introduces some great books I think every developer should read as soon as possible.
Learning algorithms may seem unnecessary to some with the availability of modern libraries, tools and frameworks but I can’t understate how much I learnt from reading the works of Donald Knuth when I was younger.
Explains numerous refactorings and how to do them methodically. This may seem redundant now we have brilliant tools like JetBrains Resharper to automate them for us.
However, if you ever need to maintain legacy software that doesn’t use modern IDE’s with all the automated refactoring tools you may have wished you read a book that taught you how to refactor methodically.
Because all code is legacy as soon as it’s written :-). Seriously though, if you aren’t already, then at some point in your career you will have to maintain old code.
This book is probably the most useful book I’ve read on the subject.
If you are wondering how to write beautiful code, look no further.
Test Driven Development is practised at almost every organisation serious about engineering.
Another book on testing? That’s how important I think a test first approach is in modern software development.
I learnt how to program when I was 12 years old. It was myself and a friend sitting together writing code.
I struggled when I first went into industry because programmers sat apart and rarely spoke.
Today most programmers understand the value of pair programming - one of many practices recommended in this great book.
Although, not a book specifically on programming, this is a really interesting book that will get you thinking about design and how important it is in all aspects of engineering.
This book gives many examples of bad designs, some of them funny while others may be all too familiar.
If you’ve ever felt stupid pulling a door only to find you should have pushed it this book is a must read.
Don’t be put off by the C# in the title. The examples may be in C# but the value of the book is in the general principles you learn through the case study.
One of the most valueable things I learnt from this book was the practice of intentional programming - and it wasn’t even meant to be the main topic of the book!
Now you’ve read all these books on writing software, it’s time to learn how to break your code!
To write robust, reliable software you need to approach testing your own software from the perspective of breaking it.
That’s all folks! I enjoyed all these books and learnt loads from them - hope you do to.