Yukihiro Matsumoto
Father of Ruby, whose core design philosophy is 'programmer happiness'
Yukihiro Matsumoto (Matz) began designing Ruby in 1993 and released the first version in 1995. His core design philosophy is 'programmer happiness' — the language should conform to human intuitive thinking rather than machine execution logic. Ruby won the hearts of developers worldwide with its extreme expressiveness and consistent OOP design, and through the Ruby on Rails framework (created by David Heinemeier Hansson) became a major force in web development, underpinning the early tech stacks of GitHub, Shopify, and Airbnb.
Methodologies
- Programmer Happiness Measurement Method - In technical design decisions, treat programmer happiness as a measurable optimization target, not a vague 'ease of use'.
- Principle of Least Surprise Design - Design should conform to the target user group's existing mental models, reducing the cognitive interruption of 'why does this work this way?'
Key decisions and timeline
- 1993-02-24 Began Designing and Implementing the Ruby Language - When existing tools don't satisfy your usage philosophy, designing from scratch is often more valuable than patching existing tools.
- 1995-12-21 Ruby 0.95 First Publicly Released on a Japanese Mailing List - Building a reputation first in a small culturally and linguistically similar community is more effective than pursuing global coverage from the start.
- 1999 Programming Ruby (Pickaxe Book) Published in English - The key moment for technical product internationalization is the appearance of the first high-quality native-language documentation, not the internationalized version of the product itself.
Beliefs and mental models
- Belief 1 - Every Ruby design decision first asks: does this make programmers happier? Not: does this make the compiler simpler? Matz believes programs are written for humans to read; machine execution is secondary.
- Belief 2 - The language should work according to the intuitions of experienced programmers rather than producing unexpected results. When language behavior matches expectations, cognitive load is minimized, and developers can focus on business logic rather than the language itself.
- Belief 3 - In Ruby, everything is an object — including integers, nil, and classes themselves. This design consistency eliminates the mental model split between 'primitive types' and 'object types', reducing the conceptual complexity of the language.
- Model 1
- Model 2
- Model 3