There are various reasons, but we seem never able to finish all items selected for an (sic) sprint.
This points to a Scrum implementation failure. The failure is not that the Development Team isn't completing all its work items; the failure is that the Scrum Team lacks a central coherence for each Sprint. In other words, you need a Sprint Goal as a central feature of Sprint Planning.
Analysis and Recommendations
Always remember that the goal of a Sprint isn't to complete lots of backlog items. The goal of a Sprint is to deliver the Sprint Goal.
A focus on "doing all the things" is an anti-pattern that stems from non-agile assumptions about how work should be divvied up and performed. It's also very commonly a form of the 100% utilization fallacy that attempts to maximize the utilization of individual team members, rather than optimizing for the throughput of potentially-shippable features that meet a complete Definition of Done.
Because the team is being asked to work on many disparate tasks, rather than collaborating in a cross-functional way on completing vertical slices of work, the results you're seeing are almost entirely predictable. You need to shift your focus away from pseudo-productivity in the form of task-completion towards a focus on feature-completion to resolve this problem.
In other words:
- Ensure each Sprint Planning session results in a coherent Sprint Goal.
- Ensure the work selected for the Sprint aligns with that Sprint Goal.
- Ensure everyone on the team is working together on the Sprint Goal.
- Measure the success of the Sprint on whether or not the Scrum Team was able to meet the Sprint Goal.
Doing anything else is not Scrum. Doing anything else will also be painful, frustrating, and demoralizing. So, unless you are an organization of professional masochists, stop doing what you're doing and implement Sprint Goals as a core practice.