The keyword is Courage.
Courage to estimate and discuss your work
Courage to start work on small stories with insufficient detail
Courage to talk to customers to elaborate said stories
Courage to constructively critique team members code
Courage to review your mistakes (in public) and learn from them
Courage to release "unfinished but good and shippable" code when it already delivers value.
Courage to stick to the agreed team processes when management has a bright idea
Courage to amend agreed processes in team when a better way is found
Courage to deliver high quality code using test driven development and continuous integration.
...
Note: The unfinished part does not mean "low quality", it means satisfying the customer, cleanly implemented, tested, ship-ready. However falling short of the developers idea of perfection, i.e. spring configuration is a bit clunky, some refactoring can be made, some auto configuration, some speed improvement, some corner cases... I found that some developers take the "user story hostage" and keep it unshippable till it is perfect. If it is good, you should let go, better is for the next sprint.