Skip to content

Instantly share code, notes, and snippets.

@adamghill
Created December 5, 2022 15:16
Show Gist options
  • Save adamghill/9f0079eb87c24524350df04fe4c607f3 to your computer and use it in GitHub Desktop.
Save adamghill/9f0079eb87c24524350df04fe4c607f3 to your computer and use it in GitHub Desktop.
Reading material on how to be a better software engineer?

Responses from https://news.ycombinator.com/item?id=33854815, but sans the drama and only containing books not about coding.

  • The Goal by Eli Goldratt: It is a novel about optimizing a factory, but it is immensely valuable in thinking through what are the actual constraints on your team's ability to deliver software and how do you fix it without making other things worse. The Phoenix Project is kind of a modern retelling, but I'd start with The Goal.
  • The Principles of Product Development Flow by Reinersten: Great for thinking deeply about how you deliver value through your system and the tradeoffs you are making in what you choose to focus on next. Once again it isn't specific to software, but very relevant.
  • The 5 Dysfunctions of Teams by Lencioni: Common team problems and what to do instead.
  • Influence: Science and Practice by Cialdini - How to get people into agreement so you can move forward--a skill that can be used for both good and evil.
  • The Little Schemer by Friedman and Felleisen: It is kind of hard to describe why this would be useful, but I felt it made me think more deeply about what it means to program a computer in ways that indirectly supported the topics you mentioned. Or maybe I just happened to work through it at a point in my life when I was growing in those other areas too.
  • The Effective Engineer by Edmond Lau: Covers how to focus on what you work on based on the leverage it provides you.
  • The Design of Everyday Things by Don Norman: That book changed my life. I would consider it required reading, for anyone that develops anything that will be used by other humans.
  • The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks: still relevant re: people are the key to getting things done; understand how people work together.
  • Becoming A Technical Leader by Gerald Weinberg: Jerry, working for IBM, designed the telemetry system NASA used to track early manned space flights and then spent a career helping organizations, teams, and people achieve their goals, both technical and personal. He wrote many books on the topics you mention, all of them worthwhile. I picked this one as a place to start.
  • Making Things Happen by Scott Berkun: Berkun was a successful developer and product manager at Microsoft and the book captures his reflections and research on project management.
  • Peopleware: simultaneously very insightful and very obvious. It’s also a bit of a marker in time of how software development worked. I’d say a lot has improved with remote work, at least for some companies.

  • The Mom Test: pretty helpful for honing a product mindset. I’ve fallen into the trap of writing code simply because I find it less daunting than talking to users. The Mom Test is a good reminder on priorities.

  • Staff Engineer: Leadership beyond the management track by Will Larson
  • Deep Work by Cal Newport: What you need to know from this book is that to write good software (both quality and quantity) you need to go deep. You need to fully absorb and understand the problem in your mind, BEFORE you begin writing code. And then, you need quiet undistracted time to map the thoughts in your mind, to code on paper. This process of turning a mental model in your mind, into a well designed code model, takes more focus than you think (if you want to do it well). Give yourself a quiet room with no visual distractions. Just you, and your code. Set aside a few hours. Most importantly of all - Remove the possibility in your mind, that a distraction could happen. I cannot emphasize this enough. Your mind will not go deep if, even on a subconscious level, you think a distraction could come. A text message, a spouse walking in, a co-worker asking a question, etc. These all need to be (as reasonably as possible) NOT possible so that your mind can go quiet, and you can take on the work.
  • Drive: The Surprising Truth About What Motivates Us by Daniel Pink: some of the concepts it talks about are also of interest (on how to ensure workers are motivated and I’m not talking about “the beatings will continue until morale improves” :)
  • A Philosophy of Software Design by John Ousterhout
  • The Manager's Path by Camille Fournier

  • An Elegant Puzzle by Will Larson

The Science of Storytelling - Will Storr

Influence - Robert Cialdini

Thinking Fast and Slow - Daniel Kahneman

Antifragile - Nassim Taleb

How Innovation Works - Natt Ridley

The One Thing You Need to Know - Marcus Buckingham

Team of Teams - General Stanley McChrystal

  • The Missing Readme: The Missing README fills in that gap—a distillation of workplace lessons, best practices, and engineering fundamentals that the authors have taught rookie developers at top companies for more than a decade
  • The Staff Engineer's Path by Tanya Reilly and it’s really good (so far). It’s a great thing to read at the point it sounds like you have reached, where programming a little better is no longer going to move the needle, even if you aren’t in a position to apply everything in it yet.

Assorted Non-Book Readings:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment