
Programming Books You Wish You Read Earlier - pplonski86
https://zeroequalsfalse.press/posts/programming-books-you-wish-you-read-earlier/
======
sambroner
I haven't read Designing Distributed Systems, but I have read Designing Data-
Intensive Applications [0] and it was fantastic.

An overview of databases (what and why, but also a lot of how) plus
distributed concepts and modern architectures.

[0] [https://www.amazon.com/Designing-Data-Intensive-
Applications...](https://www.amazon.com/Designing-Data-Intensive-Applications-
Reliable-
Maintainable/dp/1449373321/ref=pd_sim_14_2/146-8625555-8146114?_encoding=UTF8&pd_rd_i=1449373321&pd_rd_r=1b535a9b-36c7-11e9-a692-13b9b4e07a01&pd_rd_w=jtZkM&pd_rd_wg=CXE5P&pf_rd_p=90485860-83e9-4fd9-b838-b28a9b7fda30&pf_rd_r=CPXFME7ZS7T5KFB5CBCZ&psc=1&refRID=CPXFME7ZS7T5KFB5CBCZ)

~~~
weitzj
Agree fully. Such a great book, good thread to read from cover to cover. Many
references to other articles/books.

Heck, for me it feels like it even has some suspense. “Ok, I now understood
the single database instance and various ways data can be organized on disk -
what can go wrong next? What problems are with more dbs?”

I never had this book-“feeling” with a technical book before, where you just
want to continue reading it under your blankets at night. Love it and happily
advocating it in the company. :)

------
noir_lord
"A Philosophy of Software Design" by Ousterhout is my favourite of the last
few years.

It's a shortish book but there is stuff in it I'm still unpacking on the third
read through and a lot of stuff I sorta instinctively knew but it's nice to
see someone else thinks the same.

~~~
tbirdz
+1 on this. I don't think anything in that book was especially new to me, but
it matches what I think of as "good software design", and having it all
compiled in book form makes it easier to transmit that knowledge to other
people, especially students or newer engineers.

~~~
noir_lord
That was my general feeling but there is definite value to having it stated
clearly and coherently and with the implied authority of a book (which is
silly but a thing).

------
lodi
I read this as soon as it was released, but here's a book I wish was _written_
earlier!

[https://www.manning.com/books/type-driven-development-
with-i...](https://www.manning.com/books/type-driven-development-with-idris)

Completely changed my view of programming. Best "textbook" I've ever read.

~~~
teacpde
Mind elaborate a bit more? The title sounds interesting, do you have to pick
up another language in order to gain from the book?

~~~
Jtsummers
The book is specifically written around the Idris language, so some aspects
would not work in most other languages. If you are willing to accept the loss
of tooling, you can apply the development practice but you lose a lot. With
Idris, a partial program is still verifiable even if not executable. Compared
to an incomplete C program.

A particular quality of Idris is the ability to leave "holes" in programs.
That is, if I don't know what's going to happen in this function, I can leave
a hole:

    
    
      main : IO ()
      main = putStrLn ?greeting
    

I can then extract that hole into a new function and develop its particular
capabilities. This will type check. Idris understands that _?greeting_ must be
a string (or something which will produce a string).

If you have some experience with Haskell or SML or OCaml, it's not _too_ hard
to pick up the language (particularly the first). It'll look and behave very
similarly to what you've seen before. If you aren't familiar with them, you'll
be learning a whole new language, but the book is a good introduction to the
language and the concepts the language introduces.

------
mesarvagya
If someone is interested in Functional Programming, here are the books which I
highly suggest everyone to read:

[https://www.amazon.com/Introduction-functional-
programming-P...](https://www.amazon.com/Introduction-functional-programming-
Prentice-
international/dp/0134841891/ref=sr_1_4?keywords=functional+programming+richard&qid=1550857404&s=gateway&sr=8-4)

[https://www.amazon.com/Structure-Interpretation-Computer-
Pro...](https://www.amazon.com/Structure-Interpretation-Computer-Programs-
Engineering/dp/0262011530/ref=sr_1_1?keywords=sicp&qid=1550857421&s=gateway&sr=8-1)

[https://www.amazon.com/Programming-Haskell-Graham-
Hutton/dp/...](https://www.amazon.com/Programming-Haskell-Graham-
Hutton/dp/1316626229/ref=sr_1_fkmrnull_1?crid=16BZRCJLJ2G07&keywords=programming+in+haskell+by+graham+hutton+2nd+edition&qid=1550857435&s=gateway&sprefix=haskell+gra%2Caps%2C193&sr=8-1-fkmrnull)

~~~
sevensor
Surprised this is the only mention of SICP. Although I don't know that I would
have been able to handle it earlier in life. Perhaps it's different with
accompanying lectures, but for self study it's quite a workout. I think it's
worth trying, worth putting aside for later if you're not ready, and worth
ultimately returning to. I'd be amazed if the undergraduates it was aimed at
were able to appreciate it in full.

------
JamesBarney
I'm surprised no one mentioned Steve McConnell's books. Some of the material
is dated, but what's left is pure gold. Takes a much more empirical approach
to software development than a lot of other books in the same vein.

Code Complete (Developer Best Practices)

Rapid Development

Software Estimation : Demystifying the Black Art

~~~
Dextro
Code Complete is a great book that thankfully my first boss required me to
read when he hired me but I personally feel that Clean Code covers most of the
same and is an easier read. Just my two cents thought.

~~~
JamesBarney
I never read Clean Code because of a kind of silly reason. I've worked with a
couple of devs who read it and then decided the optimal number of lines of
code per function was three. I always felt like I needed 6 monitors to be able
to understand anything that was happening.

But if you recommend and say it's similar to Code Complete I'll give it a
shot. What I liked most about Code Complete is he always talks about trade
offs with a clear goal in mind. For instance if function sizes are too small
hidden pre-conditions or side effects can cause a bug. But if functions are
too large they are hard to follow and it's difficult to isolate side effects.

~~~
killaken2000
I have the same issues with rules like that.

Like not ending a sentence with a preposition. It is a thing for which I will
not stand

Ralph Waldo Emerson, A foolish consistency is the hobgoblin of little minds

~~~
senorsmile
Or rather, a thing which you will not stand for.

------
raiflip
Another few books I've found incredibly helpful: Clean Code:
[https://www.amazon.com/Clean-Code-Handbook-Software-
Craftsma...](https://www.amazon.com/Clean-Code-Handbook-Software-
Craftsmanship/dp/0132350882/) Clean Architecture:
[https://www.amazon.com/Clean-Architecture-Craftsmans-
Softwar...](https://www.amazon.com/Clean-Architecture-Craftsmans-Software-
Structure/dp/0134494164/) Domain Driven Design:
[https://www.amazon.com/Domain-Driven-Design-Tackling-
Complex...](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-
Software/dp/0321125215/)

------
Impossible
Real-time collision detection (Real-Time Collision Detection (The Morgan
Kaufmann Series in Interactive 3-D Technology)
[https://www.amazon.com/dp/1558607323/ref=cm_sw_r_cp_apa_i_bR...](https://www.amazon.com/dp/1558607323/ref=cm_sw_r_cp_apa_i_bRcCCbN4XHD31))
also deserves a spot on this list.

------
sidcool
Would these books help after 13 years of CRUD programming?

~~~
mamcx
Yes. I'm building a relational language, after read a lot about compilers and
database engines.

I probably will never succeed at it (ie: Become a small hit with this side
project) but learning about stuff help to apply better solution to what you
do.

Contrary to popular belief, CRUDs apps are much harder and more sophisticated
than many other kinds of apps, and worse, you have a much faster release cycle
with worse specifications and other bad stuff (I build apps for business, so
this is my thing). So pay a lot to learn how be smart about that!

------
aerophilic
To add: The Pragmatic Programmer - [https://www.amazon.com/Pragmatic-
Programmer-Journeyman-Maste...](https://www.amazon.com/Pragmatic-Programmer-
Journeyman-Master/)

I have used the concepts in this book weekly, if not daily. Note: The tracer
bullet framework helps with thinking about any complicated system, not just
software.

------
Jerry2
Does anyone have any opinions on "Uncle Bob's" Clean Code [0] book? I read
bits and pieces of it but never sat down and gave it a thorough read.

[0] [https://www.oreilly.com/library/view/clean-
code/978013608323...](https://www.oreilly.com/library/view/clean-
code/9780136083238/)

~~~
yesenadam
_Clean Code_ (2008) is at the top of my _Books I wish I 'd read 10 or 20 years
earlier_ list, along with _Refactoring_ (1999). They totally transformed the
quality of my finished programs, in many ways. Some what I learnt may fit into
"That's so obvious, why didn't I think of that", or making conscious the
things you already do... _Refactoring_ , just by naming and defining the
activity, was useful. They're both talking about the programming equivalent of
editing for writers. And how to do that, how to get from the 'dirty code'
first draft to the 50th draft with _everything_ as good as it can get. Do your
future self (and other people) a favour - they're the ones who will have to
read and understand your programs.

A couple of years later I came across Allen Holub's _Enough Rope to Shoot
Yourself in the Foot: Rules for C and C++ Programming_ (1995). I didn't learn
anything from it, but it contains almost all of what's in those 2 books, and
was written years earlier, (so could have been read earlier), and I think he
deserves more credit.

------
surfsvammel
I’ve read a couple of those books. To me, many of them are too dull. School
textbooks. The same books also seem to be on every list like this. Today, 12
years after finishing university I prefer the hands-on pragmatic books,
written by practitioners for practitioners, books that would never work as
text books at a university. For example Effectiva Java.

------
datasciencetext
Shameless plug: [https://datasciencetexts.com/](https://datasciencetexts.com/)
is a list of books related to data science that you all might enjoy!

~~~
marai2
This is fantastic!

------
vertline3
I have an older copy of Intro to algorithms before the 4th guy joined, should
I just get an updated version? or just learn from the older one?

~~~
datasciencetext
I think you'd be better off buying a different algorithms textbook for another
perspective. The Algorithm Design Manual is a popular (and much cheaper)
option.

~~~
vertline3
Thanks sir

------
acroback
Isn't most of these standard text in CS undergrad courses?

What's so special? And there are better alternatives too.

