En mi humilde opinión,
creo que es dificil hacerlo a partes iguales. Uno debe llevar las riendas y organizar. También programar, pero pedir a los otros dos todo tipo módulos o funciones, por ejemplo:
decir al programador,
necesito una rutina a la cual tengo que pasar tal argumento y me tiene que devolver tal otro, sin importar la implementación, como una caja negra. Puede ser desde una pequeña función hasta una clase, aplicación, módulo, etc..
Y el programador principal a unir las piezas del puzzle.
Es el trabajo de los analistas o analistas-programadores, que lo ven un poco más desde arriba.
Saludos
Pablo