TIMTOWTDI (There Is More Than One Way To Do It, also known as Tim Toady) is the design philosophy of Larry Wall's Perl programming language. It holds that problems have several equally valid solutions and that the best one depends on constraints, team and situation. It favours flexibility, expressiveness and trade-off awareness over enforced uniformity, the opposite of the Zen of Python's one obvious way to do it.
TIMTOWTDI
Details
- Full Name
-
There Is More Than One Way To Do It
- Also known as
-
Tim Toady
Core Concepts:
- Multiple valid approaches
-
Acknowledges that problems can be solved in different, equally valid ways
- Developer freedom
-
Trust developers to choose the right approach for their context
- Expressiveness
-
Languages and tools should support diverse problem-solving styles
- Context-dependent decisions
-
The "best" solution depends on constraints, team, and situation
- No single canonical form
-
Resist dogma — flexibility over prescription
- Trade-off awareness
-
Different approaches have different trade-offs; none is universally superior
- Pragmatism over purity
-
Practical results matter more than theoretical elegance
- Collaborative decision-making
-
When working with others, discuss approach rather than assume
- Key Proponent
-
Larry Wall (Perl programming language)
Contrast:
-
Python’s Zen: "There should be one-- and preferably only one --obvious way to do it" (opposite philosophy)
-
TIMTOWTDI favors flexibility and expressiveness over enforced uniformity
When to Use:
-
Choosing between multiple valid architectural or design approaches
-
Code reviews where different styles achieve the same goal
-
Team discussions about tooling, frameworks, or methodologies
-
LLM-assisted development: ask for alternatives rather than accepting the first suggestion
-
Avoiding premature standardization before understanding trade-offs
-
Resisting "one true way" dogma in technology choices
-
Architecture Decision Records (ADRs): documenting why one approach was chosen over other valid alternatives
-
KonsenT-based decisions: finding solutions with no objections rather than forcing one "right" way