Las metodologías iterativas… que no sea lobo.

Lobo con piel de corderoLas metodologías iterativas para el desarrollo de proyectos son una buena estrategia para conseguir que el resultado de un proyecto tienda a cubrir adecuadamente las necesidades de un cliente, pero que nadie se lleve a engaño: requiere de condiciones vitales sin las cuales la catástrofe está asegurada por las dos partes. Pueden ser un lobo con piel de cordero…

Escenarios en los que es una estrategia adecuada.

En las organizaciones acostumbramos a encontrar a quien tiene la necesidad, generalmente “negocio”, y a quien lidera el desarrollo tecnológico, que generalmente es el departamento de IT. Es negocio quien tiene la necesidad, quien realmente conoce las necesidades y los detalles particulares a nivel funcional. En cambio, es IT quien conoce de tecnologías, de proveedores, de soluciones, etc.. pero no necesariamente todo el detalle funcional. Por ello, el único que puede describir el problema y la solución, funcionalmente hablando, es negocio, pero generalmente no dispone del tiempo para hacerlo, por lo que no hay un funcional claro, preciso y conciso sobre el que trabajar, donde trabajar, y trabajar = presupuestar + ejecutar. En ocasiones el escenario es cambiante, o la mejor solución no está completamente clara por variables que no vienen al caso.

En este caso, un esquema iterativo puede ser muy interesante ya que quien tiene la necesidad dispone de la capacidad de irse acercando a la herramienta que necesita evaluando en cada caso los pasos que se han dado según sus indicaciones y habilitando cambios según se valida el producto.

Metodologías iterativas

La idea de fondo es: me explicas, yo trabajo, tu revisas, me explicas, yo trabajo, tu revisas… hasta que se acaba el tiempo o el presupuesto. De esta forma se espera conseguir un mejor resultado que con la metodología clásica de:  tu me explicas, en X meses no me ves, y luego te enseño cual va a ser tu herramienta.. parece evidente que la aproximación iterativa es mas susceptible de acercarnos a un escenario de éxito.

¿Quién no ha vivido eso de “.. cariño, quiero pintar esta pared de marrón chocolate… ummm! queda muy oscuro, un poco más clara… hmmmm!.. y la acabas pintando blanca, tal como estaba al principio… “? pues eso… cuidado, que si quien pide no es consciente del coste que representan sus cambios fácilmente podemos caer en un despilfarro.

De forma un poco más rigurosa, el esquema de trabajo que se suele adoptar suele ser cercana al siguiente esquema:

1 – negocio explica sus necesidades
2 – se plantea un prototipo no funcional que de cobertura a las necesidades.
3 – negocio e IT, junto con el equipo de desarrollo, revisan el prototipo, se plantean las enmienas convenientes y se vuelve al punto 2 hasta que todos están de acuerdo.
4 – se formaliza el acuerdo, y se planifica el desarrollo de lo acordado.
5 – a medida que se tienen unidades funcionales disponibles se plantean revisiones a negocio y IT,
6 – se revisan as unidades funcionales que se consideran válidas y negocio y IT plantean evoluciones o la dan por buena.
7 – cuando se ha dado todo por bueno el proyecto está acabado.

Genial, no? esto parece ser un éxito asegurado.. o catástrofe asegurada… depende.

Requisitos para poder trabajar con una metodología iterativa.

Para trabajar con una metodología iterativa es preciso que las organizaciones estén preparadas, no sólo a nivel de personas, sino también a nivel de procesos internos, a nivel de gestión presupuestaria, a nivel de flexibilidad y confianza, etc.. En este esquema resaltan un conjunto de aspectos:

  • Uno de los aspectos que resalta es que al principio, no se ha acotado el esfuerzo total necesario para llegar a una solución completa, por que no se conoce!!!!.. pero, ¿Cómo que no se sabe?, cuando el que mayor conocimiento tiene de los aspectos funcionales no ha podido describir con detalle lo que necesita, difícilmente nadie será capaz de decirle lo que vale… parece bastante claro..
  • Al no saberse el el esfuerzo, tampoco se conoce el plazo con detalle. Si el proveedor dispone de músculo suficiente, se podrá intentar reducir los plazos, si el proveedor no dispone de músculo, habrá menos maniobrabilidad en este aspecto.
  • El cliente debe integrarse en el equipo de trabajo como un miembro más, probablemente, como el miembro más importante, si el cual será difícil que se cubran sus necesidades.
  • Si el cliente sabe lo que necesita, genial! vamos por buen camino. Si no lo sabe, el proyecto va a salir caro. Todo el mundo debe ser consciente de esto. No es una ironía, sus pruebas tendrán un coste: las de todo el equipo de desarrollo trabajando, el personal de IT y su propio tiempo en el mejor de los casos.

Muchas organizaciones desean trabajar con un esquema iterativo, por su atractivo potencial, en cambio, a nivel de presupuestario, el equipo de finanzas requiere de proyectos claramente acotados, y a la vez ajustados.. todo lo contrario.. Aquí es donde la flexibilidad juega un papel clave, el cliente debe saber que con el monto asignado puede no llegarse a la situación ideal sin que se haya cometido ningún error por ninguna de las partes, por lo que podrá ser necesario efectuar ampliaciones del proyecto. A la vez, el proveedor deberá ser flexible para no cortar el proyecto y desmontar el equipo de trabajo – que es la muerte de la eficiencia del proyecto – si hay un acuerdo de ampliación para avanzar las horas al cliente. El tema central es que debe existir un acuerdo por las dos partes de no dejar el proyecto colgado, uno por que no tiene flexibilidad presupuestaria, y el otro por que hasta dentro de X meses no se podrá facturar.

Es muy importante que haya una elevada transparencia en el proceso de desarrollo con el cliente para evitar, no sólo que el proceso iterativo oculte ineficiencias, sino también que se evite generar esta impresión por el simple hecho de emplear este tipo de metodología. Una de las mejoras formas de evitar críticas por falta de eficiencia es que el proveedor ofrezca una seniority importante, y el proceso de documentación – tanto del proyecto como de las reuniones efectuadas – sea muy estricto.

No se debe confundir un proceso iterativo, con un proceso no formalizado ni sistematizado, no tiene nada que ver. Se puede implementar un sistema iterativo absolutamente formalizado y sistematizado. Este es un aspecto de elevada importancia, ya que ofrece al cliente la tranquilidad que se precisa ante un entorno deliberadamente incierto en cuanto al objetivo final del proyecto.

En resumen, si se desea abordar un proyecto con una metodología iterativa debemos cumplir todos con:

Cliente:

  • Negocio y compras deben saber que la metodología es iterativa y sus implicaciones presupuestarias, de plazos y de dedicación.
  • Negocio deberá participar activamente en el proyecto, no podrá ser un mero observador. Sus retrasos en las aportaciones al proyecto tendrán un, si cabe, impacto superior al de las metodologías clásicas, pues sus decisiones son siempre vinculantes para todo el equipo de trabajo.
  • Todo el equipo debe ser consciente que deberá pactar una combinación de funcionalidades y fechas después de haber iniciado el proyecto.
  • IT deberá ser estricto en el seguimiento del consumo de horas por parte del proveedor, para evitar que un esquema iterativo oculte un sistema ineficiente.
  • IT y Negocio deberá ser consciente que el monto destinado inicialmente puede no ser suficiente ya que la estimación inicial del monto total se basaba en estimaciones, no en el conocimiento exhaustivo de las necesidades. Esto no debe ser la excusa para transformar el proyecto en un pozo sin fondo, cosa evitable con un riguroso seguimiento por parte de IT.

Proveedor:

  • Debe ofrecer experiencia en la gestión de este tipo de proyectos, las reuniones funcionales deben tener objetivos claros y precisos, deben existir actas, planificaciones, etc..
  • Personal senior, para que las problemáticas sean de negocio, no tecnológicas y haya agilidad de desarrollo.
  • Los perfiles involucrados en el proyecto deberán tener disponibilidad a corto plazo, pues sus tareas tendrán una elevada probabilidad de ser bloqueantes.
  • Disponer de un equipo de UX competente. Es decir, cuando se crea la maqueta de la aplicación, en realidad se está diseñando el producto y especificando campos de entrada y salida, flujos de trabajo, perfiles de usuarios que emplearán el sistema, etc.. Esto es una toma de requerimientos en toda regla, no se puede dejar este trabajo en manos de un maquetador, es preciso que haya un diseñador de producto como la copa de un pino. Si no es así, simplemente será una etapa de pintado de pantallas y no ofrecerá mucho más valor añadido para negocio.

Si no cumplimos…

Dando por supuesto que el proveedor trabaja de forma perfecta e intachable – un escenario idílico – donde dispone de los recursos que necesita perfectamente formados en el momento exacto que los necesita, los riesgos que se asumen son:

  • Falta de involucración por parte de negocio: no se cerrarán de forma clara los objetivos del proyecto, se tendrá al equipo técnico a la espera de la concreción de las necesidades, por lo que el coste aumentará y en el proceso de validación aparecerán las desviaciones respecto a lo deseado, junto con la protesta del tiempo, consecuente coste, invertido en la dirección errónea.
  • Falta de formalidad y sistemática en la dirección del proyecto: estos proyectos no van “en linea recta”, sino en “espiral”. Si no se es sistemático a la hora de controlar el proyecto, corremos el riesgo de trazar un “zig-zag” en lugar de una espiral.
  • Desalineación entre el cliente de negocio y compras. Hay organizaciones que compras requiere de una justificación para dedicar una parte de su presupuesto a algo – cosa que parece muy razonable -. Si no es consciente que se pueden dedicar varias partidas al mismo proyecto puede suceder que nos quedemos sin budget a medio proyecto o – lo que no se si es peor – generar la sensación que este proveedor siempre se pasa de presupuesto, cuando en realidad en comparación con el método clásico esto es más eficiente.
  • Si el departamento de IT no controla bien al proveedor, esto puede ser un coladero de fallos e imperfecciones, por lo que el papel del gestor es básico para evitar despilfarros.
  • Si el proveedor sobreestima sus capacidades, se obtendrán desviamientos presupuestarios y de calendario.

Resumen

  • Todos debemos saber que nos acercaremos paulatinamente a la solución,
  • que calcular el coste final es difícil al no conocer el punto final exacto,
  • todos debemos arrimar el hombro, y el impacto de que falte cualquiera de los hombros es elevado,
  • requiere de flexibilidad por las partes,
  • que compras sepa que hacemos,
  • pongamos gente buena con experiencia, ¡vale la pena!

Si piensas que tu cliente no cumple con los requisitos, o que tu organización no está madura como para abordar un proyecto de estas características, ¡no lo hagas! ¡no se lo vendas! que será peor… parecerá un cordero hasta el final, ¡que saldrá el lobo!

Enlaces de interés:

https://es.wikipedia.org/wiki/Desarrollo_iterativo_y_creciente
http://www.ibm.com/developerworks/rational/library/may05/bittner-spence/
http://www.craiglarman.com/wiki/downloads/misc/history-of-iterative-larman-and-basili-ieee-computer.pdf

Publicado en: Gestión de proyectos Etiquetado con: , , ,

Aportes de los Next Generation FireWalls (NGFW)

Hoy os voy ha hablar de firewalls, pero no de si cerrar o no cerrar puertos, vamos a hablar de lo que nos puede aportar un firewall de nueva generación que agrupa todo un conjunto de servicios de la red, generalmente orientados a la auditoria, control y seguridad. Para ilustrar este escenario me voy a basar en un caso real, omitiendo las referencias, que el equipo de ICA, Informática y Comunicaciones Avanzadas ha implementado. ¡¡Vamos allá!!

Recientemente hemos efectuado un proyecto que ha puesto de manifiesto de forma clara las ventajas de los Next Generation FireWalls, a partir de ahora NGFW. Vamos a entender un NGFW como un firewall que además de filtrar paquetes, puede enrutarlos, aplicarles políticas de seguridad, analizar los paquetes en varias capas OSI, etc.. Convenientemente dimensionado, este equipo ofrece un throughput, rendimiento, más que suficiente a la vez que permite implantar un conjunto de servicios adicionales de alto valor (Antivirus, IPS, Detectores de Fuga de Información – en inglés Data Loss Prevention o DLP, etc..) .

Organización inicial de la red

Estrategia empleando NGFW

Estrategia de firewalling clásica

La organización inicial de red que había, como se muestra en la siguiente figura, era una organización en la que había un core de red, un firewall Cisco ASA, un balanceador F5 y un switch. Había políticas de enrutamiento en el Cisco ASA, el F5 y el switch. Esta arquitectura provocaba que la gestión del routing fuera compleja, y la aplicación de sistemas de detección de fuga de información, antivirus y detectores de intrusión fuera realmente complicado.

La aproximación con NGFW

Next Generation Firewall - Fortinet 1500El equipo que se ha montado es un Fortinet 1500D, con la arquitectura mostrada en la figura de la siguiente.
La idea es que el enrutamiento se hace en el NGFW, de modo que se inspecciona todo el tráfico que se debe enrutar: de y hacia los servidores, de y hacia la DMZ, entre VLANS y todo lo que vaya a salir de la compañía. Si se desea emplear balanceadores de carga, se pueden colocar en la zona de servidores, pero que solamente balanceen carga.

El resultado es una arquitectura muy limpia, fácil de mantener y ampliar, donde además podemos dotar a la infraestructura de mecanismos de seguridad integrados, maximizando su efectividad y manteniendo la armonía arquitectónica.

Agradecimientos: Ricard Ballesta, Responsable de Redes y Seguridad de ICA en Barcelona.

Pere

Publicado en: Comunicación, Seguridad Etiquetado con: , , ,

El directivo digital… WTF????

yo_robot_1Hace unos días estaba leyendo sobre la importancia de que los directivos “fuesen directivos digitales” – cito textualmente, no es frase mía -… si bien es cierto que para los que ya entienden el concepto no queda lugar a dudas sobre el mensaje que se desea enviar, también asumo que este mensaje – como cualquier otro – se manda para el que todavía no lo ha recibido, pero en este caso la verdad es que la terminología pseudotécnica complica las cosas, cuando explicadas de una forma más sencilla serían mucho más efectivas.

Estamos en la época de la saturación de la comunicación: podemos comunicarnos de forma saliente en persona, a través de nuestro blog, por teléfono, por medio de las redes sociales, Twitter, etc.. respecto a la comunicación entrante tenemos las mismas, más los medios de comunicación masiva. En resumen: nos llegan una gran cantidad de mensajes y resulta difícil que uno de ellos nos llame la atención por encima de los demás. Por ello, quien quiera llamar nuestra atención deberá tener claro que la comunicación ya no es como era hace unos años, que es necesario valorar adecuadamente las redes sociales, conocer que temas interesan a nuestros clientes objetivo, ser consciente que se necesitan unos profesionales de comunicación diferentes a los que se necesitaban antes y ser tener claro que los parámetros que miden “si vamos bien” son diferentes a los empleados anteriormente.

A un directivo que reúne todas estas condiciones, y algunas otras a nivel de IT y sistemas de información internos, a menudo se le refiere como un “directivo digital”. Ahora bien, esto no significa que este directivo deba ser un experto en tecnología y social media, solamente significa que debe saber ponderar adecuadamente los aspectos de la comunicación mediante redes sociales y buscar los componentes de su equipo de forma adecuada. Sencillo, no?.

Pues esto que parece tan sencillo, tan obvio, tanto que no vale la pena decirlo… mi tío no lo entiende, no lo extrapola de la expresión “directivo digital”. Y mi tío, que está en los 60 y es empresario, de razonable éxito, es precisamente quien debería entenderlo, pues es el cliente objetivo… y hay muchos “mi tío” en el mercado.

Publicado en: Comunicación, Estrategia Etiquetado con: , ,

ZFS y CEPH. Un par de grandes sistemas de archivos… ¿tal vez poco conocidos?

Hoy me gustaría hablaros de un par de sistemas de archivos. Cada vez tenemos más información a almacenar y, si bien podemos hacer backups de los sistemas de archivos, nos podemos encontrar que si tenemos un volumen elevado el backup pueda no ser tan simple como “copiar archivos”, o la recuperación sea tan costosa que para según que información no valga la pena. Sea como fuere, aún teniendo un sistema de backup como dios manda, mejor no tener que usarlo.

En este rápido post, no voy a entrar en detalles de implementación de los sistemas, que para estoy ya hay documentación muy buena, pero si que quiero resaltar las características de cada sistema de archivos y en qué entorno lo podéis utilizar.

 

Leer más ›

Publicado en: Sistemas Etiquetado con: , , ,

Herramientas cojonudas + mala administración = agujero seguro.

GeekGuide-Cover-FoxT-SSH-altEl otro día, revisando diversa documentación, cayó en mis manos este link al documento de Linux Journal, titulado “SSH: a modern look for your server?” que me pareció muy interesante.

De todo su conjunto lo que más de llamó la atención, tal vez por evidente, es la reflexión que la seguridad no depende solamente de las herramientas escogidas, sino también de la gestión de los administradores de seguridad, y que esto le pasa al más pintado.

Herramientas cojonudas + mala administración = agujero seguro.

Pere

Publicado en: Seguridad Etiquetado con: ,