Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
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

    Martin Fowler

    martinfowler.com · Personal blog · on HN since 2007

    Martin Fowler writes about software architecture, refactoring, microservices, and agile practice, with long-lived reference articles.

    Visit blogRSSHN submissions
    ProgrammingDistributed SystemsCareer & Work
    What HN says

    Commenters recommend his articles, though one finds them academic rather than pragmatic and doubts how much they apply to real startups.

    Stats for nerds
    1.5KHN people shared it
    1.1Klinked in comments
    23Kstory points
    Aug 2026last shared
    2017people per year2026

    Top posts on HN

    1. 1
      Monolith First (2015)
      46 people · 1.8K points · first shared 2015 · 340 comments on HN
    2. 2
      Serverless Architectures
      25 people · 1K points · first shared 2016 · 202 comments on HN
    3. 3
      Software Architecture Guide
      6 people · 829 points · first shared 2019 · 288 comments on HN
    4. 4
      Technical Debt
      10 people · 701 points · first shared 2009 · 240 comments on HN
    5. 5
      Is TDD Dead? (2014)
      14 people · 603 points · first shared 2014 · 476 comments on HN
    6. 6
      Stepping Back from Speaking
      1 person · 517 points · first shared 2021 · 127 comments on HN
    7. 7
      Maximizing Developer Effectiveness
      9 people · 443 points · first shared 2021 · 162 comments on HN
    8. 8
      Some thoughts on LLMs and software development
      1 person · 420 points · first shared 2025 · 405 comments on HN
    9. 9
      Is High Quality Software Worth the Cost?
      12 people · 382 points · first shared 2019 · 159 comments on HN
    10. 10
      Yagni
      15 people · 375 points · first shared 2015 · 178 comments on HN

    What HN people wrote when they linked it

    • davismwflMay 2020

      How many years have you worked professionally? Do you have a team (or tech friends) to bounce things around with and learn from? What are you writing, websites or IoT or ??

      Just some general comments not knowing those answers, this is usually what a mentor or team lead is there to help you with, they guide you and show you why one solution might be better than another etc. Read architecture blogs, read about failures as much as successes, read postmortems from startups they are great learning. Seriously study well design open source software that most people agree is done well, as well as bad. Studying both will show you patterns you are using and shouldn't be or ones you aren't using and should be etc. That is honestly the best way, open source software makes studying larger systems so much better today then when I was learning.

      I do suggest you study some of Fowlers teachings/books https://martinfowler.com/ as he IMO is well balanced and sees value in many different architecture styles based on the problem you are solving. There are others of course, but he is the first that comes to mind for building larger or more complex systems.

      The goal of software design/architecture is to use the least complex solution you can to solve the problem, that makes the software the easiest to maintain and usually makes it performant. There are exceptions of course, but that is the general rule I follow. Also, minimize unnecessary external dependencies which will also keep your…

    • valandDec 2019

      Having your PR rejected in a healthy environment means that your PR is radically far from the reviewer's expectation.

      Having your PR rejected in a toxic environment can mean a lot of things, and a company sought after doesn't mean that it MUST be not toxic.

      First, you have to make sure if both of YOU and YOU ENVIRONMENT is healthy. If both are healthy, proceed reading.

      > The challenge here is to deliver good quality code, while maintaining a decent speed of delivery.

      You made it sound like producing good quality code = slowness. FALSE. Seeming slow, good quality code boosts your team's velocity. BUT keep in mind: "quality" is "the standard of something as measured against other things of a similar kind; the degree of excellence of something". Your team has its standards, either is a derivative of other globally acknowledged standards such as https://blog.golang.org/go-fmt-your-code, https://github.com/microsoft/TypeScript/wiki/Coding-guidelines, https://twitter.com/dan_abramov, etc, or self-made standards. You go follow them, make them happy!

      Coding and design skill has a different definition than code quality. It is what punches up to the sky: the overall velocity, the success of the team, the balance of growth and culture retainment of the company, the development experience, the users' thumbs ups, amazements, and "this app is life changing" comments, the number of milestone celebration in All You Can Eat restaurants each years, the number of people rising up from…

    • kaazhanFeb 2020

      Hi,

      There's no single way. In fact, beeing a good software architect is all about having many ways in solving a problem, knowing wich solution is the most adapted depending on the context. All is about culture and cleverness
      To improve, you can :

      - Follow/read the well know architects. For example, I read this blog https://martinfowler.com/ and watch most of the conferencies he gives.

      - Learn the design patterns and the architectural ones.

      - Read a lot of code, like github repos. It does not care if you're reading repos on a subject close to the one you're interested to. You need to see a lot of architectures to see some clever solutions some peoples have used to solve some specific problems. I don't think there's any shortcut.

      - get interested in meta development. Like "why does the languages work the way they work ?", read about how code is produced in real conditions (what are the processes involved), etc.

    • zbentleyJan 2026

      > there's no "decades-running trap of trying to solve this".

      I’m not as certain. The fact that we’ve gone from ASN.1 to COBRA/SOAP to protobuf to Cap’n’web and all the million other items I didn’t list says something. The fact that, even given a very popular alternative in that list, or super tightly integrated RPC like sending terms between BEAMs, basic questions like “should optionality/absence be encoded differently than unset default values?” and “how should we encode forward compatibility?” have so may different and unsatisfactory answers says something.

      Not as an appeal to authority or a blanket endorsement, but I think Fowler put it best: https://martinfowler.com/articles/distributed-objects-microservices.html

      It absolutely is a decades old set of problems that have never been solved to the satisfaction of most users.

    • matt_sNov 2024

      I have another book recommendation: Patterns of Enterprise Application Architecture, M. Fowler. If you don't want to purchase or just want a sampling read thru the catalog of patterns. https://martinfowler.com/eaaCatalog/

      Another book recommendation is Head First Design Patterns - the one I read used Java in the examples but I learned better with the style of that book than a textbook style. There are probably a lot of design patterns books out there including the original by the "Gang of Four".

      The most important thing after reading about these patterns is learning when to use one and to do that you just need to go use them. Some caution though, I found myself putting patterns into use more frequently than was probably necessary simply because it was a new thing.

    • vmaurinJun 2024

      I have been doing this kind of stuff both in ad tech and trust & safety industry, mainly to handle scalability. Something that looks like "Event-carried state transfer" here https://martinfowler.com/articles/201701-event-driven.html

      These system are working fine, but maybe a common ground : * very few services * the main throughput is "fact" events (so something that did happen) * what you get as "Event carried state transfer" is basically the configuration. One service own it, with a classical DB and a UI, but then expose configuration to all the system with this kind of event (and all the consumers consume these read only) * usually you have to deal with eventual consistency a lot in this kind of setup (so it scales well, but there is a tradeoff)

    Related

    Joel on Softwarejoelonsoftware.com2.8k people

    Victory Lap for Ask Patents

    Joel on Software
    Personal · last shared 2026
    Chris Richardsonmicroservices.io58 people

    A pattern language for microservices

    Chris Richardson
    Personal · last shared 2026
    Andrew Montalentiamontalenti.com22 people

    JavaScript: The Modern Parts

    Andrew Montalenti
    Personal · last shared 2026
    Coding the Architecturecodingthearchitecture.com15 people

    Distributed big balls of mud (2014)

    Coding the Architecture
    Publication · last shared 2022
    Coding Horrorblog.codinghorror.com2.1k people

    Farewell Stack Exchange

    Coding Horror
    Personal · last shared 2026
    Henri Bergiusbergie.iki.fi22 people

    Build a CMS, no forms allowed

    Henri Bergius
    Personal · last shared 2026
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Mark Seemannblog.ploeh.dk171 people

    From Design Patterns to Category Theory (2017)

    Mark Seemann
    Personal · last shared 2026