La industria del desarrollo del software evoluciona bastante rápido si lo comparamos con otras industrias, en pocos años hemos pasado de paradigmas de programación de Imperativo a uno Reactivo pasando por el clásico y el por todos conocidos Orientado a Objetos.
En España los últimos años se esta desarrollando un paradigma de programación en colaboración con las grandes consultoras lo que se esta conociendo como "Programación orientada al caos". El desarrollo de dicho paradigma de programación no ha sido colaborativo, mas bien podemos decir que ha surgido en varios ámbitos a la vez gracias como una especie de serendipia y debido al gran ingenio de los Project Manager españoles y gracias a la gran cantidad de jefes de proyectos que no son informáticos de carrera y no tienen una formación que los encorseten a técnicas de programación clásicas.
El punto mas fuerte de dicho paradigma de programación es que se adapta al mundo cambiante en el que vivimos, en un proyecto clásico existen unos requisitos con los que se diseña un proyecto y estos no se deben modificar, esto actualmente es bastante cambiante ya que los Project Manager españoles de grandes consultoras como Indra o Coritel detectaron que es imposible tener unos requisitos inamovibles por lo tanto establecer requisitos hoy en día no tiene sentido y no lo hacen, se hace un documento con las ideas que el cliente tiene sin entrar en detalle, cuantos menos detalles mejor, y esta información se pasa directamente a los programadores para que ellos desarrollen orientado al caos, la información en su mayoría de los casos se traslada de manera verbal ya que así existe una peor comunicación, como mucho se envía algo de información por mail pero de manera informal y luego se completa mediante llamadas telefónicas durante todo el desarrollo del proyecto y siempre de manera escalonada ya que de esta manera el programador se agobia menos y rinde mejor.
Un caso excepcional y mucho mejor para la orientación al caos son las subcontratas, si la empresa A trabaja para la empresa B y esta tiene un cliente, el paradigma funciona aun mejor, ya que el cliente comunica la idea del cliente al project manager de la empresa B y esta se la pasa al project manager de la empresa A, en otros paradigmas esto sería un problema ya que se perdería información, pero recordemos que la falta de información es un punto fuerte en la orientación al caos. Cuanta menos información tenga el programador mejor funciona el paradigma.
Como ya hemos indicado Si se desarrolla un proyecto con este paradigma el programador es capaz de contemplar todos los casos posibles, pongamos algunos ejemplos prácticos:
- Si el cliente te dice que quiere almacenar datos en su base de datos en el servidor, el programador debe a su vez desarrollar por iniciativa propia y sin que nadie se lo diga Web Service para también almacenar los datos en otro servidor diferente e incluso establecer comunicaciones con otros CMS/LMS como Wordpress que el cliente pueda usar en el futuro ya que en la programación orientada al caos el programador debe ser capaz de detectar requisitos de manera automática sin que el Project Manager ni cliente se lo comunique, por tanto podemos decir que la proactividad es otro de su punto fuerte.
- Un usuario tiene un solo email, pensareis se inserta el email en la tabla de la base de datos donde están los datos del usuario, pues no (seguís con con una mentalidad equivocada), el programador debe crear una estructura en base de datos 1:n, es decir el usuario puede tener varios emails pero en código se fuerza a que tenga solo uno. De esta manera si el día de mañana se dice que el usuario puede tener varios mails las modificaciones son mínimas y se puede hacer para ayer.
Para este tipo de proyectos solo se pueden usar lenguajes de programación no tipados como PHP, ya que debido a que los requisitos pueden variar un campo que el día 1 tiene un valor numérico, el día 10 puede ser un string. Se desaconseja el uso de objetos, ya que estos no se adaptan bien al caos. También se desaconseja el uso de Frameworks, ya que estos tampoco se adapta bien porque suelen tener estructuras fijas. Lo que si se aconseja es el uso de frameworks que modifiquen el DOM como jquery.
Aunque esta metodología es algo novedoso en España ya tenemos grandes desarrollos diseñados con ella, entre sus casos de éxito podemos destacar la web de Renfe.
Grandes empresas como Google ya están estudiando dicho paradigma y como lo pueden integrar con las técnicas mas avanzadas como el Machine Learning aunque en las primeras pruebas han explotado varias computadoras por la gran cantidad de procesos que deben interpretar, los ingenieros americanos ya han dicho que tiene que pasar al menos 2 o 3 generaciones mas de microprocesadores para poder lograrlo, han contratado a varios Project Managers de Indra que colaboran con varios empresarios españoles para poder hacer pruebas mas reales.