You are working with someone in one project and this someone writes bad code. Not that bad to fire him ar you can`t work with it, but
- person do not follow coding conventions
- code is not always covered with unit tests (and it should be)
- code is sloppy and do not have comments where it should have them
- person do not know design patterns well/do not know at all
- put his clothes on your table just as he needs some space.
So how to tell one he need to upgrade his skills, without hurting him? I described something that is a problem. But imagine everything is just fine, except some things that really hurt the project. What to do so that you are still friends, but guy really understood he need to change something?