Bibliography

If you enjoy learning and reading, one of the best sections in each book is the bibliography. It contains a list of books that generally link to the topic you were reading about in the first place. As I also like scavenging for new material, I aimed to add a short description to each book referenced here. This will help you figure out why I added it to this list, and whether or not it is something you’d enjoy digging into deeper.

In order to help you find a book suited to your current skill level, and understanding, I have added suggested “complexity levels” to each of the books in this bibliography.
The complexity levels are as follows:

  • Novice-friendly: These books are ideal for those new to a subject or field. They provide a gentle introduction, starting from the basics and building foundational knowledge. Concepts are explained in a straightforward manner without assuming prior expertise. Practical examples and step-by-step instructions are common features.

  • Intermediate level: Intermediate books are designed for readers who have some foundational knowledge. They delve deeper into the subject matter, exploring more advanced concepts and techniques. Readers should have a solid understanding of the basics to fully grasp the content. These books often bridge the gap between beginner and advanced levels.

  • Advanced / In-depth: Advanced books are intended for experienced individuals or those who have already mastered the basics and intermediate topics. They explore complex and specialized areas in depth. These books assume a high level of prior knowledge and may involve advanced mathematics, technical jargon, or abstract concepts.

  • Reference / Comprehensive Guides: Reference books provide comprehensive coverage of a subject, serving as valuable resources for both beginners and experts. They often include detailed explanations, case studies, and extensive documentation. Readers can use them to deepen their knowledge or as ongoing references throughout their career.

  • Specialized / Niche: These books cater to specific niches or specialized areas within a field. They may be suitable for individuals with a particular interest or expertise in a narrow domain. Prior knowledge and experience relevant to the niche may be required.

  • Mixed: Some books may combine content that spans multiple levels, offering a comprehensive learning experience. They often include introductory chapters for beginners and progressively more advanced topics. Such books can be valuable for readers looking to deepen their expertise in a specific subject.


List of books

The Pragmatic Programmer, 20th Anniversary Edition: your journey to mastery

( permalink )
bibliographical reference:
Thomas, D.; Hunt, A. (2019) The Pragmatic Programmer, 20th Anniversary Edition: your journey to mastery. Addison-Wesley Professional. isbn: 978-0135957059.
description:

Widely regarded as one of the finest books on software development, ‘The Pragmatic Programmer’ by Andy Hunt and Dave Thomas offers invaluable insights into their approach to software development. Presented in a highly practical, down-to-earth, and conversational style, this revised classic is a must-read for anyone involved in software development.

The book covers a wide range of topics, from coding techniques and project management to software architecture and best practices. It provides actionable advice and timeless wisdom that empowers developers to write elegant, maintainable code and become more effective in their work (as well as maintain their sanity while doing so).

complexity categories: intermediate mixed

Apprenticeship Patterns

( permalink )
bibliographical reference:
Hoover, D.; Oshineye, A. (2009) Apprenticeship Patterns. O'Reilly Media, Inc.. isbn: 978-0596518387.
description:

For individuals transitioning to new teams or roles, ‘Apprenticeship Patterns’ offers invaluable advice. In this book, the authors provide practical guidance on seamlessly and efficiently integrating into a new work environment. The book’s unique structure presents these insights in the form of a pattern list, each offering actionable advice. One particularly memorable pattern, ‘Sweep the Floor,’ underscores the importance of performing the ‘grunt work’ in order to be of immediate value to a team.

complexity categories: novice reference

New Programmer's Survival Manual: Navigate Your Workplace, Cube Farm, or Startup

( permalink )
bibliographical reference:
Carter, J. (2011) New Programmer's Survival Manual: Navigate Your Workplace, Cube Farm, or Startup. The Pragmatic Bookshelf. isbn: 978-1934356814.
description:

In “New Programmer’s Survival Manual,” the author addresses critical questions in the software development field: How can you effectively steer your career in this dynamic industry? And how can you ensure you’re recognized and not overlooked for promotions, especially when you possess substantial technical expertise? Carter offers insights into the often-overlooked non-technical aspects of corporate culture. The book provides valuable guidance on seizing control of your career trajectory, equipping readers with tools to thrive and advance in the software development world.

complexity categories: novice

The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change

( permalink )
bibliographical reference:
Covey, S. R.; Collins, J. (2004) The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change. Free Press. isbn: 0743269519.
description:

A revered classic in the realms of both software development and management, Stephen R. Covey’s book delves into the transformative power of effective habits. Covey introduces readers to a set of values and practices that promote mindful time management. He explores the art of personal management systems, the significance of mastering the skill of saying “no,” and the profound notion that “saying yes to something means saying no to something else.” Covey’s book is an invitation for introspection, encouraging readers to reflect on their desired self and guiding them toward tangible steps to achieve personal growth and effectiveness.

complexity categories: mixed novice intermediate

Practices of an Agile Developer

( permalink )
bibliographical reference:
Subramaniam, V.; Hunt, A. (2006) Practices of an Agile Developer. Pragmatic Bookshelf. isbn: 978-0974514086.
description:

In “Practices of an Agile Developer,” authors Dr. Venkat Subramaniam and Mr. Andy Hunt offer readers a unique perspective on Agile development. Unlike many other books on the subject, this book delves into the complexities of working within a corporate environment. Drawing from their personal experiences, Subramaniam and Hunt provide a series of candid, and at times, challenging pieces of advice.

Through their insights, readers gain a deeper understanding of the Agile mindset and are inspired to excel within the constraints of their circumstances. This book not only offers valuable practical advice but also encourages individuals to strive for excellence in the ever-evolving world of software development.

complexity categories: intermediate niche

Ego Is the Enemy

( permalink )
bibliographical reference:
Holiday, R. (2016) Ego Is the Enemy. Portfolio. isbn: 978-1591847816.
description:

In “Ego Is the Enemy”, Holiday presents a contemporary exploration of Stoic principles, emphasizing the importance of authenticity and resilience when faced with adversity. Holiday weaves a compelling narrative by drawing on the stories of historical figures to illustrate how unchecked success can corrupt one’s character.

The book is a mix of inspirational success stories and cautionary tales, offering readers a fresh perspective on their own decisions. After reading “Ego Is the Enemy,” individuals are encouraged to reflect on a fundamental question: “Do I aspire to do something meaningful, or do I seek to be important?”. This thought-provoking book challenges readers to examine their ambitions and the role of ego in their pursuit of success and fulfillment.

content categories: mindset philosophy reflection
complexity categories: novice

Getting Things Done: The Art of Stress-Free Productivity

( permalink )
bibliographical reference:
Allen, D. (2015) Getting Things Done: The Art of Stress-Free Productivity. Penguin Books. isbn: 0143126563.
description:

A no-nonsense approach to take control of your time. Allen shares his tips to keep focussed on what is important to you, emphasises the need for a system you can trust, and empowers you to implement a way of organizing your life and commitments that fits your preferences.

complexity categories: novice

Pragmatic Thinking and Learning: Refactor Your wetware

( permalink )
bibliographical reference:
Hunt, A. (2008) Pragmatic Thinking and Learning: Refactor Your wetware. The Pragmatic Bookshelf. isbn: 978-1934356050.
description:

Dive into your own brain, and learn about efficient learning. Hunt discusses various techniques that have helped him stay on top of his game over a career spanning decades. As a professional, your main weapon is your ability to learn. Unfortunately, many of us are left to our own devices in figuring out which approaches work well for us. This book helps you, by giving you a plethora of time-proven learning techniques, and some tools to discover your own preferences.

complexity categories: novice

Nonviolent Communication: A Language of Life

( permalink )
bibliographical reference:
Rosenberg, M.B. (2015) Nonviolent Communication: A Language of Life. PuddleDancer Press. isbn: 978-1892005281.
description:

Rosenberg teaches how to talk to others in an empathetic way. But above else, he shows the need for compasionate self-talk, and deep understanding of our own desires and needs. While his verbal forms sound a bit artificial and forced, after some practise, you will be able to include the non-violent style of communication in your own relationships. After all, what is the use in conversing if not to understand each other.

complexity categories: novice

Agile Conversations: Transform Your Conversations, Transform Your Culture

( permalink )
bibliographical reference:
Squirrel, D. & Fredrick, J. (2020) Agile Conversations: Transform Your Conversations, Transform Your Culture. IT Revolution Press. isbn: 1942788975.
description:

The authors start from the premise that every organizational problem is in fact a “people problem”. Fredrick and Squirrel, hosts of the podcast Troubleshooting Agile, help the reader debug their conversations. The book is mostly targetting software professionals, though the techniques discussed are usable, and valuable, for anyone that spends most of their time working with other people.

complexity categories: intermediate niche

The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully

( permalink )
bibliographical reference:
Weinberg, G. M. (1985) The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully. Dorset House Publishing. isbn: 0932633013.
description:

Stories from the life of a consultant, with detailed descriptions of how the author came to be a consultant, and practical tips on giving advice that is (perceived as) highly valuable. Includes such gems as: “whatever your client is doing, suggest they do the opposite”, and “be sure to ask for a high fee, so you are taken more seriously”.

complexity categories: advanced niche

Behind Closed Doors: Secrets of Great Management

( permalink )
bibliographical reference:
Rothman, J. & Derby, E. (2005) Behind Closed Doors: Secrets of Great Management. The Pragmatic Bookshelf. isbn: 978-0976694021.
description:

The story of an experienced manager, brought into a company to save it. The reader follows along as “Sam” journeys through the corporate landscape, and has conversations with his direct reports. Rothman manages to convey important good management practices in an elegant, and easily diggestible way.

complexity categories: intermediate

The Art of Captivating Conversation

( permalink )
bibliographical reference:
King, P. (2020) The Art of Captivating Conversation. Skyhorse. isbn: 1510729062.
description:

King gives us the red pill outline of why we have conversations with people. Bottom line, he says, we want to get something out of the exchange. Whether this is entertainment, confort, friendship, or a more direct purpose. The author has a highly utilitairian view on the subject, aiming to help people that have difficulty with casual conversation to up their game. While cynical at times, the book offers clear, practical advice on how to be a good conversationalist.

content categories: communication goals consulting
complexity categories: novice niche

The Five Dysfunctions of a Team: A Leadership Fable

( permalink )
bibliographical reference:
Lencioni, P. (2009) The Five Dysfunctions of a Team: A Leadership Fable. Winsome Book India. isbn: 978-8126522743.
description:

You will find a plethora of books on how to build succesful teams, but you will not find many that explain what factors can break a team. By focussing on the dark side of team dynamics, Lencioni informs us of what to look out for when working with others. He explains how a lack of trust between individuals eventually cascades into a lack of overall results. A must-read book for team leaders and team members alike.

complexity categories: intermediate

Prisoners of Our Thoughts

( permalink )
bibliographical reference:
Pattakos, A. & Dundon E. (2017) Prisoners of Our Thoughts. Berrett-Koehler Publishers. isbn: 1626568804.
description:

An in depth view on the philosophy of Victor Frankl, the founder of logotherapy. The books explains how Frankl’s philosophy helped him not only endure the nazi concentration camps, but to do so without losing his sense of self. A powerful read on the strength of a persons mind, and our ability to overcome the gravest of circumstances. Frankl’s core tennet, “No one can take away my choice over my own actions”, is both thought-provoking, and empowering. The authors do a fantastic job of describing both the man himself, and his philosophy.

content categories: mindset resilience decision making
complexity categories: intermediate

Extreme Programming Explained: Embrace Change

( permalink )
bibliographical reference:
Beck, K. & Andres, C. (2004) Extreme Programming Explained: Embrace Change. Addison-Wesley. isbn: 978-0321278654.
description:

Beck describes a project methodology that focusses on the daily practices developers can use, in order to achieve results in a faster, reliable, and sustainable way. While other methodologies dive into team structure, and management, Beck and Andres decided to stick to reusable practices that can be applied in most settings. This book popularized the ideas of “Test Driven Development” and “Pair Programming”, and is a must read for any developer that is looking to increase their knowledge of project approaches and the technical practices that support them.

complexity categories: intermediate reference

The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition

( permalink )
bibliographical reference:
Brooks, F. P. Jr. (1995) The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition. Addison-Wesley Professional. isbn: 978-0201835953.
description:

Brooks blends facts and stories together in a though-provoking selection of essays. While the author mostly talks about software projects, the lessons and frustrations apply to anyone who has had the dubious pleasure of leading a team. The book challenges readers to think about the sense and non-sense of generally held maxims, and strives to re-introduce some common-sense to project management. A prime example of this, is the saying: “hiring nine women will not get you a baby in one month”.

complexity categories: intermediate reference

Automate the Boring Stuff with Python

( permalink )
bibliographical reference:
Sweigart, A. (2019) Automate the Boring Stuff with Python. No Starch Press. isbn: 1593279922.
description:

Aimed at novice programmers, and those without a formal computer science background, this book teaches you how to automate parts of your working life. Using python, the reader is first guided through some programming basics, before diving in to practical examples of automation in real-world contexts. Examples include: Automated emails, cleaning files on your machine, converting documents from one format to another, and creating excel sheets.

content categories: programming automation
complexity categories: novice

Patterns, Principles, and Practices of Domain-Driven Design

( permalink )
bibliographical reference:
Millet, S. & Tune, N. (2015) Patterns, Principles, and Practices of Domain-Driven Design. Wrox. isbn: 1118714709.
description:

Millet and Tune are some of the forerunners in the field of Domain-Driven Design, an architectural approach that aims to further allign business concepts and their technical implementation. The authors focus on the core concepts of a domain-driven system development approach, and offer practical advice to the reader on how to apply the principles and ideas in their daily endeavours. As the book dives deep into advanced concepts, it is advisable to pick this up later in your journey, after you have gained experience working on real systems.

content categories: architecture patterns communication
complexity categories: advanced reference

Design Patterns: Elements of Reusable Object-Oriented Software

( permalink )
bibliographical reference:
Gamma, A.; Helm, Rl; Johnson, R., Vlissides, J. (1994) Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional. isbn: 978-0201633610.
description:

Known as the ‘Gang of Four,’ the authors of this book have contributed significantly to the field of software development. Their work serves as a foundational text in the discipline.

In the book, they present a collection of programming structures in the form of design patterns. These patterns explain when and how to apply them, as well as their potential drawbacks. While some of the advice in the book, particularly those related to inheritance, may be considered outdated in contemporary software development, the core concepts remain relevant.

The ‘Gang of Four’ patterns provide valuable insights into addressing challenges like extensibility, maintainability, and encapsulation. They offer tried and tested approaches to structuring software, making it a valuable resource for any programmer or software engineer.

complexity categories: intermediate reference

Design It: From Programmer to Software Architect

( permalink )
bibliographical reference:
Keeling, M. (2017) Design It: From Programmer to Software Architect. The Pragmatic Bookshelf. isbn: 1680502093.
description:

In “Design It,” author Michael Keeling provides valuable insights into the essential responsibilities of a software architect. Through the lens of a hypothetical project, readers embark on a journey through various project stages. The book strikes a balance between theoretical knowledge, practical methodologies, and a profound exploration of guiding principles.

Keeling skillfully conveys the pivotal role of a software architect, highlighting their ability to bridge the gap between the business’s requirements, the technical team’s needs, and the broader operational context. “Design It” offers readers a comprehensive understanding of software architecture, making it a valuable resource for programmers aspiring to become adept software architects, as well as for experienced architects wishing to refresh their knowledge of modern techniques.

complexity categories: advanced reference

Refactoring: Improving the Design of Existing Code

( permalink )
bibliographical reference:
Fowler, M.; Beck, K.; Brant J.; Opdyke W.; Roberts D. (2012) Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional. isbn: 978-0133065268.
description:

The authors provide invaluable insights into achieving well-structured code safely, even in the context of modern Integrated Development Environments (IDEs). While the book’s examples use Java, the underlying concepts are language-agnostic. Whether you work with a programming language or a scripting language, the principles and techniques discussed here are universally applicable.

For those with an particularly strong aversion to Java, a recent edition of the book showcases the same techniques using TypeScript. Whichever edition you choose, “Refactoring” offers timeless wisdom for enhancing your code quality.

complexity categories: novice mixed reference

Driving Technical Change

( permalink )
bibliographical reference:
Ryan, T. (2019) Driving Technical Change. The Pragmatic Bookshelf. isbn: 978-1934356609.
description:

In ‘Driving Technical Change,’ the author addresses a common frustration among technologists – the challenge of persuading others to adopt their ideas for technical improvement. Ryan offers invaluable guidance on how to effectively present and package your suggestions to increase their chances of being accepted. He also highlights the importance of engaging with different types of individuals crucial for bringing your concepts to life. This book is a treasure trove of practical advice, making it an essential read for software developers with some experience. It goes beyond coding skills and shows how to expand your influence and contribute to your organization’s success.

If you are looking to take the next steps to advance your technological career, or enhance your team’s performance, ‘Driving Technical Change’ is a recommended read. It empowers you to transition from merely being a capable programmer to becoming an invaluable asset in driving your team’s overall performance."

complexity categories: intermediate

Think Faster, Talk Smarter

( permalink )
bibliographical reference:
Abrahams, M. (2023) Think Faster, Talk Smarter. S&S/Simon Element. isbn: 978-1668010303.
description:

In ‘Think Faster, Talk Smarter’, Abrahams tackles the challenge of impromptu presentations and unexpected public speaking situations. Providing a range of communication techniques, he equips readers with the skills to excel in spontaneous communication scenarios. The book delves into various message structuring methods to enhance clarity, with a central theme: ‘Prepare and organize your thoughts’. Contrary to intuition, honing your communication skills through practice enables you to confidently respond when put on the spot.

While the book caters to a broad audience, including those not aspiring to be public speakers, ‘Think Faster, Talk Smarter’ offers a wealth of practical advice and insightful tips to elevate interpersonal communication. By following Abrahams’ guidance, readers can improve their message delivery and become more engaging speakers. This book is not just about public speaking; it’s a valuable tool for anyone seeking to enhance their overall communication effectiveness.

complexity categories: beginner mixed

Drive: The Surprising Truth About What Motivates Us

( permalink )
bibliographical reference:
Pink, D. H. (2009) Drive: The Surprising Truth About What Motivates Us. Riverhead Books. isbn: 9781594488849.
description:

How do you motivate yourself, and others? Did your manager get it right by offering you the chance of promotion if you worked all weekend? Or would you have preferred a more relaxed approach, where you could work on your own projects, and have the freedom to explore, promotion be damned?
In ‘Drive’, Pink explores the science behind motivation, how it has been applied in the workplace in the past, and how the existing paradigm no longer fits the modern workforce. The books introduces the reader to the three pillars of motivation: Autonomy, Mastery, and Purpose. It then goes on to explain how these can be applied to your own situation, work or otherwise.

If you are in a leadership position, aspire to be, or are just curious about what makes people tick, this book is a must-read.

content categories: productivity motivation goals
complexity categories: novice