¿Cuál es la mejor manera de organizar la programación colaborativa entre cofundadores mientras se prueba el código antes de la producción?

Mucho depende del tipo de producto que está creando (aplicación de escritorio / móvil versus un sitio web que se ejecuta en Linux).

Desde el punto de vista del sitio web de linux +, lo que utilizamos (y lo hemos utilizado con éxito en el pasado para diferentes empresas) es:

  • Un servidor de desarrollo con una cuenta separada para cada usuario.
  • Todas las bibliotecas externas que se necesitan para ejecutar el código pueden encapsularse o mantenerse en un directorio central compartido y vincularse al directorio de desarrollo del usuario.
  • Repositorio de código que actúa como un centro central para todo el código. Puede usar cualquier otro control de fuente siempre y cuando mantenga una ‘rama maestra’ donde todo finalmente vaya
  • Una base de datos / sistema de almacenamiento compartido para que cada usuario no tenga que mantener sus propios datos. También es bueno tener más datos en dev.
  • Si usa otras aplicaciones (como Lucene, memcached, etc.), puede haber una instancia compartida de las que funciona para todos los usuarios.

Para uso real:

  • Cada usuario tendrá su propia instancia (la llamamos patio de juegos) de la base de código y el servidor de aplicaciones / servidor web en el que pueden realizar cambios durante el desarrollo.
  • El código se editará directamente en el servidor (o, si lo desea, móntelo usando sshfs o similar para usar editores locales)
  • Utiliza las bibliotecas de un directorio compartido, por lo que todos obtienen las mismas bibliotecas para evitar sorpresas.
  • Se conecta a la misma instancia de la base de datos y otros ‘servidores’, que podrían estar ejecutándose en la misma máquina.

También puede crear un usuario ‘etapa’, que básicamente contiene el código de la rama ‘maestra’ que eventualmente será expulsada en un servidor en vivo.

Este enfoque tiene muchas ventajas que son importantes:

  • Solo una persona tiene que mantener el medio ambiente. Otros solo pueden replicarlo en segundos
  • Todo está centralizado, es muy fácil hacer copias de seguridad y compartir / copiar con otros.
  • Todos los esquemas o cambios relacionados (que generalmente son compatibles con versiones anteriores) no necesitan ser aplicados por todos
  • No depende de la falla de computadoras portátiles / computadoras, ya que la mayoría de los proveedores de VFS son generalmente bastante confiables
  • Si no tiene la computadora portátil, aún es fácil hacer cambios desde una terminal

Cuando es una empresa completamente nueva, no hay nada que le impida utilizar cualquier alojamiento que tenga para configurar un servidor de integración continua con algo como Hudson ejecutándose en él. Puede apuntar su URL a otra ubicación para cualquier sitio de creación de publicidad que pueda tener.
Sugeriría configurar un entorno de desarrollo tan pronto como lo haya lanzado para que pueda tener un proceso de lanzamiento formalizado.