Carreira Dev

10 dez, 2008

Fatores controláveis para tornar um projeto profissional!

Publicidade

Sim, é muita pretensão minha querer escrever sobre o caminho para o sucesso de um projeto. Existem inúmeros fatores que contribuem para o sucesso, desde uma boa idéia, uma boa equipe, bons clientes, bons equipamentos, boa gerência e boa sorte. Em todo projeto existem fatores que podem ser controlados e fatores incontroláveis (ou pouco controláveis). O que quero expor neste artigo é como tornar os fatores controláveis, como REALMENTE controlados pela equipe, para que um software profissional, seja realmente profissional.

Antes de começar nossa análise de como controlar os fatores, vamos entender um pouco mais sobre o que são os fatores controláveis e os fatores incontroláveis. Quando um cliente vem procurar-nos para fazer um software, temos que entender bem suas necessidades. Por incrível que pareça, ele não vai te falar. Sim! Ele quer um software que faça alguma coisa que resolva o problema dele, mas quais são estes problemas? O primeiro fator incontrolável pela equipe de desenvolvimento é o negócio do cliente. Embora muitos tentem moldar o negócio do cliente para que o software seja um sucesso, este é certamente o pior caminho a ser tomado. O software precisa moldar-se às necessidades do cliente. Se o software não atende ao cliente, ou faça-o atender, ou faça outro, ou não faça nada.

O Cliente

Quando um cliente pensa em criar um software, pode ter certeza que esta foi a ultima opção dele. Nenhum cliente em sã consciência gosta de comprar software, muito menos de mandar fazer sob medida. O primeiro motivo é que dá trabalho para ele. Sim, ele precisa pensar, pensar, pensar… Precisa reunir sua equipe, entender seu processo. Apesar de ele poder contratar um consultor que faça isso por ele, ele ainda terá que explicar ao consultor e reunir sua equipe. O segundo motivo é que ele certamente já participou de algum processo de software mal sucedido, ou conhece pelo menos cinco outras pessoas que tiveram uma má experiência com softwares.

Ao mesmo tempo ele sabe que, se chegou ao momento de adquirir um software, é que é a ÚNICA opção que ele tem para ganhar mais, ou gastar menos. Nestas duas formas terá mais dinheiro no seu bolso. Se ele pudesse contratar alguém para fazer a mesma função do software, pode ter certeza que já teria feito. Se pudesse terceirizar, também já teria feito. Porém uma conta simples pode ser feita: Se o cliente gasta X com software, seu retorno precisa ser MAIOR que X. Este maior deve ser contemplado desde a concepção do software, design, equipe, reunião com os diretores, treinamento, implantação, melhorias e suporte! Diferente do que muitos contemplam como custo, não deve ser levado em conta somente para as horas da equipe que está desenvolvendo, e somente no tempo de desenvolvimento. Como todo software, melhorias são necessárias, bem como correções de bugs e reuniões posteriores com pessoas de negócio, não necessariamente ligadas à área de desenvolvimento.

Profissionalismo

Desenvolvimento de software é algo que está se profissionalizando. Apesar de existirem muitos amadores, em linhas gerais os softwares estão sendo desenvolvidos com absolutamente mais qualidade nos últimos tempos, o que deixa menos espaço para os amadores e exige mais dos profissionais.

Diariamente lançamentos de aplicações gratuitas são lançadas, com uma qualidade extremamente alta, com boa experiência ao usuário e recursos nunca imaginados antes. Quando um cliente paga por um software, o MÍNIMO que ele espera é que o software dele seja MELHOR, mais usável, mais rápido, mais bonito e mais seguro do que os que ele utiliza gratuitamente. Mas o que a equipe de desenvolvimento pode fazer para garantir o sucesso do projeto?

Fatores controláveis, você deve ter o controle!

Alinhamento e transparência com o cliente

O software está altamente ligado ao negócio do cliente, sendo assim ele deve saber tudo o que ocorre no projeto, não somente os sucessos, mas principalmente as falhas para que possa tomar decisões executivas que supram por um período a eventual falha ou atraso do projeto.

Crie um canal de comunicação com o cliente, como por exemplo um Wiki ou um blog, onde todos os envolvidos podem saber exatamente o que está ocorrendo.

Crie um canal de feedback e avalie-o com critério e carinho. Afinal, seu software precisa ser moldado ao negócio, e não o negócio ao software.

Sabendo que o cliente não sabe o que ele quer, ajude-o a descobrir. Crie versões betas, rapidamente, e deixe-o usando por um tempo e colha feedbacks. Tenha certeza de que as alterações solicitadas por ele serão necessárias antes ou depois da entrega final. Então por que não fazê-las antes e garantir o sucesso do projeto?

Design e usabilidade

O usuário passará horas na frente do seu sistema, faça-o bonito. Ninguém gosta de utilizar um software feio ou que demore muito para realizar as operações. Jargões como “Diminua a quantidade de cliques” e “Faça-o auto-explicativo” existem por algum motivo, devem ser observados e o cliente agradece!

Infelizmente o código não aparece para o cliente, não adianta o software ter o melhor código do mundo, a melhor arquitetura e ser feio e difícil de utilizar. O cliente deve ter uma boa experiência no software. Isto deve ser um pré-requisito, e não opcional.

Arquitetura & escalabilidade

Entenda as necessidades futuras do cliente e desenhe seu software da forma mais desacoplada possível, separe camada de acesso a dados, da camada de negócio, da camada de apresentação. Quanto mais desacoplado for o sistema, mais fácil e barato de criar, de testar e de modificar, sem afetar o sistema todo.

Criação de testes automatizados

Em praticamente toda plataforma de desenvolvimento, seja ela .Net, Java, Ruby, PHP, Delphi entre outras, existem mecanismos de teste automatizados. Testes automatizados são, por exemplo, códigos que testam outros códigos e garantem a qualidade do software. Se, por exemplo, você têm um método que salva dados no banco de dados, o teste unitário deve ser capaz de inserir dados através do método e verificar se as informações salvas foram salvas corretamente. Mocks, stubs e publicações automatizadas devem ser levadas em conta no desenvolvimento de software. Se você ainda não conhece, ou não utiliza, fica a dica.

Burocracie, mas nem tanto.

Ter um processo burocrático pode ser bom para você, para o cliente e garantir qualidade no software. Mas se o processo for burocrático demais, pode empatar o desenvolvimento e não justificá-lo. Se não houver burocracia, não terá ordem, sem ordem será um caos. Faça no mínimo uma especificação simples, de forma que o cliente possa entender e aprovar ou não seu desenvolvimento. Faça-o aprovar, nem que seja com o OK por e-mail, assim ele torna-se também parte responsável pelo sucesso do projeto.

Homologação em diferentes plataformas

Avalie as plataformas em que o seu sistema funciona e deixe claro para a equipe de venda e para seu cliente. Se seu software foi testado no Firefox 2 no Windows, isto não garante que funcionará no Firefox 2 no Linux. Seu cliente e a equipe de venda devem saber disso. Se não funciona em certos ambientes, detecte e crie mecanismos de bloqueio do funcionamento do software.

Suporte eficiente e capaz de reproduzir o cenário utilizado no cliente

Se você homologou seu software para funcionar no Firefox 2 no Linux, você deve ter uma máquina pronta para sua equipe de suporte reproduzir eventual erro. Se você não possui este ambiente, você não pode suportar este ambiente, então é melhor bloquear seu funcionamento.

Crie software barato seguro e que dê retorno.

O objetivo do software é ser barato e prover retorno. Crie mecanismos baratos de criar, manter e expandir o software.

Se você, por exemplo, você precisa de um gráfico “pizza” na Web, e isto vai tomar 20 horas da sua equipe, avalie o custo de um componente pago de um terceiro. Pode sair mais barato e ter um resultado final melhor. O Cliente não está contratando pessoas para escreverem código, ele está contratando uma solução para o problema dele, que pode ter como uma parte da solução escrever código, mas não necessariamente toda ela. Se o componente custar, por exemplo, US$ 500,00 e sua equipe custa US$ 100,00 por hora, não pense duas vezes em comprar o componente. O Custo do componente de terceiro será bem mais barato e possivelmente melhor, pois ele certamente dedicou-se nele mais do que você e teve tempo e verba, afinal você precisa entregar a solução!

Conheça e mantenha-se no padrão.

Existem inúmeros padrões de desenvolvimento de software. No mínimo eles servem para que outras pessoas possam dar suporte mais facilmente. Utilize-os. O Site http://www.w3.org/ possui padrões para desenvolvimento Web, utilize-o como base para desenvolvimento.

Saia do amadorismo!

Desenvolvimento de software profissional não é mais algo amador, embora existam muitos amadores por aí. Nada contra os amadores, eu já fui um e em muitos aspectos continuo sendo, mas quando um software está relacionado ao negócio, ele deve ser desenvolvido utilizando cuidados profissionais, mesmo que o desenvolvedor seja amador. Qualidade final e alinhamento do software com as demandas do cliente significam que pelo menos todas estas observações devem ser levadas em conta no projeto. Conheço muitos desenvolvedores entusiastas que desenvolvem por diversão e não trabalham diretamente com desenvolvimento de software. Neste caso o amadorismo é legal, pois desenvolvimento de software está sendo utilizado como lazer ou hobby, mas quando se tratar de softwares profissionais espera-se que o desenvolvedor no mínimo aja como um profissional.

Quer saber uma novidade agora? Todos estes pontos anteriores não são novidades! Eles já estão sendo aplicados pelas empresas e profissionais de sucesso, e são apenas pré-requisitos para um bom projeto. Antigamente podia ser um diferencial, hoje é o mínimo que você pode entregar. Para sair na frente, o mínimo que você precisa fazer muito bem são todos estes pontos anteriores, tão bem a ponto controlá-los, e não ser controlado por eles. Saber, por exemplo, exatamente em que ambientes seus softwares funcionam e em quais ambientes eles não funcionam, entre inúmeros outros critérios, torna o processo e o software profissional. Além destes fatores, você terá que inovar, criar e inventar seu diferencial. O Sucesso do projeto passa por pré-requisitos, o diferencial é você quem faz. E você, ainda é amador?

Forte abraço e até o próximo artigo.