Naming Things

The Hardest Problem in Software Engineering


Tom Benner

Write understandable software

Naming is one of the most frequently-used, visible, and timeless skills in software engineering, but it's poorly understood and poorly executed.

We're writing a book about how to name things well.

Read the book to learn how to:

  • Make your code and products understandable to multiple audiences
  • Reduce time wasted explaining concepts to colleagues and users
  • Make you, your colleagues, and your users happier and more effective

Learn more Read the blog



Learn a valuable, lifelong skill that few engineers have

Naming things requires communicating complex concepts clearly and concisely. Few engineers do this well, leading to software that is needlessly confusing.

By learning simple naming principles, you can name things more quickly, confidently, and effectively.

Learn how to:

  • Methodically find the best name for a concept
  • Help yourself and your colleagues understand code more quickly
  • Make concepts immediately understandable
  • Effectively rename poorly-chosen names

Read more about the book in the "Why we need a book about naming things" blog post.


Top Blog Posts

Quotes by Experts

Your code is for a human first and a computer second. Humans need good names.
— Martin Fowler
Programs must be written for people to read, and only incidentally for machines to execute.
— Harold Abelson & Gerald Jay Sussman
There are only two hard things in Computer Science: cache invalidation and naming things.
— Phil Karlton
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
— Martin Fowler

Want to be a beta reader?

To review drafts of the book as a beta reader, please fill out this form.