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
    O

    Object Mentor Blog

    blog.objectmentor.com · Company blog · on HN since 2007

    Blog of Object Mentor, where Robert "Uncle Bob" Martin and colleagues wrote on test-driven development and software craftsmanship.

    Visit blogHN submissions
    ProgrammingCareer & Work
    What HN says

    HN commenters link it in TDD debates, one saying "TDD Derangement Syndrome" made them least skeptical of TDD and another pointing to the nuance in "TDD Triage".

    Stats for nerds
    47HN people shared it
    51linked in comments
    1.3Kstory points
    Mar 2012last shared
    2009people per year2012

    Top posts on HN

    1. 1
      Papers Every Programmer Should Read (At Least Twice)
      3 people · 574 points · first shared 2009 · 26 comments on HN
    2. 2
      The Duct Tape Programmer (Response from Uncle Bob Martin)
      1 person · 118 points · first shared 2009 · 77 comments on HN
    3. 3
      Saying "NO"
      1 person · 91 points · first shared 2009 · 31 comments on HN
    4. 4
      Ending the Era of Patronizing Language Design
      3 people · 81 points · first shared 2009 · 57 comments on HN
    5. 5
      Python's Mutable Default Problem
      1 person · 68 points · first shared 2011 · 62 comments on HN
    6. 6
      A Mess is not a Technical Debt
      3 people · 52 points · first shared 2009 · 33 comments on HN
    7. 7
      Uncle Bob's rant on Jeff and Joel
      1 person · 34 points · first shared 2009 · 11 comments on HN
    8. 8
      Is the supremacy of object oriented programming coming to a close?
      1 person · 33 points · first shared 2009 · 25 comments on HN
    9. 9
      TDD Derangement Syndrome
      3 people · 29 points · first shared 2009 · 43 comments on HN
    10. 10
      Cloning Vi Using Haskell
      1 person · 26 points · first shared 2009 · 14 comments on HN

    What HN people wrote when they linked it

    • jonmc12Apr 2011

      Nice article.. some examples would be helpful in understanding the author's thesis.

      "I believe tests should be written in the language most natural for the problem" - I agree with this. However, to assume natural language is the most fit expression I believe is a jump. Natural language is laden in ambiguity to the point where it misses out on creating specifications in a concise way.

      I tend to drift towards the field of thought that BDD should be used to constrain the spec - purposely eliminating ambiguity. I think this is the real opportunity in BDD. This article (http://blog.objectmentor.com/articles/2008/11/27/the-truth-about-bdd) illustrates the point well - making BDD specs analogous with a DSL described by finite state machines. "(BDD) connects the human concept of cause and effect, to the software concept of input/process/output".

      So, in this sense using BDD tools like cucumber for expressing natural language can possibly bypass the opportunity to constrain the spec by using constrained natural language or DSLs that best describe the problem domain more explicitly.

    • greenyodaMar 2012

      Another, similar take on this idea is this article, written in 2007:

      Code is a Liability

      http://blog.objectmentor.com/articles/2007/04/16/code-is-a-liability

      Excerpt: "Code size reduction is a very good thing. I want the simplest, the smallest, the least code possible, with the least risk of breaking something else in the system. I don’t want big functions that touch everything in sight. I don’t want long complicated blocks of if/else statements. I don’t want monster functions which conglomerate dozens of operations in a single, fat interface. Shallow is good. Short is good. Less code is good. More code is a liability. This isn’t about typing less, it’s about owning less."

    • chromaticNov 2009

      Have you read Bob Martin's "TDD Triage"? It offers a lot more nuance than you might suggest: http://blog.objectmentor.com/articles/2009/10/08/tdd-triage

      > Any worthwhile development practice must have objectively measurable results....

      I thought you were asking for objectively measureable results in isolation. You'll still have terrible trouble trying to isolate a single variable (and good luck with a control group for a creative design activity!), but I suspect you can get decent results by measuring the cost of a change, the correctness of a change, and the amount of rework in a change when using TDD.

    • tbrownawJan 2010

      Hm, makes me think of http://blog.objectmentor.com/articles/2008/06/22/observations-on-test-driving-user-interfaces .

      It sounds... scary. Like it will work well enough at first, and then explode when someone changes their desktop theme (especially icon theme), or wants to upgrade to a new version of whatever. Treating things as change-controlled APIs when they aren't just seems dangerous. Still I guess there's at least some amount of change control coming from platform conventions and human interface guidelines, and this comes closer to operating at the correct level of abstraction to benefit from that.

    • DanielRibeiroJan 2012

      I always try to keep in mind that A Mess is not a Technical Debt[1], and that when you keep that in mind you can do it intentionally[2]. Which is particularly useful when you are more interested in learning[3] about a problem (like building a MVP) than when you are in solving it[4].

      [1] http://blog.objectmentor.com/articles/2009/09/22/a-mess-is-not-a-technical-debt

      [2] http://martinfowler.com/bliki/TechnicalDebt.html

      [3] http://www.ashmaurya.com/2011/06/your-product-is-not-the-product/

      [4] http://www.threeriversinstitute.org/blog/?p=251

    • daekenDec 2009

      If you're a compiler type person, Treetop ( http://treetop.rubyforge.org/ ) and Polyglot ( http://polyglot.rubyforge.org/ ) are amazingly cool libraries.

      The Case gem (some information here: http://blog.objectmentor.com/articles/2009/03/16/tighter-ruby-methods-with-functional-style-pattern-matching-using-the-case-gem ) for pattern matching is also great, especially if you're dealing with large S-exp structures for compilation. After discovering a few of these libraries, Ruby has become my de facto compiler language.

    Related

    Dev Geniusmedium.com/dev-genius36 people

    A principled approach to GraphQL query cost analysis

    Dev Genius
    Publication · last shared 2026
    Uncle Bob Martinblog.cleancoder.com250 people

    Open Letter to the Linux Foundation

    Uncle Bob Martin
    Personal · last shared 2026
    Kent Beckthreeriversinstitute.org30 people

    "Joel Spolksy is wrong about my work" - Kent Beck

    Kent Beck
    Personal · last shared 2015
    Pindancingpindancing.blogspot.com27 people

    The answer to "Will you mentor me?" is...No.

    Pindancing
    Personal · last shared 2026
    Coding Horrorblog.codinghorror.com2.1k people

    Farewell Stack Exchange

    Coding Horror
    Personal · last shared 2026
    Atomic Spinspin.atomicobject.com240 people

    Do you really need Redis? How to get away with just PostgreSQL

    Atomic Spin
    Company · last shared 2026
    Giles Bowkettgilesbowkett.blogspot.com138 people

    Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

    Giles Bowkett
    Personal · last shared 2018
    Ted Newardblogs.tedneward.com76 people

    Problems with Object/Relational Mapping (2006)

    Ted Neward
    Personal · last shared 2022