Software engineering books
software-engineering-books.com
software-engineering-books.com
“The visual and intellectual enjoyment of well-formatted code is a pleasure that few nonprogrammers can appreciate. But programmers who take pride in their work derive great artistic satisfaction from polishing the visual structure of their code.”
“…there is a psychological basis for writing programs in a conventional manner: programmers have strong expectations that other programmers will follow these discourse rules. If the rules are violated, then the utility afforded by the expectations that programmers have built up over time is effectively nullified.”
“The smaller part of the job of programming is writing a program so that the computer can read it; the larger part is writing it so that other humans can read it.”
“The information contained in a program is denser than the information contained in most books. Whereas you might read and understand a page of a book in a minute or two, most programmers can’t read and understand a naked program listing at anything close to that rate. A program should give more organizational clues than a book, not fewer.”Out of curiosity - how did these quotes come to mind/hand so quickly? What's your notetaking process look like? How do you keep it all organized?
Lately, I've been deriving immense satisfaction from pressing Ctrl+Shift+I inside VSCode, and having Prettier format absolutely everything, with its sensible default settings and no leeway for discussion. It feels good.
Except those who code in Whitespace.
https://en.wikipedia.org/wiki/Whitespace_(programming_langua...
This isn't a criticism of clang-format, just that as it is now a tool which does the formatting, I focus on other things..
Affiliate links aren't a problem in themselves, but it's misleading and unethical to recommend a product without disclosing your financial incentives to the reader.
If you're in the US, this is a violation of the FTC Act.[0] Outside the US, Amazon still requires you to disclose that they're sponsoring your reviews. [1]
[0] https://www.ftc.gov/business-guidance/resources/ftcs-endorse...
[1] https://affiliate-program.amazon.com/help/node/topic/GHQNZAU...
- https://news.ycombinator.com/item?id=32210256
- https://news.ycombinator.com/item?id=32287936
- and just reading the reviews on the books of everyone saying they are getting counterfeit books.
The author could link to a book seller that actually sells the real book, but then I guess they wouldn't get their kickback.
(updated post to appease people that would rather get next day shipping than support the authors of the books.)
This statement is (obviously) false as 99.9+% of all books sold on Amazon are authentic. Yes, Amazon should do even more to combat counterfeit everything but inflammatory, false comments are not productive.
The first book on that list has comments showing off the counterfeit book that the people have gotten!
Reviews on Clean code: This books is a fake. Don't buy it. Look at the images I posted.
Reviews On Mythical Man: ordered new book, got something that was used and marked up and Great book, terrible terrible print and binding quality (which I assume is just a counterfeit)
Reviews On Algorithms: Beware of counterfeits; do not buy from Amazon!
I'm not going through the entire list, but most of the tech books are all fakes.
There is nothing more dangerous than an engineer that after having read all these books, is incapable of accept that sometimes following M. Fowler is the wrong path to solve that little problem we have at hand.
I disagree to some extend. We learn the rules, so we know when to break them. This is called improvisation. I think its worse to break the rules without even knowing why they are there in the first place.
I have read many of these books, and don't think its much of a concern because they often don't even agree with each other, and anyone paying the slightest attention to what they are reading will wrestle with the tension.
Sometimes they don't strictly disagree, but are different enough you must synthesize an even better idea!
For example, in "Philosophy of Software Design", Ousterhout recommends X, and then says Uncle Bob's advice is to do Y instead. When the experts don't agree, that should make you think "hmm, maybe this isn't settled."
In "Clean Architecture", Uncle Bob had a separate chapter (34 The Missing Chapter) written by Simon Brown which somewhat conflicts with the rest of the book.
I'm not sure you're the norm, at the very least a large number of engineers I've interacted with or mentored have come away from these books with either an explicit belief in these hard rules or an implicit one.
I've found Uncle Bob's work tends to be particularly bad in getting engineers into this mind set (though maybe I over-indexed because I think so much of his advice is bad).
If you admit that you think that some of his books are pretty dated, or if you point out the examples he used to justify certain patterns are so contrived to make the other alternative look ridiculously stupid, or if you say that maybe our CRUD mobile app that only fetches data from the backend and displays it 1-1 doesn't need the 20 layers of clean architecture cargo culting, then they get angry and will label you as someone who "doesn't care and know about software architecture".
I'm not even sure why Uncle Bob is special in this regard, I have never met a Sandi Metz/Martin Fowler/John Ousterhout fan who could not comprehend that there are other valid points of view on a situation.
Structure and Interpretation of Computer Programs: https://mitpress.mit.edu/sites/default/files/sicp/index.html
Concepts, Techniques and Models of Computer Programming https://www.info.ucl.ac.be/~pvr/book.html
The former is probably mentioned and well known enough, but it's surprising to me how few people know about the latter, or at least I rarely see it mentioned in "best computer books"
I think both books are good but I usually recommend people read Clean Code first. It is an easier read, and it is also half the size so they're more likely to finish it.
Clean Code is solid. A bit radical in my opinion, but there's some good stuff in there.
Pragmatic Programmer was surprisingly good. I came into it thinking it would be very shallow since it tried to be wide reaching, but it was actually a lot of good general ideas to be refreshed every now and then. Works well as an audio book.
Designing Data-Intensive Applications was very good. Some stuff is hard to apply when you work on smaller scale software, but there's a lot of great content in there. The visualizations are huge for helping understand a lot of this
Mythical Man Month and Peopleware have been the best books I've ever purchased from a financial return on investment perspective. Required reading for any technology professionals.
* No silver bullet
* 2nd system effect
* Mythical man month (adding people to a late project makes it later)
* "Question: How does a large software project get to be one year late? Answer: One day at a time!"
* Separate architecture and implementation
* "The Surgical Team" about technical team structure
These understandings are valuable as an individual contributor: you are more self managing, which increases your perceived value (in healthy orgs), and are able to understand the machinations of a software org, which is good for your sanity and effectiveness.
Surely you recognise this is totally a false dichotomy?
[0]: https://www.amazon.com/Beautiful-Code-Leading-Programmers-Pr...
* https://mitpress.mit.edu/sites/default/files/sicp/index.html
I would also to recommend these books [0]. They are books that may help you on programming journey. The site owner listed books in order from beginner to master.
Notable exception is mythical man month. It describes transitions rather than steady states which put a lot of things into perspective imo.
Having said that, engineering books do provide a map of reality. A map is a map. That goes a long way
I created something similar out of my list of books which I used to navigate the transition to a Tech Lead role: https://techleadcompass.com/. I see that some of the books presented on the OP's list overlap with my list.
I read it once when I was a junior engineer and didn't get much out of it, then again 6 years later and it was _excellent_.
Goldratt's sequels to The Goal are worth a read, too, but The Goal covers the more critical parts (IMO).
Thanks.
Yet many great suggestions on this topic but one is missing, which in my opinion sums up a lot of the software design classics : « The Design of Everyday Things » by Don Norman.
Is see clean code but references about hexagonal architecture could be way more impactful, IMHO
There are other sources on the web with answers. For example, https://sites.math.rutgers.edu/~ajl213/CLRS/CLRS.html
Often you can find some solutions to problem sets on course pages that use the book.
I agree that it would be better to provide solutions, but not all textbooks are written to be used in self-study. I don't know enough about CS to offer up any concrete recommendations, but there are math books that come with worked problems (e.g., https://www.springer.com/series/3423) and other math books that don't have worked problems (https://www.springer.com/series/666).
Since it was more pragmatic and less math driven.
This is basically what Fowler says in his refactoring book. Actually, he says it's by definition not refactoring. I'm curious why you don't think it's worth reading.
This is the advice I give junior developers. I explain that Clean Code turns everything up to 11 and can make the code less readable then more if followed without thought.
> Consider this book a description of the Object Mentor School of Clean Code. The techniques and teachings within are the way that we practice our art. We are willing to claim that if you follow these teachings, you will enjoy the benefits that we have enjoyed, and you will learn to write code that is clean and professional. But don’t make the mistake of thinking that we are somehow “right” in any absolute sense. There are other schools and other masters that have just as much claim to professionalism as we. It would behoove you to learn from them as well.
> Indeed, many of the recommendations in this book are controversial. You will probably not agree with all of them. You might violently disagree with some of them. That’s fine. We can’t claim final authority. On the other hand, the recommendations in this book are things that we have thought long and hard about. We have learned them through decades of experience and repeated trial and error. So whether you agree or disagree, it would be a shame if you did not see, and respect, our point of view.
Dogmatic texts generally don't tell you to go find other places to learn from.
Chances are these commenters haven't even opened the book.
https://news.ycombinator.com/item?id=31978877
It's from a thread discussing a 2017 article critiquing the book. https://news.ycombinator.com/item?id=31978465