No se trata de un mero cambio de nombre: el cambio de “proyecto” por “producto” es profundo y significativo. Por lo pronto, ya no alcanza únicamente con cumplir estándares de calidad en la creación del software ni de generar una aplicación “que funcione bien” o “que haga lo que debe hacer”.
La creación de productos de software necesita comprenderse como una actividad creativa, económica y técnica que abarca disciplinas disímiles como el Diseño estratégico de producto, Diseño de Servicios y Experiencia, Diseño de Arquitectura, de Datos, Programación, Automatización, Gestión del ciclo de vida del producto, etc.
Para esto es necesario que cuando creamos producto nos aseguremos de incorporar, como parte de nuestros procesos y modelo de gestión, al menos tres dimensiones: la de negocios, la técnica y la metodológica, todas ellas con puntos de intersección.
El punto de vista del negocio es fundamental: el diseño conceptual del producto de software debe estar alineado tanto con las preferencias del usuario como con la estrategia de la organización, las restricciones del contexto de negocios, las personas y organizaciones afectadas, etc.
El diseño, como disciplina que vela por los intereses del negocio, debe guiar el ciclo de vida del producto, ya que la programación de un producto informático desacoplada del ciclo de creación o de inserción derivó muchas veces en fracasos no tanto relacionados con que el software no fuera capaz de completar su misión, sino por problemas de diseño, tanto en términos de la experiencia del usuario como del concepto del producto o de la arquitectura. La creación del producto de software, por tanto, está guiada por el diseño desde su propia base.
A la hora de seleccionar las tecnologías, de nuevo es importante verificar que permitan cumplir con los requerimientos del negocio. Todas las decisiones deben estar impregnadas por esta premisa: desde la arquitectura y los frameworks hasta los patrones de diseño y las estrategias de despliegue. Como producto -y no como aplicación- el software tiene un ciclo de vida que debe ser contemplado: ¿Cuánto tiempo estará disponible para su uso? ¿Qué frecuencia tendrán los nuevos releases? ¿Estará implementado en infraestructura propia o en la nube? ¿Se ofrecerá como un servicio? Las tecnologías seleccionadas no sólo deben ser avanzadas, sino también future proof.