Dorealda Dalipaj: "el software libre es uno de los mayores experimentos sociales de nuestro tiempo"
Vivimos rodeados de tecnología de la que dependemos cada día, aunque rara vez nos detenemos a pensar en lo que sucede detrás de las aplicaciones y servicios que utilizamos. Garantizar que estos sistemas sean seguros, fiables y capaces de responder a nuestras necesidades es uno de los grandes desafíos de la ingeniería de software.
Hablamos con Dorealda Dalipaj, profesora en el Grado en Desarrollo Full-Stack y el Grado en Ciencia de Datos e Inteligencia Artificial. Además, está especializada en calidad del software, ingeniería en la nube y análisis de proyectos de código abierto. A lo largo de esta entrevista, reflexiona sobre la importancia de construir tecnología fiable, el valor de la colaboración en las comunidades de software libre y los retos de la formación de los futuros profesionales tecnológicos.
Gran parte de tu trabajo gira alrededor de la calidad del software. Para alguien que no trabaja en tecnología, ¿qué significa realmente que un programa o una aplicación estén “bien hechos”? ¿Por qué es algo que debería importarnos como usuarios?
Para alguien que no trabaja en tecnología, la calidad del software se traduce a que una aplicación "haga lo que se supone que debe hacer" sin bloquearse. Pero ir de A a B sin estrellarse es solo el mínimo exigible; lo verdaderamente importante es cómo se realiza ese viaje.
Como usuarios, ese viaje debería importarnos tanto como que los frenos del coche respondan cuando pisamos el pedal. Hoy vivimos rodeados de software: gestiona nuestras cuentas bancarias, salud, relaciones, movilidad y la educación de nuestros hijos. Cuando una aplicación está mal hecha sufrimos y nos exponemos a frustraciones, pérdidas económicas y a una dependencia de herramientas frágiles.
En ocasiones hablamos de los errores de software solo cuando provocan una caída de un servicio o un problema de seguridad. ¿Hasta qué punto es posible prevenir esos fallos antes de que lleguen al usuario?
Se pueden prevenir muchísimo si se hacen las cosas con cabeza y sin prisas, aunque ningún software está completamente libre de errores. Pero pasa que a veces hay una presión enorme por sacar las cosas rápido al mercado.
Imagina que estás construyendo una casa. Lo lógico es que, antes de entregar las llaves revises las tuberías, compruebes que el techo no gotea, etc. En el software pasa igual. Tenemos herramientas buenísimas: desde análisis automáticos que prueban la aplicación miles de veces en segundos, hasta equipos enteros de desarrolladores que revisan el código con lupa antes de que se publique. Incluso nos apoyamos en la inteligencia artificial como un copiloto que nos avisa: "Oye, cuidado aquí que hay un cable suelto".
Prevenir fallos es como hacerle pruebas de choque a un coche: cuesta tiempo y dinero, sí, pero es infinitamente más barato y seguro que descubrir que los frenos fallan cuando ya vas por la autopista con la familia a bordo.
Has investigado proyectos de software libre, en los que desarrolladores de distintos lugares colaboran sobre un mismo código. ¿Qué podemos aprender de estas comunidades sobre cómo trabajar en equipo y construir tecnología de forma colectiva?
Para mí el software libre es uno de los mayores experimentos sociales de nuestro tiempo. Cuando ves a personas que no se conocen de nada, que viven en puntas distintas del planeta y que hablan idiomas diferentes, unirse para construir un software que usamos millones de personas... te deja alucinado.
Podemos aprender muchísimo de estas comunidades, pero yo destacaría tres cosas aplicables a cualquier empresa o equipo de trabajo:
- En estas comunidades no importa quién eres ni dónde estudiaste; importa lo que aportas. Todo el trabajo, las discusiones y los errores son públicos. Eso elimina el ego y fomenta una cultura donde el mejor argumento siempre gana.
- Como todo el mundo opina y edita el trabajo de otros, aprendes a encajar las críticas sin tomártelas como algo personal. Te enseñan a decir "esto se puede mejorar así" en lugar de "esto está mal". Esa comunicación constructiva es oro puro.
- Nadie está ahí solo por el sueldo (muchos lo hacen en su tiempo libre). Lo hacen porque quieren aprender y porque les motiva dejar algo útil para la comunidad.
Al final, nos enseñan que la mejor tecnología no nace en despachos cerrados bajo llave, sino de la colaboración abierta, la confianza y el respeto mutuo.
Cada vez utilizamos más servicios que funcionan en la nube, aunque muchas veces ni siquiera seamos conscientes de ello. ¿Qué retos supone construir sistemas cada vez más complejos y de los que dependemos para tantas actividades cotidianas?
Sin darnos cuenta dependemos de la nube para casi todo. El verdadero reto ya no es inventar la magia más sorprendente, sino lograr que un sistema tan complejo sea tan seguro y fiable que podamos vivir tranquilos sin miedo a que se apague de repente. Para quienes construyen esta tecnología, los desafíos crecen cada día, pero yo destacaría tres principales: la seguridad, la resiliencia y la huella invisible.
Nuestras fotos, conversaciones, finanzas... todo viaja y vive en servidores que están a miles de kilómetros. Proteger esa información de cualquier ataque y cumplir con la seguridad es un desafío titánico.
Antes, si se estropeaba el ordenador de tu oficina, fallaba solo lo tuyo. Hoy, si cae un servidor central en una punta del mundo, te puedes quedar sin poder fichar en el trabajo o sin abrir la puerta de casa. Construir sistemas resilientes, que aguanten millones de peticiones sin pestañear y que sigan funcionando aunque una parte falle, es un auténtico dolor de cabeza técnico.
Por último, tendemos a pensar que la nube no pesa, pero esos servidores gigantescos consumen una cantidad brutal de energía y agua para refrigerarse. Uno de los mayores retos actuales es diseñar software que sea eficiente para no freír el planeta en el proceso.
Has tenido experiencia docente tanto en España como fuera de nuestro país. ¿Has encontrado diferencias en la forma en la que los estudiantes se acercan a la tecnología o aprenden informática? ¿Hay alguna práctica educativa de otros sistemas que te parezca especialmente interesante?
La verdad es que el talento y las ganas de aprender de los jóvenes son universales: los dolores de cabeza con un código que no compila son exactamente iguales en Madrid, en el resto de Europa o al otro lado del planeta. Pero sí que hay matices culturales muy interesantes en cómo se afronta el aprendizaje.
En España se tiene una base teórica y analítica fantástica; los estudiantes suelen tener un sentido crítico y una capacidad de resolución de problemas tremenda. Sin embargo, en otros sistemas educativos con los que he colaborado, hay un enfoque que me llama mucho la atención: la cultura del error como motor y la conexión temprana con la industria real.
Equivocarse de forma estrepitosa está bien visto y forma parte formal del proceso de evaluación. Las asignaturas no se evalúan con un examen final, sino resolviendo un problema que una empresa, institución o startup local plantea a los estudiantes. El alumno compite, colabora y presenta su software funcional frente a retos y escenarios reales. Eso les da una madurez laboral enorme antes incluso de graduarse.
Aquí a veces nos frena un poco más el miedo a no hacerlo perfecto o a que la teoría no encaje al 100%. Pero al final, no se trata de que un sistema sea mejor que otro, sino de coger lo mejor de ambos: la sólida base analítica que tenemos aquí, combinada con esa cultura de experimentación y exposición al mundo real que se respira fuera.
¿Notas diferencias entre países a la hora de preparar a los estudiantes para incorporarse al sector tecnológico? ¿Hay algo que creas que España hace especialmente bien o que debería reforzar?
Sí que se notan matices, sobre todo en las dinámicas de inserción laboral y en cómo el mundo empresarial y la universidad se miran de cerca. Por un lado, lo que en España se hace muy bien es formar ingenieros con una capacidad analítica y de resolución de problemas envidiable.
Nuestros estudiantes tienen una base técnica, matemática y conceptual muy sólida. Cuando un graduado español sale al mercado, suele entender el "por qué" de las cosas a un nivel muy profundo, lo que le da flexibilidad para adaptarse a cualquier tecnología que venga en el futuro.
Por otro lado, en otros países, hay una cultura de prácticas y empleo junior mucho más integrada durante los propios estudios. Desde mi punto de vista, lo qué deberíamos reforzar es una transición a la empresa mucho más fluida y bidireccional.
La tecnología es un ámbito profundamente internacional, con equipos que trabajan desde distintos países y culturas. ¿Hasta qué punto crees que aprender a desenvolverse en entornos multiculturales debería formar parte de la preparación de un futuro profesional tecnológico?
Es que hoy en día es absolutamente fundamental. Diría que es tan importante como saber programar en Python o entender de bases de datos. La tecnología habla un idioma común que es el código, pero los proyectos los construyen personas, y ahí es donde la capacidad para desenvolverse en entornos multiculturales marca la diferencia.
Debería formar parte de la formación hasta el punto de ser un pilar troncal, no una asignatura o una optativa que se coge por cumplir. Un graduado que solo sabe programar muy bien pero que no se comunica con fluidez en equipos diversos, o que se bloquea trabajando en remoto con gente de otros países, sale al mercado a medio gas.
Por eso creo que las universidades tenemos que integrarlo de forma transversal desde el primer día: obligando a hacer proyectos en equipo, fomentando presentaciones o debates en inglés de manera natural, y enseñando que la empatía cultural es tan técnica como una línea de código. En resumen, debería ocupar el mismo nivel de prioridad que la propia enseñanza técnica, porque por muy brillante que sea tu software, si no sabes construirlo en equipo con el resto del mundo, te vas a quedar aislado.
Si pensamos en un estudiante que hoy empieza a formarse en tecnología, en un contexto en el que las herramientas cambian continuamente, ¿qué conocimientos o capacidades crees que debería intentar conservar durante toda su carrera profesional?
Cualquier marco, herramienta o hasta un lenguaje de programación que enseñemos hoy en la universidad, será historia en cinco o diez años. Si un estudiante se aferra solo a la tecnología concreta, se quedará obsoleto enseguida. Por eso, lo que debe conservar durante toda su carrera no son herramientas, sino capacidades raíz.
- Aprender a aprender: Enfrentarse a algo completamente nuevo y saber buscarse la vida para entenderlo. La curiosidad es tu mejor seguro de vida profesional.
- El pensamiento crítico y analítico: Saber hacer las preguntas correctas antes de escribir una sola línea de código. Entender el "por qué" de los problemas en lugar de limitarse a copiar soluciones prefabricadas.
- La perseverancia ante la frustración: En este trabajo te vas a equivocar el noventa por ciento de las veces antes de que las cosas salgan bien. Conservar la paciencia y la capacidad de resiliencia es el sello de un gran profesional.
En fin, las modas tecnológicas van y vienen, pero una cabeza bien amueblada, capaz de razonar con lógica, colaborar con otros y adaptarse a lo que venga, os va a durar toda la vida.
