Qual a melhor formação de uma equipe de desenvolvimento de software?

São muitos os desafios para desenvolver softwares com eficiência, atendendo as exigências dos clientes e pressão dos gerentes internos e, para fornecedores, das equipes de vendas. As estimativas de tempo e custo de projetos de software são impactadas pelas mudanças de especificação durante o projeto, pela escassez de recursos e, muitas vezes, pela falta de habilidade de negociação dos desenvolvedores em estabelecer prazos realistas ou se submeterem as pressões dos clientes e gerentes. Dependendo da maturidade da equipe de desenvolvimento de software e do projeto a ser desenvolvido muda o perfil da equipe de desenvolvimento.

Toda a construção de um novo software enfrenta o desafio de alterações durante a fase de desenvolvimento. A fase de especificação de requisitos é onde se definem as regras de negócios para a codificação do software. Nessa fase, para novos negócios, existem muitas incertezas sobre como operacionalizar os processos para atingir os objetivos do negócio. Usar uma abordagem interativa de desenvolvimento com a construção de protótipos ajuda tanto os desenvolvedores como os clientes a convergir para uma especificação mais robusta e precisa.

Essa dificuldade é minimizada quando os processos já existem e estão validados pelas áreas de negócios. Nesse caso, o papel do desenvolvedor de software é de apenas automatizar esses processos para melhorar o desempenho operacional. Se essa automação for realizada por um sistema integrado (ERP) as tarefas de implantação devem ser repetitivas e padronizadas. Desta forma, é possível definir prazos e custos com mais exatidão.

Como vimos existem, simplificando, dois casos típicos de desenvolvimento de software: um a partir do zero para implantar um novo negócio e outro para automatizar processos existentes. A formação e perfil de uma equipe de software irá depender da complexidade do desenvolvimento e do nível de maturidade e metodologia aplicada no projeto.

Simplificando, o desenvolvimento de software tem cinco fases: Requisitos, Projeto, Codificação, Testes e Produção. A experiência mostra que voltar uma fase para refazer uma tarefa pode custar até 10 vezes o valor investido naquela tarefa.

As fases mais críticas são a de levantamento de requisitos e elaboração do projeto. Essas fases definem a arquitetura do sistema, incluindo a arquitetura de dados e regras de negócios. O desafio, além da correta especificação e aprovação do cliente, é descrevê-las de tal forma que não crie erros de interpretação por parte dos programadores e equipes de testes. Nessas fases, a equipe deve contar com analistas experientes e, modelos e ferramentas que ajudem a desenvolver uma especificação eficiente.

A fase de codificação é onde se pode ganhar muito em eficiência se utilizarmos processos de desenvolvimento definidos e com métricas de desempenho. Além, é claro, de uma eficiente gestão de projetos. Aqui se aplica o conceito de fábrica de software.

A fase de testes, que cada vez mais aumenta sua relevância em projetos de software, deve garantir que os softwares desenvolvidos estão em conformidade com as especificações e não apresentam problemas de construção. Existem técnicas já consolidadas no mercado para a realização desses testes e existem até empresas especializadas nessa área.

A fase de produção é onde o software executa e servindo aos clientes. Ou seja, é onde os benefícios esperados pelo projeto se concretizam. Os softwares podem ser executados em data centers locais ou ambiente Cloud Computing de fornecedores especializados.

A implantação de um ERP, a princípio, segue todas as fases. Como o software já foi desenvolvido o desafio é parametriza-lo para atender as características de negócio do cliente. Quando mais o cliente concordar em adotar as práticas de negócios definidas pelo ERP menor será o esforço de implantação e a necessidade de pessoal especializado, resultando em menores custos e prazos definidos com mais exatidão.

Um dos fatores que encarece um projeto de software é a contratação de especialistas “top” com anos de experiência. Muitas vezes um projeto atrasa devido à falta de pessoal para executar as tarefas de uma fase, seja por escassez no mercado ou pela rotatividade de pessoal. A falha na definição dos requisitos e projeto de software, que gera retrabalhos, impacto no custo e prazo. Falhas na gestão de projeto e ausência de ferramentas de produtividade também são responsáveis por atrasos e estouros no orçamento do projeto.

O desafio do gerente de software é equilibrar a contratação de especialistas “top” com processos repetitivos e definidos que possibilitem a contratação de pessoal com menor qualificação.

A formação de uma equipe ideal é quando podemos contratar 10% de especialistas “top”, ter modelos e ferramentas eficientes de desenvolvimento, ter processos definidos e com métricas de desempenho, ter a equipe completa e sem rotatividade, e os requisitos do projeto aprovados já no início de cada fase.

Uma equipe eficiente é composta por 25% de especialistas “top”, gerenciamento de projeto competente, pessoal disponível quando necessário com baixa rotatividade, alterações de até 5% nos requisitos iniciais e, modelos e ferramentas adequadas para o desenvolvimento.

Na prática, as equipes de projetos são formadas por 50% de especialistas “top”, rotatividade alta, equipes com alguma familiaridade com modelos e técnicas de desenvolvimento, e volume de alterações significativas durante o desenvolvimento de todo o projeto. Essa situação gera custos elevados de desenvolvimento de software e incertezas sobre prazos de entrega e qualidade do software.

A formação dessas equipes depende da complexidade dos projetos, dos modelos e ferramentas disponíveis na empresa, do nível de maturidade dos processos e da disponibilidade de pessoal especializado na época do projeto. Em uma empresa pode coexistir as três situações. O fator crítico de sucesso é tem uma eficiente gestão do portfólio de projetos.