Just like @stephangalea
said, You start to give more thought about your code, optimisation wise. I've studied Electronic Engineering so I know how the lowest levels (Transistor and Logic Circuit) work. But when you know the whole stack, how things work from the basic elements (transistor) to your code and all the intermediary levels, you will have a more complete understanding of what possible or not and go from there to inventing your own solutions.
Head of Product at Temporal. Previously lead architect and low-level systems programmer for scale out SaaS offering. Game engine developer, ML engineering expert. DMs open on Twitter.
you will have a more complete understanding of what possible or not and go from there to inventing your own solutions.
That's a unique point that I haven't seen anyone else raise. I definitely agree that having a more end-to-end understanding helps you avoid "reinventing the wheel". Thanks for that perspective!
Head of Product at Temporal. Previously lead architect and low-level systems programmer for scale out SaaS offering. Game engine developer, ML engineering expert. DMs open on Twitter.
It's a hard question because a lot of what I gained from the book isn't a direct "skill" but instead a deep understanding.
There are obvious places where direct information from the book helped me, such as designing my game engine. What the book taught me about CPU caching really inspired me to learn more about how the cache works. This eventually led to a partial rewrite of my engine, as I had learned about entity-component pattern because of it's cache friendliness. I could list countless situations like these, and from other work projects (such as implementing high performance AI algorithms).
Outside of high performance computing, this book taught me a lot about basic programming patterns and the intricacies of branch prediction. Those are both incredibly relevant concepts, no matter what language you're working in.
When you know how computer work internally you start appreciating and give more importance to code optimisation and resource management. Understand why Cyclomatic complexity exists. Why a computer cannot be sure if a program is stuck (Halting problem) so no you can't solve that ever, you can only take a guess that it may be stuck. Just to name a few.
Head of Product at Temporal. Previously lead architect and low-level systems programmer for scale out SaaS offering. Game engine developer, ML engineering expert. DMs open on Twitter.
When you know how computer work internally you start appreciating and give more importance to code optimisation and resource management.
You're absolutely right, it's a very hard phenomena to describe to outsiders. Reading books like this one really just gives you an underlying "love" for how things work.
http://perpetual.education is a design/programming school. We like to be part of the discussion over here at Dev.to / We have time-slots for free conversations for career advice IRL : )
BUT! - does that make it The Best Book to Read as a (WEB) Developer ??? "Software" is a huge field... but if seems like most of the talk around here is for 'web' stuff.
No matter how well it explains hardware: it's seems like there's at least 20 more important books that a dev should read - for the sake of our future.
http://perpetual.education is a design/programming school. We like to be part of the discussion over here at Dev.to / We have time-slots for free conversations for career advice IRL : )
Checkout out this talk from Scott Meyers on CPU caches. By knowing how the computer uses and access the cache you can write code that takes advantage of this and refactor existing code to be more efficient! For me it was rare to write such code in practice but it's nice to know.
Head of Product at Temporal. Previously lead architect and low-level systems programmer for scale out SaaS offering. Game engine developer, ML engineering expert. DMs open on Twitter.
Thanks, Ryland.
You make this book sound really informative in a good way.
Could you give one example of how understanding the inside of a computer has enhanced your software skills/thinking?
Look forward to reading this.
Just like @stephangalea said, You start to give more thought about your code, optimisation wise. I've studied Electronic Engineering so I know how the lowest levels (Transistor and Logic Circuit) work. But when you know the whole stack, how things work from the basic elements (transistor) to your code and all the intermediary levels, you will have a more complete understanding of what possible or not and go from there to inventing your own solutions.
That's a unique point that I haven't seen anyone else raise. I definitely agree that having a more end-to-end understanding helps you avoid "reinventing the wheel". Thanks for that perspective!
Sorry for the late reply!
It's a hard question because a lot of what I gained from the book isn't a direct "skill" but instead a deep understanding.
There are obvious places where direct information from the book helped me, such as designing my game engine. What the book taught me about CPU caching really inspired me to learn more about how the cache works. This eventually led to a partial rewrite of my engine, as I had learned about entity-component pattern because of it's cache friendliness. I could list countless situations like these, and from other work projects (such as implementing high performance AI algorithms).
Outside of high performance computing, this book taught me a lot about basic programming patterns and the intricacies of branch prediction. Those are both incredibly relevant concepts, no matter what language you're working in.
When you know how computer work internally you start appreciating and give more importance to code optimisation and resource management. Understand why Cyclomatic complexity exists. Why a computer cannot be sure if a program is stuck (Halting problem) so no you can't solve that ever, you can only take a guess that it may be stuck. Just to name a few.
You're absolutely right, it's a very hard phenomena to describe to outsiders. Reading books like this one really just gives you an underlying "love" for how things work.
This is cool. We just ordered it.
BUT! - does that make it The Best Book to Read as a (WEB) Developer ??? "Software" is a huge field... but if seems like most of the talk around here is for 'web' stuff.
No matter how well it explains hardware: it's seems like there's at least 20 more important books that a dev should read - for the sake of our future.
It just came in the mail! Excited to check it out.
Hey Eduardo!
Checkout out this talk from Scott Meyers on CPU caches. By knowing how the computer uses and access the cache you can write code that takes advantage of this and refactor existing code to be more efficient! For me it was rare to write such code in practice but it's nice to know.
youtube.com/watch?v=WDIkqP4JbkE
What a great resouce!
Wow... Thanks, Denis.
Scott Meyer is such a great lecturer.
I didn't fully understand most of the concepts, but his easy to follow flow kept me engaged.
This video gave me a better 'picture' of how one might take advantage of their understanding of the computer hardware in some software cases.
Thanks again, Denis.