This question pops up on every form of media out there. "What books should I read to be a better developer?". I've answered this a ton of times. On Twitter, on Dev.To, Reddit, and everywhere else.
I figured it might be a good idea to put the list in a single post I can always link to.
Note: I am using Amazon affiliate links where I link to the books.
While this book might be considered quite old at this point, it's still very much on point when it comes to creating maintainable code. Some of its principles I no longer agree with but it really drives the importance of planning out code and writing it so that it's much easier to maintain in the future. A few bits that still stick with me:
- if a function has more than 2-3 arguments, split it up. That's way too many arguments
- keep functions short, easy to understand, and focused on a single goal
- test driven development
- use meaningful names
There's so much more to learn from the book and it has become a staple among programmer.
If you don't feel like reading it or can't/won't pay for a copy, look up the book title and you'll find plenty of videos and articles of people discussing the various important parts of the book
I'm still about halfway through this book. This book is amazing for anyone starting out a career in development -- and anyone well into it. I found it shows and explains various scenarios you'd find in the real world and then it discusses strategies to tackle them. It features tons of ideas about how to keep your code clearly separated, how to think about concurrency, how to address code that needs to clean itself up, and so on.
Probably my favorite part of the book is the discussion around what "prototypes" are for, how to use them, and so on. And then it discusses the idea of a "tracer bullet" (which I've discussed in my post My Experience Running Development At A Startup) and totally won me over and changed how I do development.
Before I get into it, you might be thinking, but why game programming? I'm a web developer and this book is just as relevant to web devs as it is for game devs. This book is by far the best resource I've found that discusses common (and well-known) programming patterns -- from their advantages, to their drawbacks, trade-offs, and their details. All neatly written to be easy to understand.
There are quite a few that I absolutely recommend reading about:
- Object pool
- Dirty Flag
- Singleton -- because that's how your node imports work!
I also suggest reading the
game loop and
update method patterns if you're into gaming.
This might seem off-beat but despite being a non-programming book, I found it extremely useful in terms of communication and applying empathy to my work. Not only that, but I found it useful in my interactions with my teammates and my other co-workers. It covers a few key concepts:
- how to ensure both parties are in full understanding of a concept
- applying empathy in stressful situations
- value of honesty
- value of expressing your own needs
All of those have been key in my career in one way or another. Here's a dirty secret: my own team focused on communication with each other and with our manager heavily. Improved communication lead to greater job satisfaction (personally) but it also lead to better code, feature releases, better conversations around development roadmaps, and so much more. We didn't use NVC but we did make big changes into how we're organized
I have a stack of books in my GoodReads that I want to read, and even a longer stack of books I keep in my head. I can't personally vouch for these but I do see these come up over and over again on Twitter, here, and elsewhere:
A book that made waves when it dropped, CSS Secrets by Lea Verou is a book focusing on techniques and tips and programmatic solutions to your CSS problems and how to practically write CSS. If you're not sure this is for you, check out one of her many talks.
Refactoring UI by Adam Wathan and Steve Shoger has been making rounds on my radar and I think it's a worthwhile book to look into. I haven't personally had time to check it out but I've heard of Adam's courses that people love and I have closely followed the development of Tailwind CSS which is his CSS framework.
Single Responsibility Principle (or SRP) is one of the most important concepts in software development. The main idea of this concept is: all pieces of software must have only a single responsibility.