Desenvolvendo roda reinventando tendências em uma habilidade em oposição a relutantemente aprendendo habilidades de encontrar rodas? [duplicado]

4

Eu sou mais um reinventor de roda de alto nível . Eu definitivamente prefiro usar os recursos de API existentes em uma linguagem e estruturas populares de terceiros que eu sei que podem resolver o problema, no entanto, quando eu tenho um problema específico que eu sinto capaz de resolver dentro de um tempo razoável eu sou muito relutante em encontrar a solução de outra pessoa .

Here are a few reasons why I reinvent:

  1. It takes time to learn a new API
  2. API restrictions might exist that I don't know about
  3. Avoiding re-work of unfamiliar code

Estou em conflito entre fazer o que sei e mudar para uma nova técnica com a qual não me sinto confortável.

Por um lado, sinto vontade de seguir meus instintos e me sair realmente bem em resolver problemas, especialmente aqueles com os quais jamais me desafiaria se tudo o que fizesse fosse tentar encontrar respostas. E, por outro lado, sinto que posso estar perdendo habilidades importantes, como economizar tempo, encontrando a estrutura correta e expandindo meu conhecimento, aprendendo a usar um novo framework.

Acho que minha pergunta se resume a isso:

Minha atitude atual é manter a API e as APIs integradas que conheço bem * e não gastar meu tempo pesquisando o github em busca de uma solução para um problema que sei que posso resolver em um período de tempo razoável. É um equilíbrio razoável para um programador de sucesso?

* Obviamente, ainda procurarei novos frameworks que economizem tempo e resolvam / simplifiquem problemas difíceis.

    
por Korey Hinton 03.06.2013 / 20:04
fonte

2 respostas

17

Bibliotecas externas são, em certo sentido, uma forma de YAGNI . Você não vai precisar deles, até e a menos que você realmente faça.

Aqui está o porquê. Cada biblioteca amplamente usada é projetada para satisfazer uma ampla gama de necessidades de programadores. É generalizado, em outras palavras. Essa generalização adiciona muita complexidade interna e uma curva de aprendizado.

Amenosqueanaturezadoseuproblemajustifiqueessacomplexidadeecurvadeaprendizadoadicionais,émelhorescreverasoluçãovocêmesmo,porquevocêteráummelhorajusteparaseuaplicativo,menoscódigonogerale,emmuitoscasos,melhordesempenho./p>

Naturalmente,existemtodosostiposdeexceçõesaessaregra.Sevocêencontrarumaúnicaaulaláforacomumalicença"faça o que quiser com ela" que solucione perfeitamente o seu problema, você seria tolo em escrever isso sozinho. Se você precisa de uma estrutura que permita escrever aplicativos da Web leves com excelente controle sobre marcação, uma estrutura organizacional limpa e uma filosofia de "sair do caminho", seria tolice reinventar o MVC.

Para colocá-lo trivialmente, você não precisa de uma biblioteca de matemática de 100.000 linhas para resolver 2 + 2. Mas você pode, se você estiver fazendo uma análise estatística extensa. Nem você precisaria necessariamente de uma furadeira elétrica com um bit Phillips se você estivesse tirando a placa do carro (mesmo que isso provavelmente funcionasse). Use a ferramenta mais adequada para o trabalho.

    
por 03.06.2013 / 20:23
fonte
7

Na próxima vez que você for dar uma volta, tente contar todas as diferentes implementações que você vê no conceito wheel . O fato de que algum homem das cavernas há muito tempo inventou a roda não faz as pessoas criarem novas versões de rodas para vários propósitos o tempo todo. No mundo da programação, bibliotecas e frameworks não são como o conceito wheel , eles são como implementações wheel . Na linguagem de programação, wheel é um padrão de design.

Então não, claro que não há nada de errado em criar suas próprias ferramentas, bibliotecas, frameworks, o que for. Essa pode ser a abordagem mais conveniente e você tem certeza de obter exatamente o que deseja.

Por outro lado, você deve realmente superar sua relutância em usar coisas que outras pessoas escreveram. Reutilizar o código geralmente é melhor do que escrever o seu próprio porque você obtém uma ferramenta que já foi escrita, testada, depurada e melhorada, e tudo que você precisa fazer para usá-la é aprender um pouco sobre sua interface. Isso pode economizar muito tempo e dinheiro. Nem sempre é a escolha certa, mas não é uma que você deva rejeitar automaticamente.

Se um conjunto de rodas de estoque se encaixar no veículo que você está construindo, usinar um conjunto de rodas personalizadas e fabricar seus próprios pneus é muitas vezes um exagero. Mas se as rodas de estoque não couberem, ou custarem muito, ou não funcionarem corretamente, construir a sua própria pode ser a melhor opção.

    
por 03.06.2013 / 21:06
fonte