Mi experiencia en Solify

Topiltzin Hernandez Mares
6 min readJun 14, 2021

--

Este semestre escolar fue, sin ninguna duda, el que más conocimiento y experiencia me ha dejado en mi carrera universitaria. El camino de consolidar a Solify como un departamento de TI no fue sencillo, pero me enseñó muchas cosas, lo cual lo hizo muy gratificante al final. Para explicar mis aprendizajes, me apoyaré de los cinco ideales de DevOps:

  • Localidad y simplicidad
  • Enfoque, flujo y alegría
  • Mejora del trabajo diario
  • Seguridad psicológica
  • Enfoque en el cliente

Localidad y simplicidad

El primer ideal se refiere a que

El último lugar en el que queremos complexidad es internamente, ya sea en nuestro código, en nuestra organización o en nuestra forma de trabajo — Gene Kim, 2020

Cuando diseñé, junto a varios compañeros del departamento, la arquitectura del software para las soluciones de los socios formadores, tuvimos muy en cuenta el grado de incertidumbre de los proyectos. Específicamente, en el proyecto donde me vi mas involucrado, esta incertidumbre se presentó de mayor manera por los proveedores de metadatos que se usarían en el sistema. La decisión de qué metadatos se consumirían podría cambiar en cuestión de semanas, por lo que la arquitectura del sistema debería soportar aquel cambio. Para que el cambio fuera simple, decidimos implementar el patrón de Clean Architecture propuesto por Bob Martin. Gracias a la inyección de dependencias, cualquier cambio en los sistemas sería local y simple, pues en teoría, no afectaría la comunicación entre componentes. Ya al haber finalizado el proyecto, puedo decir que fue una gran decisión, cuando se decidió cambiar el proveedor de metadatos, solamente escribimos un nuevo adaptador, cambiamos la inyección de la dependencia y todo siguió trabajando como debía.

Enfoque, flujo y alegría

Según el autor de estos ideales, Gene Kim (2020), “el segundo ideal es sobre cómo se siente nuestro trabajo diario”.

Durante el semestre, pero más en mi etapa de Program Manager (PM)del departamento, hice mi mayor esfuerzo en que las tareas del plan de los proyectos fueran pequeñas y que la retroalimentación de nuestro trabajo fuera continua y rápida. ¿Se logró? En la mayoría de los casos, sí. Desde mi primer día como PM compartí con todo el departamento mi plan e ideas sobre cómo lograr los objetivos departamentales. Consolidar a Solify como un departamento con madurez nivel 2 de CMMI en tan solo 4 meses fue logrado solamente con enfoque, flujo y alegría en nuestra forma de trabajo. Antes de que yo entrara como PM, los cliclos de retroalimentación de nuestro trabajo eran de hasta dos semanas de duración. Después de implementar el nuevo plan, los cliclos se redujeron a tan solo horas o días. También, gracias a la implementación y monitoreo del valor ganado del proyecto departamental, se lograron controlar desviaciones y completar la mayoría de los objetivos.

Además del plan departamental, estuvo el gran flujo de cambios a la base de código de Snorlax. Gracias a las pruebas automáticas estáticas y de unidad e integración del sistema, integrar cambios y desplegarlos a producción y entregarlos a los socios formadores tenía un costo prácticamente negligible.

El enfoque, el flujo y la alegría en nuestra forma de trabajo fueron parte importante en nuestro departamento.

Mejora del trabajo diario

Originalmente, el tercer ideal se refiere a atender deuda técnica y mejorar la arquitectura de nuestros sistemas, pero siento que esta definición se queda corta para el departamento Solify. Para complementar, CMMI y principalmente DAD proponen realizar experimentos informales siguiendo el método científico para mejorar el trabajo diario. Esto fue algo que tardé en entender, pero al final logré implementar en el departamento y que otros lo hicieran. Antes que nada, para mejorar nuestra forma de trabajo, hubo que aprender a gestionar y analizar las métricas del departamento y los equipos. Una vez entendidas las métricas, entendí las razones de por qué el departamento estaba donde estaba, con los problemas y bloqueos en el plan. Al comprender estas razones, el por qué, pude proponer mejoras a nuestra forma de trabajo y formular hipótesis de los resultados. Me alegra mencionar que varias de estas propuestas e hipótesis se cumplieron e integraron en nuestra forma de trabajo. Una de estas fue darle seguimiento a las tareas en una junta de coordinación departamental diaria. En tan solo 20 minutos o menos, todos los miembros de Solify compartíamos avances e impedimentos en nuestras tareas y nos ayudamos a completarlas. Por esto, y otras decisiones y mejoras, se logró un aumento en la productividad de más del 80% en el proyecto departamental.

Seguridad psicológica

El cuarto ideal, y tal vez uno de los más subestimados en la industria actual, es uno de los que mas afectan en el desempeño de los equipos y organizaciones. Cuando miembros de la organización o equipo se sienten seguros de hablar sobre problemas, estos no solo pueden ser resueltos, pueden ser prevenidos. Este es el ideal con más enfoque ético de DevOps. Para fomentar la seguridad psicológica, definimos 2 procesos encargados de gestionar denuncias y conflictos de todo tipo en el departamento. Además, creamos un código de ética que protege y fomenta el enfoque ético del departamento. La última y mas reciente acción que implementé para apoyar la seguridad psicológica, fue que en las últimas semanas del semestre abrí espacios para platicar con todos los integrantes del departamento que lo necesitaran sobre cualquier tema en una llamada 1:1. Esto ayudó a varios miembros de Solify en el desarrollo de sus competencias y su tranquilidad psicológica, pues platicamos desde temas técnicos como éticos.

Este semestre, por la naturaleza de los proyectos en los que me vi involucrado, no existieron grandes dilemas éticos, pero sí diversas pequeñas situaciones que tuvieron sus aspectos éticos. Una de estas situaciones que más recuerdo, fue al implementar el punto de venta para el sistema RELIBooks. En esta sección de la solución, hay un botón que permite finalizar la venta de libros a un cliente. Al diseñar esa vista del sistema, identifiqué el problema ético: si el botón de “terminar compra” no tenía un mensaje que pidiera confirmación del vendedor, se podrían generar gran cantidad de conflictos con el cliente, por decisiones de último momento de su parte. Si no implementaba esa funcionalidad, mi tiempo de trabajo se reduciría en una hora, pero causaría problemas al cliente final del sistema. En seguida puse en práctica el análisis de conflictos éticos visto en clase, y evalué las consecuencias de las posibles acciones a tomar. Al final, decidí ir por el mayor bien: implementar una ventana que pida confirmación doble para terminar una compra. Esto me costó una hora más de trabajo, por todas las pruebas automáticas que tuve que escribir, pero le ahorré al usuario final una incontable cantidad de problemas con sus clientes. Me sentí bien con el resultado final.

Enfoque en el cliente

Por último, pero no menos importante, el enfoque al cliente. Este ideal se relaciona a las actividades Núcleo y de Contexto definidas por Geoffrey Moore. Actividades de Núcleo son todas aquellas que son “pagadas” por los clientes. Actividades de Contexto son todas estas por las que los clientes no se preocupan. En Solify la mayoría de nuestras actividades, si no es que todas, estuvieron enfocadas a nuestros clientes o socios formadores, ya que son “pagadas” por nuestros socios formadores con su tiempo y dedicación invertidos al proyecto. Una de las actividades más enfocadas al cliente que más disfruté fue la capacitación y creación de manuales del sistema. Las capacitaciones se dieron en varias sesiones y todo el departamento participó en estas llamadas. La creación de manuales fue un poco diferente.

Aunque no participé en todos los manuales de operación del sistema, sí participé en la creación de un manual de arquitectura. En este manual se describe a detalle el propósito y comportamiento de cada componente de las aplicaciones para el proyecto. Como el sistema Snorlax se dividió en dos servicios (aplicación web y servidor), el manual resultó algo extenso. Describir el funcionamiento del sistema para que posibles nuevos ingenieros puedan realizar modificaciones de manera simple fue retador y disfruté el proceso.

Conclusión

Como mencioné al inicio de esta pequeña reflexión, este semestre fue muy diferente a todos los anteriores, y aprendí demasiadas cosas. Lo disfruté inmensamente.

Referencias

Kim, G. (2019). The Unicorn Project. IT Revolution Press.

Kim, G. (2020, August 4). The Five Ideals of DevOps. IT Revolution. https://itrevolution.com/five-ideals-of-devops/

Kim, G., Debois, P., Willis, J., Humble, J., & Allspaw, J. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations (Illustrated ed.). IT Revolution Press.

--

--