paint-brush
Como criei uma calculadora de custo de softwarepor@romanlapa
2,562 leituras
2,562 leituras

Como criei uma calculadora de custo de software

por Roman Lapa10m2023/04/26
Read on Terminal Reader

Muito longo; Para ler

Este artigo detalha a experiência de criar uma calculadora de custo de desenvolvimento de software que produz estimativas altamente precisas. Continue lendo para descobrir como a solução funciona sob o capô!
featured image - Como criei uma calculadora de custo de software
Roman Lapa HackerNoon profile picture
0-item
1-item

Como CTO de uma pequena empresa de desenvolvimento de software que cria soluções personalizadas de IoT, ajudo meus colegas de equipe a avaliar os custos de desenvolvimento de aplicativos ao preparar estimativas de projetos para nossos clientes em potencial.


Como trabalhamos principalmente com startups, nossos clientes são muito sensíveis a seus orçamentos.

Idealmente, você inicia cada projeto de desenvolvimento de software com uma fase de descoberta e mergulha nos requisitos funcionais e não funcionais de um produto desde o início. Como resultado, você pode definir o conjunto de recursos do produto, desde protótipos funcionais até um MVP e um produto completo, e chegar a uma estimativa precisa e realista.


Idealmente, mas esse não é o caso de startups que operam com pouco dinheiro, já que a descoberta também custa dinheiro.*


Alguns de nossos clientes também podem ter expectativas irrealistas em relação ao preço do desenvolvimento de uma solução de tecnologia. Todos nós já ouvimos piadas sobre startups que procuram construir um clone do Facebook por US$ 10 mil – e a parte mais triste é que algumas pessoas acham que isso é possível.


Portanto, eu estava brincando com a ideia de minimizar o trabalho de avaliação do nosso lado, ao mesmo tempo em que oferecia aos clientes um preço aproximado para dar vida à sua ideia de tecnologia antes mesmo de entrarem em contato com minha equipe. Uma verificação da realidade, se desejar. 🙂


Foi assim que o conceito de calculadora de custos de software se formou na minha cabeça .


Um geek de coração e um desenvolvedor móvel por profissão, decidi matar dois coelhos com uma cajadada só. Além dos objetivos mencionados acima, também coloquei meus conhecimentos de Flutter à prova. Desenvolvi um aplicativo de cálculo de custo de software de plataforma cruzada que funciona perfeitamente em dispositivos iOS e Android e em navegadores sem recorrer a JavaScript, o que, em sua forma pura, me deixa arrepiado.


O Flutter provou ser estável e eficiente o suficiente para essa tarefa. Estou até pensando em construir uma calculadora física baseada em um computador de placa única como presente de Natal para nossos fiéis clientes. Além disso, outros desenvolvedores podem usar a calculadora para avaliar o preço do desenvolvimento de uma solução de tecnologia específica (ou parte dela!) fora de sua especialidade.


De qualquer forma, neste artigo, detalho minha experiência criando a solução e os desafios que encontrei no caminho.


Aqui vamos nos.


Como tirei do papel a ideia da calculadora de custo de desenvolvimento de software

Ok, ok, eu sei o que você está pensando.


*Engenharia de uma solução de software, seja uma pequena loja online ou um completo sistema de back-office para orquestrar unidades de crioterapia , é uma estrada longa e ventosa com centenas de curvas possíveis e armadilhas a serem evitadas.*


E, a menos que você tenha preparado um documento exaustivo de especificação de requisitos de software (SRS) listando o conjunto de recursos do produto, requisitos de UI/UX, pilha de tecnologia ideal, público-alvo, provisões de conformidade e uma dúzia de outras questões, é impossível colocar um preço em sua aplicação.


Essas eram exatamente as minhas preocupações. Então, decidi verificar como outros engenheiros de software abordaram o problema de precisão de estimativa antes de mim.


Tendo testado várias calculadoras de custo de software, identifiquei vários problemas a serem lembrados ao criar minha solução:


  1. As calculadoras dos concorrentes ignoram completamente as necessidades de um usuário não técnico. Por exemplo, como diabos devo saber quais linguagens de programação meu aplicativo usará se eu for novo em programação? Para lidar com esse problema, fiz questão de escrever um guia detalhado sobre como usar minha calculadora na página de destino que o acompanha.


  2. Algumas soluções estimam o preço de montar uma equipe de software em vez de construir um produto de software. A menos que você tenha trabalhado com empresas de engenharia de software antes ou dirigido uma você mesmo, provavelmente não conhece as entranhas do desenvolvimento de software, incluindo a composição ideal de uma equipe de software e as funções dentro dela. É por isso que me concentrei nos recursos do software em vez das responsabilidades do desenvolvedor e implementei o modificador de taxa combinada para simplificar os cálculos.


  3. A maioria das calculadoras fornece apenas uma estimativa em troca de um endereço de e-mail comercial. Sou um engenheiro de software, não um profissional de marketing. 🙂 Quero resolver os problemas das empresas ao invés de bombardeá-las com e-mails promovendo nossos serviços; se precisarem de ajuda, eles nos escreverão de qualquer maneira! É por isso que minha calculadora não coleta nenhum dado e não exige que você preencha nenhum formulário antes de obter sua estimativa. Sabemos apenas que alguém chegou à página inicial da calculadora de custo de software, marcou todas as caixas e recebeu uma estimativa.

Como minha calculadora avalia o custo do desenvolvimento de software personalizado

Minha calculadora considera a plataforma de destino de um aplicativo e os recursos esperados para produzir estimativas de custo de software precisas. Em seguida, vários modificadores são implementados para reduzir ou aumentar o preço do software personalizado com base no estágio do projeto e nas implicações específicas do setor. Na etapa final, os esforços de desenvolvimento de software, estimados em horas-homem, são multiplicados pela taxa combinada da equipe de TI.


Para elaborar o mecanismo de avaliação, estudei mais de 20 projetos que minha empresa concluiu e uma dúzia de projetos dos portfólios de nossos parceiros. Esses projetos variavam em tamanho e complexidade, desde aplicativos de reserva de eventos até soluções domésticas inteligentes personalizadas. Algumas tecnologias e soluções, como inteligência artificial e AR/VR, estão deliberadamente ausentes da calculadora porque raramente crio esses aplicativos. Assim, a calculadora reflete o conhecimento básico da minha empresa e posso atestar a precisão de suas estimativas.


Aqui estão os principais fatores de custo que a calculadora leva em consideração:


  • Plataformas alvo. Um aplicativo criado para uma plataforma específica (iOS, Android, Web ou uma solução multiplataforma baseada em Flutter ) tem um conjunto mínimo de recursos viáveis, totalizando esforços de desenvolvimento de software para X horas-homem. Se estivermos construindo uma solução multiplataforma, devemos multiplicar as horas pelo número de plataformas de destino.


  • Preço do recurso. Cada recurso do aplicativo por exemplo, os perfis de usuário final ou administrador tem um tempo mínimo de Y pessoas-hora. Os esforços aumentam proporcionalmente quando você adiciona sub-recursos para aprimorar a funcionalidade de um aplicativo.


  • Modificadores. Indústrias e recursos de software têm multiplicadores de dificuldade. Por exemplo, aumentei a contagem de horas em 20% para projetos de TI de assistência médica para abordar possíveis problemas de desenvolvimento, como integrações com sistemas médicos existentes, conformidade etc. Para calcular os modificadores de complexidade, dividi a soma dos recursos do software pelo total de horas contar. Um modificador constante adiciona números de gerenciamento de projeto e garantia de qualidade à estimativa. Quando os recursos de um aplicativo e as plataformas pretendidas são avaliados, o número é multiplicado por 1,3, aumentando a contagem de horas em 30%. Por fim, existe o modificador de estágio do projeto, que avalia o custo de desenvolvimento do software com base na prontidão do produto. Se um usuário deseja apenas projetar a interface do aplicativo, a estimativa final é multiplicada por 0,16. Para protótipos funcionais, o modificador é 0,25. A versão do produto mínimo viável (MVP) de uma solução de software contendo apenas recursos suficientes para ir ao mercado tem um modificador de 0,5-0,75. Por fim, os esforços de desenvolvimento em horas-homem são multiplicados por 1 para produtos prontos para o mercado.


  • Taxas por hora do desenvolvedor. O preço de construir uma solução de software personalizada depende de quem a está fazendo. As taxas horárias do engenheiro de software diferem muito, dependendo da especialização, experiência e país de residência de uma pessoa. De acordo com uma pesquisa recente da Acceleance , essas taxas podem variar de apenas US$ 25 por pessoa/hora para desenvolvedores móveis no sul da Ásia a até US$ 172/hora (e aumentando!) para engenheiros de software sênior na América do Norte. Ao desenvolver minha calculadora de custo de software, programei-a para multiplicar a contagem final de horas pela taxa combinada de uma equipe de projeto de software estacionada na Europa Oriental, onde minha empresa opera. Atualmente, oscila em torno de US$ 41,6 por pessoa/hora.


Abaixo você encontrará uma fórmula que resume os fatores mencionados acima para produzir uma estimativa:

Para calcular o custo do desenvolvimento de software personalizado, a calculadora baseada no Flutter avalia vários parâmetros, incluindo o número de plataformas suportadas, o estágio do projeto e a complexidade dos recursos do software.



Deixe-me escrever isso para você:


  1. Se um recurso não estiver relacionado a dispositivos móveis e não exigir implementação em várias plataformas, ele será marcado como featurePrice.


  2. avgFeatureComplexityMult aumenta a estimativa com base na pilha de tecnologia de um projeto e no setor de destino.


  3. productStageMultiplier denota o estágio desejado do produto — ou seja, consentimentos de design, um protótipo, MVP ou solução pronta para o mercado.


  4. As horas de PM/QA são obrigatórias para todos os projetos, a menos que o cliente lide com a parte de gerenciamento e garantia de qualidade. Nesse caso, porém, nenhum desenvolvedor pode garantir que os bugs não se manifestarão no código. Um pequeno esclarecimento aqui: algumas empresas esperam que seu fornecedor produza código livre de bugs na primeira tentativa e se perguntam genuinamente por que precisam de garantia de qualidade.


    Clientes maduros, ao contrário, têm expectativas adequadas em relação à qualidade do código de teste e investem cedo em QA para evitar lidar com bugs pós-lançamento.


A questão é: quão precisas são essas estimativas?


Considerando minha experiência como CTO e desenvolvedor Android sênior, a calculadora de custo de software fornece estimativas pontuais para todos os projetos simples e projetos de média complexidade.


Para empreendimentos mais desafiadores envolvendo tecnologias inovadoras, como a Internet das Coisas, a calculadora pode reduzir a estimativa final em 10-13%. Nesses casos, revisamos o preço depois de decidir sobre a pilha de tecnologia e o conjunto de recursos da solução. As revisões também são necessárias se o seu sistema de TI incorporar recursos e tecnologias omitidos da calculadora, como inteligência artificial e integrações com serviços de terceiros.

Como estimar seu projeto usando minha calculadora de custos de software

Um visitante do site é obrigado a preencher as informações sobre as seguintes características de um aplicativo:


  1. Tipo de solução. Esta seção permite que os usuários selecionem uma das seis categorias: Internet das Coisas, Comércio Eletrônico, Educação, Viagens, Educação ou Outros.
  2. Fase do projeto. Como eu disse anteriormente, o modificador de estágio do projeto aumenta ou reduz o custo de desenvolvimento de software com base na prontidão de um produto de software. A diferença entre as estimativas para vários estágios do produto também pode dar ao cliente uma ideia de quanto poderia custar para levar seu conceito ainda mais longe, aprimorando a solução após seu lançamento.
  3. Plataformas alvo. A versão atual da calculadora permite que os usuários escolham entre a pilha de tecnologia de desenvolvimento de aplicativos móveis nativos (iOS, Android), aplicativos multiplataforma criados com Flutter e aplicativos para web e tablet. Eu escolhi a versão para tablet de aplicativos móveis como uma categoria independente devido à grande personalização das interfaces do usuário.
  4. Design de interface do usuário/UX. Com base na complexidade esperada do ativo de design, o modificador UI/UX adiciona uma certa quantidade de horas-homem à estimativa. Incluí o recurso Animações na lista para clientes que procuram criar transições de navegação suaves entre as telas de um aplicativo em protótipos funcionais. A estimativa será reduzida se o usuário estiver disposto a fornecer seus próprios recursos de design.
  5. Funções do usuário. A calculadora de custos de software contém uma seção listando as funções de usuário antecipadas do aplicativo. Eles variam de usuários finais a soluções de software de vários níveis que atendem às necessidades da equipe de uma empresa, gerentes de aplicativos e clientes.
  6. Idiomas suportados. A calculadora de custo de desenvolvimento de software aumentará a estimativa para sites e aplicativos em vários idiomas.
  7. Opções de login. Aqui, optei pelos três mecanismos de login mais usados - ou seja, por meio de uma conta de mídia social, endereço de e-mail ou senha de uso único (OTP).
  8. Suporte ao cliente. Um cliente em potencial que pretenda manter contato com seus clientes pode escolher uma ou várias opções de suporte ao cliente disponíveis, variando em complexidade de um formulário de contato a um sistema de bilhética integrado.
  9. Estratégia de monetização. Nesse bloco, os usuários podem escolher entre compras únicas e assinaturas – ou desativar qualquer mecanismo de monetização.
  10. Tipos de conteúdo. Listei texto, fotos, vídeos e arquivos de áudio como os tipos mais comuns de conteúdo disponíveis em soluções de software, adicionando recursos de streaming como um recurso separado. É possível adicionar várias opções ao orçamento.
  11. Chat ao vivo e chamadas de áudio/vídeo para suporte ao cliente. Como parte da funcionalidade de suporte ao cliente discutida anteriormente, os chats ao vivo podem permitir que vários usuários participem da conversa e troquem arquivos. A funcionalidade de chamadas de áudio e vídeo é cobrada separadamente.
  12. Geolocalização. Ao criar a calculadora do software, configurei mapas com pinos e mapas com roteamento como as principais opções de geolocalização.
  13. Reservas de eventos. A estimativa aumentará dependendo se seu aplicativo oferecerá suporte à funcionalidade de reserva de eventos e quem pode realizá-la (por exemplo, administradores ou usuários finais).
  14. O envolvimento do cliente. Escolhi notificações push e links diretos como os principais mecanismos para manter os usuários engajados.
  15. Gratificação e gratificação. A calculadora permite apenas que os usuários selecionem entre curtidas e avaliações. Os usuários também podem adicionar recursos de gamificação, como barras de progresso e quadros de liderança.
  16. Análise. A calculadora oferece a inclusão de recursos analíticos básicos ou avançados no conjunto de recursos do aplicativo. Lembre-se de que não estamos falando sobre análises baseadas em IA aqui.
  17. Conformidade. Se um aplicativo personalizado precisa estar em conformidade com determinados regulamentos, como HIPAA, GDPR ou PCI/DSS, nossa estimativa tende a aumentar.
  18. Gerenciamento de conteúdo. Finalmente, a calculadora de custos de software pede aos usuários que esclareçam suas necessidades de gerenciamento de conteúdo, desde recursos básicos de criação de conteúdo até um CMS adequado e a combinação CMS mais visualização de dados.

Resumindo

Viva, nós conseguimos!


Agora que o usuário tem uma estimativa aproximada, ele pode ajustá-la excluindo ou adicionando recursos de software manualmente, especificando o estágio do produto etc.


Enquanto escrevia este artigo, também preenchi o formulário, selecionando as características de um produto personalizado de IoT médico compatível com HIPAA pronto para ser lançado no mercado. A calculadora me deu uma estimativa de 3.390,4 pessoas-hora, ou US$ 140.992 se multiplicado pela taxa de equipe combinada (US$ 41,6).


Vamos aumentar a estimativa em 10%, considerando possíveis discrepâncias enraizadas no tipo de projeto ( IoT ) e no setor de destino (saúde), e obteremos US$ 150.000.


Este é um preço realista para uma solução personalizada de Internet das Coisas?


O pacote de software da câmara criogênica que mencionei no início do artigo ajuda nosso cliente a gerenciar unidades criogênicas conectadas instaladas em dezenas de academias e salões de spa nos EUA. Enquanto o projeto ainda está em desenvolvimento e custa mais de $ 1.000.000 em sua forma atual , há dois anos, quando a solução de software ultrapassou a marca de 3.000 horas-homem, ela possuía aproximadamente a mesma funcionalidade do projeto imaginário que tentei estimar usando a calculadora.


No geral, estou satisfeito com o resultado: testei o Flutter com sucesso, me assegurando de seus robustos recursos de desenvolvimento de plataforma cruzada, minimizei o trabalho de avaliação da parte de minha equipe e permiti que nossos clientes em potencial obtivessem estimativas aproximadas realistas de seus projetos de software antes entrando em contato com uma empresa de engenharia de software.


Mas como posso ter todo tipo de viés — afinal, fui eu quem escreveu o código! — Eu encorajo você a experimentar a calculadora e compartilhar suas ideias sobre sua funcionalidade e precisão!


Então, clique na seção de comentários abaixo! Seu feedback é muito apreciado!