Trayectoria y formación
Ocho años sobre un mismo producto en producción: qué construí, en qué dominios y con qué forma de trabajar. El empleador va sin nombrar; lo que demuestra el trabajo es el alcance.
Experiencia profesional
Un solo producto durante ocho años da algo que saltar de proyecto en proyecto no da: ver las consecuencias de las decisiones propias años después.
Desarrollador Full Stack .NET
Casa de software de un ERP contable colombiano y su plataforma SaaS
2018 – actualidad
Ocho años construyendo y sosteniendo el ecosistema completo del producto: desde las aplicaciones de escritorio y los servicios heredados que siguen facturando todos los días, hasta las APIs nuevas con arquitectura limpia y la interfaz web moderna que las consume. Un perfil híbrido, porque el sistema real es híbrido.
Ecosistema cubierto de punta a punta: escritorio, servicios, APIs, portal web y aplicaciones móviles instalables
Rango tecnológico de más de quince años de plataforma, del framework heredado a la versión más reciente
Integraciones fiscales y regulatorias donde un error de esquema o de firma bloquea la operación de miles de empresas
Integración del trabajo de un equipo de más de ocho desarrolladores hacia la rama principal, de forma sostenida durante años
Modernización continua de código heredado sin romper a un solo cliente en producción
Diagnóstico de incidencias reales: concurrencia, consultas lentas, límites de carga y fugas de recursos
Dominios regulatorios
La parte menos común del perfil. Un framework se aprende en semanas; entender por qué la autoridad tributaria rechaza un documento toma años y solo se aprende en producción.
Facturación electrónica — Colombia
El ciclo completo ante la autoridad tributaria colombiana, desde el armado del documento hasta el acuse y el reproceso de lo que quedó a medias.
Estándar XML, identificadores únicos del documento y firma digital con certificado
Documento soporte, documentos equivalentes, notas crédito y débito, exportación y otra moneda
Retenciones, tributos especiales, sector transporte, sector salud y contratos por administración
Factura como título valor
El registro que convierte una factura electrónica en un título negociable, con todos sus eventos de circulación.
Los quince tipos de evento: acuse, aceptación expresa y tácita, reclamo y protesto
Aval, mandato y endoso en propiedad, en garantía o en procuración, con su cancelación
Inscripción del documento, informe de pago y pagos parciales
Nómina electrónica
Reporte del pago de nómina ante la autoridad tributaria, con su propio esquema y su propio ciclo de corrección.
Documento de nómina individual y su identificador único
Notas de ajuste y de reemplazo cuando el reporte ya enviado cambia
Habilitación de empresas, validación, envío y reproceso
Facturación electrónica — Perú
La misma necesidad en otro país, con otro esquema, otro protocolo de seguridad y otras reglas.
Comprobantes, guía de remisión y resumen diario
Consulta del estado del comprobante ante la autoridad
Seguridad de mensajes con credencial resumida, implementada a mano
Sector salud — facturación con soporte clínico
Radicación de facturas acompañadas del detalle de cada servicio prestado ante la plataforma del Ministerio de Salud.
Carga de facturas, notas de ajuste, capitación y acuerdos de voluntades
Recuperación del código único que acredita la validación
Gestión de observaciones y rechazos, con paquetes comprimidos de gran tamaño
Debida diligencia y prevención de lavado
Verificación automatizada de personas y empresas contra listas restrictivas nacionales e internacionales, con evidencia archivada.
Diez fuentes distintas consultadas de forma programada y desatendida
Generación del soporte documental de cada consulta y su archivo
Reintentos escalonados frente a fuentes que fallan o cambian sin aviso
Modernización de sistemas heredados
Tomar funcionalidad crítica que ya está en producción y reescribirla sin que ningún cliente se entere. Estos son los casos, con lo que cambió de verdad en cada uno.
Servicios de facturación electrónica sobre el framework heredado
API sobre .NET moderno conservando el diálogo SOAP
La autoridad tributaria siguió viendo exactamente el mismo contrato; por dentro llegaron inyección de dependencias, acceso a datos moderno y pruebas.
Debida diligencia acoplada a la aplicación web, con automatización frágil
Servicio independiente con un proceso en segundo plano
De una automatización que se rompía cada vez que una fuente cambiaba, a interfaces por fuente con reintentos escalonados y evidencia archivada.
Intranet sobre framework y modelo de datos de generación anterior
Aplicación sobre .NET moderno con acceso a datos actual
Modelo generado desde la base existente, un módulo piloto migrado y una tabla de equivalencias documentada para que el resto siguiera detrás.
Lógica de seguimiento de uso dentro del monolito
API propia con arquitectura limpia
Reescritura con capas separadas, errores devueltos como valor y cobertura de pruebas real, incluidas las de integración.
Instalador generado por una herramienta descontinuada
Asistente de instalación propio con pasos desacoplados
Cada paso de instalación pasó a ser una estrategia independiente, con verificación de prerrequisitos y pruebas unitarias.
El criterio, en todos los casos
No se rompen los contratos existentes. Se crea el endpoint nuevo, se documenta en qué se comporta distinto, y cada consumidor migra cuando puede. Una migración que obliga a todos a moverse el mismo día no es una migración: es una caída programada.
Formación académica
Ingeniería de sistemas, con la matrícula que habilita el ejercicio profesional en Colombia.
Ingeniero de Sistemas
Universidad Nacional Abierta y a Distancia (UNAD) · 2025
Título profesional con tarjeta profesional vigente, que habilita el ejercicio de la ingeniería en Colombia.
Metodologías de desarrollo
Nombrar una metodología es fácil. Debajo de cada una está la práctica concreta que la sostiene en el día a día de un sistema con clientes reales encima.
Scrum y desarrollo iterativo
Trabajo por sprints sobre Azure DevOps Boards, con backlog priorizado y entregas incrementales. El cliente ve avance funcionando cada pocas semanas, no un único entregable al final.
En la práctica
Backlog refinado y estimado antes de comprometer el sprint
Tableros y trazabilidad de historia a commit y a despliegue
Retrospectiva que cambia el proceso, no que solo lo comenta
Ramas por funcionalidad y revisión de código
Cada cambio vive en su propia rama acotada y entra a la rama principal por Pull Request revisado. Durante años he sido responsable de integrar a la rama principal el trabajo de un equipo de más de ocho desarrolladores.
En la práctica
Una rama por funcionalidad o corrección, trazable de principio a fin
Revisión de código como responsabilidad diaria, no como trámite
La rama principal siempre desplegable: nada entra roto
TDD y pruebas automatizadas
La prueba se escribe antes que el código en la funcionalidad nueva. Las pruebas cubren desde la unidad hasta la arquitectura, y se ejecutan contra infraestructura real, no contra simuladores que mienten.
En la práctica
Pruebas unitarias y de integración contra base de datos en contenedor
Pruebas de arquitectura que verifican las reglas entre capas
Pruebas de extremo a extremo en navegador y pruebas de carga
Integración y despliegue continuos
Cada cambio compila, se prueba y se despliega por una tubería automatizada. Un despliegue no depende de que alguien recuerde un paso manual a las once de la noche.
En la práctica
Tuberías por etapas: pruebas, construcción de imagen, migración, despliegue y verificación
Migraciones de base de datos aplicadas como paso de la tubería, no a mano
Verificación de salud posterior al despliegue antes de dar por buena la entrega
Estándares escritos en el repositorio
Las convenciones del equipo están codificadas en el repositorio, no en la memoria de quien lleva más tiempo. Un desarrollador nuevo lee las reglas y produce código consistente desde la primera semana.
En la práctica
Validación declarativa obligatoria y responsabilidad única por clase
Patrón Strategy en lugar de cadenas de condicionales que nadie quiere tocar
Configuración tipada que falla al arrancar si algo está mal, no en producción
Documentación técnica como entregable
El sistema se entrega documentado: decisiones de arquitectura, contratos de API y guías de migración. El proyecto no depende de que yo siga estando disponible.
En la práctica
Documento de arquitectura con modelo C4, actores y atributos de calidad
Referencia de API con catálogo de códigos de error de negocio
Guías de migración que describen las diferencias de comportamiento entre versiones
Certificaciones
9 cursos aprobados. Cada uno enlaza a su diploma público: se verifican sin pedirme nada.
Backend y .NET
4 cursos
Arquitectura y datos
2 cursos
Inteligencia artificial
2 cursos
Así se ve aplicado
Estas prácticas no son teoría: cada proyecto del portafolio explica la decisión técnica que lo sostiene y cómo se verificó.
Ver proyectos