If the person can't program and can't communicate and can't work with others, then re-assigning just transfers the problem (and in a small company that often isn't possible). Of course, if they're good at something else, then re-assigning makes sense.

We had a contract programmer who met all three requirements, fortunately we ended his contract before he caused irreparable damage, but I'm stuck with cleaning up the mess. I feel like rewriting it from scratch, but of course I can't really do that.

When dealing with such code, my feeling is "screw debate about OO design, Java vs Smalltalk, etc. I'd be happy if everyone could just do good procedural programming."

--Tony
"A bad employee is worth is negative money - and worst case can destroy a company"