I have no official background in computer science or a related field. I do have a master’s in political science and a bachelor’s in nursing, specialized in intensive care. So every now and then I get the question: how did you get where you are now?

Part of that is hard work, study, getting to know concepts, and getting a lucky break every now and then (we all need someone who believes in your capabilities and gives you a chance). But a significant part of my journey has been shaped by the books I’ve read over the years—books that helped me gain not just knowledge, but most importantly, understanding.

I was looking at one of my bookshelves recently and thought it would be nice to list them. And also the books that are waiting to be read (my ereader was broken, but I have a new one, so these finally can be read).

Programming Languages & Frameworks

Automate the Boring Stuff with Python by Al Sweigart

Teaches practical Python programming for automating tasks. Covers writing programs that perform repetitive work, with no prior coding experience required. Starts with really easy examples and is a great first step.

Beyond the Basic Stuff with Python by Al Sweigart

Bridges the gap between basic Python scripts and professional software development. Covers best practices, development environment setup, code organization, and performance measurement. The sequel to the book above.

Python Tricks: A Buffet of Awesome Python Features by Dan Bader

Demonstrates Python best practices through simple examples. Covers patterns and techniques for writing more Pythonic code. Great starter book.

The Hitchhiker’s Guide to Python by Kenneth Reitz and Tanya Schlusser

Focuses on design philosophy and points to existing resources. Covers installation, configuration, and daily usage best practices. Written collaboratively by over a hundred Python community members. Gives some deeper insights in Python and the ideas it encompasses.

Flask Web Development by Miguel Grinberg

Teaches Flask web development by building a complete social blogging application. Covers templates, databases, web forms, email support, authentication, roles, and web APIs. The second edition is updated for Python 3. This was one of the first books that helped me build simple websites. After that I stopped using Flask all together and mainly used NextJS or Svelte for frontend and Fastapi for backend.

The Rust Programming Language by Steve Klabnik and Carol Nichols

The official Rust book, freely available online at https://doc.rust-lang.org/book/. Covers ownership, lifetimes, traits, and concurrent programming. Combines concept chapters with hands-on projects for learning systems programming with Rust. I have started learning Rust a while ago and this book really helped. Now I wait for a project I can apply it in, to deepen my understanding.

Real-World Next.js by Michele Riva

A practical guide to building scalable applications using the Next.js React framework. Nice book to get started, the version I have is really outdated however.

Software Design

Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin

Focuses on writing code that is easily understood by all team members. Covers principles and practices for creating maintainable, clean code. One of the all time ‘must reads’. It’s worth approaching the concepts in this book critically.

A Philosophy of Software Design by John Ousterhout

Addresses managing complexity in software design. Covers concepts like deep versus shallow modules and the “design it twice” approach. Interesting book that makes you look critical about how to approach designing modules.

Tidy First?: A Personal Exercise in Empirical Software Design by Kent Beck

Explores when to refactor code before making changes. Breaks down 15 small refactorings and discusses timing and application using concepts like time value of money and optionality. Learned from this to be critical on where and when to refactor. I learned that refactoring for its own sake—or just having ‘nice code’—isn’t enough.

The Pragmatic Programmer: Your Journey to Mastery by David Thomas and Andrew Hunt

A collection of practical tips for improving the development process. The 20th Anniversary Edition (2019) updates classic advice with modern insights. Introduces concepts like DRY (Don’t Repeat Yourself). Nice book to read: really helpful to shape the way to think about code and programming.

Systems Thinking

Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister

A 1987 book arguing that the major issues in software development are human, not technical. Focuses on team dynamics, communication, and human factors in software projects. An oldie: but was important at the time and helped shaped ideas that came after.

The DevOps Handbook by Gene Kim, Jez Humble, Patrick Debois, John Willis, and Nicole Forsgren

Shows how high-performing organizations deploy code frequently. Covers culture, collaboration, and continuous improvement. Useful book, after a few chapters the point is clear, so gets a bit boring in the end.

The Phoenix Project by Gene Kim, Kevin Behr, and George Spafford

A business novel about IT transformation that introduces DevOps concepts through the story of a struggling project. Nice to read.

The Unicorn Project by Gene Kim

A companion novel focusing on developers and the Five Ideals of software development. Another nice to read!

Architecture and Scale

Designing Data-Intensive Applications by Martin Kleppmann

Examines trade-offs in data storage and processing around consistency, scalability, fault tolerance, and complexity. A second edition is expected in 2026. Very useful.

Understanding Distributed Systems by Roberto Vitillo

Covers communication, coordination, consistency, transactions, and failures in distributed systems. Written based on experience building systems that scale to millions of requests per second.

Monolith to Microservices by Sam Newman

Details methods for transitioning from monolithic systems to microservice architectures. Provides patterns and techniques for gradual migration with real-world case studies. Great book: practical and to the point.

Software Architecture in Practice by Len Bass, Paul Clements, and Rick Kazman

Covers modern software architecture including cloud, machine learning, energy efficiency, and safety. Explains what software architecture is and how to design and evolve it. Interesting book: takes some time to get through, I take it a little bit at a time.

System Design and Interviews

System Design Interview – An Insider’s Guide by Alex Xu

Teaches how to decompose complex systems into implementable modules. Covers system design thinking at scale with practical insights from experience at Twitter, Apple, and Zynga. Great book to gain insight on a practical (starters) level in a lot of aspects of what makes a system tick.

Cracking the Coding Interview by Gayle Laakmann McDowell

The 6th edition contains 189 programming interview questions collected from Google, Microsoft, and Apple. Teaches problem-solving techniques and covers core computer science concepts. Nice overview of concepts that might be helpful, in practice not very helpful, a lot of these problems you’ll not solve yourselves but instead use a library or method that already does it for you.

Specialized Topics

Crafting Interpreters by Robert Nystrom

Teaches how to build a programming language from scratch, starting from main(). Covers syntax, dynamic typing, garbage collection, and more. Available free online at craftinginterpreters.com. Quite advanced: still reading this, little bit at a time.

Building LLMs for Production by Louis-François Bouchard and Louie Peters

Covers enhancing LLMs through prompt engineering, fine-tuning, and RAG (Retrieval-Augmented Generation). Written by experts from Towards AI, Activeloop, LlamaIndex, and Mila. Very useful: the changes in the LLM/AI field are great, this helps with the basic concepts and is a great intro to the field.

CSS: The Definitive Guide by Eric A. Meyer and Estelle Weyl

The 5th edition covers CSS layout, animations, borders, backgrounds, and styling techniques. A comprehensive reference for CSS fundamentals. More of a reference work with all the tips and tricks I did not know. Really thick.

Beautiful Code edited by Andy Oram and Greg Wilson

An anthology of 33 chapters where leading programmers explain their thinking and approach to code.

Process and Practice

Fast Solo Development by Thomas Mannigel

A step-wise method for single-programmer projects. Based on four decades of building 100+ applications for Fortune 500 companies with a 94% success rate. Really useful if you work alone or in a small team.

And Many More…

Beyond these books, I’ve read and watched a lot of technical documentation, blog posts, and tutorials. I basically read whatever was relevant to the project I was working on, plus some more common problems, ideas, and concepts. The key wasn’t just reading—it was applying what I learned to real projects, making mistakes, and iterating.

The Journey Continues

I’m still learning everyday (and given the field learning will be the only constant). Technology changes constantly, and there’s always another book to read, another concept to master. But these books were a source of inspiration and knowledge that helped me on my journey in a new field.

If you’re on a similar journey—coming from whatever background—don’t let the lack of a CS degree hold you back. The knowledge is out there, often freely available. What matters is curiosity, persistence, and the willingness to put in the work.

And yes, you’ll need lucky breaks and people who believe in you. But you increase your odds by building real knowledge and understanding. These books helped me do that. Maybe they’ll help you too.

Related: Check out my reading list for the rest of 2025 (and probably 2026) to see what I’m planning to read next.


What books have shaped your journey into software engineering? I’d love to hear about resources that helped you, especially if you also came from a non-traditional background. Feel free to reach out and share your story.