These are things that self-designed or user-centric designs tend to get wrong or messy.
- Lack of factoring - Users often don't see commonalities that can be consolidated or meta-tized to simplify a design. They are not nearly as used to and as skilled at looking for commonalities as experienced architechs.
- Too used to the manual or "old" way of doing something and either unwilling to change it or do not understand the implications of doing it in a cleaner way. Thus, they may end up automating a process that is optimized for manual processing or older technology instead of one optimized for current technology.
- Do not realize that different users think differently such that what may be comfortable to them may not work for other users in their group or future new-comers. Software experts also have their own preferences, but have more experience after seeing how different users react to different designs. Thus, software experts are more likely to consider how an "average user" would view the design since they have been exposed to multiple user critiques.
- Don't consider certain change patterns. Things may change in ways that the user may not anticipate or have not seen change so far. For example, the company may have had five and only five product categories since the designing user has been onboard. An experienced developer will know that the chances of the number of categories changing is fairly high despite not having happened within the last say 7 years. Thus, the user may hard-wire the assumption of five categories into too many elements of the design.
But consider
YagNi
YagNi Assumes somebody will clean it up (refactor). End-users don't know how to clean up. And I don't fully subscribe to YagNi.
Should this be called "UserCenteredDesignSmells?" instead?