O Rick Hightower iniciou uma discussão sobre a quantidade excessiva de dependências em projetos Java e que você deve diminuir o uso de bibliotecas externas. Agora o Noah Sloan respondeu com os seus comentários.
O que você acha? Devemos realmente evitar as dependências ou devemos é utilizar ainda mais para garantir o reuso de software?
Pessoalmente aposto na utilização de recursos externos sim.
Pois agiliza muito, abstraindo implementações que muitas vezes até fogem do foco principal do projeto.
E isso aí já entra na questão de que as vezes realmente é melhor desesenvolvermos a nossa própria solução, pois podemos precisar apenas de X e a dependência nos dá o alfabeto completo. Algumas vezes pode deixar a coisa até mais pesada.
Sinceramente gosto de fazer tudo do zero, por que nessas que vou aprimorando o que já sei e aprendendo novas coisas, mas como normalmente trabalhamos sob prazos chatíssimos, então temos mesmo é de aproveitar o trabalho já feito.
Hehe, quase que entrei em contradição com a msg anterior, mas acho que o parágrafo acima me explicou
Verdade realmente estamos gerando muitas depedências, no meu atual projeto já são 28 jars, meu código não tem nem 100KB mas com os jars já fica com 8MB.
[quote=shison]Sinceramente gosto de fazer tudo do zero, por que nessas que vou aprimorando o que já sei e aprendendo novas coisas, mas como normalmente trabalhamos sob prazos chatíssimos, então temos mesmo é de aproveitar o trabalho já feito.[/quote]Isso é legal pra conhecimento próprio mesmo, mas eu já tive chefes que se vissem alguém fazendo algo do zero (mesmo coisa pequena), ao invés de aproveitar algo pronto, era capaz de não só demitir, mas como apertar o eject da sua cadeira pra vc parar no meio da rua instantâneamente. Danem-se as dependências. Pra esses caras se precisar empacotar o Windows XP junto, vai fundo.
É, os chefes querem que vc desenvolva as funcionalidades específicas do sistema, não que vc reinvente a roda.
Só devemos partir para a implementação do zero se for algo realmente pequeno ou se a solução existente não te atender nos pontos necessários. Claro que isso pode variar de projeto para projeto. Se o projeto permite que seja gasto esse tempo, ótimo.
E outra, muitas vezes o código que vc escrever vai ter muitos bugs e não permitir extensões futuras sem alteração massiva de código, ou seja, o que vc implementar muito provavelmente será pior do que o que já existe.
A primeira opção é: “vamos usar o framework X”, e a segunda: “o framework X não atende todas nossas necessidades? Então vamos extender o framework X ou implementar um novo”. Isso fará bem pra vc, seu chefe e seu projeto.
Talvez fosse o caso de os frameworks e bibliotecas em geral serem mais customizáveis no que se refere a podermos usar jars com o mínimo necessário. Pra isso precisamos ter uma boa gerencia de dependencias.
Tô contigo. Não adianta que não vou reinventar nada que já existe por conta de 1mb. Ainda mais que pra manter é muito pior. Só precisando. Gerenciar as jars é o melhor caminho. Elas só poderiam vir num padrão como o do spring (bem divididas).
[quote=MarcioTavares]Isso é legal pra conhecimento próprio mesmo, mas eu já tive chefes que se vissem alguém fazendo algo do zero (mesmo coisa pequena), ao invés de aproveitar algo pronto, era capaz de não só demitir, mas como apertar o eject da sua cadeira pra vc parar no meio da rua instantâneamente. Danem-se as dependências. Pra esses caras se precisar empacotar o Windows XP junto, vai fundo.
[/quote]
Bom senso. Você não vai importar uma biblioteca de 1Mb por causa de um método de validar CPF, por exemplo… E reutilização de código não está relacionado somente com orientação a objetos, ela sempre existiu e é necessária em termos de eficiência. Se o rapaz que comentou dos “chefes” fosse da minha equipe, e insistisse em desenvolver do zero um gerador de relatório, um framework MVC ou de mapeamento objeto-relacional sem uma necessidade muito específica, eu demitiria também.
Isso é uma tendência. Pense bem: quantas vezes você escreveu um sistema que apenas resolve o mesmo problema que resolveu semana passada, só que com umd etalhe diferente?
Esse detalhe diferente é o programar por exceção, hoje em dia as regras de negócio são quase todas programadas do zero, variam muito pouco num mesmo domínio (uma aplicaçãod e Timesheet não difere muito de uma outra) mas provavelmente são iguais em infra-estrutura.
Na verdade segundo o pensamento dos adventistas de DSLs mesmo as exceções serão reduzidas. O que serão os programadores além de analsitas de negócio com domínio de uma DSL específica? Programadores serão aqueles que criam a infra-esturtura.
BTW: Que bom que você voltou a postar, o O’Malley’s não é o mesmo sem comentários ácidos e evangelização do salad fingers \o/