To start with, primitives are the basic data types available in most languages. These include data types such as strings, numbers (int, floats), and booleans. Primitive obsession is a code smell in which primitive data types are used excessively to represent your data models. The problem with primitives is that are very general. For example, a string could represent a name, an address, or even an ID. Why is this a problem?