miércoles, 10 de agosto de 2016

SOFTWARE: Scrum + DevOps + EBM

Scrum es el marco ágil de trabajo más usado en el desarrollo de software en el mundo. Permite la  entrega de incrementos del producto en periodos de tiempo cortos. El trabajo se basa en la colaboración y trabajo en equipo. Algunos aspectos como el descubrimiento, el empirismo y la inspección continua son claves para lograr un proceso de mejora continua y de innovación en el producto a construir.
Dave West CEO de Scrum.org aborda el tema del presente y del futuro de Scrum.

La agilidad implica una transformación cultural mientras que la metodología implica un proceso basado en pasos predefinidos. La metodología no fomenta y por el contrario puede impedir el descubrimiento y empirismo.

Un mal entendimiento del enfoque ágil puede llevar a la adopción de un enfoque "mini cascada" en el cual los Sprints se convierten en periodos cortos de tiempo donde se aplica un análisis, diseño, codificación y pruebas en pasos sucesivos y predefinidos. Esto también se puede llamar "water scrum fall". El objetivo de cada Sprint es la entrega de incrementos de producto usables. Sin embargo, algo está sucediendo debido a que en muchos casos solo se cubre la etapa de desarrollo con Scrum y la etapa de operaciones que implica el despliegue del producto se convierte en algo separado y que atenta contra la entrega de producto funcionando.

Existen organizaciones que en teoría adoptan Scrum pero no se refleja en un cambio cultural en el cual el desarrollo del software trabaje de la mano de operaciones para lograr la entrega de software funcionando en cada Sprint.

Estimaciones con tiempo fijo, carencia de priorización del Product Backlog, etapa de análisis y diseño definidas dentro un Sprint, la falta de un Product Owner, la falta de un Scrum Master, la carencia de un refinamiento de producto que fomente el empirismo y el descubrimiento, Jefes de Proyecto tradicionales con un enfoque de control sobre el equipo o los proveedores de software que no fomentan la colaboración y van en contra de las principios ágiles, sólo por mencionar algunos factores son los que llevan a finalmente no entregar producto funcionando listo para ser usado y en lugar de eso se entreguen productos incompletos y con errores que son rechazados por los clientes en cada Sprint y con ello se provoque la insatisfacción del equipo, la empresa y los usuarios involucrados.

Scrum es un marco ágil que requiere de un impulso de la organización que busca una necesidad de mejora a la forma tradicional en que hace las cosas.  El resultado final y el que realmente importa que la entrega de producto funcionando y que da valor al negocio

Uno de los factores que dificulta la adopción ágil es el cambio cultural. Es más fácil entender la agilidad como una metodología y actuar en función de ello evitando el cambio cultural que se busca con la adopción ágil. Uno de los enfoques que provee prácticas que ayudan a lograr la entrega de productos son la integración continua, el despliegue continuo y las pruebas automatizadas. Esto implica el uso de DevOps. Scrum y DevOps representan el futuro de Scrum en el sentido de unir las dos islas que son desarrollo y operaciones que no trabajan como equipo para entregar valor de negocio a la organización a través del producto instalado, funcionado y listo para ser usado por los usuarios.

La adopción ágil  carece a veces de la percepción de los beneficios recibidos y si el camino elegido realmente provee beneficio a la organización.
En una adopción ágil, se inicia generalmente en la búsqueda de una mejora y porque tiene alguna dolencia que le impide una salud óptima para realizar sus operaciones y realizar su misión y visión.  La evidencia directa representa la forma de monitorear el estado de la adopción ágil, así como los beneficios recibidos. En Scrum.org esto se basa en un enfoque llamado “Evidence Based Management o EBM”. Los beneficios de usar EBM son evidentes, permite monitorear el grado de adopción ágil y además permite verificar los beneficios recibidos a partir, la satisfacción del cliente, trabajo en equipo o valor recibido por la organización entre otros. La evidencia directa proviene del uso de las practicas ágiles, de la información que se obtiene de la verificación del uso de las mismas y de los beneficios recibidos. El monitoreo de las métricas del EBM permite un mecanismo para adaptar adopción ágil y lograr la mejora continua. Podemos encontrar más información sobre EBM aquí http://www.ebmgt.org/.



El futuro de Scrum se convierte entonces en: Scrum + DevOps + EBM. El futuro de Scrum también implica la adopción de marcos agiles como Nexus que permiten escalar Scrum  y ayudar a que varios equipos de Scrum puedan trabajar en conjunto en el desarrollo de un producto.




RELACIONADOS

DESARROLLO AGIL

El desarrollo ágil de software, es una tendencia en alza en la que el desarrollo iterativo e incremental se impone, una metodología en la que el desarrollador va adaptando sus soluciones a unos requisitos también cambiantes a lo largo del tiempo.

El desarrollo ágil de software se basa en 6 pasos comunes dentro del ciclo de vida del software: planificación, análisis de requisitos, diseño, codificación, test y documentación. En cada interacción, el equipo de desarrollo no entrega todo el programa, sino que se van añadiendo pequeños elementos totalmente probados, sin errores, con el fin de que la solución final esté completamente operativa desde el minuto uno. En los métodos de desarrollo ágil de software, la comunicación entre todos los miembros del equipo es clave, ya que se busca eliminar las trabas habituales de reuniones, validaciones y revisiones formales por encuentros más informales y en fases tempranas e intermedias del proceso, no sólo en la última etapa del trabajo.

Para que una metodología de desarrollo de software se pueda considerar como ágil debe cumplir con 4 valores fundamentales, recogidos en el Manifiesto Ágil:
1. Los individuos e interacciones, por encima de los procesos y las herramientas.
2. Software en funcionamiento, frente a la documentación exhaustiva.
3. La colaboración con el cliente sobre la negociación contractual.
4. Respuesta al cambio, mejor que el seguimiento de un plan.


Se trata de eliminar todos los pasos o tareas innecesarias, además de impulsar una mayor eficiencia de todo el equipo involucrado en el desarrollo.

Ventajas del desarrollo ágil
Al optar por una metodología ágil en la que se trabajan distintos elementos en paralelo, el equipo puede ir validando pequeñas partes del proyecto antes de realizar la entrega final perfecta. Se requiere personal multidisciplinar capaz de adaptarse a distintas circunstancias y necesidades en poco tiempo. Todo ello, a su vez, redunda en una notable reducción de costes.
Tipos de desarrollo ágil
Existen distintas vertientes o filosofías de trabajo (englobadas en la Agile Alliance, en muchos de los casos) que expresan métodos y herramientas concretas para gestionar de manera ágil los proyectos.

Scrum (creada en 1986, siendo una de las precursoras de este camino),


eXtreme Programming (XP, creado en 1996 y que fomenta el trabajo en equipo y la comunicación).


Dynamic Systems Developement Method (DSDM, que data de 1995).



8 Predicciones sobre la Programación

Según un informe de Gartner, hay indicios y tendencias que impactarán en lamprogramación en el futuro cercano y sobre las cuales se pueden extraer algunas conclusiones:

1: REST gobernará Internet de las Cosas (IoT), en un primer momento
El protocolo REST (Representational State Transfer-  Transferencia de Estado Representacional)
domina la Web y seguirá haciéndolo.  A los programadores les encanta la sencillez de REST. Gracias a su arquitectura básica, es fácil de entender y relativamente simple de depurar. No hay nada como tener todos los datos, en forma de texto. Los dispositivos de IoT  reportarán todas las novedades en HTML y CSS.

2: Aumentarán los protocolos binarios
Pasar los datos de un lado a otro en paquetes JSON (JavaScript Object Notation) con protocolos REST, puede ser simple, al menos en comparación con el viejo mundo de los datos XML. Pero, algunos programadores se preguntan por qué deben convertir los datos binarios en una cadena, para que se puedan representar correctamente en JSON. Después de todo, al otro lado sólo se va a analizar la cadena, que se convertirá de nuevo en bytes. ¿Por qué no enviar los bytes directamente, sobre todo en Internet de las Cosas?  La solución parece pasar por ver vías de añadir más eficiencia binaria a los paquetes.

3: El video matará a la estrella HTML
Internet se está transformando en televisión y la emisión de vídeo impone impone una interactivad que nada tiene que ver con pinchar hipervínculos. La muerte de Flash y el ascenso de HTML5 permiten, no obstante, combinar clips de vídeo con HTML. Tal vez, los programadores puedan aprovechar esta oportunidad.

4: Los smartphones harán todo posible
 Enviamos mensajes, leemos correo, visitamos sitios web, pero llamar, cada vez menos. Y esto es sólo el comienzo. Hay cientos de nuevas empresas buscando la forma de convertir el teléfono en un dispositivo médico, por ejemplo. El micrófono puede recoger los latidos del corazón; la cámara puede mirarnos la garganta. Los acelerómetros pueden realizar un seguimiento de nuestros pasos y todo ello se puede relacionar en la nube.

5: Bases de datos más grandes y mejores
Los motores de búsqueda indexan la Web, pero ahora hay bases de datos que pueden indexar el mundo entero gracias al avance de las aplicaciones de localización. Aplicaciones, como Waze, rastrean el movimiento de  sus usuarios, dando a desarrolladores y usuarios un mapa del mundo real.
El nivel de detalle de las bases de datos de este tipo será increíble. Los coches autónomos, por ejemplo, tendrán que saber la posición de los postes de la luz, de los kioskos, etc. Estos volúmenes de datos no son conocidos hasta ahora.

6: JavaScript dominará
Y lo escribiran los robots. Los programadores escribirán el código, pero los robots que el navegador o Node.js comprenda.

7: PHP seguirá plantando cara a Node.js
Pero, sólo para no tener que reescribir las aplicaciones heredadas. PHP se desvanecía poco a poco frente a Node.js y JavaScript Eso todavía podría suceder, pero PHP sigue en la pelea. Las versiones más recientes de herramientas como PHP 7 y la máquina virtual HipHop están ofreciendo un rendimiento mucho más rápido. Gracias a ello WordPress o Drupal, se ejecutan 30, 40, 50, o incluso un 100% más rápido.

8: Muchos sabrán cómo programar, pero pocos escribirán “código real”
Los proyectos de educación están impulsando que todo el mundo sepa escribir software, pero, una cosa es escribir una línea de código y otra, muy distinta, construir todo un sistema, con miles o millones de líneas de código.

No hay comentarios:

Publicar un comentario