Saltar al contenido

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.

Tarjeta profesional vigente

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

Curso de Fundamentos de .NET

Platzi

Ver diploma

Curso de Introducción a C# con .NET 3.1

Platzi

Ver diploma

Curso de Programación Orientada a Objetos con C#

Platzi

Ver diploma

Curso de APIs con .NET

Platzi

Ver diploma

Arquitectura y datos

2 cursos

Curso de Principios SOLID en C# y .NET

Platzi

Ver diploma

Curso de Fundamentos de Entity Framework

Platzi

Ver diploma

Frontend

1 curso

Curso Básico de JavaScript

Platzi

Ver diploma

Inteligencia artificial

2 cursos

Curso de Claude AI

Platzi

Ver diploma

Curso de Claude Code

Platzi

Ver diploma

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