O Desencanto do Software

Translated by Bruno Paulino from English

Eu tenho programado por 15 anos. Recentemente nossa industria tem perdido o cuidado com eficiência, simplicidade e excelência. Isso começou a me incomodar ao ponto de me deixar depressivo com minha própria carreira e a área de TI como um todo.

Carros modernos funcionam, digamos assim, a 98% do que é fisicamente possível com o atual design do motor. Prédios modernos utilizam apenas o material necessário para funcionar e serem adequadamente seguros para as condições que foram projetados. Todos os planos convergem para uma ótima forma/tamanho/carga e basicamente são bem parecidos.

Apenas em software é normal que um programa rode a 1% ou ate mesmo a 0.01% de sua capacidade máxima e as pessoas parecem tranquilas quanto a isso. As vezes essas mesmas pessoas se mostram orgulhosas de quanto ineficiente seu software é, ainda dizendo “porque se preocupar, computadores são rápidos pra caramba”:

@tveastman: Eu tenho um programa em Python que rodo todo dia e ele demora 1.5 segundos. Eu gastei 6 horas reescrevendo em Rust e agora ele roda em 0.006 segundos. Essa melhoria na eficiência significa que eu receberei meu tempo de volta em 41 anos e 24 dias :slight_smile:

Você provavelmente já ouviu o mantra: “O tempo do programador é mais caro que o tempo do computador”. O que isso significa é que estamos desperdiçando computadores em uma escala absurda. Você compraria um carro se ele consumisse 100 litros por 100 quilômetros? e 1000 litros por 100 quilômetros? Estamos fazendo isso com computadores o tempo todo.

Tudo é muito lento

Olhe em volta: Nosso computadores portáteis são milhares de vezes mais poderosos que os que levaram o homem a lua. Mesmo assim, algumas páginas web sofrem para manter um scroll de 60fps no mais moderno Macbook Pro. Eu consigo jogar em alta resolução, assistir videos em 4K porém não consigo rolar uma página web? Como isso é aceitável?

Google Inbox, um web app criado pelo Google, rodando no Chrome também desenvolvido pelo Google, demora 13 segundos para abrir um email de tamanho moderado.

O app também anima caixas vazias ao invés de mostrar o conteúdo do email, porque essa é a única forma de animar coisas na web com uma performance decente. Não, performance decente não significa 60fps, significa “tão rápido quanto uma página web pode ser”. Não posso esperar para ver o que a comunidade web vai dizer quando monitores 120Hz se tornarem comuns. As coisas mal conseguem rodar a 60Hz agora.

Windows 10 demora 30 minutos para atualizar. O que poderia justificar toda essa demora? Todo esse tempo é suficiente para formatar meu Disco SSD, baixar um build do zero e instalar 5 vezes seguidas.

Pavel Fatin: Digitar em um editor é um processo relativamente simples, mesmo computadores 286 eram capazes de fornecer uma experiência decente.

Editores de texto modernos possuem uma latência maior que Emacs com já 42 anos de idade. Editores de texto! o que poderia ser mais simples? Em cada tecla pressionada, tudo que você tem que fazer é atualizar pequenas regiões na tela e parece que editores modernos não conseguem fazer em 16 milissegundos. É muito, muito tempo. Jogos 3D preenchem a tela inteira com milhões de polígonos nos mesmo 16 milissegundos e ainda processa inputs, recalculam o mundo e carregam e descarregam recursos dinamicamente. Como isso é possível?

Como uma modinha global, nós não estamos desenvolvendo software mais rápidos com mais funcionalidades. Nós estamos desenvolvendo hardware mais poderosos que rodam software mais lentos com as mesmas funcionalidades. Tudo funciona muito abaixo da velocidade possível. Já se perguntou porque seu smartphone demora entre 30 e 60 segundos para inicializar? Por que não pode inicializar em 1 segundo? Não existem limitações físicas para justificar isso. Eu adoraria ver os limites serem alcançados e explorados, utilizando toda performance disponível para fazer algo significativo.

Tudo é gigaaaaante

Aplicações web poderiam rodar 10 vezes mais rápido se você simplesmente bloquear as propagandas. Google implora para que todo mundo pare de atirar no próprio pé com sua iniciativa chamada AMP (Accelerated Mobile Pages) - Uma solução tecnológica para um problema que não precisa de nem uma tecnologia, apenas um pouco de senso comum. Se removermos o desnecessário, a web se tornaria incrivelmente rápida. Quão inteligente você precisa ser para entender isso?

O sistema Android sozinho usa mais de 6GB. Apenas pense por um minuto o quanto gigante esse número é. O que tem dentro desse sistema? Filmes em HD? Creio que seja basicamente código: Kernel e drivers. Algumas Strings e recursos também, claro. Porém não pode ser tão grande assim. Quantos drivers você precisa para um smartphone?

O Windows 95 tem 30MB. Hoje temos páginas web mais pesadas que isso! Windows 10 tem 4GB, o que justifica ser 113 vezes maior? Funcionalmente, eles são basicamente o mesmo. Sim, nós temos Cortana, porém eu não acredito que isso justifique os 3970 MB a mais. De qualquer forma, o que o Windows 10 for, o Android realmente precisa ser 150% disso?

O app de teclado do Google consome 150MB. Isso é serio que um app que renderiza 30 teclas na tela é mais complexo que todo o Windows 95? Google app, que é basicamente um pacote incluindo Google Web Search, é 350MB! Google Play Services, o qual eu não uso (Eu não compro livros, música ou vídeos lá) - 300MB que apenas existem lá e que eu não posso deletar.

Depois de tudo isso, eu fico com 1GB para minhas fotos depois que instalo os apps essenciais(mídias sociais, chats, mapas, taxi, bancos e etc). E isso não incluem nem um jogos ou música! Lembra de um tempo que um Sistema Operacional com todos os dados e aplicativos cabiam em um disquete?

Seu app para tarefas é provavelmente escrito em Electron, o qual contém drivers para controle de Xbox 360, pode renderizar gráficos 3D, tocar áudio e tirar fotos com sua camera.

Uma simples aplicação de chat é visivelmente pesada, consumindo muita memória e tempo de carregamento. Sim, você tem que contar o Slack como uma aplicação que consome muitos recursos. Um chat e um simples editor de texto deveriam ser considerados as aplicações mais leves existente no mundo. Bem-vindo a 2018.

Pelo menos funciona, você pode dizer. Bom, maior não significa melhor. Maior significa que alguém perdeu o controle. Maior significa que nós não sabemos o que está acontecendo. Maior significa mais débito em complexidade, em performance e em consistência. Isso não é a norma e não deve se tornar a norma. Aplicativos gigantes deveriam ser um sinal vermelho. Deveriam significar “Fuja o mais rápido que puder”.

Tudo Apodrece

Um smartphone Android com 16GB era perfeitamente funcional 3 anos atrás. Hoje, com a versão 8.1 do Android, esses mesmos smartphones são praticamente inutilizáveis, porque cada app se tornou pelo menos 2 vezes maior sem nenhum motivo aparente. Sem nenhuma funcionalidade nova. Não são mais rápidos ou mais otimizados. Eles não parecem diferente. Eles apenas… aumentam de tamanho?

O iPhone 4S foi lançado com o iOS 5, porém mal consegue rodar o iOS 9. E não é porque o iOS 9 é muito mais superior. São praticamente a mesma coisa. Porém, o novo hardware é mais rápido, então eles fizeram o software mais lento. Não se preocupe, você agora tem novas funcionalidades como… rodar os mesmos apps com a mesma velocidade! Não consigo entender.

iOS 11 deixou de suportar apps em 32-bit. Isso significa que se desenvolvedor não estiver lançando atualizações durante o lançamento do iOS 11 ou se não quiser atualizar um app que está rodando perfeitamente, chances são grandes de você nunca mais ver esse app.

@jckarter: Um programa DOS pode rodar sem nenhuma modificação em praticamente qualquer computador feito desde os anos 80. Um app javascript provavelmente quebrará com a próxima atualização do Chrome.

Páginas web atuais provavelmente não serão compatíveis com nenhum navegador web daqui a 10 anos(Talvez até antes).

“Consome tudo que você tem apenas para se manter no lugar”. Porém, qual o sentido disso? Eu talvez goste de comprar um novo smartphone ou um novo MacBook, porém apenas para poder rodar os mesmos aplicativos que se tornaram devagar?

Eu acho que nós podemos e devemos fazer melhor que isso. Todo mundo está ocupado construindo alguma coisa agora, hoje, raramente para o amanhã. Seria muito legal se tudo isso que construímos durasse mais um pouco.

Pior é Melhor

Ninguém entende nada nesse ponto. Nem querem entender. Nós apenas jogamos coisas feitas pela metade no mercado, esperamos pelo melhor e ainda chamamos isso de “saberia da startup”.

Páginas web pedem para você atualizar se algo sair errado. Quem tem tempo para verificar o que aconteceu?

Todo aplicativo web produz constantemente erros javascript aleatórios, até mesmo em navegadores compatíveis.

A arquitetura página web/banco de dados SQL é feita baseada na premissa (assim espera-se) quem ninguém toque nos dados enquanto você olha na página renderizada.

A maioria dos aplicativos colaborativos implementam “o melhor esforço” e tem vários cenários comuns onde eles perdem dados. Já viu essa mensagem “qual versão manter?”. Eu digo, o nível ficou tão baixo que os usuários ficariam felizes se pelo menos eles tivessem uma mensagem dessas.

E no meu mundo onde um app fala “Eu vou destruir parte de seu trabalho, no entanto você pode escolher que parte perder” isso não é okay.

Linux mata processos por padrão. E ainda assim é o sistema operacional para servidores mais popular.

Todo dispositivo que tenho, falha muitas vezes de um forma ou de outra. Meu monitor Dell precisa de um hard reset de tempos em tempos só porque tem software rodando lá. Airdrop? Você é um sortudo se ele detectar seu dispositivo. Bluetooth? A especificação é tão complexa que a grande parte dos dispositivos não se comunicam entre si e resets periódicos são a melhor forma de consertar.

E eu não estou nem considerando IoT(Internet Of Things). Tudo funciona tão mal que eu não sei nem o que acrescentar aqui.

Eu quero ser orgulhoso do meu trabalho. Quero entregar coisas funcionando, sólidas e estáveis. Para isso, nós precisamos entender o que estamos construindo, de ponta a ponta, e isso é impossível de fazer em sistemas gigantes com engenharia desnecessária.

A bagunça é a mesma na programação

Apenas parece que ninguém está interessado em construir coisas de qualidade, rápidas, eficiente, duradouras. Mesmo quando soluções eficientes tem funcionado por décadas, nós ainda esbarramos nos mesmos problemas: Gerenciamento de pacotes, sistemas de build, compiladores, design de linguagens, IDEs.

Sistemas de build não são mais confiáveis e geralmente precisamos excluir tudo, apesar de toda a informação para invalidação existir lá. Nada nos impede de fazer com que o processo de build seja confiável, previsível e 100% reproduzível. Apenas ninguém pensa que é importante. NPM está na situação de “as vezes funciona” tem alguns anos já.

@przemyslawdabek: Para mim, rm -rf node_modules é um comando indispensável no meu workflow durante desenvolvimento de aplicações Node.js e Javascript.

E tempo de compilação? Ninguém pensa que o compilador funciona por minutos ou até por horas é um problema. O que acontece com “A hora do programador é mais importante”? Quase todos os compiladores, pré e pós-processadores, adicionam muito mais tempo em seu processo de build sem nem uma justificativa.

Você pode esperar que programadores geralmente tomam decisões racionais, ainda assim, as vezes eles fazem totalmente o contrário. Por exemplo, escolhendo usar Hadoop, mesmo quando é mais devagar que rodar a mesma tarefa em um único desktop.

Machine Learning e “AI” transformaram software em “achismos” no tempo em que computadores não são nem confiáveis o suficiente.

@rakhim: Quando um app ou serviço é descrito como “Feito com AI” ou “Baseado em ML”, eu leio “imprevisivo, não confiável e impossível de entender seu comportamento”. Eu tento evitar “AI” porque eu quero que computadores façam exatamente o oposto: “previsível, confiável e que eu possa entender”.

Nós colocamos uma máquina virtual dentro do Linux, e depois colocamos o Docker dentro de máquinas virtuais, simplesmente porque ninguém foi capaz de limpar a bagunça da maioria dos programas, linguagens e o ambiente que isso produz. Nós cobrimos a bagunça com um pano, apenas para não ter que lidar com isso.

“Único binário” ainda é a maior jogada de marketing da linguagem Go, por exemplo. Sem bagunça == sucesso.

E as dependências? Desenvolvedores geralmente adicionam “pacotes completos” para resolver os mais simples dos problemas sem considerar os custos. E essas dependências trazem outras dependências. Você termina com uma árvore que se parece com algo como uma história de terror(gigante e cheia de conflitos) e uma comédia (Não tem motivo para incluí-las, más mesmo assim nós adicionamos).

Programas não podem funcionar por anos sem reiniciar de tempos em tempos. As vezes alguns dias é pedir muito. Coisas aleatórias acontecem e ninguém sabe o porque.

O que é pior, ninguém tem tempo para parar e descobrir o que está acontecendo. Por que se preocupar se você pode comprar a solução? Rode outra instância AWS, reinicie o processo, destrua e restaure o banco de dados. Escreva um watchdog que reiniciará o aplicativo quebrado a cada 20 minutos. Inclua os mesmos recursos várias vezes, gere o zip e envie. Mova rápido e não conserte.

Isso não é engenharia. É Apenas preguiça de programar. Engenharia é entender performance, estrutura e os limites do que você está construindo, profundamente. Combinar coisas escritas de qualquer forma com mais coisas escritas de qualquer forma vai totalmente contra esse princípio. Para progredir, nós precisamos entender o que e porque estamos fazendo.

Nós estamos presos com isso

Então tudo é apenas uma montanha de coisas feitas pela metade por cima de outras coisas escritas de qualquer forma que mal funcionam. E isso fica só crescendo e aumentando a complexidade, diminuindo qualquer chance para mudança.

Para ter um ecossistema saudável, você precisa voltar e revisitar. Você precisa, ocasionalmente, jogar coisas fora e substituir por coisas melhores.

Mas quem tem tempo para isso? Nós não temos visto novos Kernels de sistemas operacionais em 25 anos. São simplesmente muito complexos para simplesmente serem reescritos agora. Navegadores são tão cheios de casos isolados que ninguém nem se atreve a escrever uma engine de layout do zero.

A definição de hoje para progresso é jogar mais lenha na fogueira:

@sahrizv: 2014 - Nós precisamos adaptar #microservices para resolver todos os problemas com monolitos. 2016 - Nós precisamos adotar #docker para resolver todos os nossos problemas com microservices 2018 - Nós precisamos adotar #kubernetes para resolver nossos problemas com docker

Ou reinventar a roda:

@dr_c0d3: 2000: Escrever centenas de linhas de XML para “declarativamente” configurar servlets e EJBs. 2018 - Escrever centenas de linhas de YAML para “declarativamente” configurar seus microservices. Pelo menos XML possuía schemas…

Nós estamos presos com o que temos e ninguém virá nos salvar.

Business não ligam

Bem como os usuários. Eles apenas aprenderam a usar o que nós construímos. Nós (engenheiros) falamos que todo app Android precisa de 350MB? Okay, eles viverão com isso. Nós falamos que não podemos entregar uma rolagem fluida? Okay, eles viverão com um smartphone lento. Nós falamos “Se não funcionar, reset”? Eles irão resetar. Afinal de contas, eles não tem escolha.

Também não existe competição. Todo mundo está construindo algum produto lento, gigante e não confiável. Pulos em qualidade que acontecem raramente trazem uma vantagem competitiva (iPhone/iOS vs outros smartphones, Chrome vs outros navegadores) que força todo mundo a se reagrupar, porém não por muito tempo.

Isso mostra que é a nossa missão como engenheiros de mostrar ao mundo o que é possível com os computadores atuais em termos de performance, confiabilidade, qualidade e usabilidade. Se nós nos preocuparmos, as pessoas irão aprender. E não existem outras pessoas, a não ser nós mesmos, para mostrá-los que isso é possível. Se apenas nos preocuparmos.

Nem tudo está perdido

Existem alguns pontos de esperança indicando que melhorar coisas state-of-the-art não é impossível.

O trabalho que Martin Thompson vem fazendo (LMAX Disruptor, SBE, Aeron) é de se admirar. simples e eficiente.

Xi editor por Ralph Levien parece ser construído com os princípios corretos em mente.

Jonathan Blow tem uma linguagem que ele mesmo desenvolveu para o seu game que compila 500k linhas por segundo em seu laptop. Isso é uma compilação fria, sem cache intermediário e sem build incrementais.

Você não precisa ser um gênio para escrever programas rápidos. Não existe mágica. A única coisa necessária é não escrever seus programas sobre uma pilha de lixo que são muitas dessas ferramentas modernas.

Manifesto para um mundo melhor

Eu quero ver o progresso. Eu quero mudança. Eu quero ver state-of-the-art em engenharia de software melhorar e não só ficar parado no tempo. Eu não quero reinventar a mesma coisa toda vez, geralmente maior e menos performática. Eu quero algo que eu possa acreditar, um propósito válido. Um futuro melhor do que temos hoje e eu quero uma comunidade de engenheiros que compartilham dessa visão.

O que temos hoje não é progresso. Nós mal atingimos os objetivos de negócio usando ferramentas pobres. Nós estamos travados no mesmo local e ninguém quer se mover. Não é nem um lugar legal, é gigante e ineficiente. Nós simplesmente nos acostumamos.

Então eu quero falar em voz alta: Onde estamos hoje é estúpido. Como engenheiros, nós podemos e devemos fazer melhor. Nós podemos ter melhores ferramentas, nós podemos construir apps melhores, mais rápidos, mais previsíveis, mais confiáveis, usando menos recursos(milhares de vezes menos!). Nós precisamos entender profundamente o que estamos fazendo e o porque. Nós precisamos entregar: Segurança, previsibilidade e a melhor qualidade possível. Nós podemos e devemos ter orgulho de nosso trabalho. Não apenas “dar o que temos”.

Eu espero que não esteja sozinho nisso. Eu espero que tenha pessoas ai fora que queiram fazer a mesma coisa. Eu ficaria muito feliz se, pelo menos, nós começarmos a discutir sobre como a situação atual na indústria de software é ruim e depois talvez descobrir como sair desse estado.

https://tonsky.me/blog/disenchantment/pt/

26 Curtidas

Eu acho que muito disso se deve a essa moda de programar e que todo mundo deve ser programador para não ficar sem emprego no futuro.

“programar é o novo falar inglês”

5 Curtidas

Nunca li um texto desse tamanho com tanto prazer na minha vida, quase tive um orgasmo! Até favoritei, porque vou relê-lo diversas vezes depois.

Não sou desenvolvedor (nem sequer sou da área de TI), mas como usuário me sinto muito frustrado com as tendências de desenvolvimento de software. Virou até moda fazer tudo à base de Electron ou tecnologias similares. Até imagino, os computadores daqui a dez anos serão bem mais poderosos que os de hoje (oh, jura?), mas a responsividade será a mesma ou até pior nos modelos mais básicos; digo isso porque me sinto mais responsividade no meu notebook antigo (comprado em 2009 que roda Windows XP) que o meu atual (comprado no final de 2018 que roda Kubuntu/Windows 10), e agora teve essas atualizações da Intel que f****** tudo (sei que é para minha segurança – embora eu não saiba se tais riscos das falhas do Meltdown, Spectre e similares realisticamente afetam o usuário comum –, mas isso reduziu consideravelmente a performance do meu sistema operacional).

O pessoal usa a desculpa de que os computadores estão mais rápidos e com maior capacidade de armazenamento, mas não importa se eu tenho um dispositivo de armazenamento de 1TB, um aplicativo de calculadora que pese 40MB na memória é um tapa na cara!

9 Curtidas

cara eu sinto d+ isso. Eu lembro quando vi meu primeiro HD de 500 gb na vida e eu pensei que ninguém no mundo seria capaz de encher aquilo

2 Curtidas

Eu tinha um SSD de 1 tera, hj em dia tenho HD de 500 gb. Surpreendentemente, eu n consigo entender até hj como consegui ficar com apenas 140 gigas livres naquele SSD.

2 Curtidas

Este texto é exatamente aquilo que eu venho pensando desde que comprei meu primeiro celular android. Eu ficava pensando no tamanho que eram os SO como 95 e 98 comparado ao android 1.5 do meu Motorola Quench. Em 2011 eu costumava usar umas 4 ou 5 redes sociais e tinha instalado o app de todas elas. Com o tempo as atualizaçoes inviabilizaram o uso, acabei por acessá-las pelo navegador. Por fim acabei deixando de usá-las. Em 2005 eu usava o computador do meu tio que tinha win95 e fazia muito com ele. Quando finalmente minha mãe me deu um 'Computador para todos ’ que apesar do baixo hardware, eu “voava” naquela maquina. Até hoje eu falo de todas as coisas que eu fazia com aquele computador como, edição de imagem/video, desenhos, textos, chats, paginas html, ouvia música, assistia desenho e séries e até jogava. Tudo isso com um computador celeron 315 128mb de ram e um hd de 40gb.

Hoje em dia, costumo dizer que passamos a maior parte do tempo scrollando o feed de redes sociais e usando apps que detonam com nossa capacidade de agir com autonomia (pois completam automaticamente com sugestões baseadas no nosso comportamento ou fazem todo o trabalho como edições de imagens pré definidas ou organização de arquivos).

Só pra concluir, acredito que esse modo de produzir inovação através da obsolescência programada, forçando o consumidor a adquirir um produto atualizado porem, que cumpre com os mesmos objetivos da versão anterior apenas para poder continuar na ativa, nos leva ao ponto de refletir se já não está na hora de começarmos a nos excluir digitalmente.

7 Curtidas

Faço minhas as suas palavras.
Estou no “mundo TI” desde meados de 1986, sempre como usuário, curioso, suporte e gestor na área.
E, depois de quase 35 anos, me vejo fazendo as mesmas coisas que fazia no início, com algumas óbvias diferenças, como acesso a Internet. Ainda assim, já naquela época, por volta de 1989, acessava BBS da IBM do meu 486 com OS/2, com modem de 2400bps.
O computador devia ter uns 40Mb de disco e 4 Mb de RAM. E rodava tudo que rodamos hoje (obviamente em suas respectivas versões). Mas ali rodava o sistema operacional, Suite Office, Jogos, música, vídeo!! e hoje, num notebook Dell i7, 8 GB de ram e 256 GB SSD, rodando Linux… nada mudou. Não sinto que tenho o desempenho proporcionalmente superior ao avanço tecnológico :woozy_face:
Texto realmente muito bom!! :clap: :clap: :clap:

8 Curtidas

é triste. Para mim outra coisa inaceitável è incompatibilidade de hardware.

x placa mãe para x processador que usa X memória, podendo trocar apenas para componentes específicos e não fazer upgrades como o usuário bem entender

4 Curtidas

Primeiramente que bela mensagem o post traz, assim como o rasolar comentou: “Nunca li um texto desse tamanho com tanto prazer na minha vida”.

Pois bem… uma das coisas que ceio que também seja um problema na industria e que as pessoas com o tempo foram atrás do mesmo, foi de softwares inúteis por exemplo os tais aceleradores de PC, que tem a proposta como "Iremos diminuir o consumo de sua RAM quando o próprio software esta a usar RAM.
Entre outros muitos exemplos destes softwares inúteis…

3 Curtidas

Podcast lançado hoje (04/02/2020) que aborda alguns pontos do texto:

2 Curtidas

Esse tópico/texto tinha passado batido por mim. Obrigado @rasolar por citar ele no seu outro tópico.

Achei muito interessante as posições do autor. Penso em muitas coisas de forma parecida. No mundo atual, esse cara é uma ilha de racionalidade, muito bom mesmo!

Até gostaria de comentar alguns pontos, mas ficaria um texto igual ou maior que o original. Infelizmente, parte do que o autor falou a gente pode enquadrar em obsolescência programada. Outras eu também, assim como o autor, não entendo. Essa questão das páginas de internet é absurdo. Quem viu o boom da internet, ou seja, quem usa desde a internet discada da vida, é incapaz de entender isso. Não vi, e acho que não vou ver, uma razão razoável para a internet ter ficado absurdamente “gorda”. Enfim, o que é mais interessante, no final das contas, é o autor chamar atenção para pontos que não são mais levados, ou mesmo lembrados, hoje em dia. Como ele mesmo fala ao longo do texto, se fala muito se fala e pouco se explica.

4 Curtidas

por favor faça isso cara

1 Curtida

Na verdade são por dois motivos: 1) porque o texto, de fato, ficaria muito grande; 2) alguns pontos mais técnicos que não tenho capacidade de comentar. E esse é o mais importante. Mas como usuário (e usuário curioso, sempre busquei aprender e entender como as coisas funcionavam) de pc’s desde o Win 95 (embora muito pouco, porque eu era pequeno), embora tenha me dado como usuário mesmo a partir do Win 98, e como usuário de linux a uns 8 ou 10 anos, vi várias coisas que ele falou na prática.

Acho que a frase do @rasolar sintetiza a maior parte da minha experiência ao longo desses anos:

Não sinto que tenho o desempenho proporcionalmente superior ao avanço tecnológico :woozy_face:

Obs: o tópico já tem 5 dias. Achei que esse tema ia rolar muita discussão aqui. Ou o povo não leu tudo, ou concordaram com o autor ou não querem entrar em “polêmica” :yum:

2 Curtidas

Uso internet desde o início dos anos 2000. Ainda me lembro da promessa de uma internet rápida com o fim do Flash, mas ganhamos justamente o contrário!

Faça um teste, coloque uma extensão como uMatrix no seu navegador para você ver quantidade de scripts que tem rodando atrás de cada site. É um absurdo!


É justamente isso que queremos :slight_smile:

2 Curtidas

Geralmente as pessoas tem preguiça de ler textos grandes, me incluo nessa (mas o texto tava tão organizado que li todo) :joy::joy::joy:

Imagina aí se os desenvolvedores otimizassem os softwares como o cara do texto fez

Esse texto me fez refletir sobre algumas coisas:
Por que os softwares não são tão otimizados? Por que usar soluções “genéricas” ao invés de reescrever ou criar novas soluções pra consertar o problema?
Talvez questão de praticidade, tempo, dinheiro, etc… :thinking: :v:

2 Curtidas

Eu até entendo a frustração, e acho a critica totalmente pertinente, eu também já vivi isso, mas se me permite discordar, pelo menos no ponto que me interessa… Antes do século 21 a qualidade de vida do profissional de TI era um ‘desencanto’ também… Versionamento era um saco… Deployment era um saco… Infra era um saco… Etc… Desde que comecei a trabalhar nessa área acho que as coisas melhoraram no somar das coisas.

**Vejam bem, não estou dizendo que o TI finamente se tornou algo ‘limpinho’, mas o que na vida é limpinho ou sequer foi limpinho? Acho até o termo ‘desencanto’ pertinente, muita gente (e eu me incluo aqui) em algum momento vai ter uma ideia não muito boa de se encantar e pensar que lá no local x está estabelecida uma ‘utopia de verdade’ que ela procurava e não encostrava em lugar algum.

1 Curtida

No início dos anos 2000 eu tinha meu site pessoal em html e começou a praga do Flash. Eu tinha conexão discada enquanto as banda larga já se eram populares. Vocês não têm ideia de quanto eu abominei o flash, chegava a me descabelar nas comunidades do orkut para mostrar que uma página em html poderia ser bonita, elegante e leve.

Pois bem, a batalha foi perdida. Uma horda de usuários que achavam que tinham a conexão lenta demais, em vez de boicotar sites pesados. Em certo ponto entendo como as coisas chegam a esse ponto, afinal a economia cresce com o desperdício de recursos (conhecido como crescimento econômico insistentável). Desde aquela época eu já sabia que uma hora iria explodir, e explodiu na época dos smartphones, que tinham recursos limitados e os sites começaram a criar “versões mobile” que na verdade eram o conteúdo menos o lixo. Eu adorava navegar em diversos sites na versão mobile, páginas explodindo na sua cara a cada clique!

Anos depois a potência dos smartphones foi elevada à enésima potência. Rapidamente a cultura das páginas mobiles acabou e se transformou apenas em meta tag viewport. Voltamos à época onde o usuário fica assistindo as bolinhas girando. Em compensação estamos atingindo um ponto de desaceleração do poder de processamento tanto dos computadores quanto dos smartphones. O usuário já gastou seus tostões para comprar um hardware TOP e agora não tem mais como culpar outros senão o próprio programa/página/aplicativo.

Creio que estamos na época correta de buscar a eficiência em programação, pois finalmente o usuário começou a gritar “O rei está nu!”

4 Curtidas

Falando em sites , têm uns que são desnecessariamente pesados. Um que dá para fazer essa comparação é o Reddit, que foi atualizado ano passado ou retrasado, mas pode ser acessado na sua forma antiga. Compare o desempenho do seu navegador na MESMA página em diferentes versões do Reddit:

Outros que são incrivelmente pesados são o Facebook, Instagram e Tecmundo. Percebo isso porque meu computador é básico (porém novo, ele foi comprado em dezembro de 2018). Num mundo ideal era para os sites rodarem bem até num computador de 10 anos atrás.

2 Curtidas

o reddit nem ficou tão melhor assim na minha opinião, só mais pesado

1 Curtida

Enfim, continuando um pouco meu lado “advogado do diabo”, eu sei que tem desenvolvedor das antigas que vai torcer o nariz para algumas coisa, mas…

  1. Docker realmente melhorou e facilitou minha vida, em pouco tempo eu faço deployment em infraestruturas que não tenho acesso nem hardware dedicado para montar.
  2. Frameworks híbridos como ionic idem… Eu pude atender mais demandas de clientes meus em menos tempo e com menos custo… Eles ficaram satisfeitos e os clientes deles também.
  3. Hoje com Python, pandas, numba e numpy uma pessoa faz maravilhas de forma simples e rápida em termos de pesquisa modelagem e analise de dados e no fim já tem quase um produto final.
  4. Git, Ansible, jenkins, etc… Eu adoro estas ferramentas elas fazem muito pelo meu dia a dia e pelas demandas dos meus clientes,

Aceleração de projetos é provavelmente um dos papeis mais importantes da computação.

Honestamente eu não consigo ter essa visão pessimista da área de TI, as pessoas podem fazer mal uso da computação como ferramenta… Mas ficar polindo software e modelos por 4 anos de forma minuciosa com práticas metódicas sem dar uma resposta para problemas como redução de áreas de plantio, desperdício de matéria prima em fabricas e afins hoje não soa como desperdiçar menos.