Some where on the team you need a conductor. Somebody who understands everything it takes to make the robot work & get the various teams to work together. On our team that is the job of the chief engineer.
As far as what is expected from the programming team. They need to understand the electrical side of things because the Crio ultimately interacts with the world through electrical IO. They need to understand the mechanical side of things because ultimately the robot is a mechanical device. The need to understand the controls because ultimately the drive team control the robot. So the program team does not get to shape reality. The programers have to make their program work with the reality giving them. So of course it is ultimately the programmer fault when it doesn't work.
