When the slow developer falls behind in his sprint, the quick developer does some of the remaining work.
This is how Scrum team is supposed to work. You don't work on your stuff, your only goal is to produce potentially shippable increment of software at the end of Sprint.
The quick developer does not mind doing the work, but has made remarks such as 'the other developer should do this it was originally delegated to him'.
This statement contradicts itself, he doesn't mind yet he complains.
I am concerned that my slow developer might be coasting it, from knowing that the quick developer will pick up some of the slack for us to meet the sprint goal. I have mentioned to the slow developer that we needs to work on increasing his velocity during the sprint. He has said 'ok', but then goes 'oh I didn't realise that the work was so complex'. So it is hard to know what exactly is going on. The quick developer has told me that the slow developer sometimes is idle, and works in spurts.
This shows fundamental lack of trust between you and both team members.
I don't want to defend slow guy, but that's the way it is in software: estimates are usually not met and it's just too complex to predict accurately.
Having said that... you might be in situation where you actually have slacker/under-performer on the team and Scrum and iterations don't have anything to do with it.
Let's improve developer's productivity
How can I improve the productivity of the slower developer?
You don't know why he is "slower". The question you're asking can be compared to "how can I cure sneezing?" without asking what caused it.
Your "slow" developer might be:
- demotivated at his role/project/team
lacking skillset of specific technologies
having some personal issues (sickness/problems at home/etc)
not be right fit for being developer (yes, it happens)
Top of my head I can think of couple more possible reasons.
Solution to your immediate performance problem
Try to approach it from two avenues. First and foremost talk with him and openly ask if he's ok as you noticed that he seems to be falling behind with the work and you don't want to guess what the reason is.
Second, if you're his manager it would be good to know what is his history in the company. How he was hired, how he ended up with his team, what is his professional experience. There are companies that are very inconsistent in hiring practices and they just hire people not qualified to be programmers, who are managed by people who have no qualifications to be managers. When you'll know more (or give us more details for that matter), you can start thinking about improving someone's performance.
You need to learn a lot
Looking at your post it seems you're beginner manager with very basic understanding of Scrum and missing all core values behind it (e.g. "I am managing the teams's velocity"). I don't mean it to be insult, but rather as knowledge assessment and opportunity to learn. If you're willing to learn - sky is the limit.
I would recommend reading Peopleware to understand what it means to be manager of software team. Then follow it by couple articles by Joel Spolsky (start with TOP10 at the bottom) and then you can follow it by book with real life applications of Scrum explained like: Agile Project Management with Scrum. After that look at Management 3.0 and get grasp of modern management.