sexta-feira, 6 de fevereiro de 2009

Construção de software: interna ou terceirizada?

Hoje existe uma forte tendência das empresas terceirizarem partes do desenvolvimento de software. Algumas empresas terceirizam todo o processo de desenvolvimento e ficam apenas com a gestão. Outras empresas ficam com a elaboração e a implantação e terceirizam a construção. Não confundir isso com a simples terceirização de mão-de-obra, pois, no meu exemplo estão sendo terceirizados os processos e não apenas as pessoas que irão executá-los.

Anteriormente eu já trabalhei em uma empresa onde todo o processo de desenvolvimento era terceirizado, mas, no momento estou em uma empresa que terceiriza apenas a construção e os testes unitários.

Mas, apesar de cada vez mais o modelo de processo de desenvolvimento totalmente interno estar sendo abandonado, ainda não existe um consenso se é melhor terceirizar ou construir internamente.

As vantagens mais evidentes de terceirizar são:

  • Melhora a documentação do software, pois, como o processo de desenvolvimento passa a ser mais formal, torna-se obrigatório registrar cada etapa.
  • Evita a manutenção de equipes inchadas dentro da empresa para atender os picos de demanda.
  • Diminui o investimento constante na qualificação da equipe para absorver as novas tecnologias.
  • Dependendo da forma de contratação, pode permitir a diminuição de custos.
  • A empresa mantém o foco no seu negócio, deixando a tecnologia para quem é do ramo (isto quando o negócio principal da empresa não é TI).

Já as principais vantagens de desenvolver internamente são:

  • A empresa mantém um controle maior sobre o processo de desenvolvimento e sobre os prazos.
  • A equipe de desenvolvimento é mais qualificada no negócio, pois, se dedica apenas ao cliente interno.
  • A rotatividade de pessoas é menor.

Existem alguns pontos que são considerados polêmicos:

  • As informações estratégicas podem ficar menos seguras, pois, estarão acessíveis por pessoas de fora da empresa.
  • A empresa pode acabar contratando parceiros que estão pensando apenas no resultado financeiro e para isso abrem mão da qualidade e da qualificação da equipe de desenvolvimento.
  • Possíveis problemas trabalhistas na empresa contratada podem acabar gerando passivo trabalhista na empresa contratante.
  • A burocracia nas relações é muito grande e pode acabar aumentando os prazos de execução.
  • O rodízio das pessoas alocadas na contratante, pode não permitir criar uma cultura associada ao negócio.
  • A empresa pode acabar ficando muito dependente do fornecedor.

A decisão por terceirizar deve ser muito criteriosa, já que ela pode se tornar tanto um diferencial competitivo, quanto acrescentar novos riscos ao negócio.

Polêmicas à parte, considerando que a decisão da empresa é terceirizar alguma parte do desenvolvimento de software, além de tomar cuidados básicos: fazer uma seleção criteriosa entre os candidatos a subcontratado, acompanhar o desempenho do subcontratado detectando precocemente sintomas de problemas, planejar e executar os procedimentos de aceitação do produto. Existem dois outros pontos que são fundamentais para que haja sucesso:

1) Processo

É necessário que o processo de desenvolvimento esteja muito bem definido, todas as partes envolvidas tenha pleno conhecimento dele e que o mesmo não seja muito pesado, causando atraso nos prazos. Somente com o processo de desenvolvimento bem "azeitado", será possível que duas empresas diferentes trabalhem juntas e o resultado final seja melhor que o de uma empresa trabalhando sozinha.

2) Acordo de Nível de Serviço

É necessário existir um acordo de nível de serviço bem definido entre as partes, onde ambas tenham bem claras quais obrigações deverão cumprir, em qual prazo e qual serão as penalidades em caso de não cumprimento. É preciso que se definam indicadores para monitorar o cumprimento do acordo. Se tudo isso não estiver muito entendido pelas partes, o relacionamento se tornará um caos e as discussões sobre quem é o culpado se estenderão indefinidamente.

Os contratos de nível de serviço devem ser explícitos. Quanto mais detalhados e mensuráveis eles forem, mais fácil será definir o sucesso.

Posteriormente eu entrarei em mais detalhes sobre acordos de nível de serviço em desenvolvimento de software e darei alguns exemplos.

Nenhum comentário:

Postar um comentário