La Rioja

Arsys: “En Logroño diseñamos software que se distribuye en todo el mundo”

En las oficinas de Arsys en Logroño se diseña software que luego se adapta y comercializa en todo el mundo bajo diferentes marcas e idiomas. Álvaro Muñoz, Responsable de Desarrollo Front-End en Servidores Cloud de Arsys, explica cómo es el proceso de diseño de software dentro de la compañía y cómo está evolucionando el sector.

– ¿Existe el software perfecto? ¿Podría existir?

– El software perfecto siempre es aquel que cumple los requerimientos para los que ha sido desarrollado, requerimientos que se definen en un momento puntual, con unos objetivos y unos recursos determinados. En este sentido, muchos de los videojuegos o los programas de hace décadas eran perfectos en su momento, aunque hoy en día nos parezcan muy mejorables.

Actualmente, uno de los aspectos que más se cuidan en el mundo del desarrollo va encaminado precisamente a facilitar la evolución del software. Ya no se construye un programa de una manera monolítica, sino que se articulan los diferentes elementos que lo componen como microservicios. Así, si queremos mejorar un programa o incorporar una nueva característica no hay que programarlo todo de nuevo, sino que podemos trabajar y mejorar solo en lo que necesitamos, manteniendo su raíz casi intacta.

– ¿Hacia dónde se encamina el desarrollo de software?

– Actualmente, las principales tendencias en el desarrollo se encaminan a ser más ágiles y rápidos, no sólo en el desarrollo si no también en su definición y su entrega y, por supuesto, en mejorar la seguridad y la calidad del software, ya que es una de las principales preocupaciones de los usuarios y de las empresas. En ese sector es fácil encontrar áreas de especialización muy concretas, como las tecnologías cloud, la Inteligencia Artificial o el Internet de las Cosas, que luego pueden aplicarse de manera transversal a muchos sectores, no solo en las empresas tecnológicas.

– ¿Hay perfiles tecnológicos suficientes para trabajar como desarrolladores de Software?¿Cómo debería formarse un estudiante que quiere trabajar como desarrollador?

– Los desarrolladores de software son perfiles cada vez más demandados en todo tipo de empresas, no solo en las tecnológicas, ya que el software cada vez se concibe más como una herramienta que facilita la mejora la productividad en cualquier negocio con muchas áreas de especialización y aplicaciones.

Cualquier estudiante que quiera trabajar en este campo tiene que ser consciente de que la formación académica facilita una base esencial e imprescindible de conocimientos; sin embargo la formación continua es una constante para nosotros porque todo cambia muy deprisa en el mundo del desarrollo. Y no sólo hablamos de tecnologías o lenguajes de programación, las metodologías y herramientas también juegan un papel muy importante.

Por eso, es casi obligatorio leer y seguir publicaciones de personas y grupos relacionados con nuestro sector. Afortunadamente, somos un colectivo tremendamente colaborativo y abierto, me atrevería a decir que incluso generoso. Son muchos los profesionales que utilizan las redes sociales y la web como medio de divulgación, por lo que hay una fuente inagotable de artículos y tutoriales con los que aprender y perfeccionar. También son muy interesantes las plataformas de formación online, son tremendamente interactivas y, por lo general, su contenido siempre está actualizado y alineado con lo que las empresas demandan.

– En cuanto a tecnologías o lenguajes de programación, ¿cuáles son las principales recomendaciones a la hora de formarse?

– Si pensamos en un perfil full-stack, (es decir, que se desenvuelva tanto en el backend como en el frontend), sería bueno formarse en metodologías agile, arquitectura de software, bases de datos tanto relacionales como no relacionales, microservicios, orientación a objetos, testing, integración continua. Y en cuanto a lenguajes, Java, C# o Nodejs para backend y Javascript y frameworks como React, Vue o Angular para frontend.

En cualquier formación de este tipo hay dos aspectos que son de vital importancia. El primero es practicar, la experimentación es la base del aprendizaje, y sin tener miedo a equivocarse porque de lo que más se aprende es del error. Y el segundo, leer el trabajo de otros que tienen más experiencia. Este mundo es muy colaborativo y hay mucho código que la gente pone a nuestra libre disposición en plataformas como github, así que resulta muy fácil acceder a esos recursos y tener la posibilidad de aprender y practicar.

– ¿Qué diferencias hay entre frontend y backend al hablar del desarrollo de software?

– En prácticamente cualquier software podemos entender que hay dos grandes áreas: el frontend, lo que el usuario visualiza y con lo que interactúa, y el backend, lo que sucede detrás y que permite que esa interacción se convierta en acción. Ejemplificándolo en Arsys, el equipo de desarrollo construye las soluciones que facilitan la digitalización de nuestros clientes. La parte que nuestros clientes ven de esas soluciones sería el frontend. Por ejemplo, el panel de control de los Servidores Cloud. Y la parte que no ven, el backend. Ahí, por ejemplo, se encontraría el software que asigna la capacidad de almacenamiento a un Servidor Cloud.

Refiriéndome en concreto a mi área, nosotros nos encargamos del software que ven nuestros clientes de soluciones de infraestructura cloud y seguridad. No solo de Arsys, sino también del grupo United Internet, del que forma parte Arsys desde 2013. Desde Logroño, nosotros diseñamos este software que luego se adapta y comercializa en todo el mundo bajo diferente marcas e idiomas, lo que nos lleva a trabajar en continua colaboración con equipos en Alemania, Reino Unido y en otras oficinas en España para desarrollar un software que se pueda personalizar muy fácilmente para que pueda adaptarse a cada mercado.

– ¿Cómo es el proceso de desarrollo de software en un sector tan complejo como el de servicios IT? ¿Cuáles son las fases antes de lanzar un software al mercado?

– Aunque no exista una línea de producción física ni un producto tangible; partimos de una idea que se va transformando en una realidad poco a poco. Se atraviesan fases de forma ordenada y cada una le añade lo necesario para que la siguiente pueda hacer lo propio y así hasta su finalización.

Las fases más tempranas tienen que ver con estudios de mercado, viabilidad, workshops, planificación… que realizan otros departamentos de de forma colaborativa con equipos de España y Alemania. Una vez que el proyecto llega a nuestro departamento las fases son las siguientes. En primer lugar el equipo de Product Owners se encarga de definir el producto, sus requisitos y casos de uso de forma colaborativa ¿Para qué? para que en la fase de implementación no haya ninguna duda de lo que se espera del producto. Para realizar esta tarea se realizan sesiones con los diferentes equipos entre los que nos encontramos nosotros; pero también equipos de Redes, Operaciones, Plataforma… Cualquier equipo que vaya a estar implicado en su producción.

A ésta sigue la fase de desarrollo, a continuación la fase de calidad, en la que se verifica que esos requisitos y casos de uso quedan cubiertos y, por último, la fase de entrega.

En cuanto al proceso de desarrollo en sí mismo, se trata de un proceso de entrega continua de software que nos acerca al cliente, tanto interno como externo, y que permite que éste vea su evolución progresivamente. De esta forma lo que perseguimos es una entrega de valor constante. Las herramientas y metodologías de trabajo que empleamos han sido escogidas para facilitarnos esta tarea.

El proceso consta de varias etapas, arquitectura de software, durante la cual se analiza y define la estructura y relación entre las diferentes piezas del software; la estrategia de desarrollo, en la que se traza el plan de ejecución, plan pruebas y estimación de esfuerzos; el desarrollo propiamente dicho; que en nuestro caso realizamos a partir del plan de pruebas. Nuestro plan de pruebas se diseña pensando en los requisitos y casos de uso del producto; es decir, desde el punto de vista funcional, del cliente. Son estas pruebas las que guían el desarrollo, la codificación. Esto se conoce como BDD (Behavior Driven Development) y nos ayuda a conseguir poner al cliente en el centro de todo.

Subir