3

Your favorite timeless "technical books"?

 1 year ago
source link: https://lobste.rs/s/blfhr3/your_favorite_timeless_technical_books
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Your favorite timeless "technical books"?

Hi, I was wondering what are your favorite “technical books” and why do you love them? By “technical books,” I mean stuff that I could reasonably expense as part of my work’s learning budget. By “timeless,” I mean that they won’t immediately go out of date once the next version of the software is released.

  1. This year I read Debugging - The 9 Indispensable Rules The book is more than twenty year old at this point and use as example, among other thing, a lisp server connected to Mac System via serial cable. But you are not here for that, you are here for the 9 rules. I loved it so much that I have the 9 rules on a post-it under my screen and I glance at them everytime I have to investigate something in production. I think this is an underated book, but I would agree that the advice do end up being a bit obvious/generic

    Data and Reality By William Kent is an all time favorite of mine, but the 3rd edition has been badly butchered. If you can find the 2nd edition somewhere I would go with that.

    The Mythical Man Month by Fred Brook need no introduction. What I like about the edition I have is that it also contains not only his famous “No Silver Bullet” essay, but also a commentary on “No Silver bullet” that preemptively addressed most modern take on the essay that try to disprove it. Found it interesting.

    I still love Domain Driven Design, and it still fill me with insight when I reread it. But I wish Eric Evans would update it to add the “missing” chapter on business events and also to deemphasize the OOP patterns, as a lot of people tend to focus on them rather than the more important concept of a shared language between the business and techical people.

    I have high hope that Designing Data Intensive Application will stand up to the test of time, but its too early to tell. Still a big “recommend” from me, and it will absolutely remain relevant for the next 5-10 years at least

    I have a harder and harder time recommending Clean Code, but there are still some good advice in it. Just skip the endless chapter where Martin refactor a class, the result is… not that great.

    1. Data and Reality By William Kent is an all time favorite of mine, but the 3rd edition has been badly butchered. If you can find the 2nd edition somewhere I would go with that.

      The 2nd edition is out of print and completely unavailable on ABE Books or Amazon. But you can find the 2nd edition in PDF form here and there online.

    2. stig

      2 hours ago

      | link

      +1 for Debugging. I’ve bought a few copies of it and given to people. It deserves more attention than it gets.

  2. telemachus

    edited 9 hours ago

    | link

    All of these books taught me about programming in general while also introducing me to the specifics and details of a language or a style of programming. (Kernighan is a common element, but I have no shame about that. He’s a remarkable writer. You can learn a ton from his UNIX manuals as well.)

    I also highly recommend Jay Wengrow’s A Common-Sense Guide to Data Structures and Algorithms, but it’s not for everyone. I love this book, but I never studied CS in school (and my furthest math class was high-school-level algebra). If you’ve had formal training, it’s probably not something you need. (And you’ll likely find it too simple.)

  3. danso

    8 hours ago

    | link

    Advanced Programming in the Unix Environment – a must-read for (aspiring) systems programmers.

    I read the second edition. Many of the code examples were written targeting 90s BSD systems, and in many cases the code no longer compiles. There’s now a third edition, which I assume is updated for recentish Linux.

    In either case, the fundamentals of Unix are still as relevant as ever.

    1. I was going to say that I couldn’t think of any technical books that aren’t dated, but you’ve given a great counterexample. In particular, APUE talks about the rationale for the decisions and so let’s you easily understand which bits are still relevant and which bits were solving problems that aren’t the same ones that today’s software solves.

      For anyone thinking about working on a kernel, Symbian Kernel Internals is a fantastic overview of a design that I wish more people would copy. It was, unfortunately, very poorly timed in hindsight. Symbian EKA2 was designed to support an application stack for the UI and a real-time stack for the radio in a single core, with no special hardware. Unfortunately, by the time it was finished, sticking a second ARM core on an SoC was sufficiently cheap that it didn’t really make sense to squeeze everything into one core. RAM was a bigger cost factor and EKA2 wanted to statically provision memory for the real-time stack to avoid allocation on any real-time paths. This meant it didn’t save much. In most other respects, it was ahead of its time. The driver model had power management built in from the start. The nano kernel did the kind of isolation that Hafnium is now bringing to Android (and that XNU now has for iOS). It’s a huge shame that Nokia decided that the solution to the problem, of having a dated and painful to use userland on an amazing kernel was to replace the kernel with Linux.

  4. The two books I recommend, as they were two that fundamentally changed how I code:

    • Writing Solid Code - yes, it’s from Microsoft Press and geared for C, but it does contain a lot of advice that can apply to other languages, especially around designing APIs.
    • Thinking Forth - yes, it’s geared towards Forth, but again, the advice can apply to any language, and if it seems like extreme programming/agile, it’s because it is, about a decade before it hit the mainstream.
  5. If I may be allowed to go off-topic for a second and plug a coupe of books that couldn’t be reasonably expensed:

    https://www.amazon.com.au/Unix-Primer-Plus-Waite-Group/dp/0672220288

    I found this book in the local small-town library as a child, when I was around ten years old. Up until then I’d only ever used home 8-bit microcomputers like Amstrad CPCs and Apple 2s. It blew my tiny mind :)

    I bought a copy around 30 years later and found that it had aged surprisingly well. I was particularly surprised by the fact that several of the Unix users and programmers in the book were female; I honestly hadn’t expected that for a book of this vintage.

    You could actually take this book and use it to find your way around a modern FreeBSD or Linux system with surprisingly little friction. I don’t know whether that says good or bad things about our profession ;)

    https://www.amazon.com.au/Programming-Z80-Rodnay-Zaks/dp/0895880695

    This was my Bible as a ten year old hobbyist. I borrowed it from the library so often I was asked to leave it on the shelves for a bit in case anyone else wanted it. The funny thing is that as an adult I remembered it being this huge weighty tome; when I actually bought a copy though it’s a fairly slim technical book.

    It’s still a very useful reference if you’re into Z80-based retrocomputing. And Zaks himself is still around; I was able to send him a thank-you note on LinkedIn before I abandoned that site.

    1. The funny thing is that as an adult I remembered it being this huge weighty tome; when I actually bought a copy though it’s a fairly slim technical book.

      Amazon says that it’s 620 pages. Maybe it reads like a slim book even if it’s not?

      1. The surprise was mostly physical - even at 600 odd pages it’s still fairly physically slim.

        Also only the first 186 pages are instructional; the rest is a reference.

  6. hdeshev

    edited 1 hour ago

    | link

    One of the few tech books I reread every now and then, because it’s full of useful advice is Working Effectively with Legacy Code.

    Also, imagine trolling your lead/manager/architect by having the entire team order a copy with their learning budget.

    EDIT: I just had to link this: https://www.commitstrip.com/en/2019/03/13/like-a-good-wine/?

  7. I constantly go back to Domain Modeling Made Functional.

    It provides a great introduction to functional concepts and mapping them to business domains. I haven’t read the original Domain Driven Design, but I don’t feel like I’m missing anything.

    It’s written for F#, but I think it would apply to Haskell and Rust just as easily.

  8. I am pleasantly surprised that so many of these responses include reasons why each title is so treasured. Too often, on other forums, these threads turn into a dumping of names and affiliate links.

    I thoroughly recommend the first edition of Fowler’s Refactoring: Improving the design of existing code. The first edition is the only one that involves a compiled language (Java), and the explosion of strongly-typed languages and gradual typecheckers means that the Ruby edition and the second (JS) edition do not hold up as well.

    The objective: “make the hard change easy, then make the easy change”. Make the hard change easy by making small, invertible, meaning-preserving code transformations until the program is in the right shape to accept your new change.

    Steve Yegge describes it as “[w]hen I read this book for the first time, in October 2003, I felt this horrid cold feeling, the way you might feel if you just realized you’ve been coming to work for 5 years with your pants down around your ankles.” I had the same experience when I read it too.

  9. fogus

    3 hours ago

    | link

    I try to keep a small shelf of books that transcend computing. https://functional.cafe/@fogus/109528016050758817

  10. amoroso

    edited 2 hours ago

    | link

    Software Tools in Pascal by Kernighan and Plauger (1981) is a practical introduction to designing and coding tools and filters according to the Unix philosophy, with a lot of sound software engineering advice.

  11. bew

    edited 1 hour ago

    | link

    My favorite one is: The Pragmatic Programmer, Second Edition

    I really like explaining stuff, but when the person just don’t have the craft mindset yet (but want to have it), I always fall short and recommend this book. It’s an amazing introductory book to software craft that covers A LOT of concepts, practices, techniques,….

    When people start to grasp these and change their mindset, they always have interesting questions :)

    To give the book more importance, get the hardcover one, it feels really good!


    I’d loved to have this book when starting to want to be good! Nowedays I order a buch of them and almost give them to my collegues / friends, it’s just soo important!!

  12. yaymukund

    edited 12 hours ago

    | link

    My current list is:

    Books I would love to read if they existed:

    1. A book on software history by someone who has spent time thinking about both the software and history sides of this topic.

    2. A collection of stories of famous or interesting debugging sessions. The book equivalent of having a round with your ops or security team.

    1. Rochus

      11 hours ago

      | link

      A book on software history by someone who has spent time thinking about both the software and history sides of this topic.

      There are such books, e.g.

      • From airline reservations to Sonic the Hedgehog - a history of the software industry, MIT Press, 2003
      • A New History Of Modern Computing, MIT Press, 2021
      1. Thank you, these both look excellent

        1. Rochus

          27 minutes ago

          | link

          Another book that I enjoyed reading is “ENIAC - The triumphs and tragedies of the world’s first computer, Walker Publishing, 1999”, but it is more about the early beginnings of the computer hardware industry than about software. I assume you know the history of programming languages (HOPL) books, but these are more personal recollections of the language authors than what you would conceive as a history book.

    2. Since writing this comment, I am also looking at A Science of Operations by Mark Priestly and Software: A Technical History by Kim W. Tracy. I haven’t actually read either of them yet, so don’t take these as recommendations. Actually, I’d be curious if anyone else has.

      1. ztoz

        6 hours ago

        | link

        I’ve read Software: A Technical History and I wrote a review on Amazon. The short version is that it is a broad history of software systems and programming languages and summarizes many disparate historical narratives into a single book. I consider it a reasonable introduction, but you’ll probably want more.

        Technical history, which is what I think you mean by “both the software and history sides”, is unfortunately a niche area of a niche area. I recommend looking at the “Historical reflections” column in Communications of the ACM as it often looks at subjects from a technical perspective.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK