Esta ha sido mi experiencia laboral que comprende el intervalo entre junio de 2022 y la actualidad. Mi posición oficial ha sido Associate Engineer, pero a efectos prácticos he actuado como backend developer.
Introducción
Durante este tiempo he teletrabajado para la oficina que Unit4 tiene en Granada. A pesar de que he participado en diferentes proyectos y departamentos, todos han mantenido relación con la aplicación de planificación de recursos (ERP) que caracteriza a la empresa.
Onboarding
Durante los primeros meses en la empresa el proceso de onboarding fue lo que ocupó la mayor parte de mi tiempo. Me sirvió para aprender mucho sobre la aplicación y la lógica de negocio a nivel funcional pero también me aportó nuevos conceptos y conocimientos sobre otras tecnologías.
Azure
Unos de los cambios más drásticos que he notado en esta empresa es el uso de Azure, que permite combinar la gestión de tareas (Azure Boards), los repositorios (con sus ramas y pull requests) y las pipelines (Continious Delivery y Continious Integration) para que todos los procesos desde el desarrollo, la gestión y el despliegue estén conectados. También cabe destacar el uso de las Microsoft Guidelines para el desarrollo de las APIs.
ERP
La mayor parte del tiempo estuve aprendiendo sobre el funcionamiento de los procesos más importantes de la aplicación de ERP. Sobre todo, aquellos relacionados con el departamento en el que comencé a trabajar: Procurement.
Organización y metodología
Para la organización de los desarrolladores se usan los equipos autogestionados, brindándoles un nivel de libertad y de responsabilidad bastante alto. La metodología utilizada es baseline methodology, que es una versión SCRUM de gran escala que bebe de Less Works y SAFe.
Mini proyecto API
Como práctica individual sobre APIs en .NET se realizó una API programada en C# y un frontend con React. También cabe destacar que también sirvió para aplicar lo aprendido sobre TDD (Test Driven Development) y Mutation Testing con Stryker Mutator.
Scrum Master
Unos meses después, además del rol de desarrollador software, también asumí el rol de Scrum Master. Este rol tiene la responsabilidad de organizar las ceremonias de SCRUM y verificar que los procesos de esa metodología se llevan a cabo correctamente, entre otras cosas.
Mantenimiento del ERP
La única constante que se ha mantenido a lo largo de mi experiencia en la empresa fueron las tareas de mantenimiento de las aplicaciones de ERP. Estas tareas variaban entre Customer Problems y Bugs, pero casi siempre seguían el mismo workflow: entender el problema, debugear, proponer solución y aplicarla. En el stack tecnológico, entre otras herramientas, se encuentran: Visual Studio, SQL Management Studio y BusinessServer.
Frontend y GUI Tests
La carga de trabajo relativa al frontend ha sido muy reducida. Esto se debe en gran parte a que este aspecto se ve muy guiado y acotado por el framework propio que usa la empresa para el desarrollo de sus pantallas. Aprovecho para comentar que también he trabajado con GUI Tests usando Selenium y SpecFlow entre otros.
Reconocimiento de facturas con Python
Durante los seis primeros meses en la empresa estuve trabajando, entre otras cosas, en una herramienta que servía para identificar los datos que contenían las facturas:
Primero, el usuario de la herramienta hace una petición a nuestra API con la imagen de una factura. Después usamos una herramienta de reconocimiento de caracteres (OCR) y TensorFlow en Python para transformar la información de las imágenes en texto. Después, utilizando un modelo previamente entrenado y Azure Machine Learning identificamos aquellos datos que son relevantes. Y por último, solo queda devolver esos datos al usuario.
Integración de dos aplicaciones con .NET
Tras dejar el proyecto anterior y pasar al departamento de Project, nos asignaron uno en el que teníamos que integrar una herramienta de gestión de tiempo y gastos con la aplicación de ERP. Eso implicaba que teníamos que crear un servicio que se encargue de escuchar los cambios que se producen en la aplicación de ERP y enviárselos a la nueva herramienta y viceversa, para que las dos estén sincronizadas. Para ello fue necesaria la creación de un servicio utilizando tecnologías muy similares a las de ERP (previamente citadas).
Pipelines y DevOps
También he podido ayudar en tareas relacionadas con la construcción de pipelines de despliege y de integración usando Azure DevOps para definir las tareas que queremos que los entornos lleven a cabo. También he ayudado a crear y eliminar paquetes usando los artefactos de Azure.
Tests
Uno de los aspectos en donde más he aprendido es en el ámbito del testing. Además de aumentar mi conocimiento sobre test unitarios, también he adquirido experiencia en smoke tests, contract test (usando Pact), integration tests…