Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of Refactoring

    Refactoring

    Martin Fowler · 1999

    As the application of object technology--particularly the Java programming language--has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, non-optimal applications. For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as refactoring, these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use...until now. In Refactoring: Improving the Design of Existing Software, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process.

    Software EngineeringProgramming
    Open LibraryAmazon
    Stats for nerds
    94recommend
    179mentions
    145people
    2007–2026years
    62% recommend36% neutral2% critical

    Mentions per year

    20072009201120132015201720192021202320252026

    What Hacker News says

    1. malexwMar 2026
      I think Martin Fowler's "Refactoring" might give a bit of insight here. One of my take-aways after reading that book is that the specific implementation of a function is not very important if you have tests. He argues that it can sometimes be easier to completely re-write a function than to take the time to understand it - as long as you can validate that your re-write performs the same way. This mindset lines up pretty closely with how I've been using LLMs.

      If that's true, then I would think the emphasis in code review should be more on test quality and verifying that the spec is captured accurately, and as you suggest, the actual implementation is less important.

      thread
    2. commandlinefanSep 2025
      Kind of depressing to read because it's so accurate, yet so likely to be ignored.

      I remember when Martin Fowler first published the book "Refactoring" - I was so relieved at the time because somebody with some clout that executives might actually listen to had not only identified what was wrong with software but identified a way to fix it and even gave it a name! Boy was I wrong - now you have to be careful how and when you use the term "refactor" because the people who ought to be supportive hear "wasting time".

      thread
    3. wduquetteApr 2025
      Heh. The books on the list would be the ones from which I learned new ways to think about programming. Most of them are now long out-of-date, as witness the discussion on "101 BASIC Games" going on elsewhere on Hacker News.

      "101 Basic Games", edited by David Ahl and published by DEC. I learned to program by typing in the code from this book back in the late '70's.

      "Write Your Own Programming Language Using C++", by Norman E. Smith. This is about writing a simple Forth interpreter. I used what I learned to write a simple Forth interpreter in C, which I then used as an embedded extension language in a couple of apps I was working on at the time. This was on a VAX, and rather before I'd ever heard of anything like TCL/TK.

      "Tcl and the Tk Toolkit", by John Ousterhout, which (among other things) explained how an embedded extension language ought to work.

      The O'Reilly X Windows books, and various O'Reilly books with animals on the cover. They were essential references, back in the day.

      "The C++ FAQs", by I don't remember who. I never used C++ much; but this book was an excellent introduction to all of the pitfalls in the C++ of the day, and how to use C++ without shooting yourself in the foot--and an even better example of how to write for programmers. It was a big influence on how I later wrote programmer's documentation.

      "Refactoring", by Martin Fowler. I've never followed the advice in this book slavishly, but it's tremendously affirming to read a new book encouraging you to do what you were doing already without having a name for it.

      "Effective Java", by Joshua Bloch, which I spent a lot of time with about ten years ago; it helped me come to grips with Java and avoid a variety of foot-guns, much like "The C++ FAQs".

      Various Lisp books; I don't like Lisp all that much, or Scheme either; but I come back to one or the other every few years and take another look, because I always learn something.

      Various other texts on specific programming languages, as I experiment with them; "Learn You a Haskell for a Great Good" sticks out mostly because it has a memorable title.

      And "Crafting Interpreters", which I've worked all the way through and then run with. Last month I implemented a simple Datalog implementation in a few days using the techniques from CI; I'll soon be integrating it into a much enhanced version of Nystrom's Lox.

      thread
    4. swahJan 2025
      Perplexity:

      Based on the discussions from the provided Hacker News threads, here is a list of ten notable books recommended by users, particularly in the context of software engineering and programming:

      ## Top Ten Recommended Books

      - *The Pragmatic Programmer* by Andrew Hunt and David Thomas A classic in software development, this book offers practical advice and principles for programmers.

      - *Clean Code: A Handbook of Agile Software Craftsmanship* by Robert C. Martin This book emphasizes writing clean, maintainable code and has become a staple in programming literature.

      - *A Philosophy of Software Design* by John Ousterhout This book provides insights into software design principles and the importance of simplicity in design.

      - *Domain-Driven Design: Tackling Complexity in the Heart of Software* by Eric Evans A foundational text for understanding complex software systems and how to manage them effectively.

      - *Designing Data-Intensive Applications* by Martin Kleppmann This book covers the principles of designing applications that handle large volumes of data efficiently.

      - *Refactoring: Improving the Design of Existing Code* by Martin Fowler Focuses on the process of refactoring code to improve its structure without changing its functionality.

      - *Code Complete: A Practical Handbook of Software Construction* by Steve McConnell This comprehensive guide covers best practices in software construction and coding techniques.

      - *Effective Java* by Joshua Bloch A must-read for Java developers, this book provides best practices for writing robust Java code.

      - *The Mythical Man-Month: Essays on Software Engineering* by Frederick P. Brooks Jr. A classic work discussing the complexities and challenges of managing software projects.

      - *Programming Pearls* by Jon Bentley This book presents programming problems and solutions that enhance problem-solving skills and algorithmic thinking.

      These books are highly regarded within the programming community and cover a range of topics from coding practices to software design philosophies, making them valuable resources for both new and experienced developers.

      Citations: [1] https://news.ycombinator.com/item?id=41387062 [2] https://news.ycombinator.com/item?id=35929112 [3] https://news.ycombinator.com/item?id=32130578 [4] https://news.ycombinator.com/item?id=41387062 [5] https://news.ycombinator.com/item?id=35929112 [6] https://news.ycombinator.com/item?id=32130578 [7] https://news.ycombinator.com/item?id=29498220 [8] https://news.ycombinator.com/item?id=29306651

      thread
    5. dtagamesSep 2024
      The Mythical Man Month by Fred Brooks

      Refactoring by Martin Fowler

      System/370 Principles of Operation by IBM

      thread
    6. JTyQZSnP3cQGa8BJul 2024
      > a recurring need in the software world for teams to convert a codebase from one language to another

      Really? I've only seen that twice in my career, and it was due to being written in the most obsolete tech ever.

      I have the same comment for the "patterns" that GPT-bros seem to be stuck in all the time. What kind of software are they writing that needs 80% of duplicated/useless code, and 20% of business code? They should first read Refactoring by Martin Fowler, and try to avoid those mistakes in the future because it's bad to rely on a AI for what should be their job, i.e. engineering software.

      > the database querying layer was quite verbose and greatly exceeded an LLM’s output token limit

      No technical details as usual, only high-level stories. And how is it possible nowadays to have that kind of issue where most languages have their own SQL or REST library to do everything in, at most, 500 lines of code (if the code is duplicated)?

      Last but not least, the main web site is a very pretty empty page if JS it disabled. They should fix that with an LLM and write a blog post, that would be more interesting.

      thread

    Related

    Cover of Clean Code
    2008–2026

    Clean Code

    Robert C. Martin
    298 recommend · 951
    Cover of Refactoring to Patterns
    2009–2026

    Refactoring to Patterns

    Joshua Kerievsky
    15 recommend · 25
    Cover of Domain-Driven Design
    2007–2026

    Domain-Driven Design

    Eric Evans
    104 recommend · 252
    Refactoring UIAdam Wathan
    2018–2026

    Refactoring UI

    Adam Wathan
    129 recommend · 167
    Cover of Patterns of Enterprise Application Architecture
    2009–2026

    Patterns of Enterprise Application Architecture

    Martin Fowler
    34 recommend · 87
    Cover of Design Patterns
    2007–2026

    Design Patterns

    Erich Gamma
    95 recommend · 491
    Cover of The Pragmatic Programmer
    2007–2026

    The Pragmatic Programmer

    Andy Hunt
    353 recommend · 700
    Cover of Working effectively with legacy code
    2008–2026

    Working effectively with legacy code

    Michael C. Feathers
    186 recommend · 315