¿Cuáles son algunas de las mejores prácticas para un equipo de desarrollo distribuido en el inicio web?

Estas cosas pueden ser obvias porque son completamente no opcionales en mi humilde opinión, pero las voy a decir de todos modos, por si acaso:

  • Utilice un sistema de control de versiones para administrar el código y comprenda cómo se utilizarán sus características (ramas, por ejemplo) en todo el equipo.
  • Use un sistema de tickets para rastrear errores, características, tareas, etc. Preferiblemente, este sistema está integrado con el sistema de control de versiones, de modo que los compromisos con el VCS pueden hacer referencia a los tickets. También preferiblemente, este sistema tiene al menos herramientas limitadas de gestión de flujo de trabajo, filtrado y priorización. Obviamente, el sistema debe poder asignar tickets a los miembros individuales del equipo.
  • Establezca un espacio en línea compartido para tomar notas y documentación, como un wiki.
  • Establezca un IRC persistente u otra sala de chat, o al menos la capacidad de contactar fácilmente a todos los miembros del equipo a través de mensajería instantánea.
  • Establezca y documente prácticas básicas de codificación: pestañas versus espacios, donde van las llaves, ese tipo de cosas. Puede que no todos estén de acuerdo, pero tener estándares documentados mantendrá su código limpio y evitará problemas con alguien que siente que alguien más lo está haciendo mal.

Estos son ridículamente básicos, pero he trabajado en muchos equipos distribuidos, y te sorprendería saber cuántos no tienen estas cosas simples en su lugar. En mi experiencia, un sistema de venta de entradas y VCS en particular contribuyen en gran medida a establecer la transparencia y la confianza entre los miembros del equipo que no se ven regularmente.

Escribí mi tesis de maestría sobre cómo encontrar las mejores prácticas para el desarrollo de software distribuido ágil. Algunos de estos se suman a las respuestas de Rebecca y Suman. Mi trabajo se centró en el entorno de desarrollo de F-Secure Corp, pero creo que al menos algunas de las ideas también son válidas para una startup. Dividí la tarea en tres partes: desarrollo de software real, infraestructura de soporte (TI) y factores humanos. Los siguientes puntos son los problemas clave que encontré con un nivel de dificultad aproximado para lograr un excelente nivel del tema entre paréntesis.

Mejores prácticas para el desarrollo de software:

• Procesos de desarrollo del rigor (5)
• CMMI como marco de mejora de procesos (4)
• Bajo acoplamiento y alta cohesión con el código desarrollado (4)
• Prueba consolidada, configuración y entornos de construcción (2)
• Pruebas funcionales como documento de requisitos (5)
• Uso extenso de herramientas de colaboración (2)

Mejores prácticas para la infraestructura de TI:

• Red con baja latencia, suficiente ancho de banda, confiabilidad y seguridad (4)
• Servidores confiables, eficientes y ágiles con virtualización para ayudar a la implementación (3)
• Estaciones de trabajo que se ajustan al proceso de desarrollo (1)
• Aplicaciones para respaldar la estrategia de la empresa siendo lo suficientemente ágil (4)
• TI trabajando de forma ágil (4)

Mejores prácticas para factores humanos:

• Conciencia cultural del personal diferente (2)
• Embajadores para visitar oficinas remotas (1)
• Fomento de la confianza entre el personal (3)
• Comunicación vertical y lateral (4)
• Sitios con igual resistencia (5)

El texto completo está disponible aquí: http://www.dkaiser.com/thesis.pdf

Somos un equipo de desarrollo de trabajo en casa de 17 miembros. Recientemente, un periodista le hizo esta misma pregunta a nuestro CEO. Aquí está su respuesta: “Como empresa distribuida, creemos en dejar que las personas trabajen cuando y donde quieran . Para mantener a todos enfocados en la producción, pagamos por hora en lugar de salario , y utilizamos nuestra propia aplicación de seguimiento de tiempo , Seguimiento de horas, para darles a ambos empleados y gerentes tienen una idea de en qué están trabajando todos “.