Disclosure: Adam is a dear friend, and I had the pleasure of reviewing the final draft of the book. Therefore, this post is very biased, but hopefully in a positive way.
Rarely have I read a technical book over the weekend and felt invigorated enough to go back to work on Monday morning to share and apply that newfound knowledge immediately. “Speeding Up Your Django Tests” by Adam Johnson is one of those rare reads. It may as well be the best practical technical book this year I laid my eyes on.
Having worked with Adam, I know him as the real 10x engineer. Someone who always leaves things better than he found them and can seemingly effortlessly ship code that gives the most impact. And he does that with speed, precision, and superb technical conviction. I am in awe of how he does it, so I am excited to have a book that gives a little insight into one aspect of Adam’s thought process.
This book draws out an easy to use blueprint for achieving the goal set out in the title. Regardless of whether you are a seasoned Django guru, someone who is just starting, or someone deployed behind legacy code lines - you should find something useful. Follow the “In a rush?” section and “Easy wins” chapter for 30mins or go through the whole book chapter by chapter, follow some of the tips, and you will notice results.
Easy wins aside, testing is not just about test suites and test cases, and “Speeding Up Your Django Tests” covers the vast surface area of this subject comprehensively: from test structure and fixtures to continuous integration, database configuration. The most beautiful part is that this inspired me to think “oh, I might just be able to pull this off!”
Whenever you find yourself waiting for that test build to finish running - flip a chapter, and you’ll find something to improve. For those who want to go deeper down the rabbit hole, the book is sprinkled generously with references and links.
The chapter on upgrade importance gives unequivocal data-driven evidence why keeping everything up to date is practically beneficial and shares a beautiful metaphor about it. Keeping things up-to-date works both ways and, knowing Adam, I am 100% certain he will keep this book accurate and up to date for the foreseeable feature.
Summing it all up, regardless of whether you are working on one Django project or many, alone or in a team, this book is one of those rare investments that are guaranteed to help you reap results.
Go ahead, buy it, speed up your django tests, and make that project fun to work on again.