¿Cómo trabajan juntos los programadores en un proyecto?

Es muy común que los programadores en proyectos relacionados con Internet utilicen técnicas como Agile, Extreme Programming y Scrum. Investigue un poco con esas palabras clave para obtener más información.

Tenga en cuenta que no todo el mundo lo hace según el libro, y los equipos suelen ajustar las cosas para adaptarse a sus circunstancias. A menudo, el trabajo se organiza en Sprints de dos semanas (común) a tres meses (que se encuentran en grandes empresas). Al comienzo de un Sprint, hay una reunión para decidir en qué elementos de la cartera de pedidos se trabajarán. La cartera de pedidos se organizará de modo que cada elemento sea bastante pequeño y se pueda realizar en no más de dos o tres días de trabajo. Esto significa que grandes requisitos se descomponen en subtareas.

Una vez que se decide el Sprint, comienza el trabajo. Cada mañana habrá una reunión standup donde los desarrolladores se pararán en un círculo y se turnarán para decir lo que hicieron el día anterior y lo que planean lograr para el final de hoy. Las personas remotas se unen por cámara web o Skype, y en algunos casos toda la reunión se realiza mediante herramientas de teleconferencia. Aquí es donde los problemas con el trabajo se cortan de raíz antes de que continúen y causen que todo se enrede.

A menudo, los programadores se emparejan para trabajar en elementos de trabajo específicos. Uno manejará el teclado y el otro navegará. A veces, el navegador dicta el código, y otras veces interrumpen con preguntas cuando ven algo que no parece correcto. Esto ayuda a todos a obtener una mejor visión global de todo el proyecto y cómo se interrelacionan las cosas. También reduce la cantidad de depuración que se necesita.

La clave es que asigna trabajo al equipo, y el equipo se autoorganiza. Lo ideal sería enviar el trabajo de esta forma:

Como usuario del sitio web
Necesito ver la cantidad de mensajes nuevos en la parte superior de la página.
Para saber cuándo tengo un mensaje y poder responder lo antes posible.

Criterios de aceptación: después de iniciar sesión, el usuario ve un pequeño número en un botón ovalado rojo en la parte superior derecha a la izquierda de su nombre de usuario. Este botón se puede presionar para ir a la página de Mensajes entrantes.

Cada requisito tiene tres partes que lo vinculan a un usuario, gerente, propietario del proyecto o algún otro actor en el sistema, y ​​cada requisito termina con un criterio de aceptación que describe el estado futuro de las cosas que deben existir para considerar la solicitud completada.

Divide y conquistaras. Si más de una persona está trabajando en un mismo proyecto, debe dividir el trabajo de codificación en módulos. Eso es lo que nos enseña OOP. Cree clases y, en lugar de fusionar directamente el código del otro directamente, incluya estas clases en el proyecto. Si está trabajando en un lenguaje funcional como C, puede dividir el trabajo en términos de funciones. Para proyectos web (del lado del cliente), el trabajo se puede distribuir en contexto JS y CSS.

Editar1.
Lo siento, acabo de leer que Tony Li ha escrito una respuesta similar, así que si sientes que mi respuesta vale la pena votar, vota su respuesta.

Esto debería ser familiar para todos los programadores: divide y vencerás.

Dos programadores deben dividir el proyecto (no necesariamente a la mitad), decidir quién va a hacer qué partes y luego cada uno codifica las partes que acordaron.

Debido a que los módulos tienden a interactuar, los programadores deben definir una especificación de interfaz clara que detalle exactamente qué módulo proporcionará qué servicios y cómo. Esto debe ser preciso hasta el nivel de bits. Así como las buenas cercas son buenas vecinas, las buenas interfaces son buenas programadoras.

Las herramientas utilizadas varían según el equipo. Uno de los elementos más importantes es el software de control de código fuente, como github. Permite a los programadores actualizar una sola aplicación sin tener que preocuparse por la actualización de las copias en sus propias computadoras.

El resto del proceso de coordinación se maneja mediante reuniones programadas regularmente y utilizando varios tipos de colas, como correos electrónicos y listas de tareas, para coordinar actividades que no son emergencias. También hay una variedad de paquetes de software para tratar este lado de las cosas, como TFS.

Cualesquiera que sean los métodos que use para lidiar con el control de fuente y comunicar el estado del proyecto, deje que las personas que realmente saben qué pueden hacer los desarrolladores específicos se encarguen de asignar trabajo, preferiblemente el propio equipo de desarrollo.