Curva de aprendizaje para nuevos algoritmos

Quizá cuando fuiste un novato en el mundo de la programación, todo te pareció nuevo, te sorprendiste al ver un texto personalizado en una caja de texto o mensaje de formulario, y descubriste la respuesta a ¿Cómo se harán los sistemas?. Pero conforme avanzas y acumulas experiencia, te vas dando cuenta que existen más paradigmas de programación y no todo lo que nos enseñaron en las escuelas o universidades era el centro de todo sistema.

Integridad de datos

La integridad de datos está muy relacionada con el manejo de excepciones, gestor centralizado de mensajes de error, confirmación y reversión de transacciones, y automatización de despliegues de parches. En los inicios estos temas son abordados de manera académica, pero en la realidad conlleva a la ejecución de pruebas de rendimiento, pruebas de estrés, pruebas unitarias y de hecho pruebas de integración. La labor no sólo queda por la parte desarrolladora, esto es un trabajo en equipo donde intervienen áreas como operaciones o producción, encargados del despliegue. Cuando la data llega a generarse en un ambiente de producción, es importante realizar la auditoría correspondiente para verificar si no existen comportamientos de riesgos o fraude que afecten la integridad de datos, de manera consciente o inconsciente.

Seguridad

En temas de seguridad de la información existen varios ítems de la lista OWASP que anualmente se emite con las 10 vulnerabilidades más riegosas en el desarrollo de aplicaciones web (o aplicaciones con uso de internet), que no se toman en cuenta en el desarrollo de sistemas por partes de muchas organizaciones, tal es el caso de Inyección SQL, Exposición de datos sensibles o Insuficiencia de Monitoreo y Rastreo. Salvo que la carrera universitaria relacionada a TI (Ing. de Sistemas, Ing en Computación e Informática, Ing. de Software, etc.) contenga en su currícula medidas de seguridad de la información en el desarrollo de software, este aprendizaje se verá en la marcha o en otros casos con un curso especializado de ello. Los algoritmos que se implementan en temas de seguridad de la información están muy relacionados con las librerías que ofrecen las plataformas de desarrollo para temas puntuales como encriptación, conexión a través del protocolo https, etc.

Agilidad

Mucho tiene que ver la práctica y habilidad del programador en entender la sintaxis particular del nuevo lenguaje a aprender, sin dejar de lado los anteriores párrafos. La agilidad está relacionada a las habilidades blandas del desarrollador, sobre todo en el tema de negociación de estimaciones de requerimientos funcionales en nuevos lenguajes que no domina. Se han visto muchos casos (como el hecho de que Bill Gates le indicó a IBM que tenían un sistema operativo, cuando en realidad no tenían nada y tuvieron que comprar unmo hecho, estudiarlo y adecuarlo) en el que un desarrollador acepta un nuevo proyecto como un reto para explotar sus habilidades de aprendizaje. Esto pueden jugar en contra o muy a favor del desarrollador. En contra, si hablamos de un lenguaje nuevo en el mercado donde la documentación y escenarios particulares con ese lenguaje son muy escasos. Y a favor, si es que ese lenguaje es muy poderoso pero muy pocas personas la manejan. El desarrollador se podría volver un referente.

Consejo audit

La curva de aprendizaje depende de cada persona, y según el paradigma de programación. Una cosa es programar en un lenguaje orientado a objetos, otro muy diferente orientado a eventos, y mucho más diferente la programación declarativa. Hay programadores para la parte de despliegue, en la cual dominan temas relacionados a comandos de cmd, PowerShell, Linux, etc. Otros para la verificación de datos y dominan Transact SQL por ejemplo, entre otros. El enfoque es, tener la mente en práctica constante, resolver nuevos algoritmos cada vez, esto te dará una visión holísitca de un sistema en cuestión técnica.