Code smells are characteristics in the source code of a program that possibly indicate a deeper problem. They are subjective and vary by language, developer, and development methodology.