El idioma de las aplicaciones

Nuestra necesidad

Durante los últimos meses estamos implantando internamente nuevas aplicaciones desarrolladas en Velneo. Por otro lado necesitamos conectarlas con otras aplicaciones de terceros que usamos en diferentes departamentos ( Google Apps, WordPress, Twitter, Zendesk, etc ).

Esta situación nos obligaba a marcar una estrategia de futuro en la comunicación entre aplicaciones.

Debíamos buscar una forma de comunicar cualquier aplicación entre sí, da igual si está en web, en escritorio o en móvil. Buscábamos un solo idioma para que se comuniquen nuestras aplicaciones.

Idioma elegido

Después de evaluar las opciones existentes todas nos llevan hacia las siglas REST / JSON

Al ser un servicio tipo REST  tenemos la garantía de que funcionaremos sobre HTTP/HTTPS con todas las ventajas que ello conlleva.

Nos decantamos por JSON respecto a XML por varios motivos :

  • Es muy sencillo y ligero
  • Fácilmente legible por máquinas y humanos 😉
  • Parece el estándar del futuro para comunicación de aplicaciones (WordPressGoogle Glass, Zendesk, Twitter )

Como creamos nuestro API

API-VERPLo primero que debíamos hacer era crear un API que permitiera que otras aplicaciones consumieran nuestras aplicaciones, para ello con el vJavascript de Velneo creamos una aplicación capaz de generar de forma dinámica todo el API en base a un proyecto de Velneo. Esta aplicación no solo nos genera los puntos de acceso, sino una web dinámica con toda la documentación del API

Para darle salida a la aplicación usamos el componente vModApache y configuramos el Apache para añadirle cache, compresión y encriptación.

Con este proyecto, cualquiera de nuestras aplicaciones de Velneo V7 tenían un API dinámico en base a las tablas y búsquedas ya creadas.

Como consumimos nuestro API

Necesitábamos obtener información de nuestras aplicaciones, en unos casos que Google Apps pudiera obtener diferente información de nuestro vERP, para ello desarrollamos scripts en Google Apps Script que acceden a nuestro API  y le consultan la información que necesita. El resultado devuelto en JSON se procesa de una forma muy sencilla y se realizan las operaciones necesarias.

Por otro lado nuestra web necesitaba mostrar información privada en los sitios que funcionan con WordPress. Desarrollamos un plugin en PHP que se conectaba a nuestro API para obtener información y mostrarla al visitante.

Desde los centros de soporte en Zendesk se consulta nuestro API para mostrar información de nuestro vERP en tiempo real

Desde Google Script se generan emails con los indicadores clave de la empresa calculados en diferentes aplicaciones

Que más cosas

Existen cientos de servicios web que ofrecen funcionalidades mediante sus APIs REST JSON

Nuestra idea es comunicar toda esta “nube” de aplicaciones con un mismo idioma, lo que nos permite ser más ágiles en cuanto a la implementación y mantenimiento de nuevos servicios.

No es un sprint es una maratón

ZapatillaEn el desarrollo ágil de software, se habla de sprint al periodo de tiempo de una iteración, es la parte repetible y que debe ir mejorando poco a poco.
Pero cuando hablamos de un desarrollo de software podemos buscarle también una perspectiva mayor y hablar que esos sprints están dentro de una gran maratón.

  • Hay que dosificar las fuerzas, el desarrollo dura mucho tiempo.
  • Contar con el dinero o los recursos para llegar a meta ( o como repostar recursos en el camino )
  • Pensar bien a que grupo te unes para equiparar fuerzas.
  • El muro de los 30 km
  • Una estrategia de carrera clara pero flexible a las circunstancias.
  • Saber cuando has llegado a meta y no correr a lo Forest Gump.

¿Corres maratones o solo haces sprints?

Una vez quieras vender tu producto tendrás que correr otro maratón

Fechas fijas en tus iteraciones

Las fecha de fin de iteración suele coincidir con la liberación del producto y sus entregables. Es una fecha en la que deben confluir el trabajo y resultados de mucha gente.

Si esta fecha no es fija tenderá a retrasarse, es una ley del universo.

Siempre existe algún motivo:

  • “No he probado esto, necesito dos días más”
  • “Con un par de días puedo añadir esta novedad”
  • “No me dio tiempo a acabar esa tarea, dame dos días más”
  • “Déjame un día más, puede salir tal funcionalidad sin probar”
  • “Necesito un día más para hacer un vídeo de las novedades”

Con una fecha fija e inamovible conseguirás:

  • Dejar menos cosas para última hora.
  • Todas los stakeholders tendrán información fiable de la liberación.
  • Perderás menos tiempo y conflictos en decidir si retrasar o no retrasar.
  • Por mucho que cambies la fecha, nunca tendrás una versión perfecta.
  • Generalmente las cosas importantes se hacen primero, nadie quiere quedarse pillado a última hora.
  • Unos días antes debe estar todo listo, lo que no este, saldrá en la siguiente iteración. No debe haber agobios de última hora por cosas planificadas.
  • Nadie se quedará sin vacaciones o sin fin de semana por un retraso.
  • Con el tiempo y experiencia los últimos días antes de la salida serán los más tranquilos.
  • Retrasar la fecha de esta iteración es el primer paso para destrozar la organización de la siguiente.
  • Cuanto antes puedas marcar las fechas de las siguientes iteraciones será más sencillo planificar cuando se solucionaran las incidencias pendientes.

En la teoría marcar una fecha y cumplirla es fácil, en la práctica todos los integrantes del equipo tienen que estar involucrados en que la fecha es inamovible.

La excelencia en este aspecto es tener la fecha fija, pero saber que ante una fuerza mayor podrás cambiarla.

Evalúa tu iteración

Evalúa tus cartas antes de la siguiente iteración - http://www.lafotodeayer.com/Una de las claves del éxito de las iteraciones en los equipos de desarrollo es que la organización y las personas aprenden a realizar las cosas de una forma mejor y más eficiente.

Sin una evaluación posterior de cada iteración, el aprendizaje desaparece y el ciclo iterativo pierde su sentido.

Lo más adecuado es evaluarte, decir en voz alta y clara que te ha gustado de tu trabajo y lo que se puede mejorar.

La evaluación no pretende castigar

La evaluación no es un examen para castigarnos, se trata de ser un poco mejores. El equipo tiene que ir sintiendo que en cada iteración se hacen las cosas mejor, con más calidad y en menos tiempo.

Evalúame!

Se puede evaluar cualquier cosa

  • La asignación de tiempos
  • La propia metodología
  • Las reuniones
  • Los desarrollos
  • Las herramientas
  • Los entregables

Se trata de revisar las cosas “repetibles”, para hacerlas un poquito mejor en cada paso.

Miedo a reconocer los errores

Lo primero que tenemos que quitarnos de la cabeza es el miedo a reconocer los errores y que nuestros compañeros nos examinen. Si no reconocemos las cosas mejorables será difícil conseguir nuevos logros.

Una evolución no una revolución

Del mismo modo que evaluamos muchos elementos, en la siguiente iteración debemos centrarnos en  solucionar los más importantes o los que más nos han perjudicado. No esperes que tu siguiente iteración solucione todos tus problemas.

Los cambios masivos pueden causar una revolución y pueden provocar daños colaterales en tu equipo.

Las iteraciones infinitas

Siempre tendrás cosas que evaluar o mejorar, quizá tu equipo ya funciona bien, pero el entorno ha cambiado y realizando las cosas de otra manera podrás tener un mejor resultado.

Si no ves mejoras en tus procesos, es hora de que cambies de trabajo y busques algo que te estimule más 😉

En casa de herrero, comida de perro

Hasta unas semanas internamente solíamos decir “en casa de herrero, cuchillo de palo“, cuando nos referiamos al hecho de que seguíamos usando algunas aplicaciones internas desarrolladas con Velneo 6.x.

Estas aplicaciones con más de 10 años de vida y con una exitosa trayectoria necesitaban una renovación para beneficiarse de las últimas tecnologías.

Gracias al impulso de mi compañero Domi, durante estas últimas semanas se ha dado un importante paso a la sustitución por aplicaciones desarrolladas con Velneo V7.

Llevábamos años usando aplicaciones desarrolladas con Velneo V7 en combinación con algunas antiguas con éxito, pero ya llegaba la hora de que comiéramos nuestra propia comida de perro de una forma general.

Nuestra filosofia es una combinación de Open Apps con adaptaciones con herencia.

Algunas de las Open Apps que estamos usando son :

El cambio no solo sirve para renovar las aplicaciones, sino que nos estamos mudando a la nube con todas las aplicaciones del grupo. Usamos un servidor en el Cloud de Velneo con lo que nos hemos liquidado todos los gastos de servidor, licencias, copias de seguridad, sais, AC, etc.

Normalmente tenemos una media de 75 enganches a 15 instancias distintas. Y hemos conseguido la felicidad de los maqueros y los linuxeros de la empresa que trabajan con las aplicaciones corporativas directamente desde su sistema operativo preferido.

Nuestro objetivo con este cambio no puede ser otro que “Evolucionar en tecnologías para innovar en software” 😉

Los desarrolladores hablan klingon y los de soporte hablan esperanto

Los equipos de desarrollo y soporte suelen ser habituales en cualquier empresa de desarrollo de software. Y también es habitual que estos dos equipos tengan mucha colaboración y puntos de conflicto.

Realmente todos en la empresa suelen tener el mismo objetivo, satisfacción del cliente y un buen producto, el problema viene que cada departamento habla idiomas distintos, sin un idioma común es difícil comunicarse 😉

Los desarrolladores

Los desarrolladores viven en su planeta Kronos ( Departamento de desarrollo ), buscan el silencio, el reposo y la tranquilidad. Entre dos desarrolladores la comunicación es fluida y cordial, generalmente todo se puede explicar perfectamente en su idioma. Se sienten creadores del universo conocido y dicha creación se ha hecho en el idioma Klingon.

El equipo de soporte

El esforzado equipo de soporte vive en un planeta regido por el caos, las llamadas, los emails y las consultas de los clientes entran sin ningún criterio lógico. Los integrantes del equipo han tenido que  inventar un idioma universal para poder entender toda esta actividad. Entre ellos tienen su propia jerga comprendiéndose perfectamente, con un par de palabras saben referirse a cualquier situación. El idioma creado por el equipo de soporte es el Esperanto.

Cada equipo por separado trabaja en sintonia, el problema viene cuando la persona de soporte le comenta lo que esta sucediendo a un desarrollador. Uno le da la versión en esperanto de lo que le ha comentado el cliente y el otro espera una explicación en klingon. Lo que entiende cada uno de la misma situación puede ser algo como esto:

  • Consulta
    Usuario (Idioma sin especificar): Le doy al botón y no funciona
    Soporte (Esperanto) : Pulsa el botón de facturar desde el menu principal sin exito
    Desarrollador (Klingon) : Le manda un señal de click al widget
  • Respuesta
    Desarrollador (Klingon) : El IsEnabled del widget esta condicionado
    Soporte (Esperanto) : Solo se puede pulsar el botón si la factura tiene importe
    Usuario (Idioma sin especificar) : Solo funciona si le pongo algo

¿Como mejorar la comunicación de los dos equipos?
Es importante que alguna persona de soporte haya vivido en kronos y conozca algo de klingon. Por otro lado los programadores deben salir de vez en cuando de su planeta y ver que se hablan muchas lenguas a lo largo y ancho de la galaxia conocida 😉