DEV Community

Cover image for The Best Book to Read as a Developer
Ryland G
Ryland G

Posted on • Originally published at cdevn.com

The Best Book to Read as a Developer

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, read the book.

One of the best choices I ever made as a software developer was to read "Inside the Machine", a book that's almost entirely about hardware. As someone who is allergic to "textbooks", this book is an oasis in a sea of poorly worded, misguided attempts at explaining hardware to software developers.

Inside the Machine covers nearly the entire spectrum of the software/hardware relationship. The book starts, by introducing you to incredibly primitive constructs of micro-processors, such as an ALU. By the end, you will be learning and understanding incredibly complex microprocessor design and architecture.

Fun Fact: Inside the Machine is written by Jon Stokes, founder of Ars Technica and briefly editor of Wired!

Why This Book?

It's Straightforward

This book cuts the bullshit. The information is presented with the minimum amount of fluff to make it digestible. It's also incredibly consistent and uses a few base analogies to explain almost every concept. Inside the Machine, does what every great instructional book should do, cater to the reader. The intro of the book explains it best:

Inside the Machine is an introduction to computers that is intended to fill the gap that exists between classic but more challenging introductions to computer architecture, like John L. Hennessy’s and David A.
Patterson’s popular textbooks, and the growing mass of works that are simply too basic for motivated non-specialist readers. Readers with some experience using computers and with even the most minimal scripting or programming experience should finish Inside the Machine with a thorough and advanced understanding of the high-level organization of modern computers. Should they so choose, such readers would then be well equipped to tackle more advanced works like the aforementioned classics, either on their own or as part of formal curriculum.

The book’s comparative approach, described below, introduces new design features by comparing them with earlier features intended to solve the same problem(s). Thus, beginning and intermediate readers are encouraged to read the chapters in order, because each chapter assumes a familiarity with the concepts and processor designs introduced in the chapters prior to it.

TL;DR: If you're not a great programmer I recommend this book even more. I read this book very early on in my dev career (when I was bad) and I believe it heavily shaped my future growth.

It Gives You Respect For What's Happening Under the Hood

One of the greatest things about this book, is that by the end, you'll really understand the "why" of modern programming. Even for most experienced developers, how the underlying computer works is essentially magic. Using that analogy, this book is goddamn Hogwarts. You might go in not being able to cast a single spell, but by the end you'll be full-fledged witch/wizard. For some, it might seem strange that I'm suggesting that learning about hardware will help you write software. But you have to remember, at the end of the day, software is just a hardware abstraction.

It's Sexy

The book is beautiful. As someone who is a bit of a perfectionist, I really appreciate the effort that not only went into the illustrations, but the overall style and design of the book. The illustrations really provide meaningful value, instead of the often contrived "figures" provided by normal text books. For example, here is one of the illustrations the author uses when teaching the reader about caching.

Another great example used to explain pipelining.

It's Aware

The amount of self awareness imparted into the book is one of my favorite aspects. The author, predicting that there might be some confusion about the previous picture, actually provides a very human rationalization of his choice.

It's Riveting At Points

I won't lie and say the entire book is a "thrill ride", but there are sections that cover the history of processors that are incredibly thrilling. Reading about PowerPC and x86 politics is surprisingly intriguing. To quantify it, I would watch the HBO series.

Conclusion

Whether you're just getting into software development, or already an experienced developer this book has something for you. Information is presented joyfully so you'll be dying (instead of dreading) to read the next chapter.

Update: I wanted to add a comment I received on Reddit from the /u/DingBat99999 because they had some amazing insight I wish I had written myself.

The suggested book looks great. But it illustrated an issue that I hadn't considered before now.

I've been working in software for about 40 years now. When I started assembly language was unavoidable. There just wasn't as much between you and the bare metal in those days. As a result, everyone kind of got an idea of how a computer worked at low levels naturally, even without hardware focused courses.

It's been a long time since I went to university so I'm not sure what they teach these days, but given the kind of new grads I see, at least some of them are graduating with no exposure to hardware at all. And that's perfectly fine. You can do quite well in the industry without it. But, as the OP's book demonstrates, it can be interesting and fun to learn about it anyway.

To wrap this up, for me, the have been a couple of books that have affected my view of creating software. They are "Clean Code" by Bob Martin, and "Working Effectively with Legacy Code" by Michael Feathers.

Free PDF of the book

The author even started porting the book to Github!


Foo

Latest comments (105)

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
 
ketoaustin profile image
Hannah (she/her)

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

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
 
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
 
lucastamoios profile image
Lucas Almeida Aguiar

Just thank you.

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
 
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
 
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
 
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
 
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
 
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
 
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
 
prsanjay profile image
Sanjay Prajapati

Thanks for sharing it.

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...

Some comments may only be visible to logged-in visitors. Sign in to view all comments.