Mucho Más Que Interfaces: La Amplitud del Desarrollo de Software
Cuando muchos escuchan el termino "desarrollo de software", es fácil asociarlo con la creación de aplicaciones web, apps móviles o programas con interfaces elegantes o elementos que se ven en pantalla. Lo que es lo mas normal porque estan son, sin duda, los elementos más visibles y populares al momento de usar software, pero algo que debemos tener en cuenta es que esto representan solo una fracción de lo que el desarrollo de software abarca realmente, asi que si a ustedes les gusta programar pero no son muy bueno para crear interfaces, no se preocupen hay muchas areas en las que no se necesitan crear algo visual, y que incluso puede ser mas interesantes que crear una interfaz bonita.
asi que en este video exploraremos otros aspectos un poco menos conocidos, pero igual de fascinantes, del desarrollo de software y que si estan interesados pueden dedicarse a esas areas que recien estan emergiendo y otras que ya estan consolidadas pero que pocos mencionan empecemos.
Empecemos con los mas basicos.
Programas de Sistemas Operativos
Cuando menciono un sistema operativo no me refiero a que tengas que inventar un nuevo sistema operativo o algo asi
Sino el entender que hay programas que el sistema operativo necesita para funcionar y que muchas veces requiere un conocimiento intermedio avanzando para poder llevares a cabo
Es decir el desarrollo de un sistema operativo abarca el manejo de todos los programas que estan encima y tamben del control de hardware, por lo que como desarrolladores
Ahora si quieres empezar en esto, probablemente tu entrada mas viable seria aprender Linux, y algun lenguaje que te permita crear programas que interactuen con el sistema, por ejemplo aqui estarian tipicos programas escritos en lenguajes como C, C++, Rust, e incluso algunos interprestados que sirven para ejecutar bibliotecas escritas en estos lenguajes que te mencione, como puede ser Lua o Python, usandolos puedes crear herramientas de línea de comandos, utilidades del sistema, o incluso módulos que extiendan la funcionalidad del sistema operativo. Estas herramientas pueden ir desde scripts simples para automatizar tareas, hasta servicios completos que se ejecuten en segundo plano como daemons o demonios.
Por ejemplo, con C o Rust, puedes crear aplicaciones de alto rendimiento que interactúen directamente con las APIs del sistema operativo, como la gestión de memoria o procesos. Con lenguajes como Python o Lua, puedes aprovechar su facilidad de uso para prototipar rápidamente scripts que se integren con herramientas del sistema o incluso crear interfaces para bibliotecas más complejas.
Este enfoque no solo te introduce al mundo del desarrollo de sistemas, sino que también te enseña cómo funcionan los sistemas operativos desde dentro, dándote una perspectiva mucho más amplia y sólida para avanzar en áreas como administración de servidores, seguridad informática, o incluso desarrollo de kernels.
Ciberseguridad y Criptografía
Otra area que los Los desarrolladores de software también trabajan tras bastidores es cuando se tiene que garantizar la seguridad digital.
Aqui hablo de Diseñar sistemas que protegen datos, detectan intrusos y mitigan ataques en red.
Algunas áreas de enfoque:
Desarrollo de Protocolos Seguros para Transferencias de Datos
- Protocolos de encriptación: Creación e implementación de estándares como TLS (Transport Layer Security) para proteger la transmisión de datos en redes públicas.
- Autenticación robusta: Uso de métodos multifactor (MFA) y sistemas como OAuth2 para autenticar usuarios y aplicaciones.
- Integridad de datos: Asegurar que la información no sea alterada mediante firmas digitales y algoritmos hash como SHA-256.
Detección de Malware Mediante Inteligencia Artificial
- Análisis de patrones de comportamiento: Uso de redes neuronales y algoritmos de machine learning para identificar actividades sospechosas y prevenir infecciones.
- Sistemas de detección basados en firmas: Creación de bases de datos de firmas para reconocer software malicioso conocido.
- Análisis heurístico: Identificación de malware desconocido basándose en comportamientos anómalos o código sospechoso.
Implementación de Criptografía Avanzada para Proteger la Privacidad
- Cifrado simétrico y asimétrico: Uso de algoritmos como AES (Advanced Encryption Standard) y RSA para proteger datos en reposo y en tránsito.
- Criptografía post-cuántica: Desarrollo de sistemas resistentes a ataques futuros basados en computación cuántica.
- Anonimización de datos: Implementación de tecnologías como homomorphic encryption y zero-knowledge proofs (ZKP) para permitir operaciones en datos cifrados sin revelar su contenido.
Herramientas y Tecnologías Usadas
- Librerías y frameworks: OpenSSL, libsodium, PyCrypto y Bouncy Castle para operaciones criptográficas.
- Sistemas de monitoreo y detección: Splunk, SIEMs como ELK Stack, y herramientas como Wireshark y Zeek.
- Plataformas de prueba de seguridad: Kali Linux y Metasploit para simulación y auditoría de ataques.
Y por supuesto estas son solo unas cuantas de todas las herramientas por lo que tambien aqui incluye el desarrollo software nuevo que permita probar o proteger la seguridad de un sistema.
Software para Robótica
No se si lo han notado pero este ultimo año se llego a comentar mucho mas de Robots para uso industrail, o incluso domestico enfocado a usuarios, por ejemplo tenemos a, la empresa 1x que esta respaldada por OpenAI, y que esta desarrollando varios tipos de Bot, Figure01 por parte de la empresa Figure que tambien usa los modelos de Openai, y Optimus de Tesla, que es uno de los productos en los que esta empresa esta trabajando y que ya no parece tan lejano verlos algun dia en las calles.
Todos estos bots en teoria puden hacer muchas actividades fisicas de cualqueir persona, o incluso muchas mas rapido, de hecho el bot Figure02 ya esta siendo usado en plantas de BMW ensamblando autos y segun aclaman son 400% mas rapidos.
Ahora por su puesto que todos estos bots para hacer tareas complejas necesitan algun sistema interno de control, es decir el cerebro de los robots. Sin él, los brazos robóticos en fábricas no podrían ensamblar piezas con precisión, ni los drones podrían mapear terrenos inaccesibles. Tecnologías como ROS (Robot Operating System) proporcionan herramientas para programar robots capaces de navegar, detectar objetos o incluso realizar tareas complejas como cirugías.
Y para pdoer hacerlo se necesitan programadores que escriban y prueben el codigo de estos bots, y de hecho es natural pensar que en algun momneto tambien sea como una plataforma mas a la que un proyecto quiera soportar, es decir asi como tienes el telefono, el smart tv, el asistente de alexa, es probable que tambien un robot necesite de desarrollos o extensibilidad o integracion de algun modo.
Por lo que si eres ingeniero de software y te gustaria en algun momento dedicarte a esta area puedes estudiar temas como:
- Algoritmos de visión por computadora.
- Modelos de inteligencia artificial.
- Control de motores y actuadores
Esto recien esta empezando, y aunque parece solo un tema de anecdota vale la pena estar atento a lanzmiento de estos proyectos.
3. Autos Inteligentes y Software de Transporte
Ahora fuera de los robots tambien otra area en el que la inteligencia artificial esta siendo muy requerida y por lo tanto tambien el desarrollo de software a un nivel mas sofisticado es en los autos autonomos, y sistemas avanzados de asistencia al conductor (ADAS). Este software procesa datos de sensores como cámaras y LIDAR para tomar decisiones en tiempo real.
asi que tambien hay ingenieros de software enfocado a estas areas, y que trabajan de otros profesional esd eeste rubro.
Pero muy a parte de esto tambien hay aplicaciones que un desarrollador comun que puedes crear que estan enfocadas netamente a la conduccion y como cada dia los autos tienen mas software y sensores se vuelve un dispostivo mas al que se le pueden crear aplicativos de ayuda al conductor o a los que viajan dentro.
Además, el software también se encuentra en el transporte público, optimizando rutas, gestionando tráfico y mejorando la sostenibilidad.
Funciones clave:
- Reconocimiento de objetos en el entorno.
- Trazado de rutas y planificación de movimientos.
- Sistemas de seguridad para evitar colisiones.
- GPS
Y si se enfoca en usuarios es practicamente desarrollar aplicativos moviles.
Software Científico y Simulaciones
En áreas como la física, la química y la biología, el software impulsa simulaciones que serían imposibles de realizar en el mundo real. Por ejemplo:
- Simular el comportamiento de moléculas para desarrollar nuevos medicamentos.
- Modelar fenómenos climáticos para predecir desastres naturales.
- Diseñar naves espaciales con simulaciones de vuelo y resistencia.
Y aqui estamos hablando de organizaciones y empresas muy grandes, como puede ser centros de investigacion como CERN, NASA o SpaceX por nombrar uno.
Este tipo de desarrollo requiere experiencia en matemáticas, algoritmos y un enfoque científico que desafía a los desarrolladores a innovar constantemente.
por lo que tambien se es requido el desarrollo pero esto esta tan enfocado que es un area batsante tecnica y que involucra el dominio de mas materias como desarrollador es decir no solo es progamr sinot ambien entener parte de estas areas que te mencono
Sistemas Embebidos
Los sistemas embebidos están en dispositivos cotidianos, desde electrodomésticos hasta marcapasos. Estos pequeños sistemas son controlados por software que optimiza recursos limitados, como memoria y energía, para lograr tareas específicas.
Ejemplo de aplicaciones:
- Controladores en automóviles (frenos ABS, sensores de proximidad).
- Dispositivos médicos como monitores cardíacos.
- Electrodomésticos inteligentes.
Los desarrolladores de sistemas embebidos programan en lenguajes como C o Rust y diseñan soluciones que son invisibles para el usuario final, pero fundamentales.
Conclusion
En fin como puedes ver hay muchas mas areas del desarrollo de software que n solo tienen que ver con la creacion de paginas o apliaciones que son visuales, sino incluso de soluciones invisiables, que son esesnciales y que son requeridas en muchos aspectos por nuestra sociedad, asi que es importante estar al dia con los avances y aprender como usar tus habilidades de codigo mucho mas alla de las areas populares para que tambien puedas crecer profesionalmente y porque no divertirte mientras aprendes estas areas nuevas.
Y si ustedes conocen otras areas poco conocidas del desarrollo de software pueden mencionarlas de esa forma todos podemos conocer otras mas.