Los riesgos de depender de un único desarrollador

Muchas empresas tienen sistemas que funcionan correctamente, pero existe un riesgo que no siempre resulta visible: todo el conocimiento técnico está concentrado en una sola persona.

Ese desarrollador conoce el código, sabe dónde está alojado el sistema, tiene las credenciales, entiende las integraciones y recuerda por qué determinadas funcionalidades fueron construidas de cierta manera.

Mientras esa persona continúa disponible, la situación parece controlada.

El problema aparece cuando la empresa descubre que no puede modificar, recuperar o incluso administrar su propio sistema sin depender de ella.

Depender de un único desarrollador puede convertirse así en un riesgo operativo, técnico y comercial.

¿Qué significa depender de un único desarrollador?

Existe dependencia tecnológica cuando una sola persona concentra conocimientos o accesos indispensables para mantener un sistema.

Por ejemplo, solamente esa persona sabe:

  • dónde está alojada la aplicación;
  • cómo desplegar una nueva versión;
  • dónde está el código fuente;
  • cómo funciona la base de datos;
  • qué integraciones existen;
  • qué credenciales utiliza el sistema;
  • cómo restaurarlo ante una falla;
  • qué reglas especiales fueron programadas;
  • cómo modificar funcionalidades críticas.

El riesgo aumenta cuando esta información tampoco está documentada.

El problema no es trabajar con un desarrollador individual

Una empresa puede trabajar perfectamente con un freelancer o un desarrollador independiente.

El problema no es el tamaño del proveedor.

El problema aparece cuando la continuidad del software depende exclusivamente de esa persona.

Un proyecto puede estar correctamente gestionado incluso con un único desarrollador si la empresa mantiene:

  • acceso al código;
  • credenciales propias;
  • backups;
  • documentación suficiente;
  • control sobre infraestructura;
  • capacidad de transferir el sistema a otro profesional.

¿Por qué se genera esta dependencia?

Muchas veces ocurre gradualmente.

Un desarrollador comienza resolviendo una necesidad pequeña.

Después agrega:

  • nuevas funcionalidades;
  • integraciones;
  • automatizaciones;
  • reportes;
  • reglas de negocio;
  • procesos críticos.

Con los años, el sistema crece.

Pero la documentación, los accesos y los procesos de mantenimiento no evolucionan al mismo ritmo.

Finalmente, una sola persona termina siendo el “manual técnico” completo de la plataforma.

Primer riesgo: no tener acceso al código fuente

El código fuente es uno de los activos fundamentales de un sistema desarrollado a medida.

Si la empresa no puede acceder al repositorio, cualquier cambio futuro depende del proveedor actual.

Conviene saber:

  • dónde está alojado el código;
  • quién es propietario de la cuenta;
  • quién tiene permisos;
  • si existe historial de versiones;
  • si el repositorio está actualizado;
  • qué ramas corresponden a producción.

No alcanza con que alguien diga “yo tengo el código”.

La empresa debería poder verificar que existe y acceder a él según las condiciones acordadas.

Segundo riesgo: que las cuentas estén a nombre del desarrollador

Es frecuente encontrar proyectos donde servicios críticos fueron creados utilizando cuentas personales del proveedor.

Por ejemplo:

  • hosting;
  • servidores cloud;
  • dominios;
  • repositorios;
  • servicios de correo;
  • bases de datos;
  • APIs externas;
  • plataformas de almacenamiento;
  • servicios de notificaciones.

Esto genera una dependencia innecesaria.

Siempre que sea posible, los activos principales deberían estar bajo cuentas controladas por la empresa y el desarrollador debería trabajar mediante permisos.

Tercer riesgo: no saber cómo desplegar el sistema

Tener el código no garantiza que otro desarrollador pueda continuar el proyecto.

También es necesario entender cómo ponerlo en funcionamiento.

Por ejemplo:

  • qué dependencias necesita;
  • qué variables de entorno utiliza;
  • cómo se compila;
  • cómo se conecta con la base de datos;
  • qué servicios externos requiere;
  • cómo se publica una nueva versión.

Si este procedimiento existe solamente en la memoria de una persona, la transición puede ser difícil incluso teniendo todo el código.

Cuarto riesgo: desconocer la infraestructura

Una empresa debería poder responder preguntas básicas sobre su sistema:

  • ¿en qué servidor funciona?
  • ¿qué proveedor de infraestructura utiliza?
  • ¿quién tiene acceso?
  • ¿cuánto cuesta?
  • ¿dónde está la base de datos?
  • ¿qué backups existen?
  • ¿cómo se recupera ante una falla?

Si nadie dentro de la organización puede responderlas sin consultar al desarrollador, existe dependencia operativa sobre la infraestructura.

Quinto riesgo: no tener backups verificables

“Tenemos backup” y “podemos recuperar el sistema” no son necesariamente lo mismo.

Un respaldo debería permitir reconstruir información crítica después de una falla.

Conviene conocer:

  • qué se respalda;
  • con qué frecuencia;
  • dónde se almacena;
  • cuánto tiempo se conserva;
  • quién puede acceder;
  • si alguna vez se probó una restauración.

Si solamente el desarrollador administra y comprende esos backups, la empresa continúa dependiendo de él incluso frente a una contingencia.

Sexto riesgo: conocimiento técnico no documentado

Un sistema desarrollado durante años suele acumular decisiones.

Por ejemplo:

  • reglas especiales para determinados clientes;
  • integraciones antiguas;
  • procesos automáticos;
  • tareas programadas;
  • excepciones;
  • validaciones;
  • dependencias entre módulos.

Parte de ese conocimiento puede existir solamente en la memoria del desarrollador.

Cuanto más crítico sea el software, mayor debería ser el esfuerzo por convertir ese conocimiento en documentación.

Séptimo riesgo: que una falla crítica dependa de su disponibilidad

Supongamos que el sistema deja de facturar un viernes por la tarde.

Si solamente una persona puede intervenir, la capacidad de respuesta depende completamente de:

  • que esté disponible;
  • que tenga acceso;
  • que pueda identificar el problema;
  • que todavía quiera prestar soporte.

En un sistema crítico, esta dependencia puede afectar directamente la continuidad del negocio.

Octavo riesgo: quedar atrapado comercialmente

La dependencia también puede afectar la capacidad de negociación.

Si solamente un proveedor puede modificar el sistema, la empresa tiene pocas alternativas frente a:

  • aumentos de precios;
  • cambios en condiciones;
  • demoras;
  • baja calidad del servicio;
  • prioridades diferentes.

Tener libertad para cambiar de proveedor mejora tanto la continuidad como la posición comercial de la empresa.

¿Cómo saber si tu empresa tiene dependencia tecnológica?

Una prueba simple consiste en imaginar que mañana el desarrollador actual deja de estar disponible.

¿Podrías entregar a otro equipo:

  • el código fuente;
  • acceso a infraestructura;
  • credenciales necesarias;
  • backup de la base de datos;
  • documentación;
  • lista de integraciones;
  • información sobre despliegues;
  • contactos de servicios externos?

Si la respuesta es no, existe algún grado de dependencia.

Qué debería controlar la empresa

Como mínimo, para un sistema importante conviene tener control sobre:

Repositorio de código

Con acceso empresarial y permisos claros.

Infraestructura

Servidores, cloud, hosting y servicios críticos.

Dominio y DNS

Especialmente cuando el sistema depende de dominios corporativos.

Base de datos

Acceso, respaldos y procedimiento de recuperación.

Credenciales

Guardadas mediante mecanismos seguros y no solamente en dispositivos personales.

Servicios externos

APIs, correo, pagos, almacenamiento y otras dependencias.

Documentación

Información suficiente para que un nuevo equipo pueda comenzar a comprender la plataforma.

¿Qué documentación debería existir?

No hace falta documentar cada línea de código.

Pero debería existir al menos una base que incluya:

  • arquitectura general;
  • tecnologías utilizadas;
  • estructura de infraestructura;
  • base de datos;
  • integraciones;
  • procedimiento de despliegue;
  • variables y configuraciones importantes;
  • procesos automáticos;
  • módulos críticos;
  • procedimiento de backups;
  • dependencias externas.

¿La empresa debe tener las contraseñas del desarrollador?

No.

La práctica correcta es que la empresa tenga sus propias cuentas y que cada integrante o proveedor utilice usuarios individuales con los permisos necesarios.

Esto permite:

  • revocar accesos;
  • registrar acciones;
  • evitar compartir contraseñas;
  • mantener control sobre los activos.

Repositorio empresarial vs. repositorio personal

Cuando un sistema es propiedad de una empresa, resulta recomendable que el repositorio principal esté bajo una organización o cuenta corporativa.

El desarrollador puede tener permisos para trabajar, pero la organización conserva el control administrativo.

Así, si cambia el proveedor, el código no necesita ser transferido desde una cuenta personal.

¿Qué pasa si ya existe una dependencia fuerte?

No hace falta cambiar inmediatamente de desarrollador.

De hecho, si la relación funciona bien, lo mejor puede ser reducir el riesgo junto con él.

Un plan progresivo puede incluir:

  1. inventariar los activos técnicos;
  2. centralizar cuentas;
  3. asegurar acceso al código;
  4. documentar infraestructura;
  5. crear backups verificables;
  6. documentar integraciones;
  7. registrar el procedimiento de despliegue;
  8. incorporar una segunda persona al conocimiento del sistema.

La importancia de una segunda persona

No necesariamente hace falta duplicar todo el equipo.

Pero en sistemas críticos resulta saludable que al menos otra persona pueda:

  • acceder al repositorio;
  • comprender la arquitectura;
  • realizar un despliegue;
  • consultar los logs;
  • acceder a la infraestructura;
  • restaurar un backup;
  • entender los principales componentes.

Esto reduce el riesgo de un punto único de falla humano.

¿Puede otro proveedor tomar un sistema desarrollado por otra persona?

Sí.

Es una situación frecuente.

El nuevo equipo suele comenzar realizando un relevamiento técnico para entender:

  • calidad del código;
  • arquitectura;
  • tecnologías;
  • base de datos;
  • infraestructura;
  • integraciones;
  • documentación;
  • estado general del sistema.

Después puede definir qué necesita para asumir gradualmente el mantenimiento.

¿Qué pasa si el código está mal documentado?

La falta de documentación dificulta la transición, pero no necesariamente la vuelve imposible.

Un nuevo equipo puede analizar:

  • repositorio;
  • estructura del proyecto;
  • base de datos;
  • logs;
  • configuraciones;
  • infraestructura;
  • comportamiento de la aplicación.

El tiempo necesario dependerá de la complejidad y calidad del sistema.

¿Qué pasa si la tecnología es antigua?

En ese caso existen dos problemas diferentes:

dependencia de la persona y dependencia de la tecnología.

Puede ser posible transferir conocimiento a otro proveedor, pero seguir existiendo un riesgo porque la tecnología tiene poco soporte o pocos especialistas disponibles.

Ahí conviene evaluar también una estrategia de modernización.

Evitar dependencia no significa cambiar continuamente de proveedor

Una relación de largo plazo con un proveedor puede ser muy valiosa.

Conoce el negocio, entiende los procesos y puede trabajar con mayor velocidad.

El objetivo no debería ser evitar relaciones estables.

El objetivo es que esa relación sea elegida y no obligatoria.

La empresa debería poder continuar operando aun si en algún momento necesita cambiar.

Qué conviene acordar al contratar desarrollo de software

Antes de iniciar un proyecto conviene definir claramente:

  • propiedad y acceso al código;
  • repositorio;
  • infraestructura;
  • documentación;
  • backups;
  • credenciales;
  • mantenimiento;
  • procedimiento de transición;
  • servicios de terceros;
  • responsabilidades de cada parte.

Estas definiciones son mucho más fáciles de resolver al comienzo que después de varios años.

Una auditoría puede detectar dependencias antes de que sean un problema

Cuando existe incertidumbre sobre quién controla qué, una revisión técnica puede construir un inventario de:

  • código;
  • cuentas;
  • infraestructura;
  • dominios;
  • bases de datos;
  • backups;
  • integraciones;
  • tecnologías;
  • documentación;
  • riesgos.

Después puede definirse un plan para reducir las dependencias más críticas.

El test de los 30 días

Una pregunta especialmente útil es:

¿Qué ocurriría si durante los próximos 30 días no pudiéramos contactar al desarrollador actual?

¿El sistema seguiría funcionando?

¿Podríamos:

  • reiniciarlo;
  • recuperarlo;
  • hacer un cambio urgente;
  • renovar un certificado;
  • restaurar datos;
  • resolver una integración caída?

Las respuestas permiten dimensionar el riesgo real.

¿Cuándo conviene buscar otro equipo?

Puede ser razonable buscar apoyo adicional cuando:

  • no existe acceso al código;
  • faltan credenciales importantes;
  • no hay backups verificables;
  • el proveedor no documenta;
  • el soporte es insuficiente;
  • existen tecnologías obsoletas;
  • la empresa necesita crecer y el sistema no acompaña;
  • se quiere reducir el riesgo antes de una migración.

El objetivo inicial no necesariamente tiene que ser reemplazar al proveedor actual.

Puede ser simplemente recuperar control tecnológico.

Cómo puede ayudar un nuevo proveedor de software

Un equipo especializado puede tomar un sistema existente y comenzar por entender qué hay.

Ese trabajo puede incluir:

  • auditoría del código;
  • relevamiento de infraestructura;
  • documentación;
  • recuperación de accesos;
  • revisión de backups;
  • identificación de riesgos;
  • estabilización;
  • modernización progresiva.

En algunos casos será conveniente mantener el sistema. En otros, modernizar determinados componentes. Y solamente cuando sea necesario, reemplazarlo.

Un equipo de desarrollo de software a medida debería poder evaluar esas alternativas antes de proponer rehacer todo.

Conclusión

Depender de un único desarrollador no es un problema porque esa persona sea poco confiable.

Es un problema de arquitectura operativa.

Si una sola persona concentra el código, las credenciales, la infraestructura y el conocimiento técnico, existe un punto único de falla.

La mejor forma de reducir ese riesgo es conseguir que la empresa mantenga control sobre sus activos tecnológicos y que el conocimiento necesario para operar el sistema pueda transferirse.

Una buena relación con un desarrollador puede durar muchos años.

Pero debería existir porque ambas partes quieren continuar trabajando juntas, no porque cambiar sea técnicamente imposible.

Preguntas frecuentes sobre dependencia de desarrolladores

¿Es riesgoso depender de un único desarrollador?

Puede serlo si esa persona concentra accesos, código fuente, infraestructura y conocimiento indispensable para mantener el sistema.

¿La empresa debería tener acceso al código fuente?

En un software desarrollado específicamente para la empresa, las condiciones de propiedad y acceso al código deberían quedar definidas contractualmente y la organización debería conocer cómo acceder al repositorio según lo acordado.

¿Puede otro desarrollador continuar un sistema existente?

Sí. Para hacerlo necesita analizar el código, infraestructura, base de datos, integraciones, dependencias y documentación disponible.

¿Qué accesos debería controlar la empresa?

Conviene controlar cuentas críticas como repositorios, infraestructura, dominios, bases de datos, backups y servicios externos utilizados por el sistema.

¿Qué pasa si no existe documentación?

Un nuevo equipo todavía puede analizar el sistema, aunque el proceso de transferencia normalmente será más lento y costoso.

¿Conviene que el hosting esté a nombre de la empresa?

En sistemas importantes es recomendable que la empresa mantenga control administrativo sobre la infraestructura y conceda permisos a sus proveedores.

¿Cómo reducir la dependencia sin cambiar de desarrollador?

Centralizando activos, documentando el sistema, verificando backups, garantizando acceso al repositorio y transfiriendo conocimiento a una segunda persona.

¿Qué es un punto único de falla en software?

Es un componente, servicio o persona cuya indisponibilidad puede impedir que el sistema continúe operando o siendo mantenido correctamente.

CONVERSEMOS

SOBRE TU

PROYECTO

Contacto