Reading List

Below are the books that I have studied in the domain of programming and web development that I enjoyed the most and derived the most benefit. I hope that you enjoy them as much as I did.

Last Updated: 23-Jul-20

Theoretical Books

Clean Code
  • Clean Code
  • A Handbook of Agile Software Craftmanship
  • Robert C. Martin

Synopsis

Code that is difficult to understand carries with it 'technical debt' which becomes a direct time cost to the programmers maintaining it as well as a financial cost to a company's bottom line. It is often said that programmers spend 10 times the amount reading code as they do writing it. Bob Martin teaches how to write and maintain clean code.

A few key takeaway points from the book include:

  • Give elements such as classes, functions and variables meaningful names
  • Observe the DRY principle (Don't Repeat Yourself)
  • Leave the code in a better place than when you found it
  • Keep function sizes small. They should do one thing and do it well!
  • Design functions to take fewer arguments
  • Comments should explain why code is in place. The code itself should explain what it does
  • Keep lines of code short for readability
Data Structures and Algorithms

Synopsis

The promise of this book is to teach about the various data structures and algorithms that are on offer to a programmer, which one is the most suited to a particular problem and the efficiency of the potential solutions. The book's objective is to demonstrate this with the smallest amount of maths as possible.

What you will learn:

  • Big O notation is the tool used to evaluate the efficiency/complexity of an algorithm
  • How binary search works and its relationship with base two logarithms
  • Various implementations of sorting algorithms with their differences explained
  • How to use stacks and queues
  • Using node based structures in your programs
  • How to look up data using hash tables
  • How and when to use recursion
  • How to speed up your code with binary trees

Note: The image on this post is the first edition of the book since that's the version I studied. Upon setting up the hyperlink to the book, I noticed that the second edition will be released on 30-Jun-20, so I've linked to that version.

Practices of the Python Pro

Synopsis

The promise of this book is to teach you to design amd write professional-quality software that's understandable, maintable, and extensible.

What you will learn:

  • How to use the 'separation of concerns' principle in your Python projects
  • How to use typing, inheritance, and polymorphism
  • Reviewing your code in the context of time and space complexity
  • Testing approaches with both the 'unittest' library and pytest
  • The differences between inheritance and composition and when to use each
  • How to break up code to reduce complexity using measures such as cyclomatic complexity
  • How to achieve loose coupling in your programs to make them extensible and flexible

Practical Books - Python

Head First Python

Synopsis

This was my second book in my journey learning Python. It's a great starter book to get to grips with Python because it has simple and clear explanations of Python concepts in a conversational and humorous style. There are annotation call-outs that explain what each part of the code actually does which will really benefit you if you're a visual learner.

What you will learn:

  • Python's main core data structures
  • Branching and iteration
  • How to reuse code with functions and modules
  • How to approach exception handling
  • How, when and why you should use context managers
  • How to create a basic Flask app
Think Python

Synopsis

This book is much more advanced than the 'Head First Python' book and will take you from someone that understands core concepts to someone that can think in terms of best practises. Coupling this book with the 'Common Sense Guide to Data Structures and Algorithms' is useful because this book enables you to see how those concepts apply in Python.

What you will learn:

  • Programming fundamentals: variables, expressions, and statements
  • Functions
  • Branching and iteration
  • Data structures
  • Object-oriented programming
  • File management
  • Analysis of algorithms
  • Debugging your code
Python Tricks

Synopsis

As the subtitle suggests, this book is a collection of really useful tips and tricks pitched at the intermediate Python programmer. Some of the tricks are so simple, you probably wouldn't have given them a thought in the first place. I certainly learned a lot about writing more Pythonic code as I made the move to Python from having many years of experience in VBA programming.

What you will learn:

  • Writing idiomatic and Pythonic code
  • Python data structures
  • Always end your list/tuple with a comma to reduce git diffs at code reviews
  • Use assertions more liberally than most programmers
  • Python functions are first-class citizens
  • List slicing
  • List comprehensions and generator expressions
  • How to emulate the traditional case/switch statement
Python Cookbook

Synopsis

This book is an extremely thick book (706 pages to be exact) and not for the faint-hearted. Written in Python 3.3, some of the references and snippets are a bit old. If you're experienced with Python, you may note there are some instances where you would use more modern language features to accomplish a task. This book gives you plenty of examples that tap into Python's extended library that comes with the base installation of Python.

It's not really a book that should be read from start to finish. It's more of a dip in when you need something kind of a book.

Merely scratching the surface of what you could learn:

  • How to use Python's data structures taking advantage of their properties
  • How to use Python iterators and generators
  • How to use data structures beyond the readily available ones to more easily solve common programming problems.
Python Testing with pytest

Synopsis

This book is essentially a developer's reference for the pytest framework including the extended pytest plugins ecosystem. It won't give that much detail in terms of Django specific plugins, however, will set you on the path of all of the main plugins that are used in most pytest projects.

Some of the key takeaway learnings from the book include:

  • How to set up fixtures for your entire test suite
  • How to use parametrization to give your tests multiple inputs helping you to build robust software
  • Use useful command line flags to alter a test's output to gain more insight into your tests
  • How to maintain your project's test settings in a 'pytest.ini' file
  • Useful plugins and practices to speed up your test suite

Practical Books - Django

Django for Professionals

Synopsis

Brought to you by one of the duo that host the weekly Django Chat Podcast, Will Vincent, this book is a well structured step-by-step book that promises to take you from toy applications that you have been creating in development to fully-fledged multi-faceted applications in production. There is a big bridge to cross when you begin to deploy applications.

A few key takeaway points from the book include:

  • How and why to use Docker for development and production
  • How and why to use Postgres in your production project
  • How to manage your site's static assets
  • How to keep your project secure with environment variables
  • How to handle authorisation and authentication
  • How to implement search functionality
  • How to deploy your application
Rest APIs with Django

Synopsis

Written by the same guy that wrote the Django for Professionals book I just mentioned, this book is a great book to get to grips with Django REST Framework. The book uses a task based code-along approach to teaching and reinforcing its content and is pitched at intermediate level Django developers.

What you will learn:

  • What is a RESTful API
  • What are the http verbs and how they relate to CRUD
  • Using views and serializers to build a RESTful API
  • Protecting against cross-site request forgery attacks with Django CORS Headers
  • Building a React front-end to consume and present the API
  • Permissions and user authentication
  • How to use viewsets and routers for rapid prototyping
  • How to document your API with schemas and Django REST Swagger

Practical Books - Front End

The Road to Learn React

Synopsis

This book is a great book which demystifies the terminology around React. It's a practical book with many code-along exercises to reinforce the concepts. It starts you off at a basic level and moves you on to being an intermediate level React developer by the end of the book.

What you will learn:

  • Why React is called 'React'
  • How to write idiomatic React programs with JSX
  • How React manages a virtual DOM and reconciles it against the DOM to determine changes
  • How React is made up of components - pieces of the user interface
  • The difference between components and containers. It's all about state
  • What the various lifecycle methods are and how to use them
  • How to manage your SPA with routers
  • How to use Axios to consume API endpoints

Disclaimer: The external links to other sites including links to the books on Amazon are NOT affiliate links.