Orçamentos em software — a construção da casa

Uma das maiores dificuldades profissionais que tenho encontrado é orçamentar de uma forma simples e equilibrada. Trabalho com software. Faço programas. Junto milhares de linhas de código para que, em detrimento de meia dúzia de cliques, os utilizadores consigam ver tantas tarefas complexas facilitadas e terminadas em alguns minutos ou segundos.

Software é bem mais do que juntar código. É mais do que saber o que faz cada função. O bom software precisa de tempo para ser pensado, para ser criado. Sim, para quem não sabe, o software, seja um site, seja um ERP ou um CRM, seja um jogo, seja uma aplicação para smartphone ou tablet, advém sempre de um processo criativo que muitas vezes é interpretado de uma maneira demasiada leviana.

Não vou entrar em pormenores com o software. Fica para outra. Vou só falar um bocadinho das dores de orçamentar. Ao longo do tempo, alguns freelancers têm-me também questionado como devem orçamentar. Como saber se é barato ou se é caro? Como fiz dezenas de trabalhos como freelancer em várias áreas, percorri um pouco o caminho das pedras e fui-me adaptando,quer ao que produzia quer aos bons e menos bons momentos que sucediam às boas ou menos boas decisões de orçamento.

A experiência de lidar diretamente com clientes e a experiência de ter outras pessoas a lidar com os clientes na minha vez foi uma mais-valia. Aprendi que os clientes aceitam fazer acertos com o entregável — aquilo que no final entregamos ao cliente, seja uma peça de arte, um logótipo ou uma loja online- — desde que, da nossa parte, seja completamente transparente o porquê de decidirmos dessa maneira — será uma troca de valor. Uma opção que tem que ser tomada tendo em conta o budget do cliente.

Acho que quase toda a gente tem uma ideia geral de construção civil. Quanto mais não seja já fez construções com LEGO e sabe bem que não consegue construir mais nada quando acabam as peças. Eu uso várias vezes o exemplo de construir uma casa como analogia para construir software. Abaixo descrevo, de forma muito superficial, alguns aspetos que julgo serem comuns ao software e à construção civil.

Construindo uma casa — “quanto é que isso pode custar, mais ou menos…”

Quando decidimos construir uma casa precisamos de uma planta, para além de dinheiro e do terreno onde vamos edificar o nosso casebre. Mesmo antes disso, precisamos de saber qual o orçamento para uma moradia de 5 assoalhadas e uma garagem para 2 viaturas. O construtor lança um valor, com base na sua experiência. Ou melhor, um intervalo de valores. Vamos imaginar entre 200.000 e 350.000 euros. Reparem na diferença. A margem é de 150.000 euros. 150.000 euros é quase o valor mínimo do orçamento estimativo. E é isso mesmo que é um orçamento: uma estimativa. E como todas as estimativas é passível de estar muito longe ou muito perto.

Orçamentar não é nada mais do que fazer uma estimativa mas parece que, muitas vezes, as pessoas não percebem isso. Nomeadamente em software, as pessoas continuam com a mesma ideia que é só dar dois cliques e que é tudo muito simples… mas não é. Muitas das pessoas que trabalham na área do software sabem do que falo. Partilham esta dor. E por vezes a alteração mais pequena provoca alterações muito grandes. Vamos continuar a construir a casa? ‘Bora lá!

O esboço da casa — a ideia inicial do cliente

Agora que já temos uma ideia do que queremos construir, vamos esboçar o que vai ser a nossa casa: uma sala e uma cozinha espaçosas, um escritório generoso, 4 quartos, 4 WC e a garagem — este serão os nossos requisitos básicos. Com isto, sabemos que iremos ocupar cerca de 360m². Bom, serão 2 pisos de 180m² mais, ou menos.

O valor de construção por m² varia entre cidades. Vou optar pelo valor de 750€/m². Desta forma, o preço de construção com base no preço por m² e na área de construção será de 270.000€. Bem dentro do nosso orçamento. Este valor inclui, em média materiais de qualidade standard, com base num preço médio que existe tabelado para a construção. Podemos então avançar com um orçamento de 280.000 euros, com 10.000 euros de margem para qualquer eventualidade ou ajuste que possa surgir.

A planta da casa — os requisitos

Bom, o arquiteto desenhou a casa. Parece-me muito bem e estou muito feliz. Mas quando a apresento ao construtor ele consegue perceber algumas dificuldades em construir da forma que o arquiteto idealizou. Não porque não saiba construir mas porque antecipou que seria algo mais próximo do que ele estava habituado a fazer e, além do prazo que já me tinha dado — cerca de 1 ano e meio para me entregar a casa pronta — existem alguns pormenores de construção que vão implicar outros custos. Bem, talvez os 10.000 euros adicionais consigam cobrir a coisa e o construtor aceite perder alguma percentagem da sua margem de lucro para manter o cliente satisfeito e até podem avançar com o orçamento inicial.

Com a experiência, o construtor sabe ainda que, na realidade e de acordo com aquilo que o arquiteto desenhou, algumas coisas não irão correr bem; o resultado não vai ser o esperado pelo cliente; afinal de contas, ele é um especialista na sua área. Existe aqui um diálogo entre os 3, muitas vezes, para chegar a um entendimento. E isto implica cedências de parte a parte e podem implicar acertos no orçamento.

Início da construção — os primeiros desenvolvimentos

Bom, não quis mais nenhuma alteração e a casa começou a ser construída. Alicerces feitos, primeiras paredes ao alto e pedi uma alteração ao projeto inicial — e aqui vem um problema muito grande: as pessoas nem sempre aceitam que uma alteração ao projeto inicial pode implicar alterações estruturais na construção.

Agora optei por ter mais duas varandas adicionais. Isto vai ter impacto nos alicerces, nos pilares e mais alterações, por exemplo, de portas por janelas, mais betão, mais ferro… e isto acontece tal e qual quando se faz software, só que sem betão, digo eu. Temos uma alteração de tempo, de materiais e certamente do preço. Não é fácil rever um orçamento ou pedir mais dinheiro ao cliente quando há alterações mas é extremamente importante que seja feita essa análise de custos. E pedir mais dinheiro, se assim se justificar. Vejamos, ninguém paga as contas sem dinheiro e ninguém trabalha só porque gosta. E se o cliente nos pediu alterações que fogem do âmbito inicial ou do que tinha sido orçamentado só tem que ser reajustado. Quando o cliente não entende isso… estou em crer que o projeto não vai correr bem.

Alteração dos prazos — o famoso deadline

Um dos problemas comuns quando se constrói ou desenvolve algo para terceiros, está relacionado com a gestão das expectativas do cliente, sejam elas com o produto final seja com prazo de conclusão.

A cada alteração o prazo deve ser reavaliado para que o cliente não se sinta defraudado. Se antevejo que preciso de mais 1 ou 2 semanas para terminar o logradouro ou colocar as portas da garagem então é melhor antecipar isto e informar o cliente para que ele não esteja a contar com um prazo errado.

NOTA: da minha experiência, é preferível dar um prazo superior em 3 a 4 semanas do previsto para que seja mais confortável para todos e reduza o risco de falha.

A construção está quase pronta — os ajustes

Temos a casa quase pronta. Eu queria uma porta de correr embutida mas colocaram uma normal, porque não tinha dito nada nem vinha essa nota no projeto. O custo estimado para esta alteração são quase 5.000 euros de diferença — paredes falsas, rolamentos, portas novas, a porta antiga certamente não vai ser aproveitada porque não é standard, e ainda o tempo necessário para a alteração.

Em software, a única coisa que consigo estimar é tempo de desenvolvimento e análise. O que vendemos é tempo. A menos que, associado ao meu serviço de programação, estejam incluídos outros softwares ou hardwares de terceiros e que já existam no mercado — um ERP, um CRM, um servidor, um SQL Server, etc — o que eu vendo ao meu cliente é tempo. Neste caso, a porta de correr e os materiais necessários são um custo fixo mas o tempo de aplicação pode variar.

Sabemos que há alterações bastante simples de fazer e que, com 1 ou 2 horas, conseguimos aceder ao que o cliente pediu. No entanto, esse tempo pode não estar contemplado no orçamento. Podemos já ter dado muitas borlas ao cliente e quando fazemos contas…

Depois da casa pronta — suporte e alterações

Depois da casa concluída, preciso de fazer um telheiro para guardar a lenha. Uma casota para o cão. Um avançado para saborear o fresco das noites quentes de Inverno.

Alterações

“Mas então o telheiro não estava incluído? Eu tinha falado isso logo no início… Não se lembra? Mas eu lembro-me”.

Bom, isto é o que acontece quando as coisas não ficam devidamente escritas e claras para ambas as partes. De quem é a culpa? Do cliente? Do construtor?

NOTA: quando fizerem uma alteração a um projeto em andamento escrevam essa alteração, quais os custos adicionais e peçam ao cliente para assinar. A mesma coisa com os requisitos. Será muito mais fácil para justificarem ao cliente e para evitarem dissabores e mal entendidos.

Suporte

Uma das pedras não ficou bem assente e há um problema com o portão da entrada. Sim, vamos ter que resolver isto ao cliente. Se houve um problema com as argamassas que provocaram esse problema na pedra ou se a pessoa a quem subcontratámos a construção e a aplicação do portão não fez um bom trabalho nós somos os responsáveis por isso e não acho correto cobrar ao cliente. No software, é a mesma coisa com bugs que são causados por mau código, por alguma situação anómala ou simplesmente porque é uma especificidade de um software ou framework que até recomendamos ao cliente (o portão) e que temos que usar para o nosso projeto.

Problemas na orçamentação: a perda de informação

Um dos problemas com os quais me deparo prende-se com o facto de o cliente nem sempre falar com o analista/programador. Por vezes, os mal-entendidos advêm de coisas que o cliente falou numa reunião inicial e pensou, certamente, que iria ter essa ou essas funcionalidades, que o sistema iria responder de determinada maneira ou que iria escalar sem problema.

Nem todas as pessoas têm a mesma sensibilidade para os detalhes do software nem tão pouco isso é necessário. Mas é de extrema importância que exista uma pessoa que tenha muita sensibilidade numa segunda fase, aquando da definição dos requisitos. O documento onde constam os requisitos deve ser o documento mais importante do projeto. E as alterações devem ser sempre registadas.

Quando o interlocutor não é o mesmo que faz a análise do sistema é normal que exista perda de informação. Por exemplo, o cliente queria uma área reservada para colocar imagens de grande resolução e catálogos para os clientes (o nosso telheiro) mas esta informação foi falada numa primeira reunião, onde o analista (arquiteto) não estava presente. É normal que eu nunca vá ter o telheiro. Ou preciso de tempo, para o fazer… e lá se foi o prazo de entrega!

Importante: avaliar o projeto no final

Construímos a casa. O cliente está feliz. Nós fomos pagos pelo nosso trabalho e agora é tempo de fazer contas.

Cada pessoa trabalha de forma diferente mas o custo de cada fase deve ser analisado por vários motivos:

  • é preciso avaliar nossa margem de lucro real — o valor que idealmente cobrámos, com as alterações e com as ofertas (borlas) que fizemos ao cliente podem influenciar a margem de lucro.
  • é conveniente avaliar onde houve mais dificuldade em acertar com os prazos e com o tempo de implementação — penso que demoro X horas a implementar um formulário. Na realidade demoro X + 5 horas e a minha estimativa está errada. Tenho 3 formulários. Vou demorar mais 15 horas do que previ inicialmente. São, pelo menos, mais dois dias de trabalho.
  • alterações em diferentes áreas têm impactos diferentes — baseamos-nos sempre em experiências passadas mas nem sempre é previsível o tempo que vamos demorar. Para determinadas áreas uma margem de 5% pode ser suficiente enquanto que para outras, 15% pode ser uma margem demasiado curta.
  • coloquem sempre uma margem de segurança — algo que ache que seja confortável para concluir a tarefa ou a alteração. Se 10% não foram suficientes desta vez, na próxima adicionem 15%.

Orçamentar — A ciência exata

Tenho percebido, na minha experiência, que há coisa mais ou menos tangíveis de ser orçamentar. Depois de fazer uma máquina, que leva exatamente 30 peças e demoro 30 minutos a montar, sei quanto me custa essa máquina a produzir. Sei qual o custo de produzir máquinas iguais. Isto é um processo mecanizado, tipo linha de montagem.

Bom, em software, as coisas não são tão assim. Todos os processos criativos, como é o caso do software, podem ser mais ou menos complexos. O fator humano tem um peso muito importante. Sei-o claramente. Sei que entre dois programadores diferentes vão existir abordagens diferente e vão ter tempos de conclusão diferentes para o mesmo projeto. Sei, também, que o rendimento entre pessoas é diferente e que o cansaço é um fator que conta muito. A motivação outro é também um fator a equacionar.

A minha fórmula mágica

Bom, se esperavam que tivesse uma super fórmula mágica para orçamentos de software… lamento desiludir, mas não tenho. Tenho alguns parâmetros que consigo avaliar. Tenho as minhas métricas e os meus cálculos mas é tudo muito empírico, baseado em experiências passadas. No entanto, a minha fórmula é geralmente a seguinte.

Orçamento = Nº de Horas Previstas * Coeficiente de Caganço * Valor Hora

O que vario, muitas vezes, é o Coeficiente de Caganço — não sei de onde vem o termo mas sei que alguém o usou no passado: um professor, um cliente, um gestor… alguém. E curti a expressão e ficou. Este coeficiente tanto pode ser 10% ou 5% ou 20%. Recordo-me de já ter usado, uma vez, 65%. Isto porque o Briefing era tão complexo quanto isto:

Queremos um site que corresponda aos standards atuais, seja responsivo e traduza claramente a nossa marca. Deve ser clean e atrativo. Ainda não temos os conteúdos.

Com isto, só ficam zonas cinzentas. Orçamentem lá isto. Bom, não me vou comprometer em escrever um artigo rápido para freelancers, ao jeito de “Orçamentos para freelancers” mas vou pensar nisso com carinho. Já me pediram e vou tentar fazer.

Qualquer questão, usem as vias disponíveis. Bons orçamentos!

Abraço.