from Hacker News

Ask HN: Books that'll make you grok software engineering?

by yura on 3/1/21, 2:23 AM with 8 comments

There are some technology books that are almost unanimously agreed to be of the very highest quality: common traits are the use of concise and clear language, good code style, correct and relevant information and overall superb treatment of the topic at hand. For CS, there's "The Art of Computer Science" series, "Structure and Interpretation of Computer Programs", CLRS's "Introduction to Algorithms". For programming languages: "The C Programming Language", "The Go Programming Language" are a few examples. For system administration, a book comes to mind (for *nix): "Unix and Linux System Administration Handbook".

What the equivalent of those books, but for software engineering? I've researched this before, and the names that come up are "Clean Code", "Code Complete" and "The Pragmatic Programmer". But "Clean Code" in not without criticism: it has been criticized for advocating stutter-y functions (4 lines or less), overly descriptive names (isLeastRelevantMultipleOfNextLargerPrimeFactor) as opposed to comments and it's debatable whether the refactored code samples (illustrations of the so-called clean code) are actually good and legible code. "Code Complete" and "The Pragmatic Programmer" appear to be universally praised, except for the fact that these two books have been so influential that most of their content is common knowledge nowadays, and reading those books may not be as enlightening today as when they were first released.

I'm wondering if there are books of the same caliber for software engineering, which are not so entry-level and are more up-to-date with current trends (the rise of scripting languages, cloud computing, and OOP not being "the one true paradigm" as it once was).

  • by shortlived on 3/2/21, 3:29 PM

    > But "Clean Code" in not without criticism

    It's true - the worst and most dangerous programmer I've worked with quoted that book like the bible. Their code was completely unreadable, unmaintainable and lead to some horrible performance because of the knots they tied themselves in.

  • by ryanchants on 3/2/21, 6:15 PM

    I'll list some books I know of that tackle larger projects and can be good for working through different patterns and why to do things in a certain way. Since they tackle larger scope, there's less pro/conning of alternatives, but they're good springboarding for your own research:

    Cosmic Python: https://www.cosmicpython.com/

    Implementing DDD, CQRS, and Event Sourcing: https://leanpub.com/implementing-ddd-cqrs-and-event-sourcing

    SaaS Handbook: https://builderbook.org/book

  • by lmarcos on 3/1/21, 2:58 PM

    I would say that, unless you're just starting your career, books like Clean Code, The Pragmatic Programmer and the like are not real "revelations".

    Software engineering has more to do with people than with software. Have you checked Peopleware? Also, perhaps The Phoenix Project could help as well.

  • by atsaloli on 3/2/21, 10:52 AM

    I've found "Understanding Software" by Max Kanat-Alexander very helpful in improving the quality of my code.
  • by crazypython on 3/1/21, 3:07 AM

    I heard Domain Driven Design is good.