Steve Yegge is an influential programmer and blogger known for his candid and in-depth essays on software engineering, productivity, and company culture.

On Platforms and Strategy

  1. "All teams will henceforth expose their data and functionality through service interfaces." This mandate from Jeff Bezos teaches that a company's long-term success depends on creating a platform for others to build on, not just individual products.
  2. "All service interfaces, without exception, must be designed from the ground up to be externalizable...the team must plan and design to be able to expose the interface to developers in the outside world." The learning is that designing for external use from the start forces a higher standard of quality, documentation, and stability in your services.
  3. On not following the service-oriented mandate at Amazon: "Anyone who doesn't do this will be fired. Thank you; have a nice day!" This shows that for a fundamental strategic shift to succeed, it must be a non-negotiable, top-down directive.
  4. "The problem is that we’re a Product Company through and through... that wild success has biased us." This is a warning that early success with a single product can create a cultural bias that hinders the development of a broader platform ecosystem.
  5. "The problem is that we are trying to predict what people want and deliver it for them. You can't do that... There IS no perfect product for everyone." The lesson is to build a platform that allows users to create their own perfect solutions, rather than trying to build a monolithic one for them.

On Programming Languages

  1. "In the Kingdom of Javaland... nouns are the most important citizens in the Kingdom." This illustrates how some languages, like Java, can lead to overly verbose, noun-centric designs where simple actions require complex object wrappers.
  2. "C++ is a vast playground, and makes you feel smart when you know all of it, so you're always tempted to use all of it... In the end, you just make a mess." This teaches that a language's vast feature set can be a detriment, tempting developers into creating overly complex and unmaintainable code.
  3. "If you don't know Lisp, you're not a real programmer." This provocative statement is meant to encourage programmers to learn Lisp, as its powerful macro system and different way of thinking can fundamentally improve one's skills.
  4. "Dumb languages make for dumb worlds. All of computing is based on abstractions... You don't try to build a city out of molecules." The learning here is that the choice of programming language and its level of abstraction profoundly impacts a project's complexity and success.
  5. "It seems to me you can program with discipline or you can program with bondage and discipline. You can't avoid the discipline either way, but bondage appeals to some." Yegge argues that while static typing can catch certain errors, it often imposes a rigid "bondage" that hinders productivity, and discipline is required regardless of the typing system.

On Productivity and Tools

  1. "Mastering Emacs will make you more effective at writing and editing email, documentation drafts, blogs, HTML pages, XML files, and virtually everything else that requires any typing." The key takeaway is that investing time to master a powerful, programmable editor like Emacs or Vim provides a massive, long-term productivity boost. [1]
  2. "Dialog boxes suck. For starters, they always have focus issues, and often cause poorly-designed applications to lock up or fail to refresh while the dialog is open." This illustrates that user interface designs that interrupt flow, like modal dialogs, are often a sign of poor design and a drag on productivity. [1]
  3. "If you don't know how compilers work, then you don't know how computers work." The lesson is that a fundamental understanding of the tools and systems you build upon is crucial for becoming a truly effective engineer.
  4. "The most important thing you learn in college is how to learn on your own." This highlights that a formal education is less about specific technologies and more about developing the ability to independently acquire new knowledge throughout one's career. [2]
  5. "The majority of programmers have literally no idea how to practice, since nobody teaches it. So they simply don't do it." The learning is that programmers should actively and deliberately practice their craft, much like musicians or athletes, rather than just relying on on-the-job experience. [2]

On Agile and Development Methodologies

  1. On "Bad Agile": "...it's an idiotic fad-diet of a marketing scam making the rounds as yet another technological virus." Yegge is highly critical of the dogmatic, consultant-driven application of Agile, seeing it as a rigid process that often does more harm than good. [3]
  2. On "Good Agile": "People evolve processes as they need to (rather than processes grinding down people)." This shows that true agility comes from a flexible, engineer-driven culture of trust and autonomy, not from following a prescribed methodology. [4]
  3. "So if I were you, I'd take Agile off your resume... And then I'd focus on being agile." The lesson is that the "Agile" label has become so loaded with negative connotations that it's better to focus on the principles of agility itself. [4]

On Hiring and Career

  1. "If there was one thing I could teach every engineer, it would be how to market." This underscores that technical skills are not enough; engineers must learn to communicate the value of their work, ideas, and products.
  2. A well-designed phone screen is the most important part of the hiring process. The learning is that a structured, consistent phone screen focused on core programming ability can save immense time and lead to better hiring outcomes.
  3. "I left Google to join Grab because Google is no longer innovative." This serves as a reminder that even the most successful companies can become conservative and lose their innovative edge, prompting top talent to seek new challenges. [5][6]

On AI and the Future of Programming

  1. "You are getting left behind if you do not adopt chat-based programming as your primary modality." The learning is that the developer's job is shifting from writing code line-by-line to guiding AI tools, and resisting this change is a career risk. [7]
  2. On treating LLMs like interns: "They try one thing and they go 'It got it wrong it's dumb.'" The lesson is that to be effective with LLMs, you must iterate, refine prompts, and guide them, much like a human intern, rather than expecting perfection on the first try. [8]
  3. The traditional tasks of junior developers are the ones most easily automated by AI. This suggests the role of a junior developer will need to evolve significantly, focusing more on higher-level tasks, verification, and integration. [9][10]
  4. He champions "Chat-Oriented Programming (CHOP)," where the primary development activity is a conversation with an AI. This indicates that the future of high-leverage programming lies in mastering the art of the prompt and the conversational loop with an AI assistant. [11][12]

More Learnings & Quotes

  1. "YOU should write blogs. Even if nobody reads them, you should write them." The act of writing clarifies your thinking and is a powerful tool for learning and communication. [13][14]
  2. The "Properties Pattern" (using key-value pairs) is a universal pattern for creating flexible, long-lived, and open-ended systems. [15][16]
  3. "Programmers have no idea how good (or bad) they are at programming. In fact, we all think we're pretty darn good at it." This highlights a universal blind spot in self-perception among engineers, which can hinder improvement. [17]
  4. The "Nonesuch Beast" is his term for the mythical, all-in-one system everyone wants but is impossible to build because its requirements are inherently contradictory.
  5. The "Pain Minimization Principle" states that users and developers will always gravitate towards the path of least resistance, so a new tool must be significantly easier to use to gain adoption.
  6. "Google doesn't necessarily need innovation." This illustrates that large, successful companies can thrive on execution and incremental improvements, but this also makes them vulnerable to disruption. [18]
  7. The difference in culture between Amazon (hard-charging, top-down) and Google (bottom-up, engineer-led) is a recurring theme, with each having distinct advantages and disadvantages.
  8. "Good Agile" environments are characterized by high levels of trust and autonomy given to engineers. [4][19]
  9. Great programmers learn how to program their tools, not just use them; the ability to customize and extend your development environment is a key differentiator.
  10. He famously outlined "The Five Essential Phone-Screen Questions," which emphasize practical coding skills over esoteric knowledge.
  11. LSP (Language Server Protocol) helps to "equalise editors," bringing the power of IDEs to flexible editors like Emacs. [20]
  12. Accessibility is "the most important thing in the computing world," as platforms inherently provide greater accessibility than closed products.
  13. "The point of the exercise is the exercise itself, not in what results." This teaches that the value of making predictions is in the thought process and trend-spotting, not in being right. [21][22]
  14. "Why Kotlin Is Better Than Whatever Dumb Language You're Using." This is a classic Yegge clickbait title used to discuss the pragmatic benefits of modern language design.
  15. "Dear Google Cloud: Your Deprecation Policy is Killing You." This is a direct critique of how unpredictable service shutdowns erode developer trust, making it less work for developers to use open-source on bare VMs than to keep up with the "deprecation treadmill." [23][24]
  16. In "Kingdom of Nouns," he laments that "constant change, and constant interest, is all in the verbs," which are sidelined in overly object-oriented designs.
  17. "Sort [your skills] into two buckets, based on whether the skill will still be useful 100 years from now." This is a valuable exercise for focusing on timeless, fundamental skills over transient technologies. [2]
  18. His "Tour de Babel" essay emphasizes the importance of knowing multiple programming languages to avoid being trapped in a single paradigm.
  19. On Google's culture: "Google has become 100% competitor-focused rather than customer focused... It's the dangerous but easier game of using competitor activity as a proxy for what customers really need." [5][25]
  20. He distinguishes between just "doing your job" and deliberate practice, which involves stepping outside your comfort zone to improve specific skills. [2][17]
  21. He once called Lisp "Google's Secret Weapon," not because it was widely used, but because the thinking it fostered led to better solutions.
  22. In "Good Agile, Bad Agile," he praises the Google model where managers are also technical contributors and the hierarchy is functionally flat. [19][26]
  23. On autonomous AI agents: "Running them with permission checks disabled is dangerous and stupid, and you should only do it if you are willing to take dangerous and stupid risks." [7]
  24. On why he joined Sourcegraph: "For me, there's literally nothing on Earth that could be more fun and rewarding than this." This shows his career moves are consistently driven by the desire to work on fundamentally interesting problems.
  25. On the Singleton pattern: "blah blah blah blah SINGLETON blah blah blah blah... I've seen this so many times that it's become a full-fledged pattern in its own right; patterns need a name, so let's call it the Simpleton Pattern." This is a critique of how developers often latch onto a single, simple pattern from a complex book like Design Patterns without understanding the context or the other, more valuable patterns. [27]

Learn more:

  1. steve yegge - effective-emacs - Google Sites
  2. steve yegge - practicing-programming - Google Sites
  3. Good Agile, Bad Agile · Blogs · Will Do - Will Faught
  4. Opinion: Take Agile Off Your Resume - InfoQ
  5. Why I left Google to join Grab - Steve Yegge - Medium
  6. A longtime Google engineer quit, saying the company “can no longer innovate” | The Outline
  7. The Death of the Stubborn Developer | by Steve Yegge - Medium
  8. Steve Yegge (Sourcegraph): Stop Writing Code – That's what LLMs are for - YouTube
  9. The Death of the Junior Developer, and Other Lessons Learned - YouTube
  10. The death of the stubborn developer - Conffab
  11. FULL VIDEO: Steve Yegge/Gene Kim: 2 Hour Pair Programming Session! - YouTube
  12. 01 Steve Yegge/Gene Kim: 2 Hour Pair Programming Session! Introduction - YouTube
  13. Blogging can save you work - Janmeppe.com
  14. steve yegge - you-should-write-blogs - Google Sites
  15. The Universal Design Pattern - Simon Willison's Weblog
  16. The Universal Design Pattern (Steve Yegge) : r/programming - Reddit
  17. steve yegge - being-the-averagest - Google Sites
  18. Steve Yegge – Medium
  19. Good Agile, Bad Agile - Roy Osherove
  20. The Second Golden Age of Emacs - Hacker News
  21. steve yegge - ten-predictions - Google Sites
  22. Steve Yegge's prediction record - Dan Luu
  23. September 2020 – Dear Google Cloud: Your Deprecation Policy is Killing You
  24. index - Links
  25. August 2021 – Why I left Google to join Grab - Meir's Monthly Learning Article
  26. Good Agile Bad Agile - C2 wiki
  27. singleton-considered-stupid - steve yegge - Google Sites