Desarrollador de Funcionalidad vs Desarrollador de Seguridad
Lo que en una época se le conocía como programador a este personaje del área de TI encargado de plasmar en código las necesidades de la organización, ahora se le rebautiza con el nombre de desarrollador con el fin de diferenciarlo y mejorar su presentación ante el mundo, donde ahora a este personaje no sólo se le ve como el encargado de escribir código horas tras horas, si no integrarse con los objetivos de la organización y seguir varias fases de las metodologías de desarrollo de software existente en el mercado, que van desde el análisis, programación y diversos tipos de pruebas. Veamos características escenciales de estos cargos.
Desarrollador funcional
En nuestro país lo que normalmente sucede es que si vas a ingresar a programar a una empresa o entidad estatal, te asignarán inicialmente la supervisión de un sistema que la empresa tiene hace un buen tiempo o en el mejor de los casos te asignarán pequeños mantenedores de tablas muy poco usadas, esto con el fin de que te familiarices con el entorno de desarrollo de la empresa. Entonces empiezas a asistir cada vez más a reuniones con los usuarios y vives en carne propia la confrontación con personas que no hablan tu mismo idioma, el lenguaje de programador, es ahí donde tus habilidades deben mejorar, como la negociación y empatía. Con ello te vas familiarizando y aprendiendo los nombres de las tablas, los sinónimos que utiliza la organización, esquemas, índices, entre otros datos técnicos. Es ahí donde las reuniones programadas se vuelven pan comido para ti y necesitas profundizar en el lenguaje del usuario para volverte literalmente el ídolo del usuario. Sí, ellos aprecian mucho que tú, con tu inteligencia informática los ayude valiosísimamente a optimizar sus tiempos y generar más valor en la organización.
Dependiendo de la organización, en muchas empresas se establecen niveles para diferenciar a los desarrolladores; están los Junior, Semi-Senior y Senior, dichos cargos próximamente tomarán la decisión de evolucionar en su carrera para convertirse en Jefes de Proyectos, Jefes de Desarrollo o un cargo deseado como Arquitecto de Software. En otras empresas nació el término Analista Funcional, el cual no tiene nada que ver con la tecnología o en su vida pasada tocó algo de programación, pero ahora sólo estudia procesos y funciones del negocio, y llega a confundirse con el Analista de Negocio.
Desarrollador de Seguridad
Se podría considerar como un derivado del desarrollador funcional al desarrollador de seguridad, o confundirse con el encargado de control de calidad de software, pero no, ya que el Encargado QA no desarrolla funcionalidad ligada al requerimiento. Que puede escribir programas para ayudar a sus procesos de testing, no hay problemas, es un desarrollador para qa, lo mismo sucede para los programadores que se centran en crear programas para mejorar aspectos de seguridad que pueden automatizar procesos manuales de revisión, procesamiento de data o big data de eventos relacionados a ataques en la organización, software que permita generar nuevos certificados de confianza, gestionar reglas de firewall, control de puertos, modificaciones del sistema de archivos, etc.
Para este tipo de desarrolladores debe quedar claro el uso de la lista OWASP del año vigente es sumamente importante, debido a las especificaciones técnicas o no, en ella se encontrarán las 10 vulnerabilidades más claras y recurrentes en aplicaciones web en el mundo, por ejemplo, en el número 1 se encuentra la Inyección SQL siguiéndole la gestión de sesiones y autenticaciones rotas, entre otras 8 vulnerabilidades comunes en la empresa.
Consejo audit
En el camino de la programación tendrás muchas otras rutas internas, como programador de basheros, programador frontend o backend, programador de procedimientos almacenados, programador de algoritmos de inteligencia artificial, etc. Lo importante es dominar las técnicas de programación y algoritmos básicos e intermedios. En audit brindamos la capacitación necesaria para los desarrolladores que necesiten sumergirse en ambientes reales de desarrollo de software tanto web, escritorio, procesamiento, basheros o inteligencia artificial.