1 puntos por GN⁺ 2024-07-07 | 1 comentarios | Compartir por WhatsApp

La crisis del software

  • ¿Qué es la crisis del software?

    • El término "crisis del software" se utilizó por primera vez en la primera conferencia de ingeniería de software de la OTAN en 1968
    • Estas conferencias fueron uno de los primeros intentos por definir y sistematizar las prácticas de programación
    • La última conferencia de ingeniería de software de la OTAN se celebró en la misma época que el lanzamiento del Apollo 11 en 1969
  • Causas de la crisis del software

    • Edsger Dijkstra, ganador del Premio Turing en 1972, explicó que la causa de la crisis del software fue el aumento de la complejidad y la velocidad del hardware
    • "Cuanto más potentes se vuelven las máquinas, más grandes se vuelven también los problemas de programación" - Edsger Dijkstra
  • La crisis del software actual

    • Hoy en día ya no se habla mucho de la crisis del software
    • Se piensa que el problema se resolvió gracias al desarrollo de nuevos lenguajes y métodos de organización
    • Sin embargo, esto puede surgir no de una verdadera tranquilidad, sino de una sensación de derrota y aceptación
  • El problema de la abstracción

    • Ha habido varios esfuerzos para resolver la crisis del software, pero la mayoría intenta hacerlo mediante la "abstracción"
    • La abstracción ofrece cierto grado de independencia a cambio de rendimiento
    • Desde la comercialización de las computadoras personales, la abstracción se convirtió en la forma básica de pensar
  • La brecha entre desarrolladores y usuarios

    • La crisis del software afecta no solo a quienes crean software, sino también a quienes lo usan
    • Los usuarios casi no tienen control más allá de lo que el autor les ofrece
    • Alan Perlis: "Si tienes una buena idea, debes estar preparado para hacerte responsable de ella"
  • La ausencia de responsabilidad

    • Quienes crean software están desligados de la responsabilidad por las herramientas que construyen
    • Con la comercialización, esta tendencia se ha reforzado
    • La abstracción se usa como una herramienta para evitar pensamientos difíciles
  • La solución

    • La solución a la crisis del software no es volver a plataformas más limitadas, sino limitar la cantidad de capas de abstracción y exigir la preservación de la información
    • El modelo de programación, la interfaz de usuario y el hardware base deben ser superficiales y componibles
    • Se debe empoderar a los usuarios de las herramientas
  • Los movimientos actuales

    • Existen movimientos como Handmade, Permacomputing y la computación retro para aumentar la conciencia sobre la crisis del software
    • Estos movimientos contraculturales son una señal saludable y sugieren que la situación puede mejorar

Resumen de GN⁺

  • La crisis del software fue un problema originado por el aumento de la complejidad y la velocidad del hardware
  • Actualmente se intenta resolver mediante la abstracción, pero esto tiene un costo en rendimiento
  • Quienes crean software están desligados de la responsabilidad por las herramientas que construyen, y esto se ha reforzado con la comercialización
  • La solución es limitar la cantidad de capas de abstracción y exigir la preservación de la información
  • Movimientos como Handmade y Permacomputing están aumentando la conciencia sobre la crisis del software

1 comentarios

 
GN⁺ 2024-07-07
Opinión de Hacker News
  • Opinión del autor

    • Se opone no a la abstracción en sí, sino a su aplicación ilimitada
    • No plantea como solución volver a plataformas más limitadas
    • No sostiene que los usuarios deban volverse "más técnicos"
    • Para entender la crisis del software, hay que comprender las curvas de "dominio de la plataforma" y de "crecimiento/ciclo de lanzamiento"
    • Este texto no es clickbait, sino un reflejo de su situación como desarrollador
    • Busca aportar parte de la solución y planea publicar textos de seguimiento
  • Crisis del software

    • Incluye problemas como sobrepresupuesto en proyectos, retrasos, software ineficiente, baja calidad, incumplimiento de requisitos, dificultad de mantenimiento y hasta software que nunca se entrega
    • El software exitoso se ignora y solo se presta atención a los fracasos y defectos
    • Para que una computadora llegue al escritorio, pasa por cientos de abstracciones, y eso ocurre miles de millones de veces al día en todo el mundo
  • Desarrollo de software y liderazgo

    • El liderazgo en las automotrices enfatiza el conocimiento técnico, pero en el desarrollo ágil de software la capacidad técnica se queda en los niveles más bajos
    • Los desarrolladores de software trabajan ticket por ticket sin consideraciones filosóficas y no ascienden a roles de liderazgo
    • La conciencia sobre la crisis del software probablemente quede limitada al ámbito del hobby
  • La necesidad de la abstracción

    • La abstracción es una herramienta esencial, y el problema son las malas abstracciones o el exceso de abstracciones
    • El desarrollo de software se ha vuelto más fácil y también está mejor documentado
  • Herramientas e información

    • Si conoces las herramientas correctas, desarrollar software es muy fácil
    • La mayoría de las herramientas que la gente conoce no son buenas, y la influencia del capital es grande
    • Por ejemplo, hizo un video construyendo en 3 horas una app compleja de marketplace en un entorno serverless, pero tuvo pocas visualizaciones
  • GUI y composabilidad

    • Al usar herramientas UNIX, se obtiene una experiencia superficial y componible
    • Las GUI no se comunican entre sí ni son componibles
    • Está experimentando con herramientas que combinan GUI y pipelines de shell
  • La importancia del software

    • La mayor parte del software no es crítica, y que su calidad sea baja no suele causar grandes problemas
    • La mayoría de los desarrolladores de software trabajan sin motivaciones como las de Silicon Valley
  • Modularidad y abstracción

    • Los sistemas complejos como Internet se sostienen mediante abstracciones en capas
    • Las herramientas de software han mejorado mucho desde los años 70
    • Por ejemplo, al usar copilot de VSCode se puede autocompletar una API completa
  • Crisis de gestión de proyectos

    • Más que una crisis del software, existe una crisis de gestión de proyectos
    • Hay una brecha entre quienes planifican y quienes entregan
    • La comercialización del desarrollo de software permite que participen personas de distintos niveles
    • Es similar a la industria alimentaria, y no se habla de una crisis de los restaurantes