Ask HN: Resources for learning software design?
Last week, a colleague came to me to ask for advice. He's a senior systems administrator who's now in a developer role. He's competent in writing and editing code in general, but feels like he's lacking experience in software design.
He's eager to learn about the subject, but I couldn't quite help him. I consider myself reasonably competent in designing software, but that's the result of 15 years trial-and-error-based learning, so I cannot point him to any resource. Can you recommend a book, webpage or other material (or maybe just some advice) that might help him build this skill?
4 comments
[ 3.1 ms ] story [ 23.4 ms ] threadAnd, if someone recommends a book called Code Complete, quietly begin to question some of their life choices.
Saying that whoever recommends Code Complete made some wrong life choices is a bit rude and uncalled for. Books are just tools, the benefits they bring depend on whether the reader goes through them in a smart way or not.
Then again, but this is a matter of taste, I would suggest The Pragmatic Programmer as a first read. It's shorter, well-written and with laser-like focus on the topic at hand.
Lastly, since designing and writing software is as much of an art as it is science, what's really important is to avoid reading passively and blindly applying anything the knowledge one finds in a book, and instead strive to understand why, and going against the grain and see why certain practices are called "best".
Lampson's classic on hints for computer system design:
https://www.microsoft.com/en-us/research/wp-content/uploads/...
Here is a previous HN post on the subject: https://news.ycombinator.com/item?id=8000811
The Clean Code author has a Clean Architecture book but I don't think it is out yet.