Desarrollador Backend en Infor

Introducción
Una vez recibido de Ingeniero de Sistemas, y tras haber experimentado diferentes emprendimientos de desarrollo tanto web como mobile en el año 2018, sentía que necesitaba conocer cómo funciona el trabajar como desarrollador para una empresa grande. Si bien tenía experiencia en el desarrollo de apps, nunca había trabajado en un proyecto grande ni había desarrollado el backend de un sistema complejo. El lenguaje que más conocía hasta el momento era Java, pero por la universidad y por haber trabajado con Android, pero nunca había utilizado las librerías y frameworks populares para el desarrollo de sistemas complejos, por lo que me pareció una buena oportunidad para aprender más sobre el desarrollo backend en Java y el trabajo en equipo en una empresa de software.
Uno de mis amigos estaba trabajando hacía ya un año en una empresa multinacional que había abierto oficinas en Tandil llamada Infor. Esta empresa había abierto unas vacantes para el puesto de desarrollador backend en Tandil y mi amigo podía referirme para ser entrevistado para el puesto. Fue entonces que comencé a prepararme para la entrevista, leyendo un poco sobre el lenguaje y sobre los frameworks más usados en ese momento: Spring, Hibernate, Maven, etc.
Luego de aplicar para el puesto, tuve que pasar dos instancias: la primera donde se me evaluó mi nivel de inglés y donde tuve que responder algunas preguntas específicas de Java, y la segunda donde se me entrevistó de forma presencial en la oficina y tuve que responder varias preguntas técnicas y resolver un desafío de código. Pude atravesar ambas instancias con un desempeño aceptable, y finalmente se me hizo una oferta que acepté y comencé a trabajar en Agosto del 2018
Proyecto
La empresa tenía un producto propio que vendía a empresas de retail muy conocidas principalmente en Estados Unidos. La aplicación constaba de muchos servicios, pero el producto principal consistía en una aplicación para tablets de iOS o Windows que brindaba todo el flujo de carga de productos a un carrito y su posterior compra, y que era utilizada por los vendedores de estas empresas retail. Debido a que contaba también con información de inventario, un back-office general, y la posibilidad de tener multiples tiendas en diferentes lugares físicos, es que el sistema también contaba con funcionalidades de sincronización entre el servidor de cada terminal, el servidor de la tienda y un tercer servidor central que nuclea a todas las tiendas.
El equipo para el que entré a trabajar era el encargado del desarrollo del producto estrella, el backend del producto principal. Mi equipo constaba de 6 personas ubicadas físicamente en la misma oficina de Tandil, pero que también interactuábamos con otros equipos de los demás proyectos, y con equipos del mismo proyecto pero ubicados en Estados Unidos, por lo que si bien la comunicación con mi equipo de Tandil era en español y bastante distendidas, las demostraciones y demás reuniones importantes eran en inglés, lo que me llevó a perfeccionar mis habilidades del idioma y perder el miedo de comunicarme con personas de habla inglesa nativa.
La aplicación en la que trabajé era un monolito hecho en Java que se encargaba principalmente de darle servicio a las multiples terminales de las tiendas. La misma fue desarrollada con buenas prácticas de programación, por lo que el código era relativamente fácil de seguir. Contaba con tres capas bien definidas: la capa de UI que manipulaba los DTOs, la capa de servicios con la lógica del negocio y que manipulaba los objetos del dominio, y la capa de datos que se encargaba de gestionar las entidades. La comunicación entre las diferentes capas estaba bien definida, y existían funciones para convertir los objetos de una capa a su representación en la otra.
La metodología de desarrollo que se aplicaba era Scrum, con sprint de dos semanas y las reuniones típicas: daily, planning, demo, retro, etc.
Tecnologías
Algunas de las tecnologías utilizadas eran las siguientes:
- JAVA 8
- PostgreSQL
- Springboot
- Maven
- Hibernate
- Git
- Bitbucket
- JUnit
- EasyMock
- Lombok
- Sonar
- Docker
- Postman
- REST
- AWS
- IntelliJ
- Jira
- Confluence
- Slack
Proyecto con JMeter
Además de agregar algunas funcionalidades al sistema y solucionar bugs reportados, también tuve la posibilidad de aportar en algunos proyectos paralelos que eran asignados a mi equipo. El más importante de ellos consistía en contar con la posibilidad de medir los tiempos de respuesta de las diferentes APIs bajo los diferentes contextos. Debido a que el servidor debía poder darle servicio a múltiples terminales en simultaneo, era necesario hacer pruebas de stress que permitan simular el ambiente con múltiples terminales utilizando los servicios en simultaneo.
Para hacer estas pruebas y poder medir la performance de la aplicación, se utilizó una herramienta llamada Jmeter que, entre otras cosas, permitía simular determinados llamados concurrentes a algunas APIs en un tiempo definido, y asi poder calcular los tiempos de respuesta frente a determinada cantidad de terminales funcionando en simultáneo.
Terminación del empleo
El ambiente formado en Infor era el de una familia, donde todos estaban muy a gusto con el grupo y con su trabajo. Sin embargo, algo que no conformaba a la gran mayoría en mis últimos meses era el salario, que era en pesos argentinos y no se mantenía actualizado acorde a la inflación del país. Es por esto que varios empleados de las oficinas de Tandil comenzaron a ir a trabajar para otras empresas.
En Mayo del 2019 recibimos en las oficinas a algunos encargados de recursos humanos que trabajaban desde Buenos Aires, y en un acto sorpresivo para todos, citaron a la mitad de los empleados de Tandil (incluyendome a mi) a una reunión donde nos anunciaron el despido inmediato, teniendo que dejar la computadora y todas las pertenencias de la empresa en ese preciso momento.
Se trataba de una reducción de personal importante, entiendo que debido a que los resultados comerciales no eran los esperados. Esto luego derivó en la salida progresiva y voluntaria de la gente que quedó completamente desmoralizada, hasta que finalmente se cerraron las oficinas de Tandil.
Conclusiones
Mi paso por Infor fue mi primera experiencia como desarrollador en una empresa grande, lo que me permitió aprender mucho sobre como funcionan las empresas cuando desarrollan un sistema complejo. También conocí por primera vez herramientas y aplicaciones muy útiles para estos casos. Por ejemplo, fue mi primera interacción real con git, una herramienta que ahora es de uso cotidiano Fue y reuniones diarias, mi primer ticket de Jira, y mi primer commit. Todos estos aprendizajes, sumados al equipo de trabajo que realmente era muy colaborativo, entretenido y solidario (entre otras cosas), y a un scrum master y mentor muy capaz, hicieron de mi paso por Infor una experiencia muy nutritiva para mi carrera y mi desarrollo profesional.