1 pontos por GN⁺ 2024-07-07 | 1 comentários | Compartilhar no WhatsApp

Crise do software

  • O que é a crise do software?

    • O termo "crise do software" foi usado pela primeira vez na primeira conferência da OTAN sobre engenharia de software, em 1968
    • Essas conferências foram um dos primeiros esforços para definir e sistematizar as práticas de programação
    • A última conferência da OTAN sobre engenharia de software foi realizada na mesma época do lançamento da Apollo 11, em 1969
  • Causas da crise do software

    • Edsger Dijkstra, vencedor do Prêmio Turing de 1972, explicou a causa da crise do software pelo aumento da complexidade e da velocidade do hardware
    • "Quanto mais poderosas as máquinas se tornam, maiores também se tornam os problemas de programação" - Edsger Dijkstra
  • A crise do software atual

    • Atualmente, fala-se pouco sobre a crise do software
    • Acredita-se que o problema tenha sido resolvido com o desenvolvimento de novas linguagens e métodos de organização
    • No entanto, isso pode vir não de um conforto genuíno, mas de uma sensação de derrota e aceitação
  • O problema da abstração

    • Houve vários esforços para resolver a crise do software, mas a maioria tentou resolver o problema por meio da "abstração"
    • A abstração oferece certo grau de independência, ao custo de desempenho
    • Desde a comercialização dos computadores pessoais, a abstração se tornou um modo básico de pensar
  • A lacuna entre desenvolvedores e usuários

    • A crise do software afeta não apenas quem cria software, mas também quem o utiliza
    • Os usuários quase não têm controle além daquilo que o autor fornece
    • Alan Perlis: "Se você tem uma boa ideia, deve estar preparado para assumir a responsabilidade"
  • A ausência de responsabilidade

    • Os criadores de software estão desvinculados da responsabilidade pelas ferramentas que produzem
    • Com o avanço da comercialização, essa tendência se fortaleceu
    • A abstração é usada como uma ferramenta para evitar pensamentos difíceis
  • Soluções

    • A solução para a crise do software não é um retorno a plataformas mais limitadas, mas limitar o número de camadas de abstração e exigir preservação da informação
    • O modelo de programação, a interface do usuário e o hardware subjacente devem ser rasos e componíveis
    • É preciso dar poder aos usuários das ferramentas
  • Movimentos atuais

    • Há movimentos como Handmade, Permacomputing e retrocomputação para aumentar a conscientização sobre a crise do software
    • Esses movimentos contraculturais são um sinal saudável e sugerem que a situação pode melhorar

Resumo do GN⁺

  • A crise do software é um problema causado pelo aumento da complexidade e da velocidade do hardware
  • Atualmente, tenta-se resolver o problema por meio da abstração, mas isso tem um custo de desempenho
  • Os criadores de software estão desvinculados da responsabilidade pelas ferramentas que produzem, e isso foi reforçado pela comercialização
  • A solução é limitar o número de camadas de abstração e exigir preservação da informação
  • Movimentos como Handmade e Permacomputing estão ampliando a conscientização sobre a crise do software

1 comentários

 
GN⁺ 2024-07-07
Opinião no Hacker News
  • Opinião do autor

    • É contra não a abstração em si, mas sua aplicação irrestrita
    • Não defende um retorno a plataformas mais limitadas como solução
    • Não afirma que os usuários deveriam ser "mais técnicos"
    • Para entender a crise do software, é preciso compreender as curvas de "proficiência em plataforma" e de "crescimento/ciclo de lançamento"
    • Este texto não é clickbait, mas um reflexo da situação como desenvolvedor
    • Pretende oferecer parte da solução do problema e planeja textos de continuação
  • Crise do software

    • Inclui problemas como estouro de orçamento, atraso no cronograma, software ineficiente, baixa qualidade, requisitos não atendidos, dificuldade de manutenção e até software não entregue
    • Softwares bem-sucedidos são ignorados, enquanto apenas falhas e defeitos recebem atenção
    • Até um computador chegar à área de trabalho, ele passa por centenas de abstrações, e isso acontece dezenas de bilhões de vezes por dia no mundo todo
  • Desenvolvimento de software e liderança

    • A liderança em montadoras enfatiza conhecimento técnico, mas no desenvolvimento ágil de software a competência técnica termina nos níveis mais baixos
    • Desenvolvedores de software trabalham por ticket, sem consideração filosófica, e não são promovidos a funções de liderança
    • A percepção da crise do software tende a ficar restrita ao hobbyismo
  • Necessidade da abstração

    • A abstração é uma ferramenta essencial, e o problema está em abstrações ruins ou em abstrações demais
    • O desenvolvimento de software ficou mais fácil e também está melhor documentado
  • Ferramentas e informação

    • Se você conhece as ferramentas certas, desenvolver software é muito fácil
    • As ferramentas que a maioria das pessoas conhece não são boas, e há forte influência do capital nisso
    • Por exemplo, ele fez um vídeo construindo em 3 horas um app complexo de marketplace em ambiente serverless, mas teve poucas visualizações
  • GUI e componibilidade

    • Ao usar ferramentas UNIX, tem-se uma experiência superficial e componível
    • GUIs não se comunicam entre si e não são componíveis
    • Está experimentando ferramentas que combinam GUI e pipelines de shell
  • Importância do software

    • A maior parte do software não é crítica, e mesmo com baixa qualidade isso não causa grandes problemas
    • A maioria dos desenvolvedores de software trabalha sem motivações como as do Vale do Silício
  • Modularidade e abstração

    • Sistemas complexos como a internet são mantidos por abstrações em camadas
    • As ferramentas de software melhoraram bastante desde os anos 70
    • Por exemplo, usando o Copilot do VSCode, é possível autocompletar uma API inteira
  • Crise de gestão de projetos

    • Em vez de uma crise do software, existe uma crise de gestão de projetos
    • Há uma lacuna entre quem planeja e quem entrega
    • A comercialização do desenvolvimento de software permite a participação de pessoas de vários níveis
    • Isso é semelhante à indústria de alimentos; ninguém fala em uma crise dos restaurantes