Desde o início de nossa vida no mundo da informática aprendemos que, em muitos momentos desenvolver algo do “zero”, trilhar o caminho com nossos próprios passos, implementar idéias próprias pode ser melhor do que se valer de algum recurso ou implementação disponível no mercado.
Vários motivos podem ser elencados para a tomada desta decisão, dentre eles:
- Redução de complexidade:
- Este motivo deve-se ao fato de que configurações ou recursos adicionais podem ser removidos da implementação conhecendo-se a finalidade e o ambiente de execução;
- Controle dos fluxos críticos da aplicação:
- Escalonar e alocar melhor os recursos do ambiente para as atividades que desempenham um papel mais importante na aplicação;
- Custo (quando falamos de soluções de mercado incluímos as proprietárias):
- Implementar uma solução própria pode fazer com que custos com licenças ou mensalidades sejam reduzidos ou eliminados do orçamento do projeto;
- Documentação fraca ou inexistente:
- Utilizar qualquer produto por mais simples que seja requer um conhecimento prévio ou uma documentação que auxilie que esta o utilizando a extrair o máximo de suas funcionalidades ou recursos;
Estes são alguns dos motivos que podem vir à tona quando a pergunta “Implementar ou utilizar alguma coisa pronta do mercado?” é feita. Um destes motivos já pode servir para justificar ou apoiar a idéia de implementar uma solução que tem por finalidade, a mesma de tantas outras existentes.
Em muitos momentos a decisão de implementar ou utilizar um recurso existente, pode não partir de membros técnicos, pode partir do patrocinador do projeto, ou seja, é uma decisão tomada por um nível acima do nível da equipe que desenvolverá a solução. Portanto não cabe discussão dos motivos citados acima ou não convêm que seja levantada uma bandeira em prol de uma disputa em que já se conhece o desfecho.
O fato que não pode ser negado é de que em muitas situações a decisão de implementar ou utilizar esta nas mãos de quem o fará ou de que o utilizará, e o real motivo para a inclinição a implementar ao invés de utilizar pode estar ligado a um dos destes motivos:
- Redução de complexidade:
- Quando não se sabe manusear algo é fato que o se passa na mente é “Poderia existir algo mais simples!” ou “Deve ter outra coisa que eu saiba utilizar, é não é possível!”. Porém pode-se muito bem saber utilizar alguma solução existente pode-se na verdade não querer adicionar arquivos de configurações ou não querer perder tempo procurando como configurar um ambiente ou dependências de algo que não foi você quem criou ou participou da criação.
- Controle dos fluxos críticos da aplicação;
- Ter maior controle sobre uma implementação é o mesmo de que fabricar o próprio avião para saber como funciona, não precisamos saber em detalhes como funciona, mas sim o que faz. É bem verdade que maior controle e desempenho podem estar ligados, mas quando se fala em performance nunca devemos subestimar a capacidade ou competência de outras implementações.
- Custo;
- Quando o assunte é custo, implementar faz com que deixem de ser necessários contratos de licenças de softwares de terceiros ou mensalidades com aluguel de software. Porém, existem na internet inúmeros projetos com licenças que permitem sua utilização para fins comerciais e sem custos.
- Outro fator que podemos atrelar diretamente ao custo é o tempo de implementação de requisitos que se utilizem de uma implementação própria que pode “não ficar tão boa quanto” uma solução disponível. Um caso prático são bibliotecas de componentes visuais, implementar o sua própria pode atender a suas necessidades porém a enorme quantidade de implementações do tipo disponíveis, torna o tempo de desenvolvimento um custo desnecessário.
- Documentação fraca ou inexistente;
- É fato que, documentar durante ou depois do desenvolvimento é a prática mais comum entre os desenvolvedores. Grandes projetos a um certo tempo no mercado, com certeza terão uma documentação completa, lista de discussões, fóruns de apoio e FAQ’S para que nenhuma dúvida fique sem esclarecimento. O problema não se resume então a não encontrar documentação, mas sim a encontrar a solução disponível com a documentação suficiente.
- Um fator que cabe neste contexto ou até mesmo no item anterior (custos), está a curva de aprendizado na utilização de uma solução implementada frente a uma solução disponível no mercado, com certeza será possível encontrar profissionais no mercado que conheçam de grandes soluções comuns na comunidade de software, porém todo o profissional que entrar em um ambiente os as ferramentas, os frameworks ou outras bibliotecas foram implementadas com certeza necessitará de treinamento e de um tempo maior para atingir o mesmo nível de conhecimento.
Estudando e conhecendo melhor as soluções disponíveis com certeza será possível atender as necessidades da solução que pretende ser desenvolvida, mas acima de tudo conhecer o ambiente e conhecer o alvo da solução é que fará com que a decisão de implementar realmente valha a pena frente a utilizar uma implementação existente.
Implementar tudo do “zero” no processo conhecido como “redesenhar a roda” a fim de garantir seu lugar e espaço para mostrar seu conhecimento no grupo onde está, utilizar uma ferramenta de terceiros obtendo vantagem que não corresponda aos fins da solução que está se desenvolvendo, utilizar uma solução livre por costume ou afinidade excluindo outras possibilidades. Isso é que não se pode em momento algum encerrar o estudo, ou discussão sobre a melhor solução para a situação.
Nenhum comentário:
Postar um comentário