1 pontos por GN⁺ 6 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Desqualificação substitui trabalho especializado por operação técnica de menor qualificação, reduzindo custos e barreiras de entrada, mas também enfraquece o poder de negociação dos trabalhadores
  • Nos últimos 10 anos, o frontend viu frameworks e ferramentas encobrirem conhecimentos sobre navegador, acessibilidade e desempenho, empurrando para fora a especialidade do front of the frontend
  • A IA agêntica eleva a programação a um nível maior de abstração, mas é uma abstração vazante (Leaky), não determinística, em que pequenas mudanças na entrada ou no modelo podem alterar muito o resultado
  • LLMs são uma continuação do copiar e colar do Stack Overflow: aceleram quem já tem experiência e permitem que iniciantes também produzam algo que funciona, mas alguém ainda precisa entender e corrigir a saída
  • A IA pode gerar mais AI slop e redução de custos, mas isso não elimina a necessidade de pessoas que entendam qualidade, usuários e trade-offs

Frontend e programação com IA sob a ótica da desqualificação

  • Desqualificação (deskilling) é o processo de substituir trabalho especializado por tecnologia que pode ser operada por trabalhadores semiqualificados ou não qualificados, reduzindo custos e barreiras de entrada, mas enfraquecendo o poder de negociação dos trabalhadores
  • O desenvolvimento frontend passou por um processo de desqualificação nos últimos 10 anos por meio de frameworks e ferramentas JavaScript, e a IA agêntica está produzindo uma mudança semelhante na programação em geral
  • Como sugere a expressão Frontend’s Lost Decade, a especialização em frontend que antes envolvia um entendimento profundo de navegadores e da experiência do usuário foi empurrada para o lado pelo desenvolvimento centrado em frameworks

A especialização que desapareceu do frontend

  • No passado, o desenvolvimento frontend exigia conhecimento especializado em HTML semântico, CSS, diferenças entre navegadores, acessibilidade, aprimoramento progressivo, desempenho de rede, design de interface e testes com usuários
  • Alguns profissionais distinguem essas áreas do “frontend” atual e as chamam de front of the frontend
  • A desqualificação do frontend avançou com a adoção de frameworks e ferramentas que tratam o navegador como um simples alvo de compilação, como a JVM ou o iOS, em vez de um ambiente com características próprias
  • Ao importar componentes como Shadcn radio button, é possível criar funcionalidades sem entender profundamente o HTML subjacente, as sutilezas entre navegadores, o desempenho no carregamento da página ou acessibilidade
  • As empresas conseguem colocar programadores generalistas para trabalhar com frontend com mais facilidade e reduzir custos
  • “Desenvolvedor full stack” passou muitas vezes a significar não alguém que entende profundamente frontend e backend, mas um desenvolvedor genérico capaz de lidar com ambos usando frameworks JavaScript
  • Fica mais fácil remanejar o mesmo desenvolvedor entre vários projetos, além de atribuir até apps nativos com React Native e Electron
  • Junto com a vantagem de reduzir a barreira de entrada, o poder de negociação dos trabalhadores enfraquece

Programação com IA é uma abstração mais alta e também uma abstração vazante

  • A mudança que hoje acontece na programação em geral se parece muito com a transformação que os desenvolvedores web já viveram
  • O movimento aponta para a substituição do trabalho especializado de escrever código manualmente por uma tecnologia operada por trabalhadores semiqualificados ou não qualificados
  • Ainda não está claro de quais capacidades os trabalhadores que operam IA agêntica precisarão no fim das contas, nem até onde chegarão os custos de mão de obra e de LLMs locais ou remotos
  • Mas parece evidente que as empresas podem usar essa tecnologia para reduzir custos e enfraquecer o poder de negociação dos trabalhadores
  • A perda de valor de mercado de habilidades refinadas ao longo de muitos anos lembra a substituição de artesãos e trabalhadores manuais por operários de linha de montagem
  • A desqualificação também pode ser vista como um ganho de eficiência via automação, isto é, uma mudança para trabalhar em um nível mais alto de abstração
  • Novas tecnologias escondem detalhes e permitem que o operador foque no panorama geral, mas decidir quais detalhes podem ser tratados como “não importantes” é uma escolha crítica
  • Os detalhes da abstração acabam vazando em algum momento
  • A abstração vazante do frontend “moderno”

    • Abstrações costumam trazer custo de desempenho, e abrir mão de parte do desempenho em tempo de execução em nome da produtividade do desenvolvedor pode ser razoável em servidores potentes e com carga normal
    • Em celulares sobre redes lentas, o mesmo trade-off se torna um problema totalmente diferente
    • O uso intenso de frameworks pesados de JavaScript no cliente, como React, e de pacotes do ecossistema abstrai demais questões como acessibilidade e desempenho em celulares fracos e redes lentas
    • O resultado é que essas questões deixam de ser consideradas e passam a ser escolhas feitas sem atenção
  • A não determinismo da programação agêntica

    • Ao criar uma funcionalidade ou corrigir um bug com IA agêntica, em vez de escrever todo o código manualmente, descreve-se a mudança em alto nível com menos palavras
    • A IA observa os dados de treinamento e o contexto ao redor para preencher os detalhes omitidos; às vezes acerta, às vezes falha
    • O quanto isso é útil depende fortemente do que se considera importante no trabalho de programar
    • A programação agêntica, ao contrário de um compilador, não é determinística, e pequenas mudanças na entrada ou no modelo podem produzir resultados muito diferentes, vazando muito mais do que abstrações tradicionais de programação
    • A comparação entre IA e “engenheiro júnior” também vem dessa não determinismo, mas com a diferença de que pessoas conseguem aprender sem exigir ajustes infinitos em arquivos AGENTS.md ou SKILL.md

LLMs são uma continuação do copiar e colar do Stack Overflow

  • A analogia mais próxima para o uso de LLMs é a antiga forma de usar a busca do Google
  • Saber escolher palavras-chave exatas para fazer um post de fórum ou uma resposta do Stack Overflow aparecer na primeira página de resultados também era uma habilidade que desenvolvedores precisavam aprender
  • Fazer prompts para LLM é, de forma parecida, um processo de fazer com que o modelo retorne combinações adequadas dos dados de treinamento, algo mais próximo de uma busca em um espaço de altíssima dimensão, semelhante a uma pesquisa web difusa
  • Os resultados de busca eram sensíveis a pequenas mudanças na formulação e a mudanças no índice de busca do Google, e os LLMs também são sensíveis à forma da entrada e às mudanças do modelo
  • Recentemente, o Google mudou a busca para normalizar com mais força os termos de entrada, tornando a pesquisa mais fácil para quem não dominava o “Google-fu”, mas menos poderosa para os mais experientes
  • Google e Stack Overflow mudaram a programação de forma irreversível, permitindo obter, com surpreendente frequência, resultados que pelo menos funcionavam ao copiar e colar respostas em vez de ler manuais
  • Os LLMs são uma continuação dessa mesma tendência
    • Tornam um pouco mais rápido quem sabe o que está fazendo
    • Permitem que até quem não sabe muito bem o que está fazendo consiga montar algo que funcione
  • Abstrações acabam vazando em algum momento, e então alguém precisa entender profundamente o que de fato está acontecendo para corrigir o problema
  • Assim como se ensinava desenvolvedores juniores a ler e entender respostas do Stack Overflow antes de usá-las, agora é preciso ensiná-los a ler e compreender a saída dos LLMs e ver como ela se encaixa na base de código existente

A distância entre qualidade e negócio

  • Alguns programadores nunca chegaram ao ponto de realmente entender as respostas do Stack Overflow e achavam suficiente se o resultado funcionasse
  • Muitas empresas, embora não admitissem isso publicamente, também estavam satisfeitas com essa abordagem
  • Agora chegamos ao ponto em que empresas exibem publicamente o quanto usam IA sem nem fingir que estão examinando os resultados
  • Existem claramente casos de uso válidos para LLMs, mas também surgem muitas novas maneiras de estragar o código, a comunicação e os processos da organização
  • Assim como no code review, há grande divergência de opiniões sobre como usar e integrar LLMs ao fluxo de trabalho, e se isso não combinar com o que a equipe valoriza, podem surgir grandes problemas no processo
  • Muitas empresas continuam funcionando bem mesmo produzindo software ruim
  • Ao contrário do que programadores gostam de acreditar, sucesso de negócio e qualidade de software raramente têm correlação forte
  • Em geral, outros fatores, como marca e preço, pesam mais, e projetos de software são tratados como caixas-pretas em que sucesso e fracasso parecem ocorrer com probabilidades semelhantes
  • No frontend, sites lentos e muitos banners de cookie podem prejudicar conversão, mas esse efeito costuma ser menor do que fatores como lealdade à marca e preço, e os sites dos concorrentes muitas vezes também são lentos
  • Em um clima de “ninguém foi demitido por escolher React”, escolhas seguras acabam sendo preferidas à qualidade
  • Isso não significa que se deve parar de se importar com usuários e capricho técnico, mas encontrar um trabalho onde isso seja possível ficou mais difícil
  • Quando o hype passar e houver mais clareza sobre tarefas para as quais LLMs realmente servem ou não, algum equilíbrio pode voltar, mas a profissão em si não será a mesma de antes

As habilidades que permanecem após a industrialização

  • Quando produtos do cotidiano e edifícios passaram a poder ser produzidos em massa por processos industriais, uma das reações foi fabricar em escala produtos e construções que imitavam estilos antigos para parecer artesanais
  • Em oposição a esse historicismo, a Bauhaus do início do século XX desenvolveu uma abordagem que, em vez de opor trabalhador de fábrica e artesão, propunha que ambos trabalhassem juntos e reinventassem arte e ofício com base nos processos industriais de fabricação
  • A Bauhaus exigia que o designer voltasse à oficina e trabalhasse diretamente com os materiais, mas com o objetivo final de criar projetos passíveis de produção em massa
  • O software se aproxima do artesanato no fato de que o programa escrito é entregue ao usuário “como está”, sem uma etapa de fabricação, e se aproxima do design industrial no fato de ser distribuído para milhares de usuários
  • A capacidade de escrever código manualmente continua necessária, e, assim como um designer industrial precisa conhecer os materiais do produto, um web designer precisa dominar muito bem HTML e CSS
  • Google, Stack Overflow, bibliotecas prontas para uso e LLMs facilitam o início para iniciantes, mas também continuam reduzindo a barreira natural para simplesmente fazer algo funcionar
  • A industrialização produziu muitos itens baratos de plástico sem refletir o suficiente sobre uso e usuários, mas o bom design industrial continua existindo
  • Processadores de texto geraram muitos documentos mal formatados, mas tipografia e design gráfico continuam existindo
  • Wix e Next.js tornaram possível criar muitos sites lentos e pouco acessíveis, mas profissionais do front of the frontend continuam existindo
  • A IA torna possível produzir muito AI slop, mas isso não significa que deixem de ser necessárias pessoas que sabem o que estão fazendo e se importam com o próprio trabalho

Mudanças futuras e trade-offs

  • Como em outros setores, é possível que a parcela de trabalho realmente bem feito fique menor em relação ao todo
  • Ao mesmo tempo, o tamanho total do mercado deve continuar crescendo, já que se tornará mais fácil e barato criar coisas
  • Ainda é difícil dizer agora se o número absoluto de pessoas bem pagas por fazer um bom trabalho vai aumentar ou diminuir
  • Em alguns casos, produzir rapidamente um protótipo ou MVP é a escolha certa
  • Se o produto ainda não encontrou product-market fit, iteração rápida e aprendizado importam mais do que tornar tudo preparado para o futuro
  • Mas é preciso saber o que se está tentando aprender e como esse aprendizado será validado
  • Quando chega o momento certo, geralmente é melhor dar um passo atrás e refazer desde o começo da maneira correta
  • Por exemplo, é muito difícil alcançar bom desempenho depois em um frontend com arquitetura ruim
  • Começar com uma stack simples e adicionar recursos depois costuma ser mais fácil do que o contrário
  • O Mastro incentiva explicitamente começar com bom desempenho e uma stack simples
  • Seja ao comprar um serviço, usar uma biblioteca open source, gerar com LLM ou escrever manualmente, é preciso entender quais trade-offs estão sendo feitos em cada parte do sistema
  • Quando o hype esfriar, o setor perceberá que IA é apenas mais uma ferramenta na caixa de ferramentas
  • Até lá, código feio, comunicação quebrada e demissões terríveis podem continuar aparecendo sob o rótulo de IA

1 comentários

 
GN⁺ 6 시간 전
Comentários do Hacker News
  • Acho que a especialização profunda da qual o OP sente falta era, na verdade, algo bem inconveniente para muita gente
    Entendo a ideia de viver de dominar peculiaridades de cada navegador, implementar componentes acessíveis na mão e ter grande domínio de CSS, mas, para a maioria, isso se parece mais com complexidade acidental. É claramente uma coisa boa que mais pessoas consigam criar algo, e se parte do resultado for mais lenta ou menos acessível, isso é um compromisso que pode ser escolhido
    Dá para dizer que a abstração empurra consequências que o usuário não escolheu, mas também acho possível que um LLM entenda convenções de acessibilidade melhor do que eu

    • Sempre foi difícil tratar direito aspectos menos visíveis de UX/desenvolvimento de software, como acessibilidade, intuitividade, compatibilidade, responsividade, escalabilidade, arquitetura e desempenho
      Só que frameworks de altíssimo nível e agora os LLMs passaram a facilitar lançar rapidamente um MVP meio cru mesmo estragando essas partes, e assim a distância entre “aceitável” e “bom” está ficando maior. Para quem tenta buscar o “bom”, está cada vez mais difícil competir com quem empurra o “aceitável”
      No fim, isso leva a mais trabalho até tarde e queda na qualidade do software, talvez até a uma piora geral na satisfação com o trabalho. Hoje em dia já começou a acontecer de eu usar ferramentas de desenvolvedor e uBlock para consertar sites quebrados ou remover distrações só para restaurar funcionalidades básicas, e vi gente aqui dizendo que faz a mesma coisa (https://news.ycombinator.com/item?id=47042747). Antigamente, nem na era do Flash ou dos navegadores iniciais era preciso mexer manualmente desse jeito
      Há também um exemplo menos anedótico: https://news.ycombinator.com/item?id=47390945
      Pior ainda é que a maior parte do dinheiro economizado com esses cortes fica só com o topo da organização
    • A IA continua cometendo o erro de colocar objetos animados atrás de objetos com blur, fazendo o navegador repintar a tela o tempo todo
      O AI mode do Google também tem isso, e outros sites aparentemente colocaram coisas parecidas por pura vibe coding
      No começo eu não entendia por que o uso de GPU disparava e a ventoinha ficava a todo vapor, mas agora vejo que esse é um erro comum que a IA comete e que ninguém testa direito. Humanos também podem cometer esse erro, mas, até agora, eu quase nunca tinha visto isso na vida
      Como uso um monitor de 240Hz, o navegador tentava repintar 240 vezes por segundo, e a única saída foi bloquear com uBlock Origin. Absurdo
    • Textos no estilo “estamos perdendo nosso artesanato” sempre têm a mesma estrutura deprimente
      O pior é que, no meio do caminho, eles acabam refutando a própria tese
      Por exemplo, foi dito que “decidir quais detalhes importam pouco é uma decisão profundamente importante e às vezes subjetiva, e no fim os detalhes sempre vazam”; se é assim, então essa nova tecnologia também vai acabar recompensando o entendimento técnico profundo. Porque isso é inevitável. Concordo com isso. Mas então por que o tom geral é “a IA está transformando minhas habilidades em mercadoria barata”?
      Os sites, tecnicamente, em geral estão melhores do que há 10 anos. Têm mais recursos, são mais rápidos, e SSL/acessibilidade/responsividade viraram padrões mais fortes por padrão. O problema das fábricas de conteúdo, de SEO e dos sites de notícias é outro modo terrível de falha criado por anúncios e incentivos corporativos, não culpa do React
    • Dizer que “um LLM vai entender convenções de acessibilidade melhor do que eu” significa, mais precisamente, que outras pessoas entenderam isso e escreveram sobre o assunto
      Um LLM às vezes consegue aproveitar isso. Mas, se as pessoas deixarem de escrever, o que acontece depois?
      Concordo que é bom que mais gente consiga criar alguma coisa. Mantido todo o resto igual, quanto mais, melhor. Se a “IA” tivesse se espalhado por toda parte por causa de melhorias incontestáveis, o contexto e o sentimento seriam bem diferentes
      Ainda assim, as pessoas não passam a ter um direito automático sobre o conhecimento “gerado” pelo trabalho alheio. Se atribuição e remuneração fossem tratadas com seriedade, e só fosse possível treinar com material pago às pessoas que o produziram, talvez simplesmente aprender CSS fosse muito mais rápido e barato
    • Acho que a conveniência construída ignorando a “especialização profunda” e empilhando hacks e abstrações preguiçosas é uma regressão que nos levou aos frameworks modernos de vários MB e ao Electron
      Claro, ninguém se importa com o computador do usuário/uso de memória, a piora da experiência, a largura de banda desperdiçada, o custo extra de energia para 8 bilhões de pessoas e o impacto ambiental
      Também é “claramente uma coisa boa” que mais gente construa infraestrutura pública? E se o resultado forem estradas piores, pontes piores e sistemas que falham? Com software é a mesma coisa, e na verdade com a maioria das coisas também
  • Grande parte das “tecnologias de frontend” que, segundo este texto, estariam perdendo relevância consistia em atravessar um campo minado cheio de exceções nada intuitivas, incompatibilidades entre navegadores, bagagem histórica e exceções das exceções das exceções
    O frontend moderno, isto é, essa “torre de abstrações que vaza”, finalmente se aproxima de um modelo mental sensato para desenvolvimento web. Foi forçado por cima de uma explosão de esquisitices chamada padrões e convenções da web, mas o fato de ainda assim funcionar e vazar só um pouco já é uma conquista

    • Falar em “modelo mental sensato para desenvolvimento web” não faz sentido. Ou é um mundo de exceções em forma de campo minado, ou é um modelo sensato; não pode ser os dois ao mesmo tempo
      Ainda estamos num campo minado de exceções, e é difícil dizer que as tecnologias com que se faz frontend tenham se tornado limpas, previsíveis e livres de bagagem histórica
      O que fizemos foi só passar massa corrida por cima dos erros e incompatibilidades da base, não resolvê-los. React não resolve o fato de que HTML não foi projetado para ser uma caixa de ferramentas de UI. Next.js não resolve o fato de que JavaScript está cheio de erros de projeto que o impedem de ser uma linguagem segura, sensata e racional. Tailwind não resolve o problema de que o CSS foi introduzido de forma improvisada para estilizar uma marcação que não foi projetada para isso
      O que os LLMs fazem agora é apenas “saber”, dentro de um modelo estatístico, dos horrores que estão sob essa massa corrida. Esse modelo foi treinado com exemplos de uma era em que 99% dos casos eram só remendar de novo as rachaduras da camada anterior de massa corrida
    • Não sou especialista, mas depois de colocar no ar frontend voltado ao público, frontend me parece a estrada de tijolos amarelos de O Mágico de Oz
      Se você não sair de um pequeno e razoável conjunto de boas práticas, dá para oferecer uma experiência muito boa só com algumas bibliotecas entediantes e já testadas
      Mas, quando você se envolve com o framework frontend da moda de hoje, ou pior, com o framework da moda de ontem, ou precisa se adaptar às preferências bizarras de outro desenvolvedor que insiste em uma única forma de fazer as coisas, ou começa a lidar com hacks “geniais” presos com esperança e fita adesiva, a complexidade e o modo como as coisas interagem aumentam exponencialmente
    • O texto original está lamentando a perda de uma era de ouro que nunca existiu
      Eu vivi aquela época. JavaScript puro voltado para IE6 foi substituído por jQuery cheio de bugs, depois por aplicativos de página única em Angular impossíveis de manter, e depois por codebases monstruosas em React
    • Isso parece fala de quem está mostrando ignorância
      Na prática, é muito mais do que isso
      Já vi gente demais aparecer em entrevista como especialista em Next.js e, fora isso, não saber fazer mais nada. Isso não é habilidade, é só conhecimento, e hoje está espalhado de graça por toda parte
    • A capacidade de entender em qual torre, em qual andar e em qual sala está essa abstração que vaza continua sendo muito valiosa, e talvez o LLM não enxergue isso
      O fato de algo não ter sido perfeitamente projetado por um comitê desde o começo não significa que dá para esquecer tudo, fechar o livro e deixar a máquina calcular
      Eu também faço a segunda coisa, então sei no que ela erra, mas não me deixo enganar a ponto de criar um caos impossível de manter. Sempre que os agentes saem dos trilhos, minha habilidade de frontend se torna realmente útil
  • Dizer que “frontend era uma habilidade altamente especializada que exigia conhecer HTML semântico, CSS, diferenças entre navegadores, acessibilidade, melhoria progressiva, desempenho de rede, design de interface, testes com usuários etc.” provavelmente soaria bem engraçado para a geração anterior de desenvolvedores frontend, isto é, os desenvolvedores C/C++
    A web era vista como algo que reduzia muito a barreira de entrada e desqualificava a técnica. Programadores de assembly provavelmente pensariam algo parecido sobre desenvolvedores C/C++

    • Toda camada acha que é a mais importante, a mais especializada e a mais qualificada
      Mas todas as camadas estão erradas. Cada camada é construída sobre abstrações da camada abaixo. Se você descer até física e matemática, vai ver que até os teóricos dos conjuntos assumem certos axiomas. Ninguém sabe o que os lógicos fazem
    • Essa citação não veio do texto e nem tem relação com ele, então não faço ideia do que está acontecendo
  • A lógica de “o novo processo produz resultados de qualidade inferior, e é triste que tanta gente pareça não se importar” parece se apoiar na premissa de que, antes da IA, a maior parte desse trabalho era feita por artesãos qualificados e comprometidos com a qualidade
    Quem já trabalhou de verdade no setor e é honesto sabe que não era assim. Havia muita coisa abaixo da média
    E, dependendo de como se define “qualidade”, também não dá para ter certeza de que o resultado da IA seja de qualidade inferior. A IA pode produzir uma uniformidade incômoda, mas, ao mesmo tempo, como as convenções aprendidas pelo modelo, goste-se delas ou não, “funcionam” para a maioria dos usuários finais, também há muitos resultados bem utilizáveis

    • Isso está mais para “colocar mais um tijolo no muro”
      Já existia muita pressão para fazer só o mínimo que atendesse aos requisitos e declarar sucesso. Agora essa pressão parece ter se tornado insuportável
    • Sobre a premissa de que, antes da IA, havia artesãos qualificados comprometidos com a qualidade, há pessoas que, por sorte, viveram alguns períodos assim na carreira
      Ainda assim, concordo que isso já tinha desaparecido antes mesmo da IA
    • O padrão de qualidade parece assustadoramente baixo
    • Sim. A web antes de jQuery e Bootstrap era uma bagunça e também não era divertida de programar
      Se estamos falando de baixa qualidade, aquilo era na verdade o normal
  • Recentemente eu também pensei em algo parecido
    Faz pelo menos 10 anos que quase não mexo com desenvolvimento frontend, mas já tenho idade suficiente para lembrar da época, no fim dos anos 2000, em que de repente todo mundo começou a usar frameworks em vez de fazer GUI web na mão, e quem ainda escrevia HTML/CSS/JS e consultas de banco manualmente era ridicularizado. As vagas também de repente passaram a pedir Ruby on Rails, Django, Spring, GWT e depois Angular, em vez de PHP/HTML/CSS/SQL/JS
    A sensação é estranhamente familiar ao momento atual. Dava para criar uma aplicação web funcional em poucos minutos sem conhecimento profundo, e parecia mágica. Depois vinha aquela fase de folhear a documentação por alto e ir pesquisando enquanto customizava dentro do framework, até chegar num ponto em que você simplesmente não conseguia mais avançar. Porque não fazia a menor ideia de como aquilo funcionava por dentro. Assim como os webapps de vibe coding, os webapps padronizados montados numa tarde com frameworks padrão eram reconhecíveis de longe, mas impressionavam bastante os gerentes
    O curioso é que os desenvolvedores falam do modelo de ponta que usam com a mesma entonação com que os devs de GUI de 15 a 20 anos atrás falavam dos frameworks web de que gostavam. Personificam a ferramenta e até se identificam com ela, ficam frustrados porque algo que funcionava na versão X piorou na X.1, e repetem frases como “agora desenvolvo 10x mais rápido” ou “vou voltar a escrever XYZ na mão”

    • Por outro lado, o uso posterior de frameworks também foi uma boa tentativa de padronização
      Também não é vantagem ter uma GUI caseira que ninguém sabe manter
      Pessoalmente, rejeito coisas que “parecem” grandes demais, como Nuxt/Next, mas gosto de Vue. Só que hoje quero me livrar da maior parte do JavaScript, então estou tentando ir para soluções na linha de HTMX ou Alpine com templates server-side
      Para mim, quanto menos tecnologias em uso, melhor. Já houve época em que o webapp vinha lotado de um monte de tralha inútil antes mesmo de eu adicionar uma única linha de código customizado
    • Já no começo dos anos 2000, os desenvolvedores web estavam cansados de codificar tudo à mão e buscavam automação como frameworks ou CMS
      Em 2004 eu já tinha feito site com uma abordagem básica de colocar arquivos txt numa árvore de diretórios e usar PHP para inseri-los no HTML adicionando tags em vez de quebras de linha. Na época, a alternativa era um sistema pesado de gerenciamento de conteúdo
      Cheguei ao Django depois de passar por dois frameworks PHP horríveis feitos pelos leads no trabalho, então frameworks como Django pareceram uma transição mais gradual e bem mais agradável
      Claro, se você força mais a barra e vai na direção de adicionar controle de versão a objetos, por exemplo, a coisa fica muito complicada, deixa de ser garantidamente funcional e você também deixa de ter como consertar
      Mesmo assim, a atitude em si parece semelhante à de agora
  • Estamos na indústria de software. O cerne desta indústria é automatizar tarefas muito repetitivas
    Projetos de frontend são muito repetitivos, e agora a IA faz isso. É ótimo e libera muito tempo para construir coisas mais interessantes
    A desespecialização de técnicas que já não são tão relevantes é algo que acontece na indústria desde a invenção do computador. Porque o problema foi resolvido, seja com IA ou de outra forma
    Basta seguir em frente e aprender a nova técnica. Na prática, usar IA com eficácia também é uma habilidade difícil para algumas pessoas. As coisas ainda não se constroem sozinhas. Dá para fazer se você der o prompt certo, mas será que está dando o prompt certo? A ferramenta está fazendo o que você pediu? Como você sabe? Você verificou? Eu mesmo gasto um tempo enorme dando prompts para IA, e certamente estou melhorando, mas ainda assim isso chega perto de um trabalho em tempo integral
    Daqui a uns 10 anos vamos olhar para trás e achar que esse era um jeito muito ineficiente de fazer software. As ferramentas vão melhorar e a IA vai se tornar mais autônoma. Se você passa o dia repetindo os mesmos prompts, alguém ou alguma coisa também vai precisar automatizar isso

    • O propósito do software é codificar a vontade humana num estado que a máquina consiga comunicar
      A reclamação aqui é que essa automação corre o risco de codificar o que não se queria
    • Em vez de abandonar o frontend, a nova eficiência criada pela IA deveria liberar recursos para levar frontend e backend ainda mais longe
      O mundo precisa de muito mais software do que somos capazes de construir agora
    • Não faço a menor ideia do que significa dizer que “projetos de frontend são muito repetitivos”
      É uma opinião tão ruim que nem sei por onde começar a refutar. O repetitivo seria o fato de toda UI ter botões?
      Se as pessoas realmente acreditam nisso, dá para entender por que a UX vem sendo arruinada desde os anos 90 e só piorou depois
    • Você talvez se surpreenda ao descobrir que não existem tantas “coisas interessantes” assim para construir
  • Programar com IA ajuda muito a criar protótipos de produto, mas ao mesmo tempo também gera produtos que, vistos de longe, têm cara evidente de terem sido feitos por IA
    Acabei de ver uma startup demonstrar um app, e ele tinha exatamente aquela cara de UI de vibe coding
    O feedback que receberam foi frio, mas preciso. Era algo como: “Está até bem legal, mas dá muito para ver que foi feito com IA, e nesse caso qualquer outra pessoa que queira isso também consegue fazer muito rápido com IA, então há pouco valor no que vocês estão tentando vender”

    • Queria que isso acontecesse mais. Tanto UI feita por LLM quanto gente que acha isso suficiente são difíceis de aguentar
    • O engraçado é que, se você só configurar um design system básico e um pouco de CSS, o código frontend gerado por IA já encaixa de forma bem natural
      Mas a maioria nem se dá a esse trabalho básico
      Bordas arredondadas continuam sendo uma moda sem fim, e tudo o que já não tem uma definição clara parece ser contaminado por essa forma
    • Isso soa mais como fantasia da sua cabeça do que como algo que realmente aconteceu
      Um investidor de venture capital competente não daria um feedback sem sentido desses. Se é bom, é bom; que diferença faz se foi IA que fez? Se fosse um produto da mesma qualidade, mas sem cara de vibe coding, então estaria tudo bem? Só quem se opõe ideologicamente à IA se importaria com isso
  • Às vezes parece que as técnicas para criar interfaces de usuário complexas só com HTML, sem AJAX nem manipulação de DOM, no começo dos anos 2000, praticamente desapareceram como técnicas de construção de pirâmides
    Há um aspecto de “desqualificação” entre desenvolvedores full stack mais jovens; por exemplo, muita gente acha que é preciso JavaScript para fazer validação de formulário
    A partir do momento em que você começa a usar AJAX e manipular o DOM, a complexidade da comunicação assíncrona inevitavelmente leva a algo de escala parecida com React. Mesmo que dê para escrever algo como document.title="A new title" e não seja preciso importar nada, se você enxergar o frontend apenas como “atualizar a UI quando chegam dados do servidor”, aplicações complexas precisam atualizar várias partes da UI, e em algum momento você acaba criando algo como um barramento de comunicação ou barramento de gerenciamento de estado. Daria para fazer de outro jeito? Claro que sim
    Se existe um problema no ecossistema React, não é o fato de criar abstrações sobre abstrações, mas sim que essas abstrações vazam. Se você estiver fazendo algo muito simples e não se importar com a aparência, dá para usar Bootstrap ou MUI sem entender CSS. Mas, para entregar um trabalho de nível profissional para apresentar a clientes, você precisa entender HTML, CSS, JS e todos os frameworks usados no projeto

    • Especialmente no HN, frequentemente parece que React é usado como um palavrão de quatro letras que substitui uma insatisfação mais ampla com a web interativa em geral
      A maioria das pessoas que critica React na verdade não entende que problema o React resolve. Se você mostrar o código-fonte de um webapp suficientemente complexo que não dependa de React, dá para encontrar ali uma imitação de React feita manualmente
  • Não concordo que operar aplicações frontend usando renderização no lado do servidor, lazy loading etc. do NextJS seja “mais fácil” do que na época em que se usava só HTML, JS e CSS
    O nível de complexidade e as expectativas dos usuários estão em um lugar completamente diferente
    Além disso, hoje há algo como 1000 vezes mais engenheiros qualificados, e é preciso competir com o mercado global. No começo dos anos 2000, quase não havia concorrência. As habilidades dos trabalhadores em geral têm uma correlação frouxa com o nível exigido pelo mercado, mas agora o cenário é extremamente competitivo