Understanding On-the-Fly End-User Robot Programming