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
    M

    Moishe Lettvin

    moishelettvin.blogspot.com · Personal blog · on HN since 2007

    Moishe Lettvin, a former Microsoft engineer, writes about software craftsmanship and large-company dysfunction, best known for his Windows shutdown post.

    Visit blogHN submissions
    Tech IndustryCareer & WorkManagement
    What HN says

    HN links his Windows shutdown post as an explanation of how bureaucracy in large organizations produces odd results like Vista's shutdown menu.

    Stats for nerds
    33HN people shared it
    13linked in comments
    383story points
    Dec 2025last shared
    2008people per year2025

    Top posts on HN

    1. 1
      The Windows Shutdown crapfest (2006)
      27 people · 341 points · first shared 2008 · 112 comments on HN
    2. 2
      Less programming, more skill?
      1 person · 22 points · first shared 2007 · 10 comments on HN
    3. 3
      Large companies and 'A' talent
      1 person · 13 points · first shared 2007 · Discussion on HN
    4. 4
      Software and craftsmanship
      1 person · 4 points · first shared 2007 · 1 comments on HN
    5. 5
      The Windows Shutdown crapfest (2006)
      2 people · 3 points · first shared 2014 · Discussion on HN
    6. 6
      Windows shutdown crapfest
      1 person · first shared 2018
    7. 7
      Windows shutdown crapfest
      1 person · first shared 2016
    8. 8
      Windows shutdown crapfest
      1 person · first shared 2010

    What HN people wrote when they linked it

    • webmavenDec 2020

      > When you use Win32 you get the latest fixes and features even in applications that haven't been updated for two decades - for example you get new common dialogs and access to shell extensions (e.g. TortoiseSvn/Git integration) that didn't exist back when those applications were made.

      What you're describing is not backward compatibility, it's forward compatibility.

      The OS is backward compatible with old applications that continue to run. The old applications are forward compatible with newer versions of the operating system including some of the new features that are added.

      Achieving backward and forward compatibility (the combination is often called "full compatibility") is actually quite difficult. The resources Microsoft throws at this problem and the related coordination costs are massive (and conversely, the progress any individual developer sees on their particular tasks is often glacial)[0]. In the open source world, I think only web browsers typically see anything resembling a similar level of effort applied to evolving the platform while maintaining compatibility with extant (and often buggy) code, and that's still a much smaller problem (though it might not be after another decade or two), since for all intents and purposes, the web as a whole is a "rolling release" system with bugs and incompatibilities popping up and being fixed constantly.

      [0] http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html

    • DougBTXJul 2008

      You may not have read this article before: http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html

      Here's a relevant quote from the article:

      In Windows, this [centralised] model breaks down simply
      because there are far too many developers to access one
      central repository. So Windows has a tree of
      repositories: developers check in to the nodes, and
      periodically the changes in the nodes are integrated up
      one level in the hierarchy. At a different periodicity,
      changes are integrated down the tree from the root to the
      nodes. In Windows, the node I was working on was 4 levels
      removed from the root. The periodicity of integration
      decayed exponentially and unpredictably as you approached
      the root so it ended up that it took between 1 and 3
      months for my code to get to the root node, and some
      multiple of that for it to reach the other nodes. It should
      be noted too that the only common ancestor that my team,
      the shell team, and the kernel team shared was the root.

      With a distributed system, it would be possible to send changes directly between the two groups. You might have a problem keeping the whole Windows source code repository stored locally on your development machine though.

    • twingeFeb 2012

      Three big problems with a split up codebase:

      1) Instead of doing one large release every week (which facebook does: http://www.facebook.com/video/video.php?v=10100259101684977) you now have dozens or hundreds of smaller releases, a lot more heterogeneity to test for.

      2) If you have inter-dependencies on modules you have to grapple with the "diamond dependency" problem. Say module A depends on module B and C, and suppose that module B also depends on C. However, module B depends on C v2.0 but A depends on C v1.0. If they're all split across repositories it's not possible to update a core API in an atomic commit.

      3) Now you rely on changes being merged "up" to the root and then you have to merge it "down" to your project. This is one of the reasons Vista was such a slow motion train wreck: http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html -- kernel changes had to
      be merged up to the root, then down to the UI, requiring months of very slow iterations to get it right.

    • gmiller123456Sep 2017

      >they are unable to conceive of a company as anything other
      >than a single, gestalt entity, with a single opinion and
      >purpose, whose actions are driven by the most basic
      >emotions and can be classified as good or evil with
      >absolutely no grey-area.

      Seems like quite a straw man argument, there probably isn't a single person that actually fits your description. And it certainly does not describe a typical developer.

      As infamously documented in "The Windows Shutdown Crapfest" [1], in order for anything to be publicly observed outside of most large bureaucracies, a large number of people are involved, and their only common interest comes from very high up in the bureaucracy. So you usually do end up with a single, simple ideology presented to the public, even though there are a lot of people internally fighting for different things.

      [1] http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html

    • mapgrepApr 2014

      But some of it was just math -- a large company with many teams that need to coordinate slows things down. I like this anecdote from a Microsoft engineer about how it took a year to design a really crappy shutdown menu with nine (nine!) options.

      It turns out there 43 different people who had a voice in the feature, which was hashed out over a series of grinding meetings involving teams responsible for kernel, shell, Tablet PC, Longhorn, and (drumroll please) "Windows Mobile PC User Experience"."

      "In Windows, the [repository] node I was working on was 4 levels removed from the root. The periodicity of integration decayed exponentially and unpredictably as you approached the root so it ended up that it took between 1 and 3 months for my code to get to the root node, and some multiple of that for it to reach the other nodes."

      http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html

    • jasodeJul 2023

      Some more links of how bureaucracy inevitably creeps in as organizations get larger:

      - http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html

      - http://www.lizengland.com/blog/2014/04/the-door-problem/

      Another famous anecdote was Google CEO Larry Page firing all of his project managers during its early startup days because he felt they just got in the way of his programmers getting things done. But his executive team convinced him to reverse his decision. Think about that, even the powerful owner of Google couldn't get rid of the layers of bureaucracy. He eventually relented.

      No non-trivial project has come up with a way to coordinate a large # of programmers where the participants themselves don't complain about the bureaucracy. In other words, learn to love Jira -- because it's inevitable?!?

    Related

    Microsoft MSDN Blogsblogs.msdn.com1.6k people

    Why I Left Google

    Microsoft MSDN Blogs
    Company · last shared 2023
    Coding Horrorblog.codinghorror.com2.1k people

    Farewell Stack Exchange

    Coding Horror
    Personal · last shared 2026
    Scott Hanselmanhanselman.com667 people

    I Miss Microsoft Encarta

    Scott Hanselman
    Personal · last shared 2026
    The Old New Thingdevblogs.microsoft.com/oldnewthing788 people

    Be careful with that thing, it's a confidential coffee maker

    The Old New Thing
    Company · last shared 2026
    Chris Sellssellsbrothers.com27 people

    If Richard Feynman applied for a job at Microsoft (2002)

    Chris Sells
    Personal · last shared 2026
    Google Testing Bloggoogletesting.blogspot.com79 people

    DOM Snitch: Google's passive in-the-browser reconnaissance tool

    Google Testing Blog
    Company · last shared 2021
    Drew DeVaultdrewdevault.com633 people

    Firefox is on a slippery slope

    Drew DeVault
    Personal · last shared 2026
    MSRC Blogmsrc.microsoft.com240 people

    SolarWinds hackers were able to access Microsoft source code

    MSRC Blog
    Company · last shared 2026