Contenido
Al inicio de mi carrera en computación, encontré una clasificación útil del software que lo divide en tres categorías: software de sistema, software de aplicación y scripts. Aunque esta abstracción no es perfecta, sirve como un marco conceptual útil tanto para ingenieros como para gerentes. Cada categoría revela perspectivas únicas sobre el desarrollo de software, su uso y los tipos de personas que los escriben.\n\nEn la base se encuentra el software de sistema, que incluye sistemas operativos, compiladores y bases de datos. Estos sirven como componentes genéricos y fundamentales necesarios para construir todos los demás tipos de software. Aunque el software de sistema es muy extendido, es inherentemente indiferenciado y no realiza tareas significativas por sí mismo. Hay relativamente pocas opciones de software de sistema de calidad productiva disponibles: solo un puñado de sistemas operativos, alrededor de diez lenguajes de programación populares y un par de docenas de motores de bases de datos principales. La escasez de opciones se debe a desafíos económicos y técnicos, ya que crear software de sistema confiable requiere grandes equipos de desarrolladores altamente capacitados y a menudo abarca múltiples generaciones. Ejemplos notables incluyen Unix y el compilador gcc, que ilustran la complejidad y escala involucradas. A pesar de su importancia, solo una minoría de ingenieros de software se especializa en desarrollo de software de sistema.\n\nPor encima de esta capa está el software de aplicación, que abarca todos los programas nombrados diseñados para tareas específicas. Los ejemplos van desde productos de consumo como Photoshop, Excel y TikTok hasta innumerables herramientas internas como sistemas de tickets de mesa de ayuda o controladores de máquinas herramienta. Las aplicaciones se construyen sobre el software de sistema y a veces sobre otras aplicaciones, diseñadas para cumplir trabajos particulares con capacidades limitadas de personalización o scripting. En comparación con el software de sistema, las aplicaciones tienden a tener una vida útil más corta, aunque algunas como Microsoft Office, Google Search y Midnight Commander han perdurado durante décadas. El software de aplicación constituye la mayor parte del desarrollo profesional de software y, en consecuencia, la mayoría de los desarrolladores profesionales se enfocan en crear estas aplicaciones.\n\nLa tercera categoría, scripting, cubre software que automatiza o une varios componentes, a menudo adaptado a casos de uso muy específicos y estrechos. Los scripts pueden ser tan simples como vincular una hoja de cálculo a un servicio de correo electrónico usando herramientas como Zapier o tan complejos como scripts de análisis de datos que aprovechan bibliotecas como Numpy. La mayoría del software en el mundo pertenece a esta categoría de scripting. A diferencia de los desarrolladores profesionales, los autores de scripts a menudo incluyen programadores no profesionales como oficinistas que crean fórmulas en Excel o científicos que escriben código de análisis de datos. Aunque los scripts generalmente son menos complejos que las aplicaciones completas, aún implican programación y tienen propósitos prácticos claros en lugar de existir como productos independientes.\n\nEste marco coloca elegantemente un amplio espectro de actividades de programación —desde soluciones NoCode hasta microcódigo— en el mismo continuo, destacando las diversas herramientas que los desarrolladores deben dominar. También anima a los desarrolladores a considerar si un script simple o automatización es más apropiado que construir una aplicación completa, ya que los scripts pueden ser más baratos de desarrollar y permiten iteraciones más rápidas. Curiosamente, los scripts a menudo evolucionan hacia aplicaciones, y las aplicaciones pueden crecer hasta convertirse en software de sistema, reflejando una naturaleza fractal a través de las capas.\n\nDentro de las organizaciones, estas categorías se manifiestan de diferentes maneras. Los equipos de plataforma a menudo personalizan el software de sistema para ajustarlo a necesidades específicas de la empresa, reduciendo la complejidad de las herramientas usadas para el desarrollo de aplicaciones. Históricamente, las aplicaciones internas tenían soporte limitado para scripting, pero los avances en Automatización Robótica de Procesos (RPA), plataformas NoCode y herramientas de Inteligencia Empresarial (BI) han incrementado las capacidades de automatización y personalización para desarrolladores no profesionales. De cara al futuro, se espera que los no profesionales asuman más roles de personalización de software, impulsados por herramientas mejoradas y demandas crecientes de soluciones de software. Mientras tanto, los desarrolladores profesionales se enfocarán en software central de sistema y orientado al usuario, proporcionando APIs y flujos de datos para que herramientas de scripting y automatización de nivel superior puedan aprovechar.\n\nEn general, esta clasificación no solo aclara cómo se construye y mantiene el software, sino que también ofrece valiosas perspectivas profesionales. Entender estas capas puede ayudar a los profesionales a elegir dónde especializarse y cómo colaborar eficazmente con otros en el ecosistema de software.