paint-brush
Cómo construí una calculadora de costos de softwarepor@romanlapa
2,557 lecturas
2,557 lecturas

Cómo construí una calculadora de costos de software

por Roman Lapa10m2023/04/26
Read on Terminal Reader

Demasiado Largo; Para Leer

Este artículo detalla la experiencia de crear una calculadora de costos de desarrollo de software que produce estimaciones muy precisas. ¡Siga leyendo para descubrir cómo funciona la solución bajo el capó!
featured image - Cómo construí una calculadora de costos de software
Roman Lapa HackerNoon profile picture
0-item
1-item

Como CTO de una pequeña empresa de desarrollo de software que crea soluciones de IoT personalizadas, ayudo a mis compañeros de equipo a evaluar los costos de desarrollo de aplicaciones al preparar estimaciones de proyectos para nuestros clientes potenciales.


Dado que trabajamos principalmente con empresas emergentes, nuestros clientes son muy sensibles a sus presupuestos.

Idealmente, comienza cada proyecto de desarrollo de software con una fase de descubrimiento y se sumerge en los requisitos funcionales y no funcionales de un producto desde el principio. Como resultado, puede definir el conjunto de funciones del producto, desde prototipos funcionales hasta un MVP o un producto completo, y obtener una estimación realista y precisa.


Idealmente, pero ese no es el caso de las nuevas empresas que operan con muy poco dinero ya que el descubrimiento también cuesta dinero.*


Algunos de nuestros clientes también pueden tener expectativas poco realistas con respecto al precio de desarrollar una solución tecnológica. Todos hemos escuchado chistes sobre nuevas empresas que buscan construir un clon de Facebook por $ 10k, y la parte más triste es que algunas personas creen que eso es posible.


Por lo tanto, estaba jugando con la idea de minimizar el trabajo de evaluación de nuestra parte mientras les daba a los clientes un precio aproximado por dar vida a su idea tecnológica incluso antes de que se pusieran en contacto con mi equipo. Un control de la realidad, si lo desea. 🙂


Así es como se formó en mi cabeza el concepto de calculadora de costos de software .


Geek de corazón y desarrollador móvil de profesión, decidí matar dos pájaros de un tiro. Además de los objetivos mencionados anteriormente, también puse a prueba mi conocimiento de Flutter. Desarrollé una aplicación de calculadora de costos de software multiplataforma que se ejecuta sin problemas en dispositivos iOS y Android y en navegadores sin recurrir a JavaScript, lo que, en su forma pura, me da escalofríos.


Flutter demostró ser lo suficientemente estable y eficiente para esa tarea. Incluso estoy pensando en construir una calculadora física basada en una computadora de placa única como regalo de Navidad para nuestros fieles clientes. Además, los compañeros desarrolladores pueden usar la calculadora para evaluar el precio de desarrollar una solución tecnológica en particular (¡o una parte de ella!) fuera de su experiencia.


De todos modos, en este artículo, detallo mi experiencia creando la solución y los desafíos que he encontrado en el camino.


Así que, aquí vamos.


Cómo despegué la idea de la calculadora de costos de desarrollo de software

Vale, vale, sé lo que estás pensando.


*Ingeniería de una solución de software, ya sea una pequeña tienda en línea o una completa sistema administrativo para orquestar unidades de crioterapia , es un camino largo y ventoso con cientos de posibles giros y trampas para evitar.*


Y a menos que haya preparado un documento exhaustivo de especificación de requisitos de software (SRS) que enumere el conjunto de características del producto, los requisitos de UI/UX, la pila de tecnología óptima, el público objetivo, las disposiciones de cumplimiento y una docena de otros problemas, es imposible ponerle un precio. su aplicación.


Estas eran exactamente mis preocupaciones. Así que decidí comprobar cómo otros ingenieros de software abordaron el problema de la precisión de la estimación antes que yo.


Después de probar varias calculadoras de costos de software, identifiqué varios problemas para recordar al crear mi solución:


  1. Las calculadoras de la competencia ignoran por completo las necesidades de un usuario no técnico. Por ejemplo, ¿cómo se supone que voy a saber qué lenguajes de programación usará mi aplicación si soy nuevo en la programación? Para navegar por este problema, me aseguré de escribir una guía detallada sobre cómo usar mi calculadora en la página de inicio adjunta.


  2. Algunas soluciones estiman el precio de establecer un equipo de software en lugar de crear un producto de software. A menos que haya trabajado antes con empresas de ingeniería de software o que haya ejecutado una usted mismo, probablemente no conozca las entrañas del desarrollo de software, incluida la composición óptima de un equipo de software y los roles dentro de él. Es por eso que me concentré en las características del software en lugar de las responsabilidades del desarrollador e implementé el modificador de tasa combinado para simplificar los cálculos.


  3. La mayoría de las calculadoras solo dan una estimación a cambio de una dirección de correo electrónico comercial. Soy un ingeniero de software, no un vendedor. 🙂 Quiero resolver los problemas de las empresas en lugar de bombardearlas con correos electrónicos promocionando nuestros servicios; si necesitan ayuda, ¡nos escribirán de todos modos! Es por eso que mi calculadora no recopila ningún dato , y no requiere que llene ningún formulario antes de obtener su estimación. Solo sabemos que alguien llegó a la página de inicio de la calculadora de costos de software, marcó todas las casillas y recibió un presupuesto.

Cómo mi calculadora evalúa el costo del desarrollo de software personalizado

Mi calculadora considera la plataforma de destino de una aplicación y las características esperadas para producir estimaciones precisas de costos de software. A continuación, se implementan varios modificadores para reducir o aumentar el precio del software personalizado según la etapa del proyecto y las implicaciones específicas de la industria. En el paso final, los esfuerzos de desarrollo de software, estimados en horas-persona, se multiplican por la tasa del equipo de TI combinado.


Para diseñar el mecanismo de evaluación, estudié más de 20 proyectos que mi empresa completó y una docena de proyectos de las carteras de nuestros socios. Estos proyectos variaron en tamaño y complejidad, desde aplicaciones de reserva de eventos hasta soluciones personalizadas para el hogar inteligente. Algunas tecnologías y soluciones, como la inteligencia artificial y AR/VR, faltan deliberadamente en la calculadora porque rara vez construyo tales aplicaciones. Por lo tanto, la calculadora refleja la experiencia central de mi empresa y puedo garantizar la precisión de sus estimaciones.


Estos son los factores de costo clave que la calculadora tiene en cuenta:


  • Plataformas de destino. Una aplicación creada para una plataforma en particular (iOS, Android, web o una solución multiplataforma basada en Flutter ) tiene un conjunto mínimo de funciones viables, lo que suma los esfuerzos de desarrollo de software en X horas-persona. Si estamos construyendo una solución multiplataforma, debemos multiplicar las horas por la cantidad de plataformas de destino.


  • Precio de la función. Cada característica de la aplicación , por ejemplo, los perfiles de usuario final o administrador , tiene una etiqueta de tiempo mínima de Y horas-persona. Los esfuerzos aumentan proporcionalmente cuando agrega subcaracterísticas para mejorar la funcionalidad de una aplicación.


  • Modificadores. Las industrias y las características del software tienen multiplicadores de dificultad. Por ejemplo, aumenté el recuento de horas en un 20 % para proyectos de TI de atención médica para abordar posibles problemas de desarrollo, como integraciones con sistemas médicos existentes, cumplimiento, etc. Para calcular los modificadores de complejidad, dividí la suma de las funciones del software por la hora total contar. Un modificador constante agrega números de control de calidad y gestión de proyectos a la estimación. Cuando se han evaluado las características de una aplicación y las plataformas previstas, el número se multiplica por 1,3, lo que aumenta el recuento de horas en un 30 %. Por último, está el modificador de etapa del proyecto, que evalúa el costo del desarrollo de software en función de la preparación del producto. Si un usuario solo quiere diseñar la interfaz de la aplicación, la estimación final se multiplica por 0,16. Para prototipos funcionales, el modificador es 0,25. La versión de producto mínimo viable (MVP) de una solución de software que contiene las funciones suficientes para salir al mercado tiene un modificador de 0,5 a 0,75. Finalmente, los esfuerzos de desarrollo en horas-persona se multiplican por 1 para productos listos para el mercado.


  • Tarifas por hora del desarrollador. El precio de crear una solución de software personalizada depende de quién la haga. Las tarifas por hora de los ingenieros de software difieren mucho según la especialización, la experiencia y el país de residencia de una persona. De acuerdo a una encuesta reciente de Accelerance , estas tarifas pueden variar desde tan solo $25 por hora-persona para desarrolladores móviles en el sur de Asia hasta $172/hora (¡y contando!) para ingenieros de software sénior con sede en América del Norte. Al desarrollar mi calculadora de costos de software, la programé para multiplicar el conteo final de horas por la tarifa combinada de un equipo de proyecto de software ubicado en Europa del Este, donde opera mi empresa. Actualmente, fluctúa alrededor de $41.6 por persona-hora.


A continuación encontrará una fórmula que resume los factores mencionados anteriormente para producir una estimación:

Para calcular el costo del desarrollo de software personalizado, la calculadora basada en Flutter evalúa varios parámetros, incluida la cantidad de plataformas admitidas, la etapa del proyecto y la complejidad de las características del software.



Déjame escribir esto para ti:


  1. Si una característica no está relacionada con dispositivos móviles y no requiere implementación en varias plataformas, se marcará como featurePrice.


  2. avgFeatureComplexityMult aumenta la estimación en función de la pila tecnológica y la industria de destino de un proyecto.


  3. productStageMultiplier indica la etapa deseada del producto, es decir, aprobación del diseño, prototipo, MVP o solución lista para el mercado.


  4. Las horas de PM/QA son obligatorias para todos los proyectos a menos que el cliente maneje la parte de gestión y control de calidad. En este caso, sin embargo, ningún desarrollador puede garantizar que los errores no se manifiesten en el código. Una pequeña aclaración aquí: algunas empresas esperan que su proveedor produzca un código sin errores en el primer intento y realmente se preguntan por qué necesitan garantía de calidad.


    Los clientes maduros, por el contrario, tienen expectativas adecuadas con respecto a la calidad del código de prueba e invierten temprano en control de calidad para evitar lidiar con errores posteriores al lanzamiento.


La pregunta es, ¿qué tan precisas son estas estimaciones?


Teniendo en cuenta mi experiencia como CTO y desarrollador sénior de Android, la calculadora de costos de software ofrece estimaciones puntuales para todos los proyectos simples y proyectos de complejidad media.


Para proyectos más desafiantes que involucren tecnologías innovadoras, como Internet de las cosas, la calculadora puede reducir la estimación final en un 10-13 %. En tales casos, revisamos el precio después de decidir sobre la pila tecnológica y el conjunto de funciones de la solución. También se necesitan revisiones si su sistema de TI incorpora funciones y tecnologías omitidas en la calculadora, como inteligencia artificial e integraciones con servicios de terceros.

Cómo estimar su proyecto usando la calculadora de costos de mi software

Se requiere que un visitante del sitio web complete la información sobre las siguientes características de una aplicación:


  1. Tipo de solución. Esta sección permite a los usuarios seleccionar una de las seis categorías: Internet de las cosas, comercio electrónico, educación, viajes, educación u otra.
  2. Etapa del proyecto. Como le dije anteriormente, el modificador de etapa del proyecto aumenta o reduce el costo del desarrollo de software en función de la preparación del producto de software. La diferencia entre las estimaciones para varias etapas del producto también puede darle al cliente una idea de cuánto podría costarle llevar su concepto aún más lejos, mejorando la solución luego de su lanzamiento.
  3. Plataformas de destino. La versión actual de la calculadora permite a los usuarios elegir entre la pila de tecnología de desarrollo de aplicaciones móviles nativas (iOS, Android), aplicaciones multiplataforma creadas con Flutter y aplicaciones web y para tabletas. Destaqué la versión para tableta de las aplicaciones móviles como una categoría independiente debido a la gran personalización de las interfaces de usuario.
  4. Diseño de interfaz de usuario/UX. En función de la complejidad esperada del activo de diseño, el modificador UI/UX agrega una cierta cantidad de horas-persona a la estimación. Incluí la función Animaciones en la lista para los clientes que buscan crear transiciones de navegación fluidas entre las pantallas de una aplicación en prototipos funcionales. La estimación se reducirá si el usuario está dispuesto a proporcionar sus propios activos de diseño.
  5. Roles del usuario. La calculadora de costos de software contiene una sección que enumera los roles de usuario anticipados de la aplicación. Estos van desde usuarios finales hasta soluciones de software multinivel que satisfacen las necesidades del personal, los administradores de aplicaciones y los clientes de una empresa.
  6. Idiomas admitidos. La calculadora de costos de desarrollo de software aumentará la estimación para sitios web y aplicaciones en varios idiomas.
  7. Opciones de inicio de sesión. Aquí, opté por los tres mecanismos de inicio de sesión más utilizados, es decir, a través de una cuenta de redes sociales, una dirección de correo electrónico o una contraseña de un solo uso (OTP).
  8. Atención al cliente. Un prospecto que desee mantenerse en contacto con sus clientes puede elegir una o varias de las opciones de atención al cliente disponibles, que varían en complejidad desde un formulario de contacto hasta un sistema integrado de emisión de boletos.
  9. Estrategia de monetización. En este bloque, los usuarios pueden seleccionar entre compras únicas y suscripciones, o optar por no participar en ningún mecanismo de monetización.
  10. Tipos de contenido. Enumeré los archivos de texto, fotos, videos y audio como los tipos de contenido más comunes disponibles en las soluciones de software y agregué capacidades de transmisión como una característica separada. Es posible añadir múltiples opciones al presupuesto.
  11. Chat en vivo y llamadas de audio/video para atención al cliente. Como parte de la funcionalidad de atención al cliente discutida anteriormente, los chats en vivo pueden permitir que varios usuarios se unan a la conversación e intercambien archivos. La funcionalidad de llamadas de audio y video se factura por separado.
  12. Geolocalización. Al crear la calculadora de software, configuré mapas con alfileres y mapas con enrutamiento como las principales opciones de geolocalización.
  13. Reservas de eventos. La estimación aumentará dependiendo de si su aplicación admitirá la funcionalidad de reserva de eventos y quién puede realizarla (por ejemplo, administradores o usuarios finales).
  14. Compromiso con el cliente. Elegí las notificaciones automáticas y los enlaces profundos como los principales mecanismos para mantener a los usuarios interesados.
  15. Gratificación y gratificación. La calculadora solo permite a los usuarios seleccionar entre Me gusta y calificaciones. Los usuarios también pueden agregar funciones de gamificación como barras de progreso y tableros de liderazgo.
  16. Analítica. La calculadora ofrece incluir capacidades analíticas básicas o avanzadas en el conjunto de características de la aplicación. Tenga en cuenta que no estamos hablando de análisis impulsados por IA aquí.
  17. Cumplimiento. Si una aplicación personalizada necesita cumplir con ciertas regulaciones, como HIPAA, GDPR o PCI/DSS, nuestra estimación seguramente aumentará.
  18. Gestión de contenido. Finalmente, la calculadora de costos de software les pide a los usuarios que aclaren sus necesidades de administración de contenido, desde las capacidades básicas de creación de contenido hasta un CMS adecuado y la combinación de CMS más visualización de datos.

Resumiendo

¡Hurra, lo logramos!


Ahora que el usuario tiene una estimación aproximada, puede ajustarla eliminando o agregando funciones de software manualmente, especificando la etapa del producto, etc.


Mientras escribía este artículo, también llené el formulario, seleccionando las características de un producto de IoT médico personalizado que cumple con HIPAA listo para ser lanzado al mercado. La calculadora me dio una estimación de 3390,4 horas-persona, o $140 992 si se multiplica por la tarifa del equipo combinado ($41,6).


Aumentemos la estimación en un 10 %, teniendo en cuenta las posibles discrepancias originadas en el tipo de proyecto ( IoT ) y la industria objetivo (salud), y obtendremos $150 000.


¿Es este un precio realista para una solución personalizada de Internet de las cosas?


El paquete de software de cámara criogénica al que me referí al comienzo del artículo ayuda a nuestro cliente a administrar unidades criogénicas conectadas instaladas en docenas de gimnasios y salones de spa en los EE. UU. Si bien el proyecto aún está en desarrollo y cuesta más de $ 1,000,000 en su forma actual , hace dos años, cuando la solución de software superó la marca de 3000 horas-persona, poseía aproximadamente la misma funcionalidad que el proyecto imaginario que traté de estimar usando la calculadora.


En general, estoy satisfecho con el resultado: probé con éxito Flutter, me aseguré de sus sólidas capacidades de desarrollo multiplataforma, minimicé el trabajo de evaluación por parte de mi equipo y permití que nuestros prospectos obtuvieran estimaciones realistas de sus proyectos de software antes ponerse en contacto con una empresa de ingeniería de software.


Pero como puedo tener todo tipo de sesgos, después de todo, ¡soy yo quien escribió el código! — ¡Te animo a que pruebes la calculadora y compartas tus opiniones sobre su funcionalidad y precisión!


Entonces, ¡haz clic en la sección de comentarios a continuación! ¡Sus comentarios son muy apreciados!