The most important responsibility that is left out of the previous comments...
Programmers need to be an integral part of the entire mechanical design of the robot.
In my experience, I have seen far to many robots be designed, build, rebuild then handed off to the programmers to "Make it work". This will often times leave the programmers with a robot they
a) are not capable of programming (with their particular skillsets)
b) do not have the time to completely program
To have a successful robot, it is necessary that the programming team is active in the robot design
from day one. In the end, it is the responsibility of the programming team to make the dreams of the mechanical team come true. This means, they need to step in during the initial design and say "this might be difficult to control", or "we might not be capable of doing this", or "if you move this back 2 inches from the sensor it will give our program more time to respond correctly".
This is our most recent revision of the team 1716 organization structure, where at the bottom of the page you will see our build season structure. This document shows that that our team is split up into subteams to design specific systems on the robot. In each of those subteams, there is a control (programming/electrical) team member to ensure that sensors and programmability is integrated into the mechanical design of the robot.
Being active from week ONE, will save many headaches and late nights at the end of week SIX!