http://osigu.com

5 puntos clave sobre el desarrollo de software en Osigu

Pronto culminará el segundo trimestre del año, acá nos gusta decir, llegamos a medio año. Son pocas las startups en Guatemala y nosotros somos una de ellas en el ámbito de Seguros. La entrega continua en el software o Continuos Delivery en inglés, nos da las pautas de entregar un producto de software bajo una línea procesos muy bien definidas permitiéndonos tener un control en el ciclo de vida de las distintas características del software.

“Es la incertidumbre lo que le encanta a uno, todo se hace maravilloso en la bruma.” — Fiódor Dostoyevski

Ser una start up, la innovación y el desarrollo de software son la mezcla perfecta para la incertidumbre y el cambio continuo de requerimientos, tecnologías y sobre todo la mejora de procesos. Bien lo ha dicho Dostoyevski, todo se hace maravilloso en la bruma; es eso lo que nos gusta en Osigu, nuevos retos, innovación y el desarrollo de software de calidad.

Tenía muy poca experiencia en el desarrollo de software antes de unirme a Osigu, y comparado a mi trabajo anterior, Osigu ha tenido muy buenas características en la creación de software, tales como:

  • Control de versiones
  • Contenedores
  • Microservicios
  • Build automáticos
  • Scrum

El primer dia de trabajo quede maravillado del proceso de desarrollo de software, y lo mas especial, la comunicación y el apoyo de cada uno de los miembros de los distintos equipos de trabajo, fue una gran ventaja estar en una pequeña oficina con los equipos de diseño gráfico, desarrollo movil, Backend, frontend, QA, administración, la refri y las golosinas; si, todo en un mismo lugar, todos escuchábamos las daily stand up de cada equipo, eso era bueno para resolver fácilmente los retos en las futuras funcionalidades de software por entregar.

Compartiré en este artículo lo que actualmente estamos haciendo en Osigu para crear software, ha sido mucho aprendizaje en grupo, de vez en cuando hemos mostrado resistencia al cambio, pero hemos podido sobre llevar las cosas, aprender y experimentar para una mejora en el área de trabajo y entregar software de calidad y a tiempo.

1. Code Reviews

Cuando inicie en Osigu, esta práctica era nula, no nos imaginamos de que forma nos podía servir. Definiendo en mis palabras, Code review es la acción de revisar el código con la intención de que no escapen detalles que puedan afectar a un futuro o en la actualidad a otro desarrollador o la funcionalidad del software, también nos sirve para dar una retroalimentación a los autores del código sobre esos detalles.

Ahora la pregunta, ¿cuáles son esos detalles?, puede variar según las necesidades de donde trabajemos, en Osigu adoptamos una serie de convenios tales como: nombramiento de variables, métodos y clases, unit test, integration test, configuraciones, optimizacion de codigo, code coverage, funcionalidad del código, uso del framework, uso de dependencias, commits, pull request, por mencionar algunos.

¿Cómo fue el proceso?

En Osigu el code review inició por las personas encargadas de aprobar los pull request de features a la branch de develop, como mínimo debe tener 2 aprobaciones. Los primeros meses fueron difíciles, a nivel personal requiere valentía permitir que alguien más vea el código escrito, que cuestione las acciones que se realizaron y porque, cambiar alguna función, encapsular en un método o crear un nuevo servicio, por otro lado el desarrollo empezó a ser lento, y los compañeros de productos cuestionaron porque no salían los tickets rápido. Se nos olvida como desarrolladores que el código escrito podrá ser utilizado o modificado por otro desarrollador en un futuro.

“Somos escritores de código, por la cual, es un arte”

Entre las primeras charlas antes de hacer este cambio, se nos recomendó leer el libro de Clean Code, y creo que es muy acertada la proposición siguiente: Somos escritores de código, por la cual, es un arte, y como lo es el arte, debe de ser entendible por el mundo exterior, y sobre todo por nosotros mismos los desarrolladores; como regla tenemos no comentar el código, por si solo se debe de dar a entender, como si fuese un poema.

Actualmente todos hacemos code review en la empresa y damos approvals, pero ¿que beneficio aparte de crear codigo de calidad nos dan los code reviews? Bueno, si eres desarrollador junior, permite que conozcas la forma de programar de las personas, de aprender funciones propias del lenguaje, funcionalidades del software y features de la empresa, contribuye a que el software sea entendible hacia el futuro y que cumpla con los convenios aceptados por todos los desarrolladores.

Así que hacer code review es una buena práctica, difícil al principio pero es un punto de trascendencia para nosotros como programadores, y a la vez una señal del buen trabajo en equipo.

2. Responsabilidad del Desarrollador

Por medio de code reviews nos aseguramos tener código con estándares, pero ¿ahí termina nuestra responsabilidad como desarrolladores? En un principio nuestra tarea fue desarrollar la feature, y literalmente dábamos por terminada nuestra responsabilidad, no sabíamos si esa feature había llegado a producción, o quizas si ya no era necesaria.

La entrega continua nos lleva a otro nivel, hay niveles en que la responsabilidad es compartida, de trabajo en equipo y es fácil dejar la responsabilidad en otros. Parte de las mejoras que hemos tenido en Osigu es definir muy bien las responsabilidades que tenemos como desarrolladores, el primer paso ha sido dejar en claro nuestro scrum board. Como desarrolladores somos responsables del ticket asignado, debemos desarrollarlo, dar soporte a QA y termina el ciclo desarrollo cuando el ticket o feature esté en producción. Esto ha facilitado ver el progreso de los sprints y no dejar en el olvido tickets o features.

Bajo esta nueva metodología hemos logrado completar el ciclo de entrega continua, que con ayuda de tecnologías y siguiendo la línea de procesos hemos sido aguiles, entregando features a un tiempo prudente y detección temprana de bugs antes de pasar a producción.

3. OKR’s (Objective Key Results)

Una de las metodologías más interesantes que actualmente se utilizan en las start ups y que en Osigu hemos implementado, ha sido retador, estamos en la primer iteración de OKR’s y con entusiasmo estamos listos para continuar mejorando en el aspecto de los objetivos y resultados.

¿Que es OKR?

Traduciendo el término a español es Objetivos y Resultados Clave. A pesar de somos una start up pequeña, con pocos empleados, nos dimos cuenta que era muy difícil definir qué hacíamos, a donde vamos, que están trabajando las distintas áreas, que piensan los altos directivos y hacia dónde va la empresa, todos especulamos acerca de eso. Hay muchas formas de cómo medir objetivos, definirlos, darlos a conocer a los empleados, es muy tradicional en las empresas, pero en una start up, donde el cambio es constante, donde la opinión de cada uno vale, y los resultados definen el futuro laboral y estratégico de la empresa.

¿Habrá algo ágil para medir esto? Pues si lo hay, OKR es una metodología para guiar, medir y alinear la estrategia de toda una empresa de una forma fácil y eficiente para lograr objetivos concretos y adaptarse al cambio rápidamente.

“Si todo es importante, nada es importante”

Cada área tiene prioridades y es muy cierta la frase de arriba, si todo es importante y no priorizamos, nada es importante al final de un periodo de tiempo. OKR nos sugiere definir objetivos que abarquen un periodo de 3 meses, en un año tendremos 4 periodos de 3 meses cada uno o un cuarto de año como es común decirlo. Cada cuarto de año debemos definir nuevos objetivos, como mínimo pueden ser 3 objetivos o los que consideremos necesarios, para cada objetivo debemos definir resultados claves, estos resultados nos permiten medir el progreso de los objetivos. El ritual consiste en que cada semana se verifique como van los resultados de los objetivos, que debemos hacer para alcanzarlos o no perderlos; pero también debemos ser cuidadosos, debemos tener objetivos retadores, si definimos objetivos debajo de nuestro promedio, será fácil alcanzarlos, ¿tendremos progresos significativo? probablemente no, la clave es tener objetivos retadores y medirlos con los resultados esperados.

¿A quienes aplica esta metodología?

A todos, así de simple, todas las áreas de la empresa deben definir sus objetivos y sus resultados claves. Pero acá viene lo interesante, todos debemos alinear esos objetivos, ¿Como? Los primeros en definir sus objetivos serían los altos mandos, inversionistas, directivos; deben socializar esos objetivos y el resto de áreas basar sus objetivos en estos, todos deben definir sus objetivos principales concluyendo con objetivos personales de cada miembro de la empresa. Como ejemplo, pensemos en un equipo de béisbol, los inversionistas quieren tener ganancias ganado temporadas deben contratar jugadores, el entrenador quiere tener más trofeos en su curriculum y también quiere lograr el objetivo de los inversionistas, los jugadores también quieren ganar, pero también hay quienes quiere anotar más carreras, destacar en ser el mejor en su puesto. Si notamos, cada quien tiene un objetivo, si lo alcanzan, aportaran en alcanzar el objetivo de los demás, y al final todos logran un mismo objetivo.

Esta metodología me gusto bastante, ha sido un reto implementarlo en Osigu, en principio es muy difícil definir objetivos y cómo medir resultados, la clave es dar seguimiento constante a estos objetivos y medirlos. La mejor forma es tenerlos en pizarras cerca del área de trabajo, cada semana tener reuniones cortas para ver el progreso y tomar acciones, en junio estaremos terminando el primer cuarto en la empresa y listos para seguir con esta metodología.

4. Auditoría

La infraestructura informática es el corazón de Osigu, todos nuestros servicios se encuentran en la nube, como es habitual en cualquier empresa, las auditorias informáticas son parte del proceso de Osigu. En el 2016 tuvimos una auditoría externa, se tiene planificada para el segundo semestre del 2017 otra auditoría. El objetivo principal en Osigu es asegurar la información que es nuestro capital principal y mitigar riesgos, bajo cualquier contingencia ejecutar el plan de acción inmediatamente.

Las dos áreas principales corresponden a base de datos e infraestructura en Amazon Web Services (AWS), permitiéndonos crear un ambiente de confiabilidad a nuestros usuarios, redes de conexión y aplicaciones; una de las últimas implementaciones ha sido el esquema de autenticación multifactorial que por medio de un token cambiante en el tiempo se acceden a los servicios en la nube, así como rotación de las llaves de seguridad de acceso vía API’s y CLI en AWS. A nivel de base de datos los accesos se hacen a través de redes privadas virtuales (VPN) y encriptación de la información.

“La infraestructura informática es el corazón de Osigu”

Erick Gutierrez nos comenta: “Desde esta auditoría hemos adoptado la postura de tener la seguridad de primero, militarizar, si se puede decir de alguna manera, los componentes y sus dependencias primero y luego entregarlas para su uso. Usamos herramientas como AWS Config, AWS Trusted Advisor y AWS Cloud Watch que constantemente revisamos, que a su vez, estas herramientas supervisan nuestra infraestructura en búsqueda de oportunidades de mejora. Además de esto invertimos bastante tiempo a investigar sobre prácticas de la industria, para educarnos y aplicar las que se adaptan y nos benefician. Existen muchas fuentes desde podcast, conferencias en línea, foros de tecnología y libros que nos dan nuevas perspectivas de seguridad, dicho de otra manera la visión de túnel.”

La constante capacitación y administración de herramientas es un paso para estar actualizados en los últimos cambios en la tecnología. Es muy importante para Osigu proteger la información, tener el control total de los componentes de infraestructura, así como usuarios, accesos y monitoreo de las aplicaciones; gracias a las auditorías estandarizamos esos protocolos de seguridad proveyendo un entorno seguro a nuestros clientes y al proceso de producción de software.

5. Automatización

https://www.etechgs.com/wp-content/uploads/2016/09/Functions-Tasks-of-a-QA-Team-in-the-Call-Center.png

Parte de la visión que tenemos en Osigu es automatizar los procesos en el ámbito de seguros, pero también tenemos el reto de automatizar procesos internos que nos ayuden la fácil producción de software. Un rol importante en este proceso es el equipo de control de calidad(QA). Como base buscan que todo el equipo tenga el conocimiento total de cada producto que se certifica y que no quede centralizada la información en una sola persona. El enfoque de “quality assurance” o aseguramiento de calidad va orientado a microservicios, aplicaciones web y aplicaciones móviles, lo que requiere la constante investigación de herramientas, procesos y tendencias respecto al control de calidad del software.

“se diseñan las pruebas con los parámetros de calidad a cumplir”

Luisfer del equipo de QA nos cuenta que uno de los pasos más importantes que se ha dado este año es la automatización de pruebas para backend y actualmente se investiga para su implementación en aplicaciones web. El proceso inicia en la planning con el equipo de desarrollo, product owners y el equipo de QA, una vez se conocen las historias de usuarios se diseñan las pruebas con los parámetros de calidad a cumplir, por medio de Zephyr una herramienta para Jira, la cual permite crear, organizar y documentar los escenarios de pruebas esperados para cada ticket de Jira que se trabajara en un sprint. Sin duda, organizar y diseñar las pruebas crean un escenario importante en el cual se puede agilizar la certificación del software producido, reduciendo la aparición de bugs en producción.


Esto ha sido un breve resumen del trabajo del dia a dia que realiza cada uno de los equipos en Osigu, hay muchos retos, tecnologías por aprender, conocimiento por compartir y objetivos por alcanzar. La investigación, el constante estudio de nuevas tecnologías y el aprendizaje son el diario vivir y se refleja en cada uno de los miembros y equipos, nos alegra contribuir a producir software de calidad. El trabajo en equipo es muy importante y la comunicación juegan un papel en que nos permite alcanzar los objetivos mucho más rápido, permitiendo agregar a nuestros procesos buenas prácticas que al final se traduce a un sprint entregado a tiempo y con estándares de calidad.