Uber's Software Engineer Apprentice Program gives developers with non-traditional paths to programming an opportunity to work on industry-level software while receiving extended training and mentorship.