DEV Community

Cover image for The Best Book to Read as a Developer

The Best Book to Read as a Developer

Ryland G on July 02, 2019

I was able to determine that the book is now open sourced, here is a pdf available online. If it's between reading the book and reading my post, re...
Collapse
 
eduardo__uribe profile image
Eduardo Uribe

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.

Collapse
 
stephangalea profile image
Stephan Galea

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.

Collapse
 
taillogs profile image
Ryland G

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.

Thread Thread
 
perpetual_education profile image
perpetual . education

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.

Thread Thread
 
perpetual_education profile image
perpetual . education

It just came in the mail! Excited to check it out.

Collapse
 
skydevht profile image
Holy-Elie Scaïde

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.

Collapse
 
taillogs profile image
Ryland G

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!

Collapse
 
nuculabs_dev profile image
Nucu Labs

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

Collapse
 
eduardo__uribe profile image
Eduardo Uribe

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.

Collapse
 
taillogs profile image
Ryland G

What a great resouce!

Collapse
 
taillogs profile image
Ryland G

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.

Collapse
 
josecabana profile image
José Cabana

"software is just a hardware abstraction" 🤯

Collapse
 
taillogs profile image
Ryland G

And with the popularity of FPGA's rising, things become even more inception.

Collapse
 
tikal profile image
Paul Soares

Another great read to understand the machine is CODE by Charles Petzold

Collapse
 
danoswalt profile image
Dan Oswalt

Yes. This is exactly what I was going to say. Great book, probably quite similar, it continually sucks you in like a novel and you don't even realize you're deep in the weeds of some hardware abstraction...

Collapse
 
shano profile image
Shane Dowling

I literally Crtl-F'ed Petzold, it's exactly what I would suggest. It covered a lot of what I learned in college but in a much more user-friendly readable way. I wish I'd read it before I entered universities doors to be honest.

Collapse
 
tikal profile image
Paul Soares

Ahah could have written the same comment. I now suggest people interested in CS or juniors to read CODE, they'll get the stronger foundations everyone should have, as early as possible.

Collapse
 
taillogs profile image
Ryland G

CODE is a wonderful book, thanks for adding that to the discussion.

Collapse
 
keithsthompson profile image
Keith Thompson

Is that free PDF copy legitimate? I know the author is going to open-source the 2nd edition, but the PDF copy of the 1st seems to be on an unrelated site, and the copyright page doesn't say anything about it being released as open source.

I've posted a comment on the author's site, and I'll update here when/if I hear back.

Collapse
 
taillogs profile image
Ryland G

I'm pretty sure the author is ok with it

twitter.com/jonst0kes/status/11460...

Collapse
 
kbluescode profile image
Kevin Blues

Not to be a buzzkill, but being excited about an article still isn't consent to give out their work for free. If the book is as influential and useful as you say, kicking some money (seeing it as $40 CAD) towards it is a good habit.

Support the people who do good work 🙂

Thread Thread
 
taillogs profile image
Ryland G

I've purchased at least 10 copies of this book (definitely not at $40 each, not sure where that's quoted). The author is fully aware of the content in my article.

Thanks for fighting for the content creator!

Collapse
 
melot profile image
Theo Melo

Which HBO series?

Collapse
 
taillogs profile image
Ryland G

Sorry! That was meant to be a joke. There's not really an HBO series.

Collapse
 
mrxinu profile image
Steve Klassen (They/Them)

I had to think about it for a minute too before I realized it was a joke. :)

Collapse
 
melot profile image
Theo Melo

Oh no, I wish we had one though lol

Thread Thread
 
taillogs profile image
Ryland G

Me too. Try "Halt and Catch Fire", not about microprocessors exactly, as close as you'll get.

Collapse
 
ambroselittle profile image
Ambrose Little

I noticed the book was published in 2006. I can't help but think about progress in hardware since then. But I don't know enough about hardware to know if that progress impacts the overall utility of the book. I suppose based on the positive review here and elsewhere, probably not much.

Any thoughts on this consideration?

Collapse
 
taillogs profile image
Ryland G

It's a funny situation, in some ways, we've progressed a lot since 2006. But in terms of the underlying mechanisms, much is unchanged.

I'm not saying hardware isn't improving btw, just not fundamentally like it was in the late 90's-early 2000's. Branch prediction is much better and they add a ton of extra instructions to chipset. Part of what "Inside the Machine" covers, is the "4 GHz race". This is where Intel and AMD duked it out trying to be the first with a 4GHz clock. What they ended up finding out (this is early 2000's), is that clocks over 4GHz tend to melt. This discovery changed the landscape quite a bit, because instead of just trying to add more transistors and increase clock cycles, they actually had to find new areas to improve.

That event, in combination with a cultural shift towards mobile technologies has had a very noticeable effect on microprocessor development. Intel focuses more on ways to save power, and improve task parallelism, as opposed to increase clock speeds and raw processor power.

I would say the bigger changes to hardware are what's happening outside of traditional processors. FPGA's and ASIC's are a real force these days, and Nvidia is obviously killing Intel in terms of recent GPU stuff. Overall I think the book is still 95% as useful as it was when I read it.

Collapse
 
ambroselittle profile image
Ambrose Little

Really appreciate your insights! Just wanted to make sure I wouldn't invest too much time to be learning stuff that is/would be soon outdated. Thanks for both write ups!

Collapse
 
roblav96 profile image
Robert Laverty

I highly disagree with this headline. I've been building apps for ~10 years and not once have I needed to know what a CPU L2 cache is. Put your time towards real-world encounters, yourprimer.com/

Collapse
 
richardcochrane profile image
Richard Cochrane

Hi Robert, there's a difference between saying that a book won't help you and reading it and saying it didn't. Sometimes things we read change our understanding in ways that we don't expect and that sounds more like what Ryland is saying you can expect from reading this book. I've been developing for almost 20 years and while I've never read this book, I have read other books that each contribute to my general understanding. I've also heard many people express sentiment like all developers should learn to code on C so that they gain a proper understanding of memory management. While i have never learned C, I can appreciate that a better understanding of memory management would help my development in Python. My point is really just that the book deserves consideration.

Collapse
 
roblav96 profile image
Robert Laverty

I honestly can't argue that, my dad's been bugging me to read a book on R, but with a strictly JavaScript background (full stack), I just haven't been able to stomach the read. 😐

I have been dabbling into Rust recently which has certainly introduced me to different paradigms, I even started writing my JS more organized.

Thank you for your input friend, appreciate it! 🤗

Thread Thread
 
richardcochrane profile image
Richard Cochrane

My pleasure. A fiction book that I'd recommend is Bicentennial Man by Isaac Asimov. I won't give any spoilers but one thing it highlights is that we become resistant to change as we get older and while I'm pretty open to new things (at least, that's how I think of myself compared to my parents and other non-tech people my age) I nevertheless find myself acting more like the old person not trusting this "new fangled" technology than I ever thought I would. Internet of Things... meh... I'm concerned with the dangers of letting a dev (and his bug) ruin my toaster! AI... Terminator should end all discussion of that. Big Data - big brother is watching. So I find myself having to overcome a natural suspicion as I get older but I'm also not sure whether it's just because I've been in the industry longer so I know how things can go wrong or just my 40 years of age showing. I think a certain amount of time in dev shows you fads coming and going and you tend to want to sit out the first round while the fanboys and girls prove whether it will last. Right now, I'm happy that containerisation is going to stay and learning Docker is my new mountain to climb :-) Good luck with your own journey in learning Robert!

Collapse
 
taillogs profile image
Ryland G

Similarly, studying computer architecture and processor design allows you to develop intuition about the behavior of processes implemented by the hardware you're using, how they work as abstract resources, what data you're supplying to them as a programmer and by extension allows you to "think" in hardware, which leads to more contextually appropriate code both in general and on a target-specific basis.

This is a great answer (better than mine). Intuition is one of the most fundamental aspects of programming but also the most neglected.

I would say that outside of the abstract value you've communicated, there can also be direct value from the book, depending on your context. If you ever plan on writing C/C++ code professionally, this book will be immensely valuable.

Thanks for leaving such a great insight!

Collapse
 
codingmindfully profile image
Daragh Byrne

I didn't take a CS or Software Engineering degree, it was physics all the way through, where coding was essential and incidental at the same time. I did take a master in HPC, where they taught us a LOT about processors, including some of the concepts above (especially pipelining and caching). When I eventually stumbled into a career as a programmer, these concepts were invaluable.

Will look forward to reading this. Thanks for the post.

Collapse
 
taillogs profile image
Ryland G

I think that this book is a lot more "practical" as opposed to traditional books used in the CS curriculum. I know that I learned a lot of "related" stuff in college, but none of it ever seemed relevant like the information in this book.

Thanks for the great comment!

Collapse
 
chandragie profile image
chandragie

I am programmer who was self taught by working experiences, and didn't have good reading of books except project tutorials.
Though when I know my code works logically, I'm blind what happened with those peripherals inside the computer.
I'll make this book as a good reading! Thank you for this great post!

Collapse
 
taillogs profile image
Ryland G

Though when I know my code works logically, I'm blind what happened with those peripherals inside the computer.
I'll make this book as a good reading! Thank you for this great post!

I'm also self-taught. This sounds like the perfect book for you!

Collapse
 
mapleinc01 profile image
Maple Inc

Great post. Articles that have meaningful and are more enjoyable, at least to me. It’s interesting to read. We are providing opportunity to students where they can gain from their education overseas.

Collapse
 
taillogs profile image
Ryland G

Thanks for the kind words.

Collapse
 
fabiofcferreira profile image
Fábio Ferreira

Thank you so much for your share.

I'm really looking forward to reading this book as a self-taught 17 year old full-stack engineer.
To be honest, through all my journey I've felt many many times that understand what's going on in the low-level helps you a WHOLE LOT in more high level stuff like JS or Python.

Thank you SO MUCH for this book and this article.

Collapse
 
taillogs profile image
Ryland G

First off, you're very welcome.

I'm really looking forward to reading this book as a self-taught 17 year old full-stack engineer.
To be honest, through all my journey I've felt many many times that understand what's going on in the low-level helps you a WHOLE LOT in more high level stuff like JS or Python.

This is the best time to start learning this stuff. If you master it now, you'll have that knowledge to compound (like interest) for way more years than most do. That gives you an advantage, trust me.

Glad you liked the post!

Collapse
 
localhost4484 profile image
Ohm

I'm a computer engineering student. That's all contents I've studied from it but deeper. Make me think back to the old day. Thanks

Collapse
 
taillogs profile image
Ryland G

Np! Glad you liked it.

Collapse
 
localhost4484 profile image
Ohm • Edited

Definitely! That is what take me understand how computer works and useful when coding independent any programming languages.

Collapse
 
elifiner profile image
Eli Finer

Randomly landed on this page from a DEV summary in the email which I never look at. And look who I find here telling people to learn more about hardware? :)

Hope you guys are doing well and making a killing.

Collapse
 
tomaszs2 profile image
Tom Smykowski

Hello, recently I have published card decks for young people to learn Javascript and Python. Would you be able to share the information? summonthejson.com/products/summon-...

Collapse
 
jordybaylac profile image
Jordy Baylac

Well, thanks for sharing, I also have one that I consider amazing:

Computer Systems: A Programmer's Perspective (3rd Edition)

I dont think there is a free copy, but this is a link to the book on amazon amazon.com/Computer-Systems-Progra...

Collapse
 
dansouza profile image
dansouza

I think you'll love "Computer Systems: A Programmer's Perspective" for the same reasons!

Collapse
 
taillogs profile image
Ryland G

Bookmarked, thanks for the rec.

Collapse
 
ben__web profile image
Ben Web

Have ordered a copy on your recommendation Ryland - wish me luck!

Collapse
 
taillogs profile image
Ryland G

Luck wished, you won't need it. Let me know what you think!

Collapse
 
ssimontis profile image
Scott Simontis

There is a professor at UT Austin, Jonathan Volvano. He makes amazing introductory textbooks about embedded machines. Here is his personal page, if you found the HW fascinating he does a great job of getting you acquainted with the ARM Cortex M platform, which is pretty complicated. He is all about project-based learning. The man loves what he does and you can tell.

Collapse
 
veebuv profile image
Vaibhav Namburi

Pumping quality out every day, love it mate!

Cheering you on!

Collapse
 
taillogs profile image
Ryland G

Thank you man! Appreciated,

Collapse
 
llotz profile image
Lukas Lotz

AAAAAAAAAAAAND IT'S BOOKMARKED.

Collapse
 
diogoppedro profile image
Diogo Pacheco Pedro

Getting that book right away. :) sounds awesome!!

thanks for taking the time to write this up for us all.

Collapse
 
taillogs profile image
Ryland G

You're very welcome. Let me know how you end up liking the book.

Collapse
 
prsanjay profile image
Sanjay Prajapati

Thanks for sharing it.

Collapse
 
bhupesh profile image
Bhupesh Varshney 👾 • Edited

Will definitely read it

CleanCode is really affecting me
I guess i choose the write time to read it ✔️

Collapse
 
taillogs profile image
Ryland G

CleanCode is one of those books that everyone recommends but I didn't really enjoy that much. It's obviously just me though because everyone else on the planet obviously loves that book.

Collapse
 
bhupesh profile image
Bhupesh Varshney 👾

Haha
actually it's fine I have seen people who do not agree with Uncle Bob
as long as one's writing maintainable code.

Collapse
 
taillogs profile image
Ryland G

When I was in school, classes on computer architecture, digital electronics fundamentals etc were mandatory for a CS degree. Certainly never regretted it.

Yup, and think about if instead of dense, unappealing textbooks the information had come in a super appealing format. This book bridges the type of gap that's very hard to bridge.

Collapse
 
aormsby profile image
Adam Ormsby

Hey, I looked into the Github release a bit, and I'm not sure it's going anywhere. Chapters 1 and 2 were released 4 years ago, but there doesn't seem to have been any progress beyond. A deeper search into the project might reveal progress elsewhere, but I wouldn't count on getting that second version.

That said, I'm thrilled to have access to the PDF you linked, and I really look forward to reading it. I'm sure it's still valuable in its original form. Thanks for sharing. :)

Collapse
 
donnisnoni profile image
Don Alfons Nisnoni

Great !!! I have same principle with you... i know we are software developers, but its like we must to know what happening under the hood of our software... if you know... then you will write better program...

Collapse
 
awwsmm profile image
Andrew (he/him)

Thanks for the suggestion! This book looks really interesting.

Collapse
 
taillogs profile image
Ryland G

Np! The book is pure gold.

Collapse
 
beznet profile image
Bennett Dungan • Edited

This sounds great. I too am not keen on learning from textbooks for code but I might have to check this one out.

Collapse
 
taillogs profile image
Ryland G

You should. It's 100% worth it.

Collapse
 
genta profile image
Fabio Russo

Just sent my order for the book... thanks a lot, I'll read It for sure!

Collapse
 
taillogs profile image
Ryland G

Np, let me know how it goes.

Collapse
 
bharatdodia25 profile image
bharatdodia25

Hey,

Could you please recommend something for beginners.

Thank You

Collapse
 
taillogs profile image
Ryland G

Sure, but this book is pretty good for beginners. I will get back to you

Collapse
 
mrxinu profile image
Steve Klassen (They/Them)

Great article! Really enjoyed it and recommended it to a few folks already.

Collapse
 
taillogs profile image
Ryland G

That makes me happy to hear. Glad you got value out of it!

Collapse
 
fhammerschmidt profile image
Florian Hammerschmidt

Great post!

Is there any ePub/mobi format available, too?

Collapse
 
taillogs profile image
Ryland G

Thanks, and unsure. But it's a PDF so you can transfer it.

Collapse
 
lucastamoios profile image
Lucas Almeida Aguiar

Just thank you.

Collapse
 
ketoaustin profile image
Hannah (she/her)

I’ve been looking for a book that will teach me more about hardware - I’ll definitely check this out. You sold me on the illustrations. 🤓

Collapse
 
taillogs profile image
Ryland G

Glad to hear it, let me know how it goes.

Collapse
 
tdiluzio profile image
Terry Di luzio

Thank you very much for sharing Ryland

Collapse
 
taillogs profile image
Ryland G

Anytime!

Collapse
 
nikola profile image
Nikola Brežnjak

Thanks, I'll recommend this for our next book club.

Collapse
 
taillogs profile image
Ryland G

I think it would be a great choice for a book club, great idea.

Collapse
 
accel33 profile image
Accel Maeshiro • Edited

This was an amazing post. It got me hype about actually get some hardware foundation from this book. Thanks man, you prepared me for the next step.

Collapse
 
taillogs profile image
Ryland G

It got me hype about actually get some hardware foundation from this book. Thanks man, you prepared me for the next step.

Glad to hear it, although don't say I've prepared you until you finish the book :)

Collapse
 
dylanesque profile image
Michael Caveney

This seems like a deep cut, really nice find!

Collapse
 
taillogs profile image
Ryland G

It's a great book, couldn't recommend more.

Collapse
 
bye_patricia13 profile image
Patricia

Thank you for this!

Collapse
 
taillogs profile image
Ryland G

Np

Collapse
 
pranoliver profile image
Prasanna Kumar

Very nice article and very useful. I will try to introduce this book to my kids for sure.

Collapse
 
taillogs profile image
Ryland G

I think it's as kid friendly as a book about microprocessors can be. Glad you liked the article, the fact that you described it as "useful" really made me happy.

Collapse
 
taillogs profile image
Ryland G

Glad to hear it!

Collapse
 
mirozar profile image
Mirozar

Thanks for writing this article but I have to say, it's definitely not the 'best' book a developer should read. For some developers this will be a waste of time and unnecessary headache.

Collapse
 
nuculabs_dev profile image
Nucu Labs

Hey Ryan!

Thanks a lot for writing this article, I see that the book is not that long, I'm definitely going to read it in the near future!

Collapse
 
taillogs profile image
Ryland G

You should, let me know how it goes.

Collapse
 
karataev profile image
Eugene Karataev

This book is what I've been looking for!

Collapse
 
taillogs profile image
Ryland G

Glad to hear!

Collapse
 
anupam profile image
Anupam Singh

I also found a lecture series of Bharat Acharya, he explained microprocessor very well : youtube.com/watch?v=Xl2nWDcy0To

Collapse
 
laviku profile image
Lavinia

Great! I'm going to add this to my soon to read list, I really like to read books but I don't usually read books related to IT, but I've been adding some to my list, thank you for sharing!

Collapse
 
muryan777 profile image
muryan777 • Edited

Hey, that's a great article. May I post it on my site?

UPD: mindepcasinos.com/ here is the site. Let me know, It would be vey useful

Collapse
 
taillogs profile image
Ryland G

It is a great book. Everyone could benefit from knowing at least a little about hardware.

Collapse
 
ketoaustin profile image
Hannah (she/her)

If it was published in 2007, do you think any of the info is out of date?