Não reinventar a roda

Quantas vezes você já ouviu ou pensou nessa frase ao começar um novo projeto ou estudo? Durante um bom tempo, segui essa filosofia religiosamente. Sempre que queria aprender algo novo, criava pequenos projetos só para estudar — mas evitava "reinventar a roda".

Foi então que percebi algo importante: nem sempre essa frase é útil quando o seu objetivo é aprender de verdade.

Um exemplo claro: ha um tempo atras, comecei a estudar como browsers funcionam por baixo dos panos. Estava super empolgado, queria entender a fundo. Mas, como sempre ouvi que "não vale a pena reinventar a roda", então para evitar um bom trabalho que iria ter , peguei o electron e uma lib qualquer e pronto um browser simples e funcional.

O problema? Eu não aprendi praticamente nada sobre como um browser realmente funciona. Aprendi, sim, como usar uma lib. Como usar o Electron. Mas esse não era meu objetivo.

Por isso, se você também tem curiosidade genuína por como as coisas funcionam, cuidado com essa frase. Ela faz sentido em contextos de produtividade, mas pode atrapalhar no aprendizado.

Nem sempre o objetivo é entregar algo funcional no menor tempo possível. Às vezes, o valor está justamente em fazer do zero, quebrar a cabeça e entender o processo.

Por isso o conselho que eu dou é, se o seu objetivo e realmente aprender algo e não criar algo o mais rápido possível, quebre a cabeça, reinvente a roda.

Já desenvolvi dois frameworks na minha trajetória. Precisei superar essa barreira conceitual, pois meu objetivo era entender, na prática, como as coisas funcionam. Fiz esse investimento, e não me arrependi: aprendi inúmeras lições valiosas que impulsionaram minha carreira. Muitos que me criticaram ainda não conhecem os bastidores do desenvolvimento. No entanto, não julgo—cada um escolhe o nível de aprofundamento que deseja alcançar. Para mim, essa experiência foi extremamente válida!

uma coisa que vejo desde de a pandemia no LinkedIn principalmente são pessoas com projetos Ctrl + c , ctrl + v. projetos que não tem vida nehuma onde a pessoa para resolver um problema simples utiliza um framework aqui outro ali + uma outra lib , e ganham um relativo reconhecimento, varios comentários apoiando curtidas compartilhamentos , enquanto isso tem muito projeto legal por ai que nunca vamos conhecer porque ninguém fala sobre ou compartilha
Dei uma olhada rápida, mas foi mais que o suficiente, extremamente interessante o seu projeto.

Pedi para a IA gerar uma imagem sobre o que eu penso, ficou uma bosta mas acho que dá para pegar a ideia... e porque "não reinventar a roda" é a maior falácia que existe. Não reinvente o ato rolar. Crie sua própria roda sempre que for útil =)

prompt: make a image with differnt type of wheels make sure each is distinctive

Isso é verdade! Um dos primeiros projetos pessoais que eu fiz, foi basicamente uma cópia de funcionalidades do JQuery e do visual do Material Design, e eu aprendi muito sobre o funcionamento do JavaScript, DOM, frontend no geral.

https://ion-project.github.io/

Brincando assim eu descobrir como um servidor funciona, a ideia era criar uma interface grafica pro bash, então vi que algumas soluções eram em terminais, ou que dependiam da distribuição, de pacotes, etc.. foi então que tiver a ideia de fazer uma interface web, porem dependeria de um servidor, seria trabalhosso montar um servidor web pra criar uma interface! Então pesquisando descobrir o ncat, com uma linha ele faz um servidor, ai tive que tender como funciona os protocolos para trocar informações dados, etc. aprendi a stremar, como funciona carregamento de videos, pedaços de dowload, etc.. Acabou que consigui aprender muito mais por não só querer usar o que tava pronto mas descobrir muita coisa lega! Quem me conhece sabe que gosto de recriar tudo, ou pelo menos entender tudo sobre algo a ponto de entender tudo! E geralemente não gosto de libs, senao as que crio, claro que muitas tem falhas em alguns aspectos, mas cumpre o proposito, hoje consigo montar um servidor facilmente ter acesso a tela do meu pc sem nenhum software de tela ehehe, consigo trafegar dados de maneira segura, usando o que eu criei, e isso fazendo algo que parecia impossivel, acaba-se aprendendo muito mais.. Esse mundo da programação é top demais!!

nessa linha de servidores recentemente comecei a estudar sobre a criação de servidores de alta performance usando somente C , no mundo real duvido muito um dia precisa utilizar isso em algo mas acho legal demais aprender um pouco de "baixo nivel"

Tenho um amigo que sempre brinca quando digo que gosto de construir tudo do zero. Ele costuma dizer que não devemos reinventar a roda. No entanto, para mim, essa prática representa um processo de evolução contínua. Quando se trata de utilizar ou não frameworks prontos para desenvolvimento, prefiro criar meus próprios códigos desde o início. Embora ele insista que não devemos reinventar a roda, vejo isso como uma oportunidade de aprendizado e aprimoramento.​

Meu interesse em desenvolver do zero vai além da simples escolha de ferramentas; trata-se de entender profundamente o funcionamento do código. Ao evitar o uso de bibliotecas ou frameworks de terceiros, posso identificar e resolver problemas com mais facilidade no futuro. Essa abordagem me permite personalizar soluções de acordo com minhas necessidades específicas, garantindo que o código funcione exatamente como imaginei.​

Não me preocupo com a aprovação de outros em relação ao meu estilo de codificação. Todos os projetos que desenvolvo são para uso pessoal, e quando trabalho em projetos para clientes, busco alinhamento com meus métodos de desenvolvimento. O objetivo não é impressionar outros com o código ou as bibliotecas utilizadas, mas sim garantir que a solução funcione de maneira eficaz e eficiente.​

Imagine investir dias em um projeto e, com o tempo, ele parar de funcionar devido à descontinuação de uma biblioteca ou framework que não é mais compatível com as versões atuais dos navegadores. Nesse cenário, seria necessário refazer tudo do zero ou buscar alternativas? Para mim, a verdadeira habilidade de um desenvolvedor está em criar soluções próprias e entender profundamente o código que escreve.

Sinceramente acho que a opinião de "que não devemos reinventar a roda" é um argumento totalmente tosco, porquê sequer é um motivo justificavel ou que faça sentido, quem pensa nisso provavelmente não tem mente aberta
Acho que o ponto não é do prisma do desenvolvimento, e sim do negócio. E claro, cabe ressalvas. Se seu propósito é aprender uma tecnologia, ou como determinado sistema/recurso/ferramenta funciona, essa frase não faz sentido. Mas se você quer entregar algo em produção, em um prazo curto de tempo, ou quer lançar um produto no mercado aí faz todo sentido não reinventar a roda. Pra que vou criar um novo sistema de agendamento, se já tenho o google ou microsoft calendar que posso integrar a minha aplicação e economizar dias ou semanas de desenvolvimento? E preciso disso pra ontem. Agora se você quer saber como fazer seu próprio caledário, para aprender a trabalhar com data e hora, num JS da vida que é pior que desafiar o diabo. Ai vale a pena. Acho que o problema está mais na justufucativa que as vezes criamos, para procrastinar na cara dura, e dizer que nunca fez nada, por que sempre ouviu que não deveria reinventar a roda.

que interessante, recentemente Augusto galego postou um vídeo relacionado ao seu post, inclusive ele explica como um browser funciona.

https://youtu.be/fv_B3FTXwxo?si=_FXCrtIl3meAN10J

também tem outro video sobre reinventar a roda, vou deixar aqui para quem se interessar

https://youtu.be/jTmDcm4b2Cs?si=TD67deFbFMOtCJKx

sim foi por conta desse exato video sobre como um browser funcionava por baixo dos panos que tive a ideia pra fazer esse post , lembro que na época que procurei por conteúdo sobre eu basicamente so achei video gringo e mesmo assim nada como eu queria era mais alguem usando alguma coisa ja pronta so importando e implementando

Reinventar a roda é fundamental para aprender qualquer coisa. É a prática a partir de um conceito conhecido. Fazer uma roda te coloca em vantagem sobre quem apenas vê ou usa uma roda.

Nesse sentido, agora virou modinha criticar quem implementa sua própria Auth. Isso é visto como reinventar a roda porque é mais fácil terceirizar a autenticação para o Google e Microsoft, por exemplo. Há também uma série de empresas SaaS de autenticação/autorização que vendem seus peixes dizendo que ninguém pode se atraver a implantar Auth próprio. Claro, eles querem faturar.

Porém, ao se render a isso, o dev perde a chance de realmente aprender como funciona esse processo que é unipresente em tech (assim como é a roda no setor de transportes). Desenvolver sua infra de Auth te coloca à frente de quem apenas integra e usa serviços de terceiros.

Esse é dos pontos que vou abordar no primeiro vídeo do meu canal. Essa é uma das boas práticas erradas que divulgam por aí.

Claro que se você reinventar a roda e ela for quadrada não é para reinventar mesmo, mas se ninguém reinventasse a roda estíamos usando uma roda de pedra até hoje.

E o Electron é um dos exemplo de reinvenção de roda quadrada :D

Um dos maiores objetivos de reinventar a roda é o aprendizado, geralmente ninguém fala isso. Outro é criar inovação, seja ela qual for, até pequena, até bem específica, mas pode ser por outros motivos, especialmente quando a roda não é adequada e/ou possui falhas que você pode consertar. Tudo é questão de contexto e entregar valor, algum valor, a ser definido, não tem receita de bolo universal.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

Quando vai ser postado o primeiro vídeo?
Estou tentando arrumar tempo. Já tenho tudo mais ou menos preparado, só falta gravar e editar, mas estou aprendendo a fazer isso, então o processo está bem lento, eu erro muito e como quero que fique pra sempre preciso caprichar. Minha nova data é maio, mas já dei outras e não consegui cumprir :D