A good leader will have a regular interaction with his team (at all levels). He will be well aware of the performance level of almost everyone in his team. He should not have to wait till the end of the year or till the situation becomes very bad, before he talks to the person whose performance is below par. A leader has to work on the principle of continuous performance Management.
The person with the low performance should always be given to improve. Give him the training he needs to improve. Try and understand the reasons behind his poor performance - does he have the skills for the work given to him, is he interested in the work given to him, is he having some personnel problems that are disturbing him..........etc. There could be various reasons - try to find them and remove them.
However there are certain people who will not improve how much every you try to help them improve. There is a limit to how much you can do. These people you have to remove or shift them over to the least important.
My personnel take on this is:I think firing any one is the worst thing i have to ever to do in my professional life. Because by firing a person it is not only that person who is effected, but also his family and all those who are dependent upon him (financially and emotional) are effected tremendously. Having said that being a leader I also have to keep the overall performance of the team in mind. I am going to try Continous Performance management more sincerely.