Executando verificação de segurança...
8

Frameworks javascript são horríveis!?

Eu acho que os principais frameworks javascript do mercado são terríveis.

Eu trabalho a mais de 10 anos como desenvolvedor. Fui back end, Front End e também o tal do FullStack...

Trabalhei com Angular, React e Vue. Trabalhei com muitas outras ferramentas do ecossistema node em empresas nacionais e internacionais de todos os tamanhos e a experiência de desenvolvimento foi terrível em todos os projetos em que atuei.

Sei que pode parecer estranho dizer isso. Mas, é a verdade.

O Angular por exemplo é o mais complicado de todos os frameworks. Tem uma API gigantesca e é muito dogmático.

O React é extremamente pequeno e complicado com os bilhões de bibliotecas que possui.

O Vue ta no mesmo patamar do react. Pequeno e cheio de mágicas.

O pessoal crítica muito JQuery e realmente JQuery tem suas falhas. Mas, não acredito que outros frameworks como os citados acima são perfeitos. Longe disso.

Não vejo o menor sentido em usar frameworks de BigTechs ou coisas com Vue.

Penso que são apenas uma forma de controlar o mercado de tecnologia no que diz respeito a desenvolvimento de software.

Na minha visão, mesmo antes do ES6 mais maduro e estável, os frameworks deixaram de ser necessários para trabalhar com javascript, html e css.

Sei que muitos justificariam que os frameworks ajudam a desenvolver mais rápido, que eles ajudam a não reinventar a roda ou que diminuem a quantidade de código necessário para desenvolver um projeto. Na minha visão e vivência, nada disso é traduzido em benefício real.

Também já vi o argumento da padronização e da disponbilidade de bons desenvolvedores a pronta contratação no mercado. Isso também falha miseravelmente.

O que presenciei nos últimos anos me fez acreditar que são as atitudes das pessoas envolvidas nos projetos ou produtos que tornam mais ágil o desenvolvimento do entregável e não os frameworks ou a arquitetura super moderna e complicada que decidiram implantar.

A verdade é que as empresas de "tecnologia" dizem que são as melhores para se trabalhar e até monstram o hanking do GPTW. Mas, na hora H tornam as pessoas/colaboradores totalmente descartáveis.

As empresas preferem ter peões para movimentar nos seus jogos de xadrez do lucro do que colaboradores reais, coesos, dedicados e verdadeiramente respeitados e valorizados. Nesse cenário, talvez padronizar desenvolvedores com frameworks, faça sentido.

Com a padronização do desenvolvimento front end por frameworks, os programadores tornaram-se apenas ativos, produtos comercializáveis e totalmente descartáveis.

Últimamente estive me perguntando porque não criar meus próprios frameworks.

Eu decidi responder a essa pergunta criando bibliotecas javascript reativas minimalistas ao extremo.

A grande resposta que encontrei ao propagar minhas idéias de implantar essas bibliotecas em projetos reais é que não eram confiáveis e que poderiam ter bugs e falhas de segurança. Ou seja, tudo que existe nos frameworks gigantes de hoje em dia.

Também me disseram que a DX (Development Experience) não seria boa. O que não é verdade. Prova disso Terezzu e LemeJS.

Com essas bibliotecas desenvolvi inumeras POC (provas de conceito) que funcionaram muito bem e que podem ser encontradas nos meus repositórios no github.

Também é possível vê-las em ação nos posts que escrevi aqui no TabNews. Deixo os links no fim dessa leitura.

E já fica aqui meu pedido de desculpas a todos que se sentirem ofendidos com o que eu disse acima. A idéia não é tornar polêmico, mas, compartilhar o que estou percebendo.

Respeito a todos que estão empolgados com os frameworks com os quais trabalham. Minha verdade está longe de ser absoluta.

Mas e você o que acha? comenta aqui por favor e me ajuda a entender mais sobre esse assunto.

Você já criou alguma biblioteca ou teve sucesso em desenvolver e implantar uma biblioteca dentro de um projeto real? Me conta, to super afim de saber e sei que outras pessoas aqui também estão.

Leituras recomendadas

  1. Criando uma arquitetura micro-frontend super fácil

  2. Definindo um bom codestyle com eslint e prettier

  3. Meta-repos e Micro-frontend uma aquitetura melhror que mono-repos

Carregando publicação patrocinada...
4

Cara, primeiramente parabéns pela coragem de expor suas idéias e opiniões tão fortes assim em um fórum, de fato vai de contra-mão com o que a comunidade acaba indo, mas eu gosto de pensar como você, fora da caixa, acho que é assim que as coisas melhoram, não apenas seguindo cegamente pra uma tendência, ainda que estando no jogo, precisamos muitas vezes jogar pra não ficar de fora também, como você já sabe bem.

As dores...

Eu compartilho das mesmas dores que você com relação à complexidade desnecessária trazida pelos frameworks e outras bibliotecas. Eu realmente vejo no dia a dia o quão fácil é fazer as coisas da forma mais tradicional ou nativa, porém também nao acredito que javascript vanilla é a solução.

Isso não é um problema só do front, na vida, tudo usamos ferramentas, fazer sem o apoio das ferramentas é de fato não conseguir ser produtivo e muitas vezes não conseguir nem resolver os problemas, imagina a construção civil, medicina, biologia, etc sem instrumentos. Não é uma questão apenas da nossa área. Não acho que a linguagem tem o papel de resolver todos os problemas, ela pura assim como uma série de api's tem um propósito de servir como base.

Talvez, pra muitos casos trabalhar só com o vanilla seja super suficiente, mas eu tomaria um certo cuidado pra estrapolar pra todos os casos.

Minha visão

Eu acho que a linguagem, as ferramentas, e uma série de bibliotecas já evoluíram muito a ponto de que resolver uma gama muito grande de problemas, então a classe de problemas que necessitam de frameworks é muito menor hoje.

Percebi que trabalhar com o Js puro é sim potencializar o problema de deixar o código mais desorganizado em geral, porque não são todos os devs que tem preocupação ou experiencia pra deixar o código estruturado, o framework ajuda um pouco nessa estrutura inicial, deixar o código com a mesma carinha, mas eu concordo com você isso não é totalmente garantidor de ter um código bem estruturado, mas é um pouco mais estruturado, você ganha um pouco de familiaridade sim se você trabalha com aquele framework, o que com certeza não ajuda muito, se você não trabalha com aquele framework específico.

Complexidade

Existem várias formas de identificarmos complexidade, ainda que seja um conceito subjetivo. A minha visão sobre complexidade tem haver com a estrutura do framework.
Eu gostaria de compartilhar a minha visão com relação ao o que eu considero como complexidade.

Angular

O Angular tem uma complexidade inerente ao framework que é trazer uma série de conceitos back-end que não necessariamente casa com os tipos de problemas que existem no ambito de UI. É como vc usar conceitos MVC em uma aplicação de Jogos, não faz sentido, porque a forma como se abstrai os problemas nesse contexto é diferente.

Vuejs

Tem muito pouca personalidade na minha visão. Ele tem tantas formas diferentes de resolver os problemas que ele traz uma complexidade e falta de padronização que é justamente o que se espera de um framework. Voce pode usar SFC ou pode usar jsx, pode usar orientação à objetos, pode usar a forma funcional, tem os hooks assim como React, então além de ter a sua cara apenas pra fazer as coisas, tem a cara de outros Frameworks, como hooks do React... então fica um frankenstein de conceitos.

React

O react resolve um problema clássico que é, escrever da mesma forma os componentes html no lado do server side, seja gerando estático, seja servindo como SSR, e a mesma estrutura de código ser usada para os problemas client-side.
E isso ao mesmo tempo que resolve um problema, ele gera outro, que é misturar renderização de html estático com a lógica em si.

Então, antes voce separava os conceitos ou interesses, como usar um template engine pra renderizar o front, usando sei lá, Pug, PHP, Erb do Rails, ou qualquer template system, toda a complexidade e coisas com relação a importação de html, imagens, svg's etc ficavam por conta dessa parte. Quando o javascript entrava, ele se preocupa apenas na adição de eventos, na orquestração das mensagens e gerenciamento de estado etc.

Com essa mescla de "concerns", não é incomum vc ver componentes com vários imports nos arquivos de componentes, que fazem parte de renderização e também com relação à lógica, então o componente fica enorme e muitas vezes a saída é mais complexidade, quebrando em mais arquivos.

Além disso, com a biblioteca invadindo a parte de renderização além da lógica, ela te força a usar metaframeworks como Next ou algo do tipo pra poder renderizar no server-side, voce fica preso no JSX e à um servidor node, não é como era antigamente, onde a partir do html já existente, o js fazia sua mágina, o JS é dependente desse html dentro do código, inclusive fazendo com que o bundle fique enorme, porque toda a sua aplicação fica dentro do seu javascript.

Com tudo isso, você perde completamente o valor de pensar em fazer as coisas de forma separada, inclusive pensar em como montar UI systems / Design System de forma apartada fica dificil com esse framework, porque o componente tem que já nascer com o html e css embutido, importado dentro do js. Então cria-se o que a gente chama de Vendor Lock-in.

Se seu time precisa pensar em criar um design system, ele já sai de fábrica acoplado à um framework e só será compatível com aquele framework.

Isso força o Dev a não pensar mais de maneira desacoplada, porque ele foi "ensinado" à pensar de forma acoplada com um framework.

Design systems mais desacoplados, como Bootstrap, Foundation, Material UI, Semantic UI poderiam ser usados como referência na hora de você pensar em criar um design system personalizado e assim poder distribuí-lo para que as equipes pudessem trabalhar em páginas usando qualquer tipo de framework, desde que importando o css base daquele produto.

Considerações finais

Além de tudo isso, desde o início esses frameworks foram responsáveis por trazerem uma visão statefull da aplicação como um todo o que é trazer ainda mais complexidade, através da idéia SPA. E no final, muita complexidade é trazido por conta disso, fazer toda a aplicação estar em memória e trackeado pelo framework, problemas de memory leak porque a página nunca recarrega etc etc...

E sempre foi algo que eu fui meio contra, desde o início, sempre desenvolvi criando páginas estáticas, porque recarregando a tela, vc tira uma série de complexidades que vc não teria, e existem várias técnicas pra fazer a transição das páginas suave.

E na prática a conclusão que se chegou é que ir pra linha de geração de estáticos se tornou sendo o caminho mais inteligente hoje, porém, muitas aplicações foram pra esse caminho sem a menor necessidade e hoje são legados.


Eu compartilho das mesmas dores que você, no final eu também quis contribuir de alguma forma para ao invés de ficar só reclamando e apontando esses problemas, tentar resolver esses problemas e compartilhar com a comunidade, e como vc abriu espaço, compartilho aqui a minha: https://jails-js.org/

No meu caso, eu já usei tanto nas empresas que trabalhei, como também com projetos próprios, ele me serviu inclusive pra defender a idéia de que é possível fazer aplicações complexas sem necessitar necessáriamente de frameworks como o que temos hoje. Nesse projeto eu queria mostrar que é possível ainda ter soluções que geram html, seja server-side, seja estático, usando qualquer tipo de template system e ainda assim poder usar um js mais estruturado para a lógica... Ainda acredito que é mais saudável, separar html, css e js, para poder criar projetos que podem ser consumidos e compartilhados inclusive com outros frameworks.

Valeu!

2

Saimos da trilha certa?

javiani, fico muito grato por ter esse comentário impressionante numa postagem tão simples como a que fiz.

Jails foi uma grande inspiração que me ajudou a desenvolver LemeJS.

LemeJS foi a primeira biblioteca que desenvolvi. Aprendi e sigo aprendendo muito com tudo que vi em Jails e outras bibliotecas como o BemtvJS.

Estou honrado em receber comentários desse calibre nessa postagem que fiz aqui no TabNews.

Não os conheço pessoalmente, mas, admiro o trabalho tando do diogoneves quanto o seu javiane.

Eu realmente acredito que criar software deve ser simples.

Acredito que as ferramentas e tecnologias que usamos não podem ser a pedra no nosso sapato que nos impede de caminhar sem dor e sem mancar.

Acredito que as ferramentas que usamos devem nos ajudar a seguir por um caminho que não nos torture.

Atualmente estou me dedicando a pesquisar, a testar e desenvolver micro-bibliotecas que me ajudem a satisfazer a visão que tenho de simplicidade e progresso.

Todos vocês são parte do que estou construindo e espero em breve compartilhar com todos aqui no TabNews se ficar bom e for proveitoso.

Agradeço a todos vocês da comunidade e ao Filipe Deschamps por me dar a oportunidade de interagir com profissionais tão talentosos como o javiani, diogoneves e guaracy.

Gostaria de pedir um favor a todos vocês também...

Por favor, reflitam sobre essa fagulha que to tentando deixar acesa... será que não estamos complicando tudo ao invés de simplificar?

1

Comecei a estudar desenvolvimento web a mais ou menos 2 anos, ainda não tive a oportunidade de entrar no mercado, mas ano passado me dediquei a aprender react e depois algum framework e concordo com algumas de suas ideias. Definitivamente os principios são mais importantes que a tecnologia em si, já que nessa era em que vivemos as tecnologias são bem voláteis outras surgem enquanto outras desaparecem e são apenas um meio para um fim, mas os principios permanecem.

Aprendi que não programamos para o computador e sim para pessoas, por isso a importancia das boas práticas e escrever um codigo legível e que facilite a manutenção/refatoração. Ainda tenho muito que aprender e entender, me pergunto se realmente tenho que perder tempo aprendendo um framework ao invés de apenas me dedicar a aprender/aplciar outras coisas mais importantes.

Enfim é isso que o mercado pede, o que causa certa ansiedade. No fim temos que saber aprender a aprender. Muito interessante a discussão, achei muito legal, Abraços!

3

Gostei do seu post, espero que aqui no Tabnews tenha mais posts assim.

Discordo totalmente quando você diz que os Frameworks de hoje são terríveis, para mim são ferramentas excelentes já estudei várias React, Angular, Vue, Svelte, Solid, Alpine, Qwik...

elas são apenas uma visão dos seus criadores de como criar aplicações de forma que eles acreditam que é mais simples.

Para mim o problema são os desenvolvedores que ficam refém do framework e não aprende de fato a linguagem, começa a virar Fanboy e se sente ofendido se alguém falar mal.

Desenvolvedor que só aprende coisas voltado para o trabalho e não apenas por achar legal ver coisas novas, sério tem uma infinidade de projetos legais que os “influencers” não falam e se você não está disposto a procurar e brincar só vai ficar sabendo quando todo mundo já estiver usando.

Outra coisas são as empresas que acham que ferramentas de big tech são a verdade suprema, eu adoro o React, mas até hoje me pergunto como ele ganhou essa força monstruosa, e a única coisa que vem em mente é porque tinha a Meta por traz(claro que ele também trouxe coisas novas).

E concordo com você quando você diz que as empresas querem “peões” porque fica mais fácil de contratar e trocar, mas ao mesmo tempo é entendível porque muitas empresas precisam ter seus produtos rodando o mais rápido possível com o mínimo de padronização, por isso vemos vagas para “desenvolvedor React ” e raramente para “desenvolvedor JavaScript”.


Eu criei a minha própria bliblioteca por acreditar que certas coisas estavam faltando ou deveriam ser mais simples e limpas:

https://github.com/diogoneves07/bemtvjs

E durante o processo de desenvolvimento eu me divirto muito.

2

Que incrível seu framework. Achei super interessante!

Dei uma olhada e já tive alguns insights... Muito obrigado.

Amei saber que você criou seu próprio framework, tenho certeza que a jornada foi de muito aprendizado. Show!

Também estou na jornada de construção, criei o Terezzu, DawnJS, o LemeJS e o IARES que está em construção.

Estou explorando uma meneira de criar algo simples que me ajude a aplicar princípios com baixa interferência (Dry, KISS, YAGNI e sempre que possível SOLID).

O que quiz dizer com "empresas precisam ter seus produtos rodando o mais rápido possível com o mínimo de padronização"?

Qual seria o problema dos padrões???

1

Acabei de olhar seus projetos e são muito legais, parabéns!

muitas empresas precisam ter seus produtos rodando o mais rápido possível com o mínimo de padronização, por isso vemos vagas para “desenvolvedor React ” e raramente para “desenvolvedor JavaScript”.

Digo isso em relação a usar um framework, porque mantém a base de código o mais familiar possível para novos desenvolvedores.

2

Penso que para o código parecer familiar o que o programador tem que conhecer a linguagem com a qual quer trabalhar.

Se o programador domina a linguagem de programação, tudo vai parecer familiar. Não precisa de framework para isso.

Penso ainda que justificativas como performance, produtividade, elegância são factoides. Frameworks não trazem esses benefícios para o desenvolvimento do sistema.

Eu penso que benefícios reais são trazidos para o desenvolvimento de software por pesssoas, as convenções adotadas por elas.

Nas empresas nas quais trabalhei, fossem pequenas ou gigantes o código era sempre uma bagunça mesmo usando vue, angular ou react.

Olha que algumas dessas empresas tinham um faturamento trimestral em torno de algo como 200 milhões de reais ou mais.

Onde você trabalha ou trabalhou é muito diferente do que descrevi?

1

Concordo com você.

Acredito que “familiaridade” não foi a palavra certa, mas quando digo que muitas empresas “precisam” usar algum framework é simplesmente pelo fato de que ao usar um ela economiza tempo e hora de programador que são caras principalmente para empresa pequenas, a maioria dos frameworks já implantam muitos dos conceitos e boas práticas aprendidas ao longo dos anos, ou seja os programadores não precisam perder tempo com tomadas de decisões que podem ou não dar certo, é muito melhor escolher um framework testado em batalha que já vem com essas decisões tomadas.

Nas empresas nas quais trabalhei, fossem pequenas ou gigantes o código era sempre uma bagunça mesmo usando vue, angular ou react.

Mesmo ao usar um framework não se pode abrir mão das boa práticas, convenções... o framework é apenas uma camada acima da linguagem, ou seja, devemos continuar seguindo as boas práticas da linguagem junto as do framework

2

Concordo que frameworks são maneiras de reinventar a roda. Afinal, não têm proposta de criar nada, só melhorar o que já existe. No final, tudo transpila pra HTML, CSS e JS puro. Se quiser codar cada linha nesses três apenas, vá em frente.

Os dois maiores benefícios das frameworks são: primeiro, deixar tudo menos verboso (principalmente se for batteries included); segundo, induzir o mínimo de padronização no projeto pra que o programador que revisitar aquele código meses depois consiga entender o que tava passando na cabeça de quem escreveu. Boa sorte conseguindo essa robustez em JS vanilla. Até o React que é só uma lib e tem 0 padronização acaba sendo mais organizado e legível que JS puro e JQuery.

De qualquer modo, não entendi o que você considera bom. Se todas as principais ferramentas que são usadas pelo mundo são ruins pra você, então o que você considera uma stack boa pra projetos grandes e escaláveis?

Além do mais, você só citou frameworks de front. O que usa pro back? E por quê?

1

Querido GheistLychis, primeiro quero agradecer por ter lido essa postagem que escrevi com dedicação e que compartilha minha visão sobre o tópico.

O que eu penso é que a complexidade de desenvolvimento de software precisa diminuir.

Hoje em dia é muito mais doloroso desenvolver software do que há alguns anos.

Penso que as coisas precisam ficar mais fáceis, mas, o contrário tem ocorrido.

Penso que recursos do ES6 combinados ao ESBuild e PNPM por exemplo tornam possível criar microbibliotecas reativas de baixa complexidade facilmente.

Um reator de estado, uma função render e algo como HTM e literal template combinados ao ESBuild, e LiveServer resolveriam o inchasso terrível que os frameworks causam em projetos de médio e grande porte.

Dê uma olhada no repo a seguir e me diz por favor qual sua opinião sobre o minimalismo que essa biblioteca que criei proporciona.

Lembro que ela foi desenvolvida com javascript, possui tipos para typescript e é compatível com o padrão MFE (Micro-Frontend).

TerezzuJS

3

Tem muito "eu acho" e "eu penso". Você poderiam trocar por uma afirmação sem nenhum problema. As grandes empresas querem manter os "clientes" e, facilitam alguma coisinha dificultando outras para manter esse elo mais forte. Vou deixar algum material para dar suporte para quem cai na real.

Se o Carl Sassenrath que é um cara fodão pelo background acha que as coisas estão excessivamente grandes e complexas então elas estão. O artigo Back to Personal Computing de JAN/1997 (há 26 anos) fala sobre o tema. Mais um para não dizer que é a opinião apenas de uma pessoa Simplicity, Please - A Manifesto for Software Development.

Mas é preciso saber definir o que é simples para ter um norte. Aí vem o artigo Definition of Simple para facilitar a vida. Então, a sintaxe tem grande importância na simplicidade da linguagem.

Mas programador parece que é meio masoquista. Aceita a complexidade maior de pontuação (chaves, vírgulas, ponto e vírgula e outras porcarias) que servem apenas para facilitar a vida de quem escreveu o compilador/interpretador. Parece que dá um certo poder. A maioria também não gosta de mudanças. Se sabe JS, quer usar para tudo. JS só é o que é pela venda casada. Tem um navegador, tem JS. Sinceramente eu não acho que escrevendo uma biblioteca mais simples e organizada em JS vá resolver muita coisa.

Tem um tópico aqui Estudando elixir, meu projeto nem tão secreto · KitsuneSemCalda · TabNews. Esperava ver mais comentários mas não tem nada. Só vejo dois motivos. Ou o pessoal já conhece ou o pessoal não se interessa por conhecer. Certamente é o segundo.

Teria inúmeros exemplos para mostrar mais, como citei o Carl no início, vou mostrar um em Red (baseada em Rebol do Carl). Como a comunidade é pequena, o desenvolvimento vai em ritmo de tartaruga (agora ainda está meio caranguejo para corrigir a decisão incorreta no início). Considero Alfa ainda mas é possível fazer um monte de coisas. É possível fazer uma calculadora GUI com 60 LOC? Sim!

calculadora.gif

Screenshot em diversos SOs, código e outras informações em Calculadora (Red + GUI) - o mais difícil é saber quando parar. Na época a versão para Linux ainda não mostrava os botões com o texto centralizado.

Código funcional em 280 caracteres (sem compactação) para caber em um tweet também é possível.

Bem, parar por aqui pois essa história dá um livro e é necessário falar sobre linguagens nascidas na década de 60.

1

Isso que você falou tem muita verdade. Concordo!

Obrigado por compartilhar o que sabe conosco.

Quando quem escreve não é famoso poucas pessoas dão atenção.

Sobre Elixir não posso falar muito porque não conheço bem. Mas, me lembro que foi bastante falada algum tempo atrás por alguns produtores de conteúdo que acompanho.

Eu penso que a questão de sintaxe de fato é muito importante. Mas, acredito que o problema principal não é complexidade da própria linguagem.

Acredito que as pessoas estão gerando muita complexidade em torno das linguagens de desenvolvimento de software criando ferramentas que exigem documentação ainda maiores que a da própria linguagem para apoias o desenvolvimento.

Eu posso estar enganado sobre a forma como tenho visto as coisas acontecendo. Mas, se eu estiver certo, isso precisa parar.

Existem iniciativas que já estão funcionando. Deixei alguns links relacionados abaixo:

  1. https://modern-web.dev/
  2. https://open-wc.org/
  3. https://rocket.modern-web.dev/

Seria muito bom seguir discutindo sobre isso com mais desenvolvedores. Quem sabe encontremos uma solução pensada por várias cabeças.

Você teria alguma sugestão?

1

Incrível guaracy! Muito obrigado pelos links, abriu muito minha mente sobre o assunto. Com certeza visar o valor do produto final antes da tech/arquitetura do código é o melhor pra garantir um projeto simples e eficiente. Mas ainda me parece um tanto vaga a ideia de simplicidade que o Carl tanto defendeu. Ele cita a abstração como um ponto, o que é uma boa prática bem consolidada hoje como ele mesmo disse no artigo de 2001, mas não entendi direito o que quis dizer com o segundo ponto.

Muitas vezes, uma lógica complexa para ser abstrata demanda um código extenso - que poderia ser "simplificado" se aproveitando de recursos da framework ou de uma lib. Até onde podemos dizer que isso é uma boa prática, ou seja, que segue o princípio da simplicidade e não culmina num eventual cenário B do artigo que você referenciou que usa a empresa de carros como exemplo?

Vamos considerar o ponto que o próprio Carl levantou sobre como linguagens como C++ e Java acabam complicando algo que o Rebol faz em uma linha. Se eu implemento como padrão na empresa esgotar todos os recursos das techs que utilizamos em prol de código menos verboso e repetitivo, acabo com códigos complexos que dificultam a manutenção e fazem estagiários e júniores novos serem incapazes de compreender o que lêm. Se eu implemento a desmotivação do uso extensivo de recursos externos à linguagem, acabo com projetos muito maiores do que poderiam ser e que, querendo ou não, não vão se adequar aos padrões do mercado - o que afasta cada vez mais minha empresa dos devs que tenho interesse em contratar.

Essa conversa toda não se resumiria em dois caminhos: complexidade no micro e simplicidade no macro (o que o Carl defendia), ou o inverso (o que parece ser a tendência do mercado)? Não vejo como pode haver simplicidade em ambos sem utilizar dos recursos mais modernos. Afinal, é como eu tinha dito, querendo ou não a internet e o desenvolvimento não são mais os mesmos de 15, 20, 30 anos atrás. As necessidades são outras. Ser de tech significa estar constantemente atualizado. Isso só não precisa significar ser dependente das techs que usa. Acho que é possível sim ser auto suficiente e independente de frameworks sem se tornar um ermitão.

2
Segunda parte (necessidades):

Eu não acredito que as necessidades sejam outras. Basicamente são as mesmas até de 60 anos atás ou mais. Tem um programa escrito em 1958 que estava rodando em 2015 (acredito que ainda está). O MOCAS do DoD dos EEUU. Na época dos mainframes as coisas eram mais backend/frontend. Se o backend funciona não existe necessidades de refazer tudo. Diferente de linguagens atuais (Python, por exemplo, que a versão 3 não executa os programas da versão 2) COBOL continua compilando programas escritos há décadas. Pascal também tem exemplos de programsa escritos na década de 90 que são compilados (tirando dependências de hardware). Hoje as coisas só estão mais rápidas (algumas como internet, processamento). Mas hoje existem processadores com múltiplos núcleos? Erlang trabalhava com isto há quase 40 anos. Segurança? Ada já tem mais de 40 anos. O pessoal fala "Não reinventar a roda". Todo o dia ela é reinventada com um pretexto diferente com as novas linguagens. Kotlin, Dart, Carbon, etc..
Em vez de ermitão, eu chamo de higlander. :D

Primeira parte (simplicidade e abstração):

Vamos considerar a linguagem que o Carl criou (REBOL).

Simplicidade e abstração andam de mãos dadas::

image: load %assets/images/icone.png
dados: load https://cdn.wsform.com/wp-content/uploads/2020/06/industry.csv
empregado: load https://docs.google.com/uc?export=download&id=1hIvdYeBd9NinV7CNcFjWXnBPpImKmYf3

Sem vírgula, parênteses, etc.. O espaço é o delimitador natural (como ler um livro). Simples.

Como abstração, load irá ler e interpretar um conteúdo não interessando o local e o tipo. Nos dois últimos casos, os arquivos serão processados e será criada uma estrutura de dados para a linguagem utilizar diretamente. Apenas como complemento, a barra / é usada para delimitar caminho e também é utilizada em variáveis (não é o termo utilizado por REBOL) como empregado/1/nome.

>> dados: load https://cdn.wsform.com/wp-content/uploads/2020/06/industry.csv
== [["Industry"] ["Accounting/Finance"] ["Advertising/Public Relations"] ["Aerospace/Aviation"] ["Arts/Entertainment/Pub...
>> length? dados
== 44

>> empregado: load https://docs.google.com/uc?export=download&id=1hIvdYeBd9NinV7CNcFjWXnBPpImKmYf3
== [#(
    id: 4051
    name: "manoj"
    email: "[email protected]"
    password: "Test@123"
    about: none
    token: "...
>> length? empregado
== 55

DSL (na linguagem são chamados de dialetos) é outra característica que abstrai e simplifica a programação. REBOL já vem com três grandes dialetos.

  • VID - para a criação de janela e widgets

  • DRAW - para desenho (linhas, circulos, etc.)

  • PARSE - substitui ER com diversas vantagens

Usando Red que é a linguagem que pretende ser a continuação de REBOL, se eu quiser mostrar uma janela com um botão que, quando pressionado mostre uma mensagem:

view [
    title: "titulo"
    button "clique-me" [
        alert "Hello"
    ]
]

Temos apenas os colchetes para delimitar os blocos. Fico me perguntando o motivo de flutter não ter uma sintaxe parecida. O pessoal de Clojure está tentando melhorar a sintaxe de Flutter mas não deverá adotada fora da linguagem.

page: read http://www.tabnews.com.br
rule: [thru <title> copy tit to </title>]
parse page rule
print tit
  • lê o conteúdo da página

  • especifica a regra : posiciona o ponteiro após (thru) a tag <title>, copia o conteúdo para a palavra tit até encontrar a tag </title>

  • parse aplica a regra na variável (poderia ser escrito tudo na mesma linha mas coloquei em page e rule para efeitos de legibilidade)

retorna TabNews: Conteúdos para quem trabalha com Programação e Tecnologia.

Na apresentação sobre JSON, pelo criador Douglas Crockford: The JSON Saga - YouTube, em 22:00 ele diz: "Rebol is a brillant language, and it's a shame it's not more popular, because it deserver to be.". Também não entendo o motivo de REBOL não ser mais popular e ter morrido. Talvez ser muito avançada para 1997?

Ficou meio longo. :D

1

O que é ser um ermitão?

Eremita ou ermitão é um indivíduo que vive em lugar deserto, isolado, geralmente por motivo de penitência, religiosidade, ou simples amor à natureza, e o local de sua morada é chamado de eremitério.

Peguei a definição do termo que usou GheistLycis. Mas, novamente vou ter que discordar.

Minha praia atualmente tem sido javascript e em alguns casos acredito que usar um framework tem seu mérito. Mas, são casos de extrema complexidade.

Só acho realmente válido usar um framework se for extremamente complexo desenvolver uma solução própria.

Acredito que desenvolver uma solução própria reduz a complexidade, almenta a compreensão, maximisa habilidades, melhora muito a produtividade e permite total controle sobre os aspectos relacionados ao desenvolvimento do software.

O que mais tem por ai são bases de códigos enormes e softwares mediocres desenvolvidos com frameworks que não agregaram valor algum durante ou após o desenvolvimento do software.

Esse negócio de que tem que observar do ponto de vista do negócio para então desenvolver uma arquitetura com os frameworks xyz é a maior besteira.

O que eu tenho visto é muita gente escolhendo ferramenta por afinidade.

Tá é todo mundo querendo tirar o corpo fora e procurando um framework para dispejar o sucesso e também o fracasso quando surge.

Acredito que as linguagens e os patterns estão ai e podem facilmente substituir os frameworks.

1

Me pareceu bastante o modo de trabalhar do React só que em MVC. É uma ideia boa. Não sei se já trabalhou com Django, mas ele segue muito essa ideia do minimalismo dentro do MVC. Recomendo, acho que vai gostar.

Você tem razão quando defende que tudo hoje tá ficando "overengenereed". Também me parece que as big techs jogam muito mais valor em cima das frameworks do que elas realmente tem e essa guerra dos frameworks é um grande estardalhaço que vive surfando em ondas de hype. Mas, querendo ou não, fato é que a internet e o desenvolvimento web não são mais os mesmos de 20 anos atrás e codar tudo só com os recursos da linguagem é inviável. Querendo ou não, é muito mais fácil ter uma interface reativa com React. Querendo ou não, é muito mais fácil ter um projeto robusto com Angular.

Eu particularmente sou da opinião de que mesmo que eu não PRECISE fazer X de uma maneira Y, eu vou preferir fazer se for o jeito mais "elegante" ou estiver de acordo com as boas práticas. Mas aí é só uma questão de vieses.

Acho que, independente das opiniões, o maior ensinamento que a gente pode tirar disso tudo é que um dev deve buscar acima de tudo ser auto suficiente e independente de tech/stack, mas saber fazer bom uso delas.

2

Que resposta em GheistLycis!

Aqui no tabnews realmente tem pessoas incríveis com muito a compartilhar. Obrigado por isso.

Conconrdamos quase que totalmente.

Sinto como se fossemos quase que forçados a acreditar que usar algum framework é o correto, o melhor a fazer para desenvolver software.

Depois de viver essa última decada, cada dia mais acredito que o melhor é fazer uso de princípios ao invés de frameworks.

KISS, YAGNI e DRY são princípios interessantes e poderosos sozinhos, mas ainda melhores juntos.

Ao aplicá-los podemos colher benefícios incríveis:

  • Melhorar experiência do usuário.
  • Aumentar a eficiência da equipe ao longo do tempo.
  • Criar uma base de código simples, sustentável e flexível.
  • Evitar código legado sempre que possível.
  • Otimizar o custo de desenvolvimento.
  • Permite melhorar as formas de trabalho e comunicação, e aumentar a qualidade do software e a satisfação da equipe.

Podemos criar soluções elegantes apenas usando esses princípios e algumas ferramentas de apoio simples como ESBuild ou Parcel, Prettier e ESLint.

Abaixo os links de um post interessante a respeito de princípios e das ferramentas citadas. Vale coferir.

2

Parabéns pelo post ToCodando, parabéns novamente pela análise e embasamento, concordo com a maioria de suas considerações.

Sou a favor de um framework principalmente para garantir a continuidade de projetos independente do programador que criou.

Minha experiência em desenvolvimento web vem de 1996, passei por quase tudo até hoje, desenvolvi em inúmeras linguagens, plataformas, frameworks e realmente por ser programador profissional a muitos anos me senti frustrado com os frameworks mas quando passei a liderar desenvolvimento e gerenciar projetos de médio e grande porte os frameworks provaram seu valor.

O mundo corporativo precisa de garantia e estabilidade antes de ter o estado da arte em código e é por isso que os frameworks tem e terão força.

Para escalar o desenvolvimento de software onde programadores profissionais de alto desempenho é algo cada vez mais raro, precisamos de padrão e compartilhamento.

Podemos conseguir isso com os frameworks de programação ou também com ferramentas no conde ou low conde que além de acelerar, garantem a continuidade das aplicações com baixo esforço e baixo custo de manutenção.

Acredito que estamos apenas no começo dessa padronização trazida pelos frameworks.

E toda essa arquitetura é excelente para dar espaço a inteligência e perspicácia de programadores talentosos, aplicando seu conhecimento e energia no core das soluções, agregando valor a solução, deixando de perder tempo com funções básicas e que sem os frameworks teriam que ser reescritas, testadas, refatotadas a cada projeto.

1

Eu achei muito interessante sua resposta e fiquei muito grato por nos doar um pouco do seu tempo para tratarmos de um assunto tão delicado.

Eu preciso fazer algumas perguntas e elas podem ser indelicadas. Então, por favor me perdoe se assim o parecer.

1 - Porque um framework garantiria a continuidade de um projeto em detrimento as pessoas envolvidas?

2 - Não é possível que os frameworks tornem as pessoas que os usam tão incompetentes que essas só são capazes de produzir algo positivo através do uso desses?

3 - Porque gerentes de produtos ou projetos de médio e grande porte tem uma visão tão diferente quanto aos frameworks, mesmo que quando programadores concordaram que os frameworks poderiam ser um pedregulho no sapato da produtividade?

4 - Obrigar programadores a usar frameworks não os desistimula a tentar soluções mais simples, rápidas, coesas e direcionadas?

5 - Hipotéticamente falando... se você lidera um projeto e um de 4 dos desenvolvedores da equipe que você lidera prova com argumentos que é melhor usar javascript vanilla ao invés de react para implementar um módulo da solução em contrução que decisão você toma?

Leve em consideração que o react era peça importante para conquistar um excelente market share.

6 - Tenho visto o mundo se transformando radicalmente na última década.
Vi empresas gigantes desaparecerem completamente. Vi tecnologias, nascerem e morrerem.

6.1 - Porque as pessoas acham que alguma tecnologia oferece algum tipo de garantia de estabilidade?

6.2 - Não é verdade que a última coisa que a tecnologia faz é oferecer algum tipo de garantia?

6.3 - Não é verdade que as tecnologias sempre foram voláteis mesmo quando juram o contrário?

6.4 - O que garante que um framework é menos volátil que uma linguagem de programação? Pensar algo assim não poderia ser considerado irracional?

7 - Será que você mudou sua opnião sobre os frameworks por não os utilizar mais? Será que é como diz o ditado "Pimenta nos olhos dos outros é refresco"?

8 - Será que todos nós colegas de profissões relacionadas ao desenvolvimento de software não estamos apenas envolvidos numa forte manipulação promovida pelas tais bigTechs?

9 - Hoje em dia quem sugere uma solução própria dentro de um projeto de software é quase estigmatizado como louco. Porque na sua opnião isso é tão comum? O pensamento no desenvolvimento de software deve ser realmente um padrão homogênio?

10 - Você poderia me perdoar por usar usar sua vasta experiência e longa jornada para compartilhar com todos aqui no TabNews perguntas tão complicadas e importantes?

Novamente sou muito grato por sua dedicação.

1
1

Você já teve alguma dificuldade no desenvolvimento que te forçou a fazer pesquisas e mais pesquisas, mesmo sabendo, que havia uma solução nativa disponível, mas que não podia ser usada porque o framework pregava outra forma de fazer?

1
1

Eu penso que em termos de organização o Angular é muito mais organizado. Mas, gosto menos do angular por ser muito burocrático e por ter uma API dogmática super extensa...

Com react me sinto mais livre. Mas, sinto a necessidade de tomar precauções mais firmes por conta própria para evitar o espaguete. Mas, eu gosto disso, gosto de poder decidir.

A grande verdade é que prefiro Vanilla.. Escrever javascript puro o criar uma pequena biblioteca para resolver a situação é o que eu mais gosto.

1

Programo desde 2005.Vi a ascenção e a morte de muitos frameworks e até de algumas tecnologias. NUNCA usei frameworks JavaScript. Concentrei-me nos conceitos e na linguagem. Estou vivo até hoje.

1

Eu andei olhando comentários em outros posts no TabNews e entendi que você atua com SAAS. Poderia compartilhar conosco como foi sua tragetório e dicas de como começar?

Eu por exemplo até recentemente estava atuando numa empresa do ramo farmaceutico como desenvolver front end.

Eu to meio que de saco cheio de trabalhar para os outros, já são 10 anos trabalhando com esses frameworks que criar muito mais dificuldades do que ajudam.

Eu gostaria de poder escolher as ferramentas que quero usar e desenvolver software de qualidade. Mais que isso, gostaria de criar um negócio provido por mais de uma fonte de renda.

Me pareceu que você já fez isso. Se entendi bem, pode me ajudar e aos demais aqui nos dando umas dicas?

2

Meu amigo, é um prazer compartilhar. Aqui segue um resumo da minha trajetória até poucos meses atrás.

https://gaido.dev/app/blog/post.php?hash=zhiOdjVR-ky

Em sequência à cronologia do post, eu me demiti dos Correios após 18 anos e sigo com minha empresa, criada com outros dois sócios.

É simplesmente libertador. Não foi fácil abrir mão de um emprego estável, mas é definitivamente o que eu queria. É muito bom ter controle sobre todo o processo de desenvolvimento, cada detalhe, sem pedir bênçãos a departamentos que muitas vezes existem apenas para atrapalhar.

Adicionalmente, deixar de vender seu tempo de vida em troca de uma ração é maravilhoso.

Não é fácil, mas é preciso começar de algum ponto se realmente quer isso.