This is actually a misuse of the phrase "code smells". A code smell is supposed to be a characteristic of coding that is a symptom of a deeper design issue. In other words, the problem isn't with the code itself, but the overall design. This kind of thing is common in any kind of system, even those that are well designed. It occurs when a pattern used in the situation hasn't evolved with the growing requirements. Developers add code to satisfy new features. As they add more code, it becomes more difficult to maintain and the structure itself starts to unravel. It is necessary for a more senior developer or architect to recognize the code smell, suggest a new pattern and a path for refactoring the code. If anyone tells you that your code smells, they are misusing the term. Additionally, this misuse of the term is both vague and derogatory. It is not only unhelpful, but it is harmful. I actually discourage its use, regardless if it used correctly or not.