Engenharia de Software para Gerente de Projetos

Cada vez mais me convenço de que para gerenciar projetos de desenvolvimento de software requer conhecimento dos Paradigmas da Engenharia de Software.

O interessante é que na área de construção civil quem gerencia projetos de qualquer tipo de edificação são profissionais formados em Engenharia Civil possuidores de um registro no CREA – Conselho Regional de Engenharia e Arquitetura. A legislação impede que as empresas contratem profissionais sem esse registro para exercer qualquer tipo de atividade profissional relacionado à Engenharia e Arquitetura.

A Engenharia de Software não é uma profissão regulamentada, portanto qualquer empresa pode contratar qualquer tipo de profissional para gerenciar projetos de desenvolvimento de software. Basta ter alguma experiência em desenvolvimento e apresentar alguma habilidade em liderança, que logo é convidado para exercer a função de Gerente de Projetos.

Ultimamente o mercado tem cobrado do gerente de projetos de software a certificação PMP – Project Management Professional expedida pelo PMI – Project Management Institute. Contudo, percebo que somente o domínio das áreas de conhecimento do PMBOK – Project Management Body Of Knowledge, não garante que o profissional com a certificação PMP venha obter sucesso na gestão de projetos de software complexos, porque as áreas de conhecimento do PMBOK foram estruturadas num elevado nível de abstração, permitindo sua aplicação em qualquer tipo de projeto (software, construção de edificações ou qualquer outro tipo de projeto). O PMBOK não possui abordagens específicas para projetos de software. Isso requer que o gerente conheça, adicionalmente, as disciplinas de Engenharia de Software para serem usadas em conjunção com o PMBOK.

Todo projeto tem uma fase de Planejamento. Esta fase é fundamental para o sucesso de um projeto. É durante o Planejamento que é definido o Modelo de Processo que deverá ser usado no projeto. Tradicionalmente os Gerentes de Projeto usam o Modelo Sequencial Clássico, mais conhecido como Waterfall. A grande maioria dos gerentes nem sequer questiona a possibilidade de usar outro Modelo de Processo. No meu dia-a-dia tenho notado que isso ocorre porque eles desconhecem a existência dos demais Paradigmas da Engenharia de Software, ou seja, Modelos de Processos, tais como waterfall, cíclico (espiral), prototipação, incremental e iterativo.

Baseados nesses paradigmas, algumas organizações e pesquisadores desenvolveram frameworks de boas práticas tais como RUP, XP, SCRUM, FDD, etc., que reúnem técnicas, artefatos, papeis, responsabilidades, regras, padrões e procedimentos que foram disponibilizados para uso livre em qualquer projeto de software. O ponto em comum entre esses frameworks é que são incrementais e iterativos, com uma abordagem gerencial extremamente simples que oferece leveza ao processo permitindo agilidade na obtenção dos resultados.

O desconhecimento desses frameworks leva a um planejamento do projeto que não oferece o suporte necessário para tratar as frequentes mudanças de requisitos que atualmente ocorrem ao longo do processo de desenvolvimento, levando o projeto ao caos, impedindo o atendimento dos prazos e custos reduzidos de forma desafiadora, impostas pelas atuais necessidades do negócio.

O centro do problema está no fato do Modelo de Processo Sequencial Clássico conduzir a equipe do projeto a antecipar o completo levantamento dos requisitos do sistema a ser desenvolvido sem levar em consideração que eles serão modificados ao longo do ciclo de vida do projeto.

O fato é que as empresas atualmente se encontram inseridas em um contexto extremamente mutável, onde novos produtos precisam ser lançados no mercado com preços competitivos, levando a uma busca de inovação para melhorar a eficiência e flexibilização dos processos operacionais, impactando os projetos de software em andamento por causa das constantes mudanças de requisitos e regras de negócio.

Para que os projetos de software consigam obter êxito neste ambiente de intensa mudança, é necessário que os gerentes de projetos tenham conhecimento e experiência nos diversos Modelos de Processos e Frameworks de boas práticas em conjunção com as disciplinas básicas da Engenharia de Software, para que o projeto possa seguir seu curso em um cenário caótico de mudanças de requisitos e regras de negócio.

Cada projeto tem suas idiossincrasias, fato que requer uma definição personalizada de um Processo de Desenvolvimento para compor o ciclo de vida de um determinado projeto. Em outras palavras, cada projeto deve ter seu próprio Processo de Desenvolvimento, o qual é definido a partir de:

  • Um ou mais Frameworks de boas práticas que estão alinhados com um Modelo de Processo de Software (Paradigma da Engenharia de Software) adequado à solução que foi definida numa fase de iniciação e concepção do projeto,
  • do porte e complexidade do projeto,
  • do prazo, ou seja, do time box definido para o projeto,
  • dos recursos financeiros disponíveis,
  • das restrições políticas, técnicas, recursos humanos e sociais impostas pelo ambiente de desenvolvimento em foco.

Essas decisões são tomadas pelo Gerente do Projeto ou pela equipe do Escritório de Projetos da organização de desenvolvimento de software.

A conclusão é que o conhecimento básico dos Paradigmas e das disciplinas da Engenharia de Software, bem como dos vários Frameworks existentes, são fatores críticos de sucesso no planejamento e condução de projetos de desenvolvimento de software. Caso contrário o risco e muito alto do projeto “nascer torto” e, certamente, a correção do curso deste projeto já em andamento irá inviabilizá-lo gerando desgastes com todos os envolvidos.