Hi! I’m Ismail Mayat and I work at AO as a Senior Developer in the Pricing and Promotions team (also known as Team Block Party!).
Before AO I have worked for many different web agencies up and down the country mostly working with different content management tools, 2005 onwards I worked mostly with opensource .net CMS Umbraco.
Before going into my tech book top tips I am going to tell you a little story, are you sitting comfortably? Then I will begin.
In April 2017 I attended a 3-day clean code course with Uncle Bob Martin
(Me getting my copy of signed Clean code book, that’s getting flipped on eBay!)
The course was based on his clean code book (more about that later).
This course changed my whole outlook on software development and one of the real takeaways has been the importance of continual personal development. Since attending the Clean Code course my bank balance has been feeling the strain of continual book purchases and I am running out of places to put said books!
Many of the books although interesting were not quite relevant to working in agency land building sites with a CMS holding your development hand as it were.
However at AO, the scale and distributed nature of AO tech, I am drawing upon these books regularly.
I’d like to present to you 5 books that I have found extremely useful:
Clean code, Bob Martin
You won’t appreciate good code until you have seen bad code and that’s what this book does.
It first presents code, which is ugly, hard to read, hard to understand, hard to maintain. Bob then goes step by step to refactor that code.
If code isn’t clean, it can bring the company to its knees and reduce its ability to remain competitive by providing cutting-edge solutions. Since code needs to be maintained it must allow you to maintain and extend, and that’s what clean code does.
Object Design Style Guide, Mattias Noback
Developers understand object-oriented programming but do all of us truly understand objects? After reading this book you may question yourself. The book is split up into 9 sections
- Creating services
- Creating other objects
- Manipulating objects
- Using objects
- Retrieving information
- Performing tasks
- Dividing responsibilities
- Changing the behaviour of services
- A field guide to objects
Prepare to unlearn what you know about objects!
Unit testing, Principles, Practices and Patterns, Vladimir Khorikov
Here at AO, we do a lot of TDD. TDD is so misunderstood in fact Ian Cooper did an excellent talk “TDD where did it all go wrong” this book clears up a lot of misunderstandings.
To really benefit from this book you should have some TDD experience under your belt or have read the original TDD book by Kent Beck
Continuous Delivery, Jez Humble and David Farley
Ok so I have not actually read this book, I am currently working through it.
However, it’s a veritable gold mine with plenty of good advice from battle-hardened experts.
Continuous delivery means that a product can be released to users on-demand, this book covers best practices in the three critical areas of an organisation process, people and tools.
Thankfully here at AO much of the practices detailed are part and parcel of AO tech DNA.
Domain Modelling Made Functional, Scott Wlaschin
On the last day of the Clean code course with Uncle Bob, one of the delegates asked “I have done clean code course, I know SOLID principles and TDD what is my next step to skill up?” Bob replied learn a functional language.
Bob is a big fan of Clojure, I tried it however it’s a dynamically typed language that sits on top of the JVM. Coming from a .net background and more specifically C# a statically type language I decided to have a go with F#.
What I really enjoyed about this book is it’s a 2 for 1.
The first few chapters are all about DDD (domain-driven design, I like to think that the first couple of chapters are a condensed big blue DDD book by Eric Evans).
The latter chapters are about functional programming and even though I do not work with a functional language day to day there is a lot you can learn and apply in a non-functional language like C#.
Thank you for reading and I hope some of these books give you some food for thought.