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
    T

    Typical Programmer

    typicalprogrammer.com · Personal blog · on HN since 2007

    Typical Programmer is a blog on software development culture, maintenance programming, methodologies, and code readability, with a satirical streak.

    Visit blogHN submissions
    ProgrammingCareer & WorkManagement
    What HN says

    HN links it for essays on why methodologies fail and on maintenance work; the given comments mostly discuss databases and simplicity in code.

    Stats for nerds
    49HN people shared it
    57linked in comments
    1.6Kstory points
    Sep 2023last shared
    2011people per year2023

    Top posts on HN

    1. 1
      Why don’t software development methodologies work?
      8 people · 505 points · first shared 2014 · 197 comments on HN
    2. 2
      What does code readability mean?
      5 people · 303 points · first shared 2018 · 129 comments on HN
    3. 3
      Working on an iPad Pro as my main computer
      1 person · 152 points · first shared 2018 · 186 comments on HN
    4. 4
      The joys of maintenance programming
      1 person · 141 points · first shared 2011 · 29 comments on HN
    5. 5
      How I work as a digital nomad
      1 person · 87 points · first shared 2014 · 111 comments on HN
    6. 6
      Sorry, Digital Ad Exec, I Probably Don’t Want To Work For You
      1 person · 86 points · first shared 2013 · 57 comments on HN
    7. 7
      Why Programmers Don't Like Relational Databases
      1 person · 43 points · first shared 2007 · 80 comments on HN
    8. 8
      Linus Torvalds goes off on Linux and Git
      1 person · 43 points · first shared 2012 · 12 comments on HN
    9. 9
      Introduction to Abject-Oriented Programming
      1 person · 29 points · first shared 2009 · 5 comments on HN
    10. 10
      Blog comment correcting startup gets $25m funding
      1 person · 28 points · first shared 2008 · 26 comments on HN

    What HN people wrote when they linked it

    • userbinatorJan 2018

      It is often the case that the simplest solutions require the greatest skill in achieving. Thus, I agree immensely with avoiding unnecessary complexity whenever possible, but not "We should endeavor to write code that a novice programmer can easily understand without explanation or that a maintainer can understand without significant time investment." --- which tends to lead to extremely verbose, inefficient, and dumbed-down code.

      In other words, if you only ever use the very simplest features of the language, you are effectively reducing micro complexity but increasing macro complexity. One of the best examples of this is the classic arguments over the use of the ternary/conditional (?:) operator --- those against say it's hard to read and should always be replaced with if/else, while those for say it simplifies the code by removing redundancy and should always be used in place of an if/else with a single assignment statement with the same LHS in both clauses.

      Similarly, if you believe programmers are almost completely incapable of understanding operator precedence, or that it "makes code hard to read" and restrict expressions to only one operator (and mandate that variables be created for all intermediate results), then you will get code with all the verbosity of Asm but none of the benefits.

      In other words, good code may not be immediately obvious; but your reaction when you do understand it should be one of pleasant enlightenment, and not "I can think of a simpler way…

    • gregjorSep 2012

      I wasn't able to figure out how to post a comment/reply on Blogger, sorry.

      Thanks for pointing me to your article from the HN flame war about MongoDB. If only there were more useful articles like this and less flaming.

      You wrote "...in MySQL, the application is king and the db a humble servant." That is exactly my experience, and it leads not only to terrible databases but to piles of awful code written around terrible databases. In 1974 Kernighan and Plauger wrote "Choose a data representation that makes your program simple" (Elements of Programming Style). Other esteemed programmers have said the same thing. A well-designed and normalized database schema with validations and access rules implemented in the database will reduce the amount of application code needed.

      I've written about keeping data management code in the database where it belongs (http://typicalprogrammer.com/?p=101), but you make a much clearer argument with real examples. A few years ago the Ruby on Rails people championed the idea of "application databases" and writing HTTP+XML APIs, which probably seemed like a great idea given that few, if any, Rails applications ever had databases that other applications needed to access. Now the NoSQL folks have taken this even further, eliminating structure from the data and all ACID compliance, separating the data from integrity enforcement, all in the name of scalability problems their app might have if they get as big as Google.

      I am stuck with MySQL most of…

    • mcguireFeb 2014

      "Surprisingly, left to themselves programmers don’t revert to cowboy coding—they adopt or create methodologies stricter and more filled with ritual than anything I experienced in 1980. In fact programmers today can be much more rigid and religious about their methodologies than they imagine a 1970s-era COBOL shop was. I now routinely get involved with projects developed by one or two people burdened with so much process and 'best practices' that almost nothing of real value is produced."

      Sing it, brother! Can I get an "Amen"?

      I know of one project with a technical lead who, to my knowledge, has never done anything other than support the vendor program the project is replacing; the team has developed a process built primarily around avoiding Subversion merges (which is not necessarily a bad thing given that they seem to actively resist learning anything about how to use Subversion) and secondarily around adopting anything anyone has ever described as a "best practice", including inventing a few new ones. So far, I do not know of anything their project actually does, although there is a great deal of it.

      Oh, and their scrum meetings seem to involve the scrum master reading a fair amount of text from PowerPoint slides (which have far too much text on them).

      [Edit] Apparently, I can. http://typicalprogrammer.com/why-dont-software-development-methodologies-work/#comment-4460

    • greenyodaJun 2019

      Having a separate team of "maintenance programmers"[1] who fix bugs is a decades-old idea, and I worked in an environment like that years ago.

      I think it's much better for the original developers to have the responsibility for fixing their own bugs, since it gives them the incentive to be more careful when writing and testing their code. Not allowing them to write new code until their known bugs are fixed puts the brakes on impulsive developers who churn out unreliable, poorly-tested code quickly.

      Also, people who fix bugs in other people's code tend to have a worse understanding of the code than the original authors. This pushes them into making microscopic fixes that address the symptoms of the currently-reported bug, but may introduce new bugs. In contrast, the original author might have the knowledge to rewrite a larger part of the code in a way that fixes many related bugs and makes the code more reliable.

      [1] http://typicalprogrammer.com/the-joys-of-maintenance-programming

    • ignoramousMar 2019

      Some more quotes taken from http://typicalprogrammer.com/what-does-code-readability-mean that you might find interesting.

      Any fool can write code that a computer can understand. Good programmers write code that humans can understand. – Martin Fowler

      Just because people tell you it can’t be done, that doesn’t necessarily mean that it can’t be done. It just means that they can’t do it. – Anders Hejlsberg

      The true test of intelligence is not how much we know how to do, but how to behave when we don’t know what to do. – John Holt

      Controlling complexity is the essence of computer programming. – Brian W. Kernighan

      The most important property of a program is whether it accomplishes the intention of its user. – C.A.R. Hoare

      No one in the brief history of computing has ever written a piece of perfect software. It’s unlikely that you’ll be the first. – Andy Hunt

    • parenthephobiaApr 2016

      What if I'd done that 20 times around my code-base and then later I discover there's an off-by-one error in the original code that's maybe been inherited into all 20 copies?

      If I could actually reuse code properly I'd only have to fix it once.

      Without effective code reuse, I have to hunt down the copies, each of which may have slight modifications to make them better fit their use case (and might be hard to grep for as a result), figure out whether or not the bug exists in that copy (and whether it can actually be triggered), and fix it there.

      The description of inheritance in http://typicalprogrammer.com/abject-oriented/ seems relevant here. (Edit: Derp, junke got there way before me!)

    Related

    Stack Overflow Blogstackoverflow.blog1.1k people

    How Dwarf Fortress is built

    Stack Overflow Blog
    Company · last shared 2026
    Simple Programmersimpleprogrammer.com72 people

    The Hacker News Generation (Afraid of Hard Work)

    Simple Programmer
    Personal · last shared 2025
    Dev Geniusmedium.com/dev-genius36 people

    A principled approach to GraphQL query cost analysis

    Dev Genius
    Publication · last shared 2026
    Rachel Krollrachelbythebay.com493 people

    fork() can fail

    Rachel Kroll
    Personal · last shared 2026
    Better Programmingbetterprogramming.pub319 people

    Three programmers got fired, including me, due to a single app crash

    Better Programming
    Publication · last shared 2025
    DaedTech (Erik Dietrich)daedtech.com196 people

    How Developers Stop Learning: Rise of the Expert Beginner (2012)

    DaedTech (Erik Dietrich)
    Personal · last shared 2026
    beza1e1beza1e1.tuxen.de120 people

    A collection of things that are Turing-complete by accident (2013)

    beza1e1
    Personal · last shared 2026
    programming is terribleprogrammingisterrible.com124 people

    Write code that is easy to delete, not easy to extend

    programming is terrible
    Personal · last shared 2026