Dirijo cómo se construye, se revisa y se entrega una plataforma Moodle™ crítica.

Lidero la evolución técnica desde la arquitectura hasta el código. Convierto las necesidades funcionales en decisiones ejecutables, ordeno el trabajo y reviso el desarrollo, las integraciones, los despliegues y la operación con un criterio técnico común. Creo las condiciones para que el equipo entregue y mantenga la plataforma por su cuenta.

Criterio profesional

Lo que distingue a un equipo que avanza de otro que solo entrega.

Cuatro diferencias que he encontrado tanto en equipos internos como en equipos de proveedores.

El código funciona y aun así está mal

Una revisión que solo comprueba que la funcionalidad responde deja fuera lo esencial: qué interfaces del núcleo utiliza, cómo se comporta bajo carga, si sobrevive a una actualización y qué ocurre al restaurar una copia.

El proveedor decide la arquitectura tarea a tarea

Cuando nadie del lado de la organización puede juzgar si lo entregado encaja en la plataforma completa, la arquitectura acaba siendo la suma de decisiones locales que nadie tomó a propósito.

Todo es prioritario porque nada está clasificado

Cuando incidencias, deuda técnica, mejora funcional y cambio estructural comparten una misma lista, lo estructural queda siempre pospuesto frente a lo urgente.

El criterio que no se transfiere se pierde

Si la plataforma funciona porque una sola persona conoce su funcionamiento, falta liderazgo técnico. El trabajo consiste en repartir ese criterio mediante revisiones explicadas, automatización y decisiones documentadas.

Dónde se concentra la complejidad

Cuándo se nota que falta liderazgo técnico.

No suele nombrarse así. Se presenta como despliegues que dan miedo, actualizaciones bloqueadas o una propuesta de proveedor que el equipo no puede valorar.

01

Hay desarrolladores, pero no hay dirección común

Cada uno resuelve su tarea de forma razonable y aparecen patrones distintos, dependencias duplicadas y decisiones incompatibles entre sí.

02

Cada despliegue produce incertidumbre

No hay una definición de terminado, ni pruebas suficientes, ni trazabilidad entre cambios, ni forma de volver atrás, ni nada que observar después.

03

Actualizar Moodle bloquea al equipo durante meses

El desarrollo diario no se gobernó pensando en las interfaces públicas ni en la evolución de versión, y ahora la actualización es una reconstrucción parcial.

04

Los incidentes se resuelven y vuelven

Se corrige la consecuencia inmediata sin análisis de causa, sin acción preventiva y sin cambiar el criterio de desarrollo que lo permitió.

05

Hay que juzgar la propuesta de un proveedor

Llega una estimación, una arquitectura o un desarrollo terminado y hace falta alguien capaz de revisarlo con criterio técnico y traducir el riesgo a coste y plazo.

06

La plataforma depende de una persona

Funciona mientras esa persona esté disponible. Nadie más conoce las decisiones, los atajos ni los sitios donde no hay que tocar.

Responsabilidades

De qué me ocupo cuando lidero técnicamente una plataforma Moodle.

Ocho responsabilidades. Ninguna consiste en programarlo todo yo, y ninguna consiste en repartir tareas y esperar.

Convertir necesidades en decisiones técnicas

Con producto, formación y operación, separar qué se configura, qué necesita desarrollo, qué corresponde a una integración, qué debe resolverse fuera de Moodle y qué no merece construirse. Descartar con argumentos lo que no merece construirse suele evitar una parte importante del coste y del mantenimiento futuros.

  • Configurar o desarrollar
  • Dentro o fuera del LMS
  • Criterios de aceptación
  • Lo que no se construye

Mantener la coherencia de la arquitectura

Que lo que se construye respete las interfaces públicas del núcleo, el modelo de extensiones, los contratos de integración, los límites entre sistemas, el modelo de datos y la compatibilidad con las actualizaciones. Una arquitectura se mantiene si alguien la aplica en cada revisión.

  • Interfaces públicas del núcleo
  • Modelo de extensiones
  • Límites entre sistemas
  • Compatibilidad futura

Dirigir la calidad de ingeniería

Revisión de código, análisis estático, estándares de la plataforma, pruebas unitarias y funcionales, pruebas de integración, seguridad, rendimiento, accesibilidad y comportamiento ante copia y restauración. Los criterios de calidad se acuerdan antes de escribir el código.

  • Revisión con reglas explícitas
  • Análisis estático
  • Pruebas unitarias y funcionales
  • Seguridad y rendimiento

Ordenar la entrega

Trabajo técnico pendiente, dependencias, riesgos, definición de preparado y de terminado, versionado, estrategia de ramas, integración continua, entornos, despliegue, vuelta atrás y estabilización. El objetivo es que desplegar deje de ser un acontecimiento excepcional.

  • Definición de terminado
  • Estrategia de ramas
  • Integración y despliegue continuos
  • Vuelta atrás

Liderar las integraciones

Contratos versionados, quién responde de cada dato, gestión de errores, reintentos, idempotencia, reconciliación, auditoría y observabilidad. Es el origen de buena parte de los incidentes y la capa que menos se revisa hasta que aparece uno.

  • Contratos versionados
  • Idempotencia
  • Reconciliación
  • Registro de operaciones

Acompañar al equipo

Revisiones explicadas en vez de correcciones secas, programar juntos cuando hace falta, decisiones escritas, mentoría y reparto del conocimiento. Mido el resultado por lo que el equipo puede resolver de forma autónoma.

  • Revisiones explicadas
  • Decisiones escritas
  • Mentoría
  • Menos dependencia individual

Coordinar con dirección y con proveedores

Traducir riesgo técnico a coste, plazo y consecuencia operativa. Validar estimaciones, revisar propuestas, fijar criterios de aceptación y escalar lo que está bloqueado antes de que sea tarde.

  • Riesgo traducido a coste
  • Validación de estimaciones
  • Revisión de propuestas
  • Criterios de aceptación

Separar la deuda técnica del resto del trabajo

Incidencias, deuda acumulada, mejora funcional y cambio estructural compiten en la misma lista, y lo urgente desplaza siempre a lo estructural. Separarlos, ponerles consecuencia y defender un hueco fijo para lo estructural es lo que evita que dentro de tres años la plataforma vuelva a estar bloqueada.

  • Deuda con consecuencia asociada
  • Hueco fijo por entrega
  • Riesgo frente a urgencia
  • Qué se retira

Responsabilidades concretas

De lo que respondo cuando lidero técnicamente.

De que exista un criterio común y aplicado, de que lo entregado se pueda mantener y de que el conocimiento deje de vivir en una sola cabeza. No de escribir yo todo el código.

01

Que exista una dirección técnica y se note

Un criterio común, conocido y aplicado, en lugar de tantas arquitecturas implícitas como personas haya en el equipo.

02

Que lo entregado se pueda mantener

Reviso pensando en quien mantendrá el código dentro de dos años y en la actualización de versión que llegará, no solo en que la demostración funcione.

03

Que desplegar sea aburrido

Pruebas, trazabilidad, vuelta atrás y observación posterior. La desconfianza ante un despliegue señala una carencia concreta que se puede corregir.

04

Que los incidentes enseñen algo

Causa, acción preventiva y cambio en el criterio de desarrollo. Cuando el mismo incidente se repite, reviso si el análisis identificó la causa correcta, si las acciones se ejecutaron y si los controles resultaron eficaces.

05

Que el criterio se quede en el equipo

Documento las decisiones y explico las revisiones para que el conocimiento no dependa de mi disponibilidad.

Casos de uso

Casos de código y entrega

Lo que encontré revisando extensiones propias y de terceros, y qué cambió al gobernarlas como un conjunto.

Caso

Cuarenta extensiones repetían los mismos fallos porque nadie gobernaba sus puntos de integración

En una plataforma con alrededor de 40 extensiones propias mantenidas por equipos y proveedores distintos, cada entrega podía introducir regresiones y cada actualización de Moodle abría un ciclo largo de revisión. El inventario interno mostraba ciclos de regresión prolongados, incidencias atribuibles a las extensiones y componentes sin un responsable claro. Parecía un problema de calidad de determinados desarrolladores, y lo descarté porque los fallos reaparecían en los mismos puntos de integración con independencia del equipo. La causa era la ausencia de estándares de extensión, propiedad definida, matriz de compatibilidad, pruebas comunes y presupuestos de rendimiento. Implanté un ciclo de vida para las extensiones, componentes compartidos, integración continua con pruebas de compatibilidad, análisis de rendimiento y criterios de retirada. Tras implantar el ciclo común se redujeron tanto el tiempo de regresión como las incidencias atribuibles a las extensiones; no publico aquí la serie, el volumen de entregas y el criterio de clasificación necesarios para cuantificar esa comparación.

    Caso

    La memoria crecía con cada registro porque el proceso conservaba referencias a objetos ya utilizados

    En una plataforma corporativa, las sincronizaciones nocturnas con el ERP fallaban por agotamiento de memoria alrededor del 40 % del catálogo procesado. Medí el pico de memoria, el comportamiento del recolector de basura de PHP y la asignación de objetos durante la ejecución. Parecía que el límite de memoria del entorno de línea de comandos era demasiado bajo, y lo descarté porque el consumo crecía de forma lineal con cada registro y la memoria de los bloques terminados nunca se liberaba. La causa era una fuga en plugins de sincronización de terceros: el código mantenía referencias circulares a objetos globales de Moodle dentro del bucle masivo. Perfilé la ejecución hasta localizar la función responsable, reescribí el proceso para trabajar en lotes pequeños y liberé explícitamente los objetos entre ellos. También sustituí la carga completa de resultados por un cursor, que los recorría fila a fila. La tarea pasó de fallar con más de 4 GB a ejecutarse de forma estable por debajo de 128 MB y en la mitad de tiempo.

      Cómo trabajo

      Cómo ordeno el trabajo técnico de un equipo.

      Entiendo el punto de partida antes de proponer reglas, porque el equipo solo puede aplicar criterios ajustados a su capacidad y a sus restricciones.

      1. 01

        Entender el objetivo y las restricciones

        Qué tiene que conseguir la organización, con qué equipo, en qué plazo y con qué no se puede contar.

      2. 02

        Levantar arquitectura, código, integraciones y operación

        Reviso la arquitectura, el código, las integraciones y la operación para ajustar las reglas a la capacidad y las restricciones reales del equipo.

      3. 03

        Hacer explícitas las decisiones técnicas

        Lo que solo conocían tres personas queda documentado, con la alternativa descartada y su motivo.

      4. 04

        Convertirlas en reglas que se puedan comprobar

        Una regla que no se puede verificar en una revisión o en la integración continua se queda en recomendación, y las recomendaciones acaban ignorándose.

      5. 05

        Automatizar lo repetible y observar lo desplegado

        Automatizo las comprobaciones repetibles para reservar la revisión humana a los fallos, las excepciones y las decisiones que exigen criterio. El equipo mantiene las reglas y sus umbrales, y observa lo desplegado en lugar de darlo por bueno.

      6. 06

        Transferir el criterio, no repartir tareas

        El trabajo termina cuando el equipo toma por su cuenta las decisiones que al principio tomaba yo.

      Experiencia y trabajo propio

      En qué me apoyo para dirigir la ingeniería.

      Ver trayectoria y perfil
      • Más de 22 años de trayectoria, desde el desarrollo de software hasta la dirección de equipos, con Moodle como especialidad.
      • Revisión de desarrollos propios y de proveedores con reglas explícitas, no con criterio improvisado.
      • Herramientas propias de análisis automatizado de extensiones, construidas para encontrar lo que una revisión manual deja pasar.
      • Trabajo con equipos internos, equipos mixtos y proveedores externos en universidades, formación profesional, empresa y Administración pública.
      • Recorrido completo desde el núcleo en PHP hasta el despliegue y la operación, lo que permite discutir con criterio en cualquiera de esas capas.
      • Interlocución con dirección para traducir riesgo técnico a coste, plazo y consecuencia.

      Blog

      En el blog documento las reglas con las que reviso.

      Análisis sobre calidad de extensiones, pruebas, despliegue, revisión de proveedores y evolución de plataformas, con las fuentes y los límites de cada afirmación.

      Ir a blog.albertolarah.com

      Hablamos

      Si queréis contrastar la dirección técnica de una plataforma, hablamos

      A veces basta con que alguien de fuera mire lo que ya habéis decidido y diga dónde ve el riesgo. Si os sirve, escríbeme.