Whether we like it or not, names follow us everywhere. In every software system we build, and every API we design or use, there are names hiding around each corner that will live far longer than we ever intend them to. Because of this, it should seem obvious that it’s important to choose great names (even if we don’t always give our naming choices as much thought as we should). In this chapter, we’ll explore the different components of an API that we’ll have to name, some strategies we can employ to choose good names, the high-level attributes that distinguish good names from bad ones, and finally some general principles to help guide us when making tough naming decisions that we’ll inevitably run into.