Comprar pronto, desenvolver internamente ou desenvolver externamente?
Parte 2 – Metodologia para compra de software
Parte 3 – Requisitos para compra de softwareParte 4 – Conclusão
Comprar software é um grande tabu! Não estou falando obviamente de software de prateleira, estou falando em grandes aplicações para uso corporativo. Para quem pensa que basta dar um giro na Internet e dar meia dúzia de telefonemas, não se engane. A escolha da melhor opção pode demorar mais de um ano, envolver consultoria especializada e movimentar uma grande equipe interna.
Longe de ser um especialista nesta área, seja academicamente, ou profissionalmente, o fato é que acompanhei alguns processos de aquisição de softwares e procurei fazê-lo da melhor forma possível. Gostaria aqui de discutir algumas idéias que hoje me fazem sentido.
A primeira questão ao comprar um software é pensar se você quer realmente comprar algo “pronto”, contratar uma empresa que faça o desenvolvimento a partir do zero sob medida ou desenvolver o software você mesmo com uma equipe interna. E uma decisão deste tipo pode parecer óbvia, mas é muito delicada. Envolve o modelo de TI da empresa. Sempre que se deseja implantar ou substituir um grande sistema corporativo, este tipo de questionamento deve ser refeito e analisado com cuidado. Com o passar do tempo, as respostas dentro de uma mesma organização podem mudar significativamente.
A primeira coisa que eu quero dizer é que esta decisão envolve basicamente 5 aspectos:
- Custo de implantação: Quanto custa em termos de horas-homem da sua equipe atual (não apenas de TI), e de contratação de consultoria, desenvolvimento, migração, integração e eventualmente de aquisição de licença de uso.
- Custo de manutenção: Quanto custa gerenciar um contrato, diagnóstico de problemas, contratos de manutenção, prejuízos causados pelo atraso na correção de um erro ou na implementação de uma nova funcionalidade.
- Tempo de implantação: Quanto tempo demora para colocar as principais funcionalidades no ar, adaptar o software para a realidade da empresa, implementar funcionalidades adicionais e integrar o sistemas com outros já existentes.
- Risco de implantação: Qual é o risco de se investir numa aplicação que pode não ser entregue dentro do prazo ou mesmo não conseguir suportar o seu volume de negócios ou atender a sua complexidade?
- Risco de manutenção: Qual é o risco de você ficar dependente de uma equipe ou empresa que detenha todo o conhecimento sobre o software. Qual o risco destes agentes decidirem por não mais prestarem serviços neste software ou oferecerem serviços aquém do esperado tempos depois da implantação?
Não existem respostas prontas. Cada opção traz respostas melhores ou piores em cada um dos itens que variam de intensidade conforme a configuração da sua empresa.
Antes de passar em vista como o tipo de abordagem escolhida (comprar um pacote, desenvolver fora ou desenvolver localmente) afeta estas 5 variáveis é preciso fazer um esforço de diagnosticar a sua situação atual:
- Já existe uma equipe de desenvolvimento local com uma boa cultura de desenvolvimento? Existem bons profissionais com conhecimento em linguagem de programação, modelagem de dados, análise de regra de negócios e gestão de projetos? Estes profissionais estão satisfeitos, estão bem preparados? Existe uma metodologia de desenvolvimento interna? As pessoas estão acostumadas a documentar seus sistemas, projetar antes de codar, fazer controle de versão, bug tracking, etc? Existe um framework de desenvolvimento homologado internamente? As pessoas possuem conhecimentos sobre métricas de desenvolvimento como a quantificação de pontos de função?
- As áreas envolvidas pelo novo sistema estão diretamente envolvidas no processo? Como é o relacionamento e confiança destas pessoas em relação a equipe de TI? Os responsáveis pelos setores estão acompanhando o processo de perto? Eles apoiam a nova implantação ou tem resistência?
- Qual é o prazo para a implantação ocorrer? Existe urgência na implantação? Qual é o risco em se atrasar a implantação?
- Qual é a importância do software na vida da instituição? É um sistema periférico ou faz parte de uma área secundária? Qual o downtime admissível para a aplicação? Se o sistema apresentar um problema crítico que o torne inviável existe um risco de paralisar todas as suas operações?
Bem, pensando nisto, vamos avaliar nossas opções:
Desenvolvendo software localmente
Esta opção só é mensurável para quem já tem uma equipe interna bem estruturada. Somente sistemas pequenos, simples e estritamente periféricos podem ser confiados a uma equipe imatura de desenvolvimento. Se você está pensando em criar uma equipe nova para uma aplicação que não tem pressa de ficar pronta e está disposta a arcar com os custos desta equipe a longo prazo, esta também pode ser uma opção a se pensar.
- O custo de implantação irá variar com o grau de maturidade da sua equipe e o grau de especificidade das suas necessidades. Se você possui uma equipe de desenvolvimento capaz de desenvolver a sua aplicação, o custo pode ser inferior ao de uma equipe externa. Um fator importante neste caso é o conhecimento interno das regras de negócio da equipe. Normalmente equipes já bem consolidadas tendem a conhecer bem as necessidades da organização. Isto pode ser um diferencial considerável. Se você estiver pensando em refazer um software que foi desenvolvido localmente, isto pode ser um fator que diminuirá consideravelmente o custo. No entanto, se os gestores não tiverem a capacidade de manter o foco nas funcionalidades mais importantes o projeto pode se perder no caminho.
- O custo de manutenção de sistemas desenvolvidos localmente costuma ser menor. Não é preciso também gerenciar um contrato externo.
- O tempo de implantação pode ser bem menor numa equipe interna bem estruturada. Isto pode variar com as especificidades das suas regras de negócio e do tamanho e qualidade da sua equipe interna. Algumas vezes a adaptação de sistemas prontos pode demorar mais que o desenvolvimento de um sistema novo feito sob medida. Por outro lado, quando você não tem uma equipe com capacidade de se dedicar plenamente ao desenvolvimento, você corre um sério risco de demorar muito mais do que espera.
- O risco de uma aplicação desenvolvida internamente não funcionar costuma ser pequeno se a equipe já tem uma experiência com projetos do mesmo porte. O maior risco está na escolha por tecnologias e metodologias inadequadas para o porte da aplicação. Se você tem uma equipe experiente, as chances de sucesso são boas. Outra questão importante é a confiança na equipe de TI. Implantação de novos sistemas devem vir acompanhados de reengenharia de processos. Aqui o prestígio do setor de TI entra em jogo e a confiança na equipe deve ser avaliada não apenas tecnicamente, mas culturalmente.
- O risco da manutenção do software são realmente pequenas, se você tomar um cuidado importante: Cuidar de utilizar boas práticas de documentação e jamais confiar o desenvolvimento a uma única pessoa que detém todo o conhecimento naquela área. Mesmo que você tenha profissionais satisfeitos, você nunca sabe quando um funcionário pode decidir ir embora.
Quanto maior a confiança na sua equipe de TI, maior são as vantagens de você confiar o desenvolvimento a ela. É vantajoso ter uma boa equipe interna se você depende muito de bons sistemas para o sucesso das suas operações. Um banco dificilmente irá confiar em terceiros para desenvolver seus sistemas centrais. A idéia de desenvolver grandes sistemas internamente está associada a diminuição do risco e não do custo.
Outro fator que pode alavancar o desenvolvimento interno é fazer uma customização de um software livre já existente. Softwares como o ERP livre Compiere estão se tornando realidade no Brasil. Quanto mais genérica for a sua demanda, maior a chance de existir uma aplicação livre que possa ser adaptada para as suas necessidades. Vale a pena pesquisar as soluções livres existentes no mercado. Os custos costumam cair e você não fica dependente de uma empresa externa, diminuindo ainda mais os seus riscos.
Desenvolvendo software externamente
O desenvolvimento externo é o meio termo entre desenvolver algo internamente e comprar algo pronto. Assim suas vantagens e desvantagens costumam ficar num meio termo entre ambas as opções. Se você tem uma equipe de TI pequena para abraçar um grande projeto, mas com capacidade de especificar bem as suas necessidades, o desenvolvimento de uma aplicação sob medida pode ser a solução ideal.
- Se você tiver uma equipe capaz de especificar métricas de desenvolvimento bem definidas e modelar as suas regras de negócio, o custo tende a cair, uma vez que você saberá dimensionar o custo real da aplicação. Caso contrário, você pode encontrar vários custos adicionais no meio do caminho.
- O custo de manutenção varia conforme a sua capacidade de dar manutenção internamente. Se você tem uma equipe de TI interna capaz de dar manutenção no software você deve optar por ser o dono do código fonte do software e exigir uma boa documentação do mesmo. Neste caso os custos de manutenção tendem a ser tão baixos quanto um sistema desenvolvido internamente.
- O tempo de desenvolvimento está associado ao volume de recurso que você pretende investir. Aqui você pode contratar uma grande fábrica de software que entregará o produto em um tempo curto e lhe apresentará um cronograma de implantação factível.
- O risco da implantação ter sucesso depende das opções tomadas a respeito da tecnologia e metodologia exigida ao seu fornecedor. A escolha de um bom fornecedor deve lhe trazer a segurança que você precisa. Empresas com certificação CMMI costumam ser uma boa opção.
- O risco de depois da implantação você ter problemas também será baixo se você optar por possuir o código fonte e boa documentação da aplicação. Neste caso, mesmo que você não dê manutenção no software, você pode romper o contrato com o seu fornecedor e utilizar outro.
A opção de desenvolver uma aplicação a partir do zero utilizando uma empresa externa pode ser uma opção muito segura se você souber fazer isto direito. Quando você tem necessidades muito específicas e uma equipe interna pequena, esta pode ser uma excelente opção. Você também pode contratar uma empresa para adaptar uma solução livre já existente para as suas necessidades, diminuindo ainda mais sua dependência do fornecedor e seus custos. Esta opção torna viável a implantação de grandes sistemas em empresas de menor porte com uma boa margem de segurança, em um prazo bastante curto.
Comprando um pacote de software pronto
Esta opção é a mais difícil de se adotar, pois você tem pouca ascensão sobre o produto que vai adotar. No entanto existe algumas situações em que ela é a única opção viável.
- Os custos de implantação costumam variar de acordo com as especificidades das suas regras de negócio. Quanto mais genérica forem as suas demandas, menores os custos de implantação. Normalmente o custo de uma licença de uso de um software costuma ser menor que começar a desenvolver a aplicação do zero.
- O custo de manutenção costuma ser alto. As empresas que vendem pacotes de software corporativo prontos, geralmente sobrevivem a partir do contrato de manutenção. É aqui que se concentrará a maior parte dos seus custos ao adquirir um pacote de software.
- O tempo de implantação varia com a especificidade das suas regras de negócio. Se você se propor a alterar seus processos internos em nome das melhores práticas da aplicação, o tempo poderá ser bastante curto. Se a sua especificidades forem muitas, o tempo de adaptação do pacote pode demorar muito.
- O risco da implantação ser mal sucedida varia com a complexidade do software e as especificidades das suas demandas. Se o software precisar de muitas adaptações, as chances de uma implantação mal sucedida é grande.
- O risco de você ter dificuldade na manutenção do software também é grande. Muitas empresas não gostam de manter uma versão exclusiva para cada cliente, obrigando-o a compartilhar de recursos comuns a todos os seus clientes. Se o seu fornecedor fechar, você poderá ter um grande problema na mão. Por outro lado, existem empresas que oferecem os códigos fontes do seu pacote de software. Se os códigos fontes vierem acompanhados e uma boa documentação, isto pode diminuir a sua dependência do fornecedor.
Existem duas situações em que a compra de um pacote de software costuma ser mais viável:
- Se o seu tempo é curto e a sua capacidade de investimento a curto prazo é pequena, a aquisição de um software pronto pode ser uma alternativa viável. É claro que a longo prazo ela pode se revelar pouco adequada, mas o tempo muitas vezes é uma questão de sobrevivência.
- Se você precisa de um sistema que não fará parte da sua cadeia central de valor e não há um sistema livre que ofereça as funcionalidades básicas desejadas.
Cabe aqui lembrar, que quanto mais genérica for a sua necessidade, maior a possibilidade de existir um software livre bastante maduro capaz de atender às suas necessidades.