It works on my machine... and yours, and everyone else's!

Por lo general, en un proyecto cada programador desarrolla en local. Dado que cada uno es responsable por instalar programas en su máquina, actualizar las versiones, configurar las librerías, etc. no son fuera de lo común situaciones como estas:

- Algo que te funciona a ti no le funciona a otros
- Alguien agregó una librería nueva o cambió la configuración de un software y no lo documentó
- Algún programa o version en tu máquina está provocando problemas en la instalación del proyecto
- Algo que funciona en tu local no funciona en el servidor
- Entra alguien nuevo al proyecto y hay que invertir tiempo explicando cómo instalar todo lo necesario

Este problema se agrava cuando estás trabajando con varios programadores y varias herramientas (lenguajes, bases de datos, librerías…) y además sus versiones. En general se tiende a generar un abanico grande de configuraciones, presente en cada uno de los entornos de desarrollo de cada uno de los componentes del equipo. A medida que el proyecto crece y tiene más y más dependencias, esto que suele derivar en mayores problemas.

Por si esto no fuera suficiente, también tenemos el problema de que algunos programadores trabajan en Windows, otros en OS X y luego los servidores de producción usan algún sabor de Linux.

Seria un sueño hecho realidad contar con un ambiente de desarrollo que fuera lo mas consistente posible entre todos los programadores e incluso los servidores. Acaso esto es posible? – Esto es completamente posible utilizando herramientas de virtualización para crear ambientes de desarrollo compartidos

Pero no necesito crear la maquina virtual desde 0, instalar lo necesario y ademas compartir archivos enormes de 800 Mb o mas? – No. Para eso existe Vagrant, el cual nos permite definir un archivo de manifiesto con las configuraciones necesarias.

Ok, pero con Vagrant tengo que aprender otra herramienta mas o incluso saber Ruby. – "There's an App for that!" Para eso tenemos PuPHPet! Unos cuantos clicks "et voilà"!

Acerca del conferencista