Este final de semana estava procurando na internet sobre as recentes técnicas e frameworks JAVA/AJAX para justificar que um projeto meu, que eu gostaria que virasse um padrão de mercado, precisa ir pro vinagre já que apenas está reinventado a roda. Porém me deparei com um monte de gente postando blogs e artigos na internet contra pessoas como eu, que procuram alternativas melhores para os problemas conhecidos, já que estamos simplesmente “reinventado a roda”. E sabe o que eu fiz? - Busquei 10 motivos para continuar o meu projeto, segue:
10 motivos para você reinventar a roda:
Karl Benz reinventou o automóvel em 1885, com o motor de 4 tempos a gasolina;
Henry Ford reinventou novamente o automóvel em 1908 com o Ford modelo T;
Enzo Ferrari fez o seu primeiro automóvel (125S) em 1947, reinventando a roda novamente;
Bill Gates e Paul Allen fundaram a Microsoft em 1975 reinventado a roda da computação e fizeram o interpretador do BASIC;
A SUN em 1995 anunciou o JAVA b[/b], reinventado a roda e fazendo mais uma linguagem de programação;[/b]
A Microsoft em 2001 anunciou o C#, copiado do JAVA, reinventando a roda e fazendo mais uma linguagem de programação;
Linus Torvalds em 1991 reinventou a roda, e a partir do MINIX (que reinventou a roda também), começou o desenvolvimento do Linux, que reinventou a roda dos sistemas operacionais;
Alexander Fleming em 1929 descobriu a penicilina e até hoje antibióticos são reinventados todos os dias;
USB reinventou a forma de conexão dos periféricos do PC, que antes eram parelelos ou seriais;
Em 1899 Charles H. Duell, encarregado do escritório de patente dos EUA (U.S. Office of Patents), disse: “Tudo o que podia ser inventado já o foi”.
Fontes: (Internet/Google/Wikipedia)
Saiba que a roda é reinventada o tempo todo e se alguém o desencorajar de fazer algo em que você é capaz, acredite no seu sonho e reinvente a roda você também!
Dicas para reinventar a roda:
a) Seja disciplinado e foque objetivos no seu projeto;
b) Faça por partes, não queria a versão final na primeira release;
b) Faça com que o seu projeto entregue valor para alguém;
c) Procure fazer o seu melhor!
E faça parte da história e das pessoas que tiveram coragem de superar seus limites e desafios !!!
Sou um cara que gosta de desenvolver coisas do Zero, no serviço até uso varias frameworks, mas quando é algo meu, tento fazer completamente meu.
Mesmo que não for para revolucionar, ao menos estou aprendendo.
No meu ponto de vista, varios programadores java são meros usuarios de framewoks.
acredito que vocÊ tenha se espressado mau… ao menos em usar a palavra “sempre”…
outra coisa questionavel sobre isso que você disse na minha “opinião”, é que se vc esta querendo criar uma metodologia “nova”, beleza, esta certo começar ela do zero, até por que ela ainda não foi criada, é “nova”… reinventar a roda se encaixa em refazer do zero uma coisa que “ja esteja feita”,… se você esta criando algo novo não esta reinventando a roda…
Você está distorcendo a história a seu favor. Se quiser motivos para continuar o seu desenvolvimento deve buscar no contexto em que seu sistema irá atuar.
Quando reclamamos de reinvenção da roda, estamos falando de fazer mais do mesmo. Qualquer adição de funcionalidades ou a implementação de novos conceitos são bem vindas em qualquer área do mercado.
Fazer melhor não seria evoluir, evoluir = reinventar?
[quote]Reinventar a roda é uma frase que significa que uma técnica ou solução aceite na generalidade é ignorada a favor de uma solução ou técnica inventada localmente apenas para um propósito específico. Reinventar a roda é duplicar um método básico que já foi há muito aceite e considerado comum.
A inspiração para esta metáfora idiomática reside no facto de a roda ser o arquétipo da ingenuidade humana, tanto em virtude do poder e flexibilidade que permite aos indivíduos que a usam, como pela influência que teve ao longo de toda a História e que continua a ter em quase toda (se não mesmo toda) a tecnologia moderna. Não se considerando ter falhas operacionais, uma tentativa de a reinventar não faria qualquer sentido e não traria qualquer valor acrescentado ao objecto, antes acarretando uma perda de tempo ao desviar recursos de investigação de outros tópicos possivelmente mais merecedores.
Ao mesmo tempo, no entanto, reinventar a roda constitui uma ferramenta importante no ensino de ideias complexas. Em vez de, simplesmente, fornecer aos estudantes uma lista de factos e técnicas conhecidas, esperando que aqueles incorporem tais ideias perfeita e rápidamente, o instrutor/professor deverá “construir” o conhecimento de raiz, estimulando o aluno no sentido de trabalhar cada um dos passos elementares que incorporam as características de raciocício do campo em questão.
O duplo significado desta frase poderá emprestar-lhe um certo tom irónico mesmo quando não usada com esse sentido, especialmente quando a pessoa a usa de forma reflexa, possivelmente para indicar que a sua actividade poderá ser entendida como uma mera reinvenção da roda, mas que possui, na verdade, valor adicional.
Mas ao meu ver ninguem que vc citou ai em cima reinvendou a roda.
A Sun, pego o C, e o C++ e aperfeiçou, a M$ bom, essa reinventou a roda copiando do Java, mas isso é outra história, e não vamos causar flames correto :).
Aperfeiçoar coisas que existem, isso sim fazemos o tempo todo, reinventar a roda, ao meu ver é perca de tempo, pense quando tempo vc perde reescrevendo algo que já foi escrito, já existe e todo mundo usa? Você vai criar seu ORM pq se usar o Hibernate, não vai estar reinventando a roda? Vai criar sua propria implementação do JDBC para conectar com o Banco de Dados, por que vc deve SEMPRE reinventar a roda?
Esses dois exemplo já é o suficiente para repensar esse seu titulo.
Não digo que reinventar a roda não é uma coisa boa, mas acredito que em raras as opções, devemos fazer isso. se todo mundo reinventasse imagine a salada que seria hoje, ferramentas como Hibernate, nunca seriam tao utilizadas assim.
Ao meu ver o ideal seria, Melhore a Roda SEMPRE, Reinvente as vezes.
maior_abandonado, não estou equivocado, Os caras que fizeram o JSF, conforme sua opinião não deveriam prosperar já que o Struts e/ou JSP já faziam isso com certa maturidade. Podem ter aproveitado o conceito, algumas interfaces, e até mesmo o estilo, mas reinventaram a roda.
Outro exemplo peculiar é que estamos perdendo terreno para o C# (não entrem no mérito), e o C# reinventou a roda já que o JAVA poderia fazer tudo e melhor que ele…
[quote=dbht]maior_abandonado, não estou equivocado, Os caras que fizeram o JSF, conforme sua opinião não deveriam prosperar já que o Struts e/ou JSP já faziam isso com certa maturidade. Podem ter aproveitado o conceito, algumas interfaces, e até mesmo o estilo, mas reinventaram a roda.
Outro exemplo peculiar é que estamos perdendo terreno para o C# (não entrem no mérito), e o C# reinventou a roda já que o JAVA poderia fazer tudo e melhor que ele…
[/quote]
JSF é uma versão aprimorada do Struts, usaram conceitos de Struts e JSP, então não reinventaram a roda, só a melhroram.
Hellmanss, não me perdi não, esta citação é clássica e prova que pessoas como Charles H. Duell, estavam equivocados quanto aos fenômenos criativos que sempre reinventam algo. Concordo que muitas vezes melhoramos, que é o caso do carro, que melhorou a carroça, onde o foguete espacial melhorou o avião. Quem sabe um dia o tele-transporte da ficção da Jornada nas Estrelas seja discutido em 2909 por caras que acreditam que ele foi reinvenção da roda vs. evolução da roda.
O ponto principal é: Nunca deixem que o desmotivem por mais que pareça reinvenção da roda. Se o seu projeto agrega valor não importa como, melhorando ou reinventado, você não pode desistir de continuar…
Cansei de frases como: “Páre de reinventar a roda” ou " o ótimo é inimigo do bom", e por ai vai…
Felagund, eu também acredito nisso, mas tenho certeza que quando os caras começaram o desenvolvimento, alguém disso: - “Párem de reinvetar a roda”, tudo isso dá pra fazer com taglib e muito suor no JSP.
O problema é essa frase maldita que mata no ninho muitos projetos por ai…
[quote=dbht]Felagund, eu também acredito nisso, mas tenho certeza que quando os caras começaram o desenvolvimento, alguém disso: - “Párem de reinvetar a roda”, tudo isso dá pra fazer com taglib e muito suor no JSP.
O problema é essa frase maldita que mata no ninho muitos projetos por ai…[/quote]
Agora sim concordo com vc, nesse ponto, mas acredito que o ideal é avaliar até quando vale a pena reinventar a roda, provavelmente o pessoal que fez o JSF, eles resolveram continuar por que estavam cansados de sofrer crianado TagLibs toda a vez. Criamos aqui no serviço uma biblioteca de utilitarios, e podemos utilizar em N programas. Reaproveitando ehhehe.
[quote=dbht]maior_abandonado, não estou equivocado, Os caras que fizeram o JSF, conforme sua opinião não deveriam prosperar já que o Struts e/ou JSP já faziam isso com certa maturidade. Podem ter aproveitado o conceito, algumas interfaces, e até mesmo o estilo, mas reinventaram a roda.
Outro exemplo peculiar é que estamos perdendo terreno para o C# (não entrem no mérito), e o C# reinventou a roda já que o JAVA poderia fazer tudo e melhor que ele…
[/quote]
bom, esse comentario ja foi respondido pelo Felagund, não conheço struts, mais pegando pelo exemplo que você deu, posso reafirmar uma cosia que eu ja tinha dito, o que eu ao menos intendo por “reinventar a roda”, seria fazer algo que ja existe, seu exemplo em contrapartida não se encaixa por que jsf não é igual ao struts, pode até ter coisas semelhantes, pode usar o mesmo conceito de MVC, mais não é igual, de modo que não foi reinventada a roda. Não vo ficar pesquisando sobre todos os exemplos que você deu, mais ao que pareceu, você citou pessoas que “melhoraram” algo, como se elas tivessem realmente criado algo que ja existisse, o que não foi exatamente o que aconteceu…
talvez o modo de enchergar as cosias seja diferente no meu ponto de vista e no seu, eu respeito o seu, mais discordo que os exemplos que você deu (inclusive o de você criar uma nova metodologia) se encaixem em reinventar a roda… (criar algo do 0 não significa necessariamente reinventar a roda, apenas se esse algo “ja exista”, e do jeito que você esta criando)
Felagund, perfeita a sua iniciativa de criar uma lib e reaproveitar em N programas. OO é isso ai… Só que olha só: Se você procurar na net por discussões do tipo “framework caseiro vs. framework de mercado”, você só vai encontrar críticas sobre fazer um framework caseiro ou arquitetura de referência. Motivo: “Você estará reinventando a roda”…, logo se vc cria um conjunto de componentes e cria uma certa implementação sua para usar nos seus sistemas (talvez seja necessário criar um mecanismo de DAO automatico, e não usar Hibernate - isso acontece o tempo todo, não existe pedra filosofal), você será crucificado por “reinventar a roda”…
É por isso que estou aqui dizendo tudo isso: Reinvente a roda sempre, mas:
a) Seja disciplinado e foque objetivos no seu projeto;
b) Faça por partes, não queria a versão final na primeira release; b) Faça com que o seu projeto entregue valor para alguém;
c) Procure fazer o seu melhor!
[quote=dbht]Felagund, perfeita a sua iniciativa de criar uma lib e reaproveitar em N programas. OO é isso ai… Só que olha só: Se você procurar na net por discussões do tipo “framework caseiro vs. framework de mercado”, você só vai encontrar críticas sobre fazer um framework caseiro ou arquitetura de referência. Motivo: “Você estará reinventando a roda”…, logo se vc cria um conjunto de componentes e cria uma certa implementação sua para usar nos seus sistemas (talvez seja necessário criar um mecanismo de DAO automatico, e não usar Hibernate - isso acontece o tempo todo, não existe pedra filosofal), você será crucificado por “reinventar a roda”…
É por isso que estou aqui dizendo tudo isso: Reinvente a roda sempre, mas:
a) Seja disciplinado e foque objetivos no seu projeto;
b) Faça por partes, não queria a versão final na primeira release; b) Faça com que o seu projeto entregue valor para alguém;
c) Procure fazer o seu melhor!
[/quote]
Mais ai que está, as validações dessas classes são feitas pelo BrazilUtils, não por mim, ou seja não reinventei a roda, utilizo algo que já foi feito para isso.
Mas o que eu questiono o seu topico é o SEMPRE, não a questão de reinventar a roda
Reinventar a roda é necessário sim, seja por estudo ou porque a roda que já existe não atende tão bem tuas necessidades ou você acha que precisa fazer melhor.
Um exemplo foi quanto ao plugin para integração entre Spring e o Vraptor. Ele faz o wired pelo nome completo da classe, porém minha necessidade era wire by class. Então criei um plugin baseado no original que fizesse o wired por classe, e assim evitei em ter que definir o nome em cada bean.
Não gosto do digester. Então para teste resolvi reescrever a factory do tiles para usar JAXB ao invés do digester. Resultado: ficou mais rápido e ainda pude remover mais uma lib do meu classpath.
Um outro exemplo foi o Google Collections. Lá no FAQ eles até comentam “mas porque uma nova lib se temos o commons-collections”, então eles justificam que o commons collections é desenvolvimento para Java 4, além de outros fatores. Ou seja, havia a necessidade de uma reinvenção da roda.