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.

the art of computer programmingthe art of computer programming

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.

Reefactoring by Martin FowlerReefactoring by Martin Fowler

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.

Working effectively with legacy codeWorking effectively with legacy code

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.

 

clean code by Robert C Martinclean code by Robert C Martin

If you are wondering how to write beautiful code, look no further.

Test driven development by Kent BeckTest driven development by Kent Beck

Test Driven Development is practised at almost every organisation serious about engineering.

Growing object oriented software guided by testsGrowing object oriented software guided by tests

Another book on testing? That’s how important I think a test first approach is in modern software development.

Extreme programming explainedExtreme programming explained

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.

 

The design of everyday objects

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.

Extreme programming adventures in C#Extreme programming adventures in C#

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!

How to break softwareHow to break software

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.

Happy programming!