Monday, August 24, 2026

La nueva arquitectura de la calidad de software: cinco cambios que ya deberían llegar al aula


La calidad contemporánea se construye como un sistema: código, dependencias, datos, automatización, gobierno y personas.

Arquitectura de TI · Ingeniería de software · Educación

La nueva arquitectura de la calidad de software: cinco cambios que ya deberían llegar al aula

Por Diego Iván Oliveros Acosta · 24 de agosto de 2026

Durante años enseñamos calidad de software como si fuera, principalmente, una propiedad del código: que funcione, que esté bien estructurado y que pueda probarse. Esa visión sigue siendo necesaria, pero ya no es suficiente. La calidad actual se decide también en las dependencias, la configuración, el pipeline de entrega, los datos, los modelos de inteligencia artificial, la gestión de incidentes y las responsabilidades organizacionales.

Desde la mirada de un arquitecto de tecnologías de la información y las comunicaciones, el cambio más importante no es una herramienta particular. Es el desplazamiento desde la calidad como actividad de verificación hacia la calidad como una capacidad transversal del sistema. Los siguientes desarrollos muestran por qué nuestros cursos de Calidad de Software, Construcción de Software y Sistemas de Información deben evolucionar en esa dirección.

Idea central
La calidad ya no puede demostrarse solamente con código correcto y pruebas aprobadas. También requiere evidencia sobre la procedencia del software, su comportamiento ante fallos, la seguridad del proceso de entrega y la capacidad institucional para responder a incidentes.

1. OWASP 2025 amplía la frontera de la calidad

La edición 2025 del OWASP Top 10 introduce un cambio conceptual relevante. Software Supply Chain Failures ocupa el tercer lugar y amplía el antiguo problema de los componentes vulnerables: ahora deben examinarse el ecosistema de dependencias, los sistemas de construcción y la infraestructura de distribución. Además, Mishandling of Exceptional Conditions entra como nueva categoría y la configuración incorrecta asciende al segundo lugar.

Esto significa que una aplicación no puede considerarse de calidad solo porque supera pruebas funcionales. También debe responder de forma segura cuando la base de datos no está disponible, un token es inválido, una dependencia ha sido comprometida o un servicio externo entrega una respuesta inesperada.

Cómo llevarlo al aula

En un taller de backend REST con JWT y MongoDB incorporaría tres evidencias obligatorias: un inventario o SBOM de dependencias; pruebas ante caída de base de datos, token inválido y servicio externo no disponible; y el registro con alerta de intentos reiterados de acceso no autorizado. Así, la seguridad deja de ser un capítulo final y se convierte en un criterio de aceptación.

2. NIST acerca el SSDF a pipelines DevSecOps observables

El 24 de marzo de 2026, el National Institute of Standards and Technology publicó unas directrices vivas para desarrollo seguro y DevSecOps. La iniciativa incluye un modelo de referencia y una primera implementación sobre Azure para demostrar cómo las prácticas del Secure Software Development Framework pueden materializarse en pipelines reales.

El valor pedagógico está en pasar de una lista de herramientas —repositorio, pruebas, análisis estático, integración y despliegue— a una arquitectura de trazabilidad: cada riesgo debe asociarse con un control, una etapa del pipeline y una evidencia verificable.

Riesgo Control Etapa Evidencia
Dependencia vulnerable Verificación de componentes Construcción Reporte SCA
Cambio defectuoso Pruebas automatizadas Integración Resultados de pruebas
Artefacto alterado Integridad del lanzamiento Despliegue Hash, firma o procedencia

3. Java 25 simplifica el comienzo, no la arquitectura

Java 25, disponible desde el 16 de septiembre de 2025, finalizó los archivos fuente compactos y los métodos main de instancia mediante la JEP 512. Esto reduce la carga sintáctica de los primeros programas y permite concentrarse inicialmente en variables, decisiones, ciclos y métodos.

Sin embargo, simplificar el punto de entrada no elimina la necesidad de enseñar clases, encapsulación, responsabilidades y diseño. Por el contrario, ofrece una oportunidad para mostrar la evolución de una solución: primero se resuelve el problema; después se organiza el código; finalmente se construye una arquitectura mantenible y comprobable.

Una secuencia didáctica posible

  1. Resolver el problema mediante un programa compacto de entrada, procesamiento y salida.
  2. Refactorizarlo hacia una clase de dominio y una clase responsable de la ejecución.
  3. Agregar encapsulación, validación, manejo de excepciones y pruebas unitarias.

En plataformas como VJudge conviene mantener la estructura tradicional public class Main, debido a las reglas del juez y del nombre del archivo. La actualización del lenguaje debe enriquecer la enseñanza sin sacrificar compatibilidad.

4. La inteligencia artificial acelera la producción, pero también puede acelerar la deuda

La investigación reciente invita a evitar dos extremos: presentar la IA como sustituto del conocimiento o prohibirla como si no formara parte del trabajo profesional. El informe DORA 2025 encontró una relación positiva con el rendimiento de entrega, pero también mayor inestabilidad cuando faltan pruebas automatizadas, retroalimentación rápida y plataformas internas de calidad. En marzo de 2026, DORA resumió el fenómeno como un efecto amplificador: la IA fortalece tanto las buenas prácticas como las debilidades existentes. Puede consultarse el análisis Moving from AI adoption to effective SDLC use.

Por otra parte, un experimento controlado de METR, publicado el 10 de julio de 2025, encontró que desarrolladores experimentados tardaron un 19 % más al utilizar herramientas de IA en sus propios repositorios. Una actualización de febrero de 2026 sugiere que el efecto está cambiando, pero conserva un margen importante de incertidumbre.

La conclusión para la universidad es clara: no debemos calificar únicamente el producto generado. Debemos evaluar la capacidad de formular, verificar, explicar y corregir. Una práctica pareada —una tarea sin IA y otra equivalente con IA— puede medir tiempo, defectos, cobertura, complejidad, mantenibilidad y dominio conceptual. El registro de prompts, sugerencias rechazadas y pruebas efectuadas debe formar parte de la evidencia.

5. La gestión de vulnerabilidades se convierte en una capacidad del sistema de información

Desde el 11 de septiembre de 2026, la Cyber Resilience Act exige a los fabricantes de productos con elementos digitales reportar vulnerabilidades activamente explotadas e incidentes graves. La Comisión Europea establece una alerta inicial dentro de las primeras 24 horas y una notificación completa dentro de las 72 horas, además del informe final correspondiente.

Aunque la norma sea europea, su importancia académica es global. Un sistema de información debe permitir identificar responsables, conservar evidencias, escalar decisiones, cumplir tiempos y coordinar áreas técnicas, jurídicas y directivas. La ciberseguridad deja de ser una característica aislada y se convierte en un proceso organizacional soportado por información confiable.

Como caso de estudio propondría una vulnerabilidad explotada en un sistema de matrículas. Los estudiantes deberían construir el diagrama BPMN de respuesta, la matriz RACI, el registro cronológico de evidencias, las alertas de 24 y 72 horas y un informe ejecutivo con el impacto y la medida correctiva.

Un frente emergente: seguridad de aplicaciones con IA generativa

El 3 de agosto de 2026, OWASP publicó el Top 10 for LLM Applications 2026, actualizado con nuevas clasificaciones, escenarios de ataque y mitigaciones, y relacionado con marcos como NIST, MITRE ATLAS y la seguridad de aplicaciones agénticas.

Este marco todavía no reemplaza los fundamentos de la calidad tradicional, pero sí justifica un ejercicio de modelado de amenazas sobre un asistente conectado a información académica. El estudiante debe analizar inyección indirecta de instrucciones, exposición de información, permisos excesivos y validación humana de las acciones propuestas por el modelo.

Prioridad recomendada para el próximo curso

Actualizar primero el taller de backend para incluir manejo de condiciones excepcionales, inventario de dependencias y evidencias automáticas del pipeline. Es una intervención alcanzable que conecta OWASP 2025, NIST SSDF, DevSecOps y las nuevas responsabilidades regulatorias.

Conclusión

Formar ingenieros de software hoy implica enseñarles a pensar más allá del programa que compila. Deben comprender el sistema sociotécnico completo: quién construye, de dónde provienen los componentes, qué controles se ejecutan, cómo se responde al fallo, quién toma decisiones y qué evidencia permite confiar en el resultado.

En otras palabras, la calidad no se agrega al final. Se diseña desde la arquitectura, se automatiza en el proceso, se demuestra con evidencia y se sostiene mediante gobierno. Esa es, precisamente, la perspectiva que debe llegar al aula.


Referencias

  1. DORA. (2026, 10 de marzo). Balancing AI tensions: Moving from AI adoption to effective SDLC use. https://dora.dev/insights/balancing-ai-tensions/
  2. European Commission. (2026, 31 de julio). Cyber Resilience Act: Reporting obligations. https://digital-strategy.ec.europa.eu/en/policies/cra-reporting
  3. METR. (2025, 10 de julio). Measuring the impact of early-2025 AI on experienced open-source developer productivity. https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/
  4. METR. (2026, 24 de febrero). We are changing our developer productivity experiment design. https://metr.org/blog/2026-02-24-uplift-update/
  5. National Institute of Standards and Technology. (2026, 24 de marzo). New live guidelines for secure software development, security, and operations practices. https://www.nist.gov/news-events/news/2026/03/new-live-guidelines-secure-software-development-security-and-operations
  6. OpenJDK. (2025). JDK 25. https://openjdk.org/projects/jdk/25/
  7. OpenJDK. (2025). JEP 512: Compact source files and instance main methods. https://openjdk.org/jeps/512
  8. OWASP Foundation. (2025). OWASP Top 10:2025. https://owasp.org/Top10/2025/0x00_2025-Introduction/
  9. OWASP GenAI Security Project. (2026, 3 de agosto). OWASP GenAI LLM Top 10 2026. https://genai.owasp.org/resource/owasp-genai-llm-top-10-2026/
Sobre el autor

Diego Iván Oliveros Acosta es arquitecto de tecnologías de la información y las comunicaciones, ingeniero de software y docente universitario. Su trabajo integra arquitectura empresarial, construcción de software, calidad, sistemas de información y formación de nuevas generaciones de ingenieros.

Temas: #Arquitectura de TI, #Calidad de software, #DevSecOps, #Inteligencia artificial, #Sistemas de información, #Educación en ingeniería, #OWASP, #Java 25.

Friday, May 30, 2025

La inteligencia artificial ya nos alcanzó: No es una incapacidad, es una decisión

La inteligencia artificial ya nos alcanzó: No es una incapacidad, es una decisión



“La IA no espera a nadie. No es una revolución industrial. Es una singularidad con rostro humano.”

La inteligencia artificial generativa es, en esencia, una herramienta: un sistema capaz de producir contenido nuevo a partir de patrones aprendidos [1]. Sin embargo, la IA creativa no es una categoría técnica, sino una decisión humana: representa el propósito, la intención y el contexto con los que se utiliza esa herramienta [2].

Una IA generativa se vuelve creativa cuando sus resultados son originales, útiles y significativos dentro de un contexto determinado. Y esas cualidades —lejos de ser mágicas o inalcanzables— pueden ser parametrizadas mediante la incorporación de valores humanos, marcos culturales o métricas éticas [8].

Del mismo modo que un ser humano es configurado por su casa, su escuela o sus relaciones, la IA puede ser “educada” para ser más empática, resiliente o innovadora, según los límites y objetivos que definamos [10].

Solemos decir que el ser humano es demasiado complejo para ser replicado. Pero esa complejidad, aunque vasta, no es sinónimo de irrepetibilidad [6]. No implica que nuestras capacidades no puedan ser eventualmente simuladas, modeladas o incluso superadas.

Con la combinación adecuada de aleatoriedad (randomización), parámetros de frontera bien definidos y acceso a suficientes datos, los modelos de IA ya logran comportamientos que antes se pensaban exclusivos del juicio humano. El ego humano a menudo rechaza esta idea, pero los avances son contundentes: la complejidad no es un límite absoluto, sino un conjunto de condiciones que pueden analizarse, optimizarse y, en muchos casos, replicarse [10].

El problema no es que la IA no esté lista. El problema es que nosotros no lo estamos.

Las verdaderas barreras no están en la capacidad de la tecnología, sino en la velocidad con la que las personas logran adoptarla, adaptarse y decidir cómo convivir con ella [5].

No estamos ante una transformación comparable con la Revolución Industrial, que fue gradual, mecánica y muscular. Lo que estamos viviendo es más bien una disrupción cognitiva comparable a la bomba atómica: irreversible, radical y con consecuencias morales y existenciales que aún no alcanzamos a dimensionar [3], [7].

En 2023, los modelos de IA no lograban resolver problemas complejos de maratones de programación. Hoy, en 2025, ya alcanzan tasas de éxito cercanas al 70% en competencias avanzadas como Codeforces o ICPC virtuales [9].

En ese mismo tiempo, pasaron de igualar apenas el rendimiento de estudiantes de posgrado a superar el desempeño de doctorados en tareas como redacción científica, diagnóstico clínico y síntesis legal [11].

El avance ya no es exponencial: es explosivo. Su ritmo desborda los marcos educativos, laborales y legislativos [12], [4].

Nos queda decidir. Porque este no es un escenario de incapacidad humana, sino de elección. Podemos elegir no adaptar nuestros sistemas, no actualizar nuestras políticas, no formar a nuestros docentes, no replantear nuestras metodologías. Pero cada omisión tiene un costo: quedarse fuera de un mundo que ya cambió.

“No seremos reemplazados por la IA, sino por quienes aprendan a usarla con inteligencia, creatividad y ética.”

Comparte esta reflexión si crees que la educación, la ciencia y la sociedad no pueden seguir actuando como si nada estuviera ocurriendo.


Referencias

[1] I. Goodfellow, Y. Bengio, and A. Courville, Deep Learning. MIT Press, 2016.

[2] M. A. Boden, “Creativity and artificial intelligence,” Artificial Intelligence, vol. 103, no. 1–2, pp. 347–356, 2009.

[3] E. Brynjolfsson and A. McAfee, The Second Machine Age: Work, Progress, and Prosperity in a Time of Brilliant Technologies. W.W. Norton & Company, 2014.

[4] Y. N. Harari, 21 Lessons for the 21st Century. Spiegel & Grau, 2018.

[5] E. M. Rogers, Diffusion of Innovations, 5th ed. Free Press, 2003.

[6] M. Hutter, Universal Artificial Intelligence: Sequential Decisions Based on Algorithmic Probability. Springer, 2005.

[7] N. Bostrom, Superintelligence: Paths, Dangers, Strategies. Oxford University Press, 2014.

[8] A. Jobin, M. Ienca, and E. Vayena, “The global landscape of AI ethics guidelines,” Nature Machine Intelligence, vol. 1, no. 9, pp. 389–399, 2019.

[9] DeepMind, “AlphaCode: Using AI to solve competitive programming problems,” 2023. [Online]. Available: https://www.deepmind.com/research/highlighted-research/alphacode

[10] S. Russell and P. Norvig, Artificial Intelligence: A Modern Approach, 4th ed. Pearson, 2020.

[11] OpenAI, “GPT-4 technical report,” 2023. [Online]. Available: https://arxiv.org/abs/2303.08774

[12] McKinsey Global Institute, “The state of AI adoption in 2023: Accelerating transformation,” 2023.


Saturday, June 8, 2024

Diego Ivan Oliveros Acosta: Innovación en Ciencia y Tecnología

 Diego Ivan Oliveros Acosta: Innovación en Ciencia y Tecnología



Diego Iván Oliveros Acosta, reconocido por Minciencias como Investigador Junior, es un investigador y docente colombiano cuya pasión por la ciencia y la tecnología ha dejado una huella significativa en diversas áreas. Con una formación académica sólida en Ingeniería Electrónica, Ingeniería de Sistemas y Arquitecturas de Tecnologías de Información, así como una Maestría en Arquitecturas de Tecnologías de Información de la Universidad de los Andes y una Especialización en Herramientas Virtuales para la Educación del Politécnico Grancolombiano, Oliveros Acosta ha demostrado su compromiso con el avance del conocimiento y la innovación tecnológica.

Trayectoria Académica y Profesional:

Diego Ivan Oliveros Acosta ha ejercido como docente en diversas universidades, destacándose como coordinador de la línea de Ingeniería de Software en el Politécnico Grancolombiano. Su experiencia como investigador incluye trabajos en el Instituto de Investigación de Recursos Biológicos Alexander von Humboldt y la Facultad de Ingeniería de la Universidad de Antioquia, donde ha dirigido múltiples trabajos de grado relacionados con sistemas de información y metodologías de desarrollo de software.

Contribuciones Destacadas:

  1. Consultoría en Arquitectura de TI y Desarrollo de Software:

    • Diseño del Sistema Nacional de Análisis de Riesgo de Extinción de Fauna y Flora de Colombia.
    • Fortalecimiento de la gestión de Tecnologías de la Información en el Estado colombiano y estrategia de Gobierno en Línea.
  2. Investigación y Desarrollo (I+D+I):

    • Servicios de consultoría en proyectos de Investigación, Desarrollo e Innovación (I+D+I), incluyendo el proyecto ASCON 20-513.
  3. Participación en Eventos Académicos y Científicos:

    • Organizador, ponente y asistente en eventos como el III Seminario de Ingeniería Electrónica y conferencias internacionales.
  4. Publicaciones Científicas:

    • Contribuciones en revistas especializadas abordando áreas como la dinámica cardíaca y la evaluación de sistemas cardíacos.
  5. Desarrollo de Software y Multimedia:

    • Creación de softwares para diagnóstico físico-matemático de la dinámica cardíaca y videojuegos educativos.
    • Generación de contenido multimedia para la educación en ingeniería de software.
  6. Estrategias Pedagógicas para CTI:

    • Involucrado en proyectos de aula y desarrollo de contenidos virtuales para fomentar la ciencia, tecnología e innovación en la educación.
  7. Desarrollos Web y Otros Trabajos:

    • Participación en la creación de sitios web y repositorios relacionados con la ingeniería de software y otros campos tecnológicos.
    • Desarrollo de softwares para automatización, análisis pulsioximétrico, entre otros.

Conclusión:

Diego Ivan Oliveros Acosta destaca como un referente en consultoría científico-tecnológica, desarrollo de software, investigación y divulgación científica. Su amplia experiencia y conocimientos lo convierten en un recurso invaluable para proyectos de innovación y desarrollo tecnológico en Colombia y más allá.

Monday, July 24, 2023

¿Estás preparado para las superaplicaciónes? (SuperApps)

 ¿Estás preparado para las superaplicaciónes? (SuperApps)

En la era de la digitalización y la movilidad, las SuperApps se han convertido en una tendencia cada vez más influyente en el mundo de las aplicaciones móviles. Estas plataformas multifuncionales reúnen una amplia gama de servicios y funcionalidades en un solo sistema, lo que cambia la forma en que interactuamos con la tecnología y cómo llevamos a cabo nuestras tareas diarias. En esta charla, expongo el fenómeno de las SuperApps, sus características clave, su impacto en la vida cotidiana y las oportunidades y desafíos que presentan para los usuarios y las empresas.

Algunas características comunes de las superapps pueden incluir:

Integración de servicios: Las super apps combinan diferentes servicios y características en una sola plataforma. Por ejemplo, pueden ofrecer servicios de mensajería, redes sociales, compras en línea, servicios de pago, transporte, reservas de viajes, entre otros.

Amplio alcance: Estas aplicaciones a menudo tienen una base de usuarios masiva y una amplia presencia geográfica.

Plataforma de pago: Las super apps suelen incluir una billetera digital que permite a los usuarios realizar pagos dentro de la aplicación para diversos servicios, como compras en línea, pedidos de comida, etc.

Personalización: Estas aplicaciones intentan adaptarse a los intereses y necesidades individuales de los usuarios, brindando recomendaciones y experiencias personalizadas.

Ecosistema de terceros: Algunas super apps también ofrecen una plataforma abierta para que desarrolladores externos creen aplicaciones y servicios que se integren con la plataforma principal.

Ejemplos clásicos de superapps:
  • Proveedores de plataforma como servicio (PaaS) que ofrecen una solución de plataforma en la nube
  • Marcos front-end que permiten la implementación de miniaplicaciones en aplicaciones web y móviles
  • Plataformas de desarrollo multiexperiencia (MX)
  • Plataformas de aplicaciones de código bajo (LCAP)
  • Proveedores de servicios de desarrollo
Construir una SuperApp exitosa es un proceso iterativo y requerirá conocimiento técnico, esfuerzo, tiempo y dedicación. Es importante estar dispuesto a adaptarse a medida que la industria y las necesidades de los usuarios evolucionen pero sobretodo entender el negocio.

S.M Diego Iván Oliveros Acosta
CEO, Scalapp @scalapp.co

Software and Systems Engineering Professor 
Enterprise Architect | IT Project Manager and developer

Si quieres saber más de esta y otras tecnologías no te pierdas de nuestros cursos y capacitaciones.

Síguenos en las redes sociales para estar al tanto de nuestras publicaciones y de las nuevas tecnologías:

Visita www.scalapp.co, escribe al correo ventas@scalapp.co

Monday, February 1, 2021

¿Aún no sabes que estudiar? ¡6 Tips! - Consejos para escoger tu carrera.

 ¿Aún no sabes que estudiar?

 ¡6 Tips! - Consejos para escoger tu carrera.

 Muchas veces es difícil escoger cuál va a ser nuestra profesión, en qué vamos a utilizar quizás el resto de nuestras vidas, ya sea como empresarios o como profesionales, y exactamente en qué sector o sectores lo vamos a hacer, por eso, si tú aún no sabes que estudiar, acá te dejo algunas experiencias o consejos:


¡Primero búscalo muy bien! Nada es peor que estudiar algo que NO te gusta o no llena tus expectativas, saber que no dedicaste el tiempo suficiente, pues lo merece tan importante decisión. Es mejor hacer de tu elección un juego; traer todos esos sentimientos a tu cotidianidad. Cubrir los días con lo que nos apasiona siempre nos hace sentir como si NO estuviéramos trabajando…  por eso busca algo por lo cual no necesitarías que te pagaran, porque si así fuera lo harías con gusto, incluso pagarías por estar allí. Piénsalo muy bien pues al menos así lo harás al principio: pagarás una matrícula y pensión durante varios semestres de tu carrera y además tendrás que dedicar algunos de los años más valiosos de tu juventud a desarrollar parte de las competencias que la profesión requiera. Después vendrán otras inversiones. 

El asunto puede ser aún más complejo; uno puede buscar demasiado, pero la experiencia transforma tu forma de ver las cosas o las afirma (no logras tu propósito inicial). Ten presente que lo único constante es el cambio y esa afirmación tiembla cuando un terco lleva a cabo su capricho (si lo quieres, lo logras). También es cierto que al principio muchas carreras te pueden llamar la atención, escoger una y con el tiempo descubrir que eso no es lo que llenaba tu corazón o que hay cosas que lo hacen mejor. Por eso, cierra las puertas, quédate solo un buen tiempo, no escuches a nadie y escaba muy muy profundo en tu corazón, en tus principios, en tu esencia, con lo que vibras (tomate un buen tiempo a solas). 

Después de la asesoría vocacional, sistemas:

Pero si luego de mucha búsqueda no sabes por dónde arrancar y ya agotaste la opción de la asesoría vocacional, una buena opción es; empezar con la programación o los sistemas, de seguro, después podrás combinarlo con tu pasión o desarrollaras capacidades TI que serán muy valiosas y útiles para esa profesión (cualquiera que sea) que en este momento no visualizas.  Como ingenieros de sistemas, hoy en día tenemos oportunidades, campos de acción, en todo el tipo de sector.

Revisa las ventajas y desventajas: 

Hasta hace poco, nadie había tenido bajo su control un ejército tan económico y obediente como lo son los computadores; gracias a las máquinas hoy en día es posible la omnipresencia; A través de la automatización, la inteligencia artificial, la robótica, las telecomunicaciones, hoy podemos ayudar a millones de personas de una forma rápida y económica a través de un computador que administra y despliega ordenadamente todo tipo de sistemas.

Aprovecha el bajo costo:

Cuando estudié ingeniería electrónica (2005), para desarrollar nuestras ideas, proyectos o prototipos teníamos que invertir mucho dinero en dispositivos electrónicos y si hacíamos una mala configuración todo ese capital se convertía en un corto circuito, luego fuego y por último cenizas. En el caso de ingeniería de sistemas fue distinto; con solo un computador podíamos hacer todas las pruebas, montar bases de datos, sistemas de administración y gestión de información. Cometer errores sin temor a perder un solo peso...

Hoy, siempre y cuando para realizar los proyectos y usar tecnología, no tengas una cuenta postpago o empeñada tu tarjeta de crédito con servicios en la nube, las cosas están aún más fácil. Mientras estas aprendiendo, realizando prototipos o realizando sistemas para pequeñas compañías (200 a 2000 mil empleados) realmente puedes hacer maravillas con un computador personal.

En la actualidad tenemos; computadoras frente a nuestros ojos, en nuestras manos y bolsillos celulares con más memoria y más procesador que el computador responsable de las misiones del primer transbordador que llevó el hombre a la Luna. Ese es el computador Apollo Guiding Computer (AGC), tenía 2048 palabras de memoria RAM y 36.864 de memoria ROM. La longitud de las palabras era de 16 bits y un procesador de 1 MHz. Hoy tenemos celulares de 8 núcleos a con una velocidad 2000 veces mayor (2Ghz) y memoria interna: 64 GB / 4 GB y lo mejor solo cuesta 140 dólares.

¡Cuidado! "la complejidad siempre está en los detalles" D.O:

Ahora bien, si hablamos de las “grandes ligas” del desarrollo de software, tenemos que programar sistemas de altas prestaciones que conjugan todo tipo de tecnologías y servicios en la nube, solo en ese caso, (en poco tiempo) sí puedes perder una fortuna: Si tienes una instancia corriendo en Amazon o Google Cloud, un servicio Big Data que conecta tu aplicación con mensajes que se traducen en llamadas telefónicas o servicios de rastreo con algún operador, mensajes con notificación al celular, sistemas con los cuales haces una mala configuración; puedes estar perdiendo fácilmente el saldo de tu tarjeta o peor aún quedar empeñado de por vida.

Este poder implica una gran responsabilidad:

Por fortuna, hay algunos seguros que puedes implementar en la configuración y además en línea tienes servidores gratuitos por montón que hacen algunas de esas maravillas. Al final del día, lo más interesante es que con un computador e internet en casa, tienes una ventana a miles de oportunidades, incluso a un computador cuántico si así lo quieres, pero quizás lo más importante de todo es que, “tener ese poder en las manos implica una gran responsabilidad”: Pero esa es otra historia, merece más detalle así que eso lo veremos a profundidad en el próximo post.

Tuesday, January 19, 2021

Algunas ventajas de ser un programador

Algunas ventajas de ser un programador

 En el blog anterior escribí acerca de los retos que tiene un programador (ver aquí), es tiempo de contarles acerca de las ventajas de ser un programador “no todos son desafíos, aunque muchos disfrutamos de ellos” … Trataré de resaltar lo que considero los motivadores, las ventajas y competencias relevantes que existen en el mundo de la programación o en el ecosistema TI. Y no haré referencia a los salarios o puestos de trabajo porque de eso abundan blogs o noticias (mayormente por parte de quienes se encargan del mercadeo en las instituciones o entidades educativas) creo que de esto han hablado bastante y en ocasiones más de la cuenta.



Quiero resaltar algunas de las cosas que considero mucho más importantes y trascendentales; Existen muchas ventajas de ser programador y desarrollarlas debe ser el reto de las Universidades. Esas promesas de valor están todo el tiempo en mi mente, en mi rol de docente, constantemente me pregunto: ¿Cómo desarrollar integralmente las capacidades necesarias dentro de cada nivel académico y en todo el ecosistema TI?

NO sólo es importante desarrollar habilidades en el uso de herramientas, claramente eso es efímero, (se pierde o cambia con el tiempo) lo realmente trascendental es cultivar valores; ayudar a reconocer y lograr conciencia del entorno que transformamos; respetar no solo lo que es importante para nosotros como humanos, si no para todos los seres y nuestro ambiente.

Juego y desarrollo profesional:

Hay varias competencias y habilidades blandas que están ligadas al crecimiento humano y que deben ser desarrolladas ampliamente junto con las duras. Entre ellas quiero resaltar algunas que considero necesarias (ventajas y herramientas) no solo para la profesión si no para la vida.

Estas son; la visión holística; las capacidades de abstracción y fragmentación; el relacionamiento rápido y preciso de elementos; la comprensión de múltiples sistemas; el rehuso y la modularidad; el desarrollo a través del uso y entendimiento de patrones. Este último nos enseña que la mayoría de las cosas que en principio son muy complejas, se vuelven extremadamente fáciles.

“hay que hacerlo bien una sola vez y luego será un juego de lego” D.O.

Es muy fácil construir sobre lo construido y reutilizar las soluciones previas. Siempre que se tenga un buen diseño, una correcta arquitectura, programar o refactorizar, será muy fácil. Tanto así, como “divertirse creando lo que nuestra imaginación dicte, con fichas de Lego”.



Recompensa constante:

Siento quedarme corto con la descripción que voy a intentar dar, para describir la sensación al terminar de programar; en ocasiones es algo insuperable, les aseguro que “aunque suene extraño”, hay un éxtasis al lograr que un algoritmo compile… ¡Es indescriptible! es una sensación que, en algunos casos es inmejorable. Solo quien ha programado puede saber bien a lo que me refiero… Es algo así como la satisfacción del deber cumplido, una recompensa por todo el tiempo detrás del computador. Similar a lo que hoy en día “para un centenial o milenial o quizás vijenial” significan un montón de «like».

Tiempo libre:

Dependiendo del tipo de trabajo; es posible que no todo en la vida del programador sea estar frente a un computador. Construir software, distinto a lo que muchos creen, no es lo mismo que construir puentes; no es una tarea operativa. Programar requiere tiempo de ideación. Y en ese sentido, en algunos trabajos hay tiempos “muertos” para la codificación; momentos que son necesarios para la inspiración, el análisis y el diseño de las soluciones y estructuras de software. En definitiva, esos tiempos son los que nos alejan de la pantalla del computador y hace un poco más amable la profesión, si no es así, piensa bien lo que estás haciendo con tu salud.                



Trabajo en equipo:

Los proyectos de ingeniería demandan el trabajo en equipo, armonioso y bajo valores. Por más talento y tiempo que se tenga, es muy difícil que los avances en tecnología y los desarrollos de proyecto se realicen por una sola persona o en detrimento de otra. Bajo el principio de que nadie parte de cero; nadie puede hacer algo por sí solo (la ingeniería es un constructo social).

El trabajo en equipo, multidisciplinar y transdisciplinar, es una de nuestras necesidades y ventajas, hay roles que dependen más de la interacción que otros, pero en general es así. Por ejemplo nosotros los arquitectos tenemos como reto servir de puente o de traductor de roles, en ocasiones para los casos más complejos, servir de “Magos” para darle armonía al sistema, para hacer interactuar de manera adecuada a cada parte.

Economía estable:

Sin hablar de salarios o puestos; la economía es estable debido a las diversas oportunidades para la creación, el emprendimiento y solución de problemas. A nivel mundial se reconoce a la economía creativa y digital como una de las más prometedoras. La tecnología es el elemento con el cual se potencia el desarrollo de cualquier sistema, es por esto por lo que cada vez la tecnología es más importante, día a día está más permeada en todo lo que hacemos, y no será difícil ver que (con el tiempo) la tecnología no solo hará parte fundamental de nosotros, sino que seremos tecnología.


Constante Ideación:

La lógica que admiramos o en ocasiones amamos en la matemática, se presenta de manera similar en la programación; nos ayuda a tener ese pensamiento sistémico; nos guía en la producción de flujos de procesos ordenados; básicamente, es ese el generador de ideas porque permite la explosión continua de innovación.

Cualquiera diría que detrás de un pensamiento tan estructurado o metódico, no puede haber nada nuevo, que todo es repetitivo. Sin embargo, con seguridad podemos decir que nadie hubiese podido pensar el celular tal y como lo conocemos (con todas las características que hoy en día como humanidad hemos logrado) y ese desarrollo se debe precisamente a que las actividades están acompañadas de un pensamiento sistémico, ordenado, metódico; claramente se requiere una chispa de creatividad, pero el método es fundamental para hacerla andar, para mantenerla constante.

Pensamiento crítico, social y político:

Una última en este blog (y no menos importante) es la posibilidad de hacer transitividad de todos esos procesos, habilidades y capacidades para analizar los comportamientos y dinámicas (políticos y sociales). El pensamiento crítico y analítico, está de la mano en todos los proyectos de ingeniería, los proyectos que realmente valen la pena son aquellos en los que se tienen en cuenta, no solo los aspectos técnicos si no relacionados (los económicos, sociales, políticos, medio ambientales, etcétera).

Ese desarrollo de las competencias para la interacción con estas otras disciplinas son así una ventaja y, además, como lo veremos en un próximo blog; un reto y una responsabilidad. Estos aspectos con seguridad son ampliamente desarrollados a través de otras las profesiones, pero están íntimamente relacionados y son necesarios en nuestra profesión.

ver más: 

Entender la importancia y retos de la programación #CreadoresTI #Fedesoft #LaClaveEsElSoftware


Wednesday, January 13, 2021

Los retos a los que se enfrenta el programador del siglo XXI


En el post anterior...

    tienen; tanto el trabajo en casa, como el teletrabajo. No es nada fácil permanecer incontables horas frente al computador: Muchos han experimentado insomnio, ansiedad, incomodidad, estrés y no solo es por el virus, no es tarea fácil lograr la armonía de 3 espacios en uno solo.Conciliar casa, diversión y trabajo en un solo lugar requiere métodoseparar las actividades y hacer que no se traslapen, necesita mucha disciplina y conciencia. De todas formas, este panorama no es solamente de los programadores, hoy todos estamos frente a un computador sin importar la profesión.  Ver más 

¿Cuáles son los RETOS para el programador en la cuarta revolución industrial?

Los retos para el mundo de la programación en este blog son 5:

1.       Primer reto, “Debemos construir hábitos”:

Para que este arte, trabajo o profesión no afecte nuestra salud a corto y largo plazo; o como se diría coloquialmente: “no nos cobre factura”; es necesario construir hábitos que garanticen la salud mental y física en el trabajo; hábitos para que nuestra pasión no se convierta en un enemigo silencioso en contra de la vida.

Al final, todas las profesiones (hoy en día son pocas las que faltan) durante varias horas al día tendrán que estar interactuando con un computador o programando. Es por esto por lo que cada uno de nosotros va a estar experimentando todos los impactos derivados del sedentarismo y las desventajas de estar conectados todo el tiempo a una máquina; Estas consecuencias son tanto físicas como psicológicas (Túnel del carpo, dolor de cabeza, pérdida de la vista, dolor de rodillas, lumbagos o dolores de espalda, estrés, ansiedad, depresión). Esto es un asunto que ya pasaba en algunas empresas pero que se ha evidenciado mayormente con la pandemia (covid-19).

Por eso, debemos hacer frecuentemente la pregunta de reflexión de Yuval Noah Harari:

 -¿Cómo se aporta alegría a un ingeniero aburrido, con un salario excesivo y sobrepeso? 

 Quizás la respuesta está en las poco cumplidas pausas activas o en entender que no somos máquinas sino personas.

2.       El segundo reto, “Cambiar petróleo por software”:

Este reto llama la atención sobre todo para Latinoamérica y en especial para países dependientes de la producción petrolera:

Está dividido básicamente en 2 aspectos; lo primero es cambiar la configuración de las fuentes que generan el mayor producto interno bruto y lo segundo (que está conectado) es, permear de manera inteligente todos los sectores productivos.

No basta con cambiar los porcentajes de participación en cada uno de los sectores, es necesario crear nuevos y hacer más productivos los actuales. Un nuevo sector que además de declarar su existencia (nominarlo) este sector debe atender exclusivamente los procesos de Ingeniería o desarrollo de software (que es distinto a sistemas o TI).

Permear no significa que un ingeniero tenga que saber de todos los sectores de la economía, permear la economía de manera inteligente no es hacer de todo para no morir de hambre, no es servir de maquila a proveedores, quienes exigen todo tipo de soluciones y finalmente vender talento a bajo costo.

Permear la economía de manera inteligente es desarrollar productos especializados que generen valor agregado a cada sector y contar con personal calificado para cada uno de ellos. En otras palabras, es importante que fortalezcamos las capacidades del personal TI, que nos podamos especializar en sectores específicos de la economía y que en cada uno de estos sectores, se entienda la demanda tecnológica y el potencial que tiene para el apoyo a sus productos y servicios.

Hay que preguntarnos si hay más satisfacción al recibir dólares o hay algún encanto en la transformación progresiva y mejora de todos nuestros sistemas productivos.

Tomar una decisión y actuar en consecuencia es necesario para el sector del desarrollo de software; saber si nos la jugamos por incrementar el producto interno bruto a partir de la dotación de capacidades tecnológicas en cada sector o seguimos haciendo parte de los procesos de desarrollo de software de terceros.

3.       El tercer reto: De ser mano de obra a exportador.

La empresa o el sector software en colombiana debe pasar de ser productor de mano de obra a prestador de servicios automatizados, de exportador de sistemas software a exportador de ecosistemas de software.

Para esto se necesita revolucionar, acelerar la Industria del desarrollo de software; desarrollar ecosistemas requiere más que muchos codificadores, programadores, excelentes programadores. Para que eso sea posible deben existir oportunidades más qué actitudes, en especial para los que demuestran talento para desarrollar.

Es importante cultivar en los programadores capacidades innovadoras más que habilidades, estas últimas, al final se traducen en maquilas de terceros. Con este reto solventado, ese perfil desarrollado los salarios buenos no sólo estarán afuera, sino que harán parte de nuestros ecosistemas de desarrollo.

4.       El cuarto reto: Cambiar Jardines por ecosistemas:

Programar no es crear jardines es crear ecosistemas; programar es mucho más que crear una rutina de instrucciones o formularios, aunque el desarrollo de estos jardines también requiere algunas habilidades, estudios y mantenimiento constante. Su complejidad es menor y automatizable, si seguimos pensando en desarrollar aplicaciones vamos a desaparecer, pues esto pronto estará en manos de robots y si miramos más cerca esto ya está en manos de robots.


Programar será desarrollar ecosistemas y desarrollar un ecosistema no es posible sin el desarrollo de valores en la comunidad que lo soporta, valores como el amor, la humildad, la armonía, la sustentabilidad y a sostenibilidad reflejadas en la Paz sacrificio. Programar se convierte además de hacer código en generar el clima para poder exportar software; debemos ser sólidos en nuestro país, en nuestra región, esto es respetar, apoyar y confiar en las empresas locales.

Es importante desarrollar jardines (pequeños aplicativos) pero es fundamental tener empatía y amor propio para consolidar ecosistemas de desarrollo (respetar, apoyar y hacer parte los emprendimientos emergentes).

Necesitamos talento y oportunidades reales para los programadores locales; es necesario afinar las exigencias que las empresas hacen a los programadores, las convocatorias deben exigir capacidades que realmente demanden cada uno de los sectores. Colombia tiene gente muy capacitada pero no bien aprovechada; tenemos un sin número de gente con pregrados, posgrados, especializaciones, maestrías, diplomados, certificaciones (1, 2, 3, …n) y podría seguir la cuenta.

La demanda de talento TI debe ser diversificada y apropiada a las necesidades que tiene cada sector y los distintos roles (se necesitan gerentes de proyecto, programadores, líderes de dearrollo, tester, analistas, arquitectos e ingenieros de sistemas) La demanda no debe ser solo por Codificadores.

Más formalidad empresarial: las empresas y corporaciones deben ver a TI como un aliado y no como un gasto, las empresas deben entender que un buen consultor TI, no es un gasto sino un potencializador de las capacidades de la organización. necesitamos entender las bondades de la forma se valorará más el rol o los distintos roles de un ingeniero de sistemas visualizar oportunidades y luego Cerrar todas las brechas de ecosistemas como también tecnológicos como de competencia.

1.       El Quinto reto: Hay que llegar a tiempo

Hay que llegar a tiempo o NO habrá valido la pena: “no importa si llegamos, si lo hacemos tarde”.

Este último reto tiene como referente la actual pandemia, a pesar de algunos esfuerzos que se han realizado para implementar soluciones tecnológicas, la capacidad de despliegue sigue siendo lenta. No contamos con suficiente infraestructura local, hay demasiada importación, dependencia de tecnología y además de eso, hace falta articulación entre ciencia, tecnología, academia y política.

Para el despliegue oportuno de sistemas, que suplan las necesidades vitales, para tener diligencia y transparencia en los datos, en las licitaciones… hace falta capacidad y un aprovechamiento adecuado de TI. Solo bajo un uso adecuado de la tecnología, del software, podremos cumplir las demandas de todos los sectores productivos del país y por consiguiente mejorar la calidad de vida de los colombianos.

En Colombia hay muchas ideas innovadoras, pero se quedan en ideas si no se ejecutan a tiempo, el software bien usado hace eficiente la academia, el gobierno, el estado y las empresas.

Ver màs; https://www.youtube.com/watch?v=bSgGAnDReQg