No dia a dia de uma fábrica de software, por vezes nos deparamos com algumas questões práticas referentes à construção do produto de software. Uma das questões mais cuidadosamente tratadas é a escolha de uma arquitetura e de um framework.
Esse é o alicerce para qualquer sistema, porém às vezes não conseguimos despender o espaço no cronograma suficiente para essas questões, depois que o projeto inicia. Isso é natural, visto que o alicerce nunca é visto pelo cliente e pela área comercial da nossa empresa. Certamente a arquitetura e o framework escolhidos refletem na robustez e eficácia do produto de software, mas arquitetura e framework não são facilmente percebidos pelo cliente.
Eu acredito que devemos pensar em arquitetura e framework da solução desde um primeiro contato de apoio e pré-venda.
Imaginemos o cenário: a área comercial efetua a prospecção de um novo cliente para um projeto de software. A área técnica é acionada para prestar um apoio na pré-venda. Neste momento a área técnica já deve realizar um levantamento prévio de aspectos culturais e infra-estruturais do cliente, no intuito de escolher uma arquitetura adequada para o novo software. É aqui que devem ser revelados os primeiros requisitos.
Com base nos levantamentos realizados em uma sondagem prévia, a área técnica já consegue preparar-se para o futuro projeto de modo mais consistente. Ou seja, a área técnica deve aproveitar para recolher informações desde um primeiro contato com o cliente, de modo a obter com o máximo de antecedência informações que subsidiem os passos iniciais do projeto:
- Definir a arquitetura do sistema – baseada em requisitos não funcionais (cultura ou infra-estrutura do cliente);
- Avaliar frameworks para a construção do sistema – baseado na arquitetura escolhida
- Escolher um framework dentre os avaliados
Neste ponto posso estar parecendo exagerado. A equipe precisa preocupar-se com a arquitetura e o framework do sistema desde um primeiro contato com o cliente? Resposta: Sim. Temos a obrigação de estar um passo à frente. Cada vez mais, nós os profissionais de T.I., precisamos nos aproximar da área comercial da nossa empresa e do nosso cliente. Apoiar a área comercial e ajudar o cliente a resolver seus problemas é um conceito-base para o bom profissional de T.I. hoje em dia.
Dito isso, uma segunda questão que deve surgir é a seguinte: Não é desperdício pensar em arquitetura e framework antes de fechar o contrato, antes de ter o projeto na pauta de desenvolvimento? A resposta é um redondo NÃO. Desperdício é ficar esperando de braços cruzados que o projeto chegue a nossa fila de trabalhos, para depois pensar como ele pode ser construído.
Se a equipe pretende receber projetos bons, trabalhar com bons padrões e progredir em boas práticas, deve sim aproveitar cada oportunidade para estudar, avaliar e comparar soluções em arquiteturas e frameworks.
Acredito que o melhor momento para pensar em arquitetura e framework é na pré-venda de um projeto de software. Depois que o cliente fechou o contrato com a nossa empresa, geralmente temos um cronograma apertado e, consequentemente, menos tempo para pensar no alicerce do sistema. O cliente e a área comercial precisam ver logo o sistema sendo construído. É um fator humano: precisamos ver para crer.
Fazendo uma analogia com a construção civil: quanto antes tivermos definido o melhor alicerce, de acordo com o terreno em que será construído o prédio, mais rápido poderemos começar a levantar as paredes.
Falando em evitar desperdício de tempo, ao mesmo tempo que devemos pensar em certos aspectos do projeto no momento de uma pré-venda, também precisamos evitar que toda a equipe esteja envolvida nesse penso. É recomendável incentivar que todos os membros da fábrica de software tenham a oportunidade de pensar em arquitetura e frameworks para um possível projeto a ser assumido, mas que apenas um ou dois profissionais sejam alocados para essa atividade por vez. O trabalho realizado em apoio a área comercial também deve ser considerado como parte das atividades diárias de uma fábrica de software. Essa visão é condizente com a realidade do mercado e é cada vez mais requerida pelas empresas de ponta.