Clean Code: A Handbook of Agile Software Craftsmanship
Robert C. Martin
4.7 on Amazon
43 HN comments
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Martin Kleppmann
4.8 on Amazon
34 HN comments
The Pragmatic Programmer: 20th Anniversary Edition, 2nd Edition: Your Journey to Mastery
David Thomas, Andrew Hunt, et al.
4.8 on Amazon
27 HN comments
A Philosophy of Software Design
John Ousterhout
4.4 on Amazon
12 HN comments
Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture
David Kushner, Wil Wheaton, et al.
4.8 on Amazon
11 HN comments
The Unicorn Project
Gene Kim
4.6 on Amazon
8 HN comments
Game Programming Patterns
Robert Nystrom
4.8 on Amazon
8 HN comments
Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series (Fowler))
Martin Fowler
4.7 on Amazon
7 HN comments
Operating Systems: Three Easy Pieces
Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau
4.7 on Amazon
7 HN comments
Code: The Hidden Language of Computer Hardware and Software
Charles Petzold
4.6 on Amazon
7 HN comments
The Soul of A New Machine
Tracy Kidder
4.6 on Amazon
7 HN comments
Working in Public: The Making and Maintenance of Open Source Software
Nadia Eghbal
4.6 on Amazon
6 HN comments
The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
Camille Fournier
4.6 on Amazon
6 HN comments
Cracking the Coding Interview: 189 Programming Questions and Solutions
Gayle Laakmann McDowell
4.7 on Amazon
6 HN comments
Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
Robert Martin
4.7 on Amazon
5 HN comments
bwh2onJuly 9, 2021
bwh2onJune 24, 2021
bwh2onMar 31, 2021
jackofalltradesonJune 30, 2021
I've come more interested in the way I think about/produce code in the last couple of months and am searching for something that might be a good read on it - considering I'm mainly a JavaScript developer.
I find that most of the concepts of SOLID, for example, are really hard to figure out in most of the code base of the projects I've worked/see online implemented in Node for example. It might be related to my lack of knowledge and understanding of said principles though, but I've seen a youtube video (https://www.youtube.com/watch?v=CnailTcJV_U) some months ago that showed me a "clean architecture" implementation that I've never really seen in any project I've fiddled with.
nightowl_gamesonMar 21, 2021
He said something like "Why do all the game developers write code like that?".
He handed me Uncle Bob's Clean Architecture. Uncle Bob is something of a meme to me. I read the book and couldn't figure out how to explain how I thought this style was inferior to what I had done in games before.
Ive been thinking about that ever since it happened. How could I explain to this guy my programming philosophy?
Last night, back in games, after refactoring the same piece of layout code for several hours, I finally arrived at the irreducible, simple, clean result that I wanted. I slotted it into our code base, and mentally noted how I would onboard the team to it on Monday, and how they would instantly understand because the resultant code is so simple. Then it came to me:
"Unit Tests are like pouring concrete on your code base."
Same goes for using "the wrong abstraction". Sometimes you want concrete to encase your precious technology. The problem is when people are writing sub par code, then they pour all this concrete on it via Unit Tests, Inheritance and Abstraction Patterns. It can become harder to improve the core logic of the system if it's distributed across many files, and enshrined in Unit Tests.
I've dedicated over 10 years to coding, and only now do I think I can write clean code that is worth encasing in concrete. I think there might be a general flaw in the idea that everyone should be writing tests. I'm not certain about this, it's just my general intuition based on my experience.
They are pros and cons to every design decision. I acknowledge that they are many pros to these kinds of designs, I'm just enumerating some cons that have arisen from my experience.