‹ BackHN Continuity

Thread

First Principles Thinking

287 points · 138 comments · sunils34

  1. bob1029 · · focus · HN ↗
    Higher order thinking is more important and rare.

    An aggressive first principles approach often leads otherwise well-intentioned technologists into strategic / ideological dead-ends.

    Do we do things because it's the "right thing" to do in the moment, or because of the final outcome that will eventually result?

    The most ideal answer is somewhere in the middle. I am far more interested in the total area under the curve than a single instant in time.

    In lieu of intentional higher order thinking, simply working backward from your customer on a regular basis will generally accomplish the same outcomes.

    1. dkarl · · focus · HN ↗
      > An aggressive first principles approach often leads otherwise well-intentioned technologists into strategic / ideological dead-ends

      First principles are an illusion. Good engineers make strategic choices of the supposed "first principles" they apply, and on a particularly difficult problem, they may iterate through multiple options before discovering the "first principles" that yield a good solution.

      Engineers that take first principles seriously and try to use them to guide their decisions discover that correct-sounding first principles tend to work in some contexts and fail in others. Then they go one of two ways responding to these failures.

      One way is to blame the context. My favorite example of this is a project where a consultant writing a Java web service struggled for months to get Hibernate to emit queries than ran efficiently on the company's Oracle database. Pressed by management to write the queries by hand, the consultant insisted that using Hibernate was a non-negotiable "best practice." Eventually the manager grepped the logs, identified twelve distinct queries that the service needed, and tasked the Oracle admin with optimizing them, which took less than an afternoon. The consultant still pushed back against using the hand-tweaked queries, saying that if the answer emitted by Hibernate didn't run efficiently, then the database schema was wrong and needed to be fixed. This was not the right response when the database in question was the beating heart of a hundred million dollar tech company and was optimized to handle massive transactional workloads, and the consultant was struggling to write a simple web service for internal users.

      The second way is to push your first principles to higher and higher levels of abstraction to make them less context-dependent. They update "Use Hibernate for database access" to "Use whatever database library or framework makes it possible to achieve the best results with the least developer effort" and eventually resort to something like "do whatever achieves the best outcome measured by its impact on what is important to you at the time."

      I think a better approach is to collect a toolkit of potentially helpful principles and develop understanding of when each principle tends to be helpful.

      1. BoiledCabbage · · focus · HN ↗
        This is a nice anecdote about Hibernate, but in the world does it have to do with "first principles" thinking?
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.