作为一家构建定制 IoT 解决方案的小型软件开发公司的 CTO,我在为我们的前景准备项目估算时帮助我的队友评估应用程序开发成本。
由于我们主要与初创公司合作,因此我们的客户对他们的预算非常敏感。
理想情况下,您从发现阶段开始每个软件开发项目,并尽早深入了解产品的功能和非功能需求。因此,您可以定义产品的功能集,从功能原型到 MVP 再到成熟的产品,并提出切合实际的准确估算。
理想情况下——但对于小本经营的初创公司来说情况并非如此,因为发现也需要花钱。 *
我们的一些客户也可能对开发技术解决方案的价格抱有不切实际的期望。我们都听过关于初创公司希望以 1 万美元的价格建立 Facebook 克隆的笑话——最可悲的是,有些人确实认为这是可能的。
因此,我一直在考虑尽量减少我们这边的评估工作,同时在客户联系我的团队之前给他们一个大概的价格,让他们将他们的技术想法付诸实践。如果您愿意,可以进行现实检查。 🙂
本质上是极客,职业是移动开发人员,我决定一箭双雕。除了上述目标外,我还测试了我对 Flutter 的了解。我开发了一个跨平台的软件成本计算器应用程序,它可以在 iOS 和 Android 设备以及浏览器中无缝运行,而无需借助 JavaScript,而 JavaScript 的纯粹形式让我感到畏缩。
事实证明,Flutter 足够稳定和高效来完成这项任务。我什至考虑构建一个基于单板计算机的物理计算器,作为送给我们忠实客户的圣诞礼物。此外,其他开发人员可以使用计算器来评估在他们的专业知识之外开发特定技术解决方案(或其中的一部分!)的价格。
总之,在这篇文章中,我详细介绍了我创建解决方案的经验——以及我在这个过程中遇到的挑战。
所以我们开始吧。
好的,好的,我知道你在想什么。
*设计软件解决方案,无论是小型在线商店还是完整的
用于协调冷冻治疗单元的后台系统 ,是一条漫长而多风的道路,有数百个可能的转弯和需要避免的陷阱。*
除非您准备了一份详尽的软件需求规范 (SRS) 文档,列出产品的功能集、UI/UX 要求、最佳技术栈、目标受众、合规性规定以及其他十几个问题,否则不可能定价你的申请。
这些正是我的担忧。所以我决定看看其他软件工程师是如何解决我之前的估计准确性问题的。
在测试了多个软件成本计算器之后,我指出了在创建解决方案时要记住的几个问题:
竞争对手的计算器完全忽略了非技术用户的需求。例如,如果我是编程新手,我究竟应该如何知道我的应用程序将使用哪些编程语言?为了解决这个问题,我确保在随附的登录页面上写了一份关于如何使用我的计算器的详细指南。
一些解决方案估算了建立软件团队而不是构建软件产品的成本。除非您之前曾在软件工程公司工作过或自己经营过软件工程公司,否则您可能不了解软件开发的内部结构,包括软件团队的最佳组成及其中的角色。这就是为什么我专注于软件功能而不是开发人员的责任,并实施了混合速率修改器来简化计算。
大多数计算器仅提供估算值以换取企业电子邮件地址。我是软件工程师,不是营销人员。 🙂 我想解决公司的问题,而不是用推销我们服务的电子邮件轰炸他们;如果他们需要帮助,他们会写信给我们!这就是为什么我的计算器不收集任何数据——并且在得到你的估计之前不需要你填写任何表格。我们只知道有人登陆了软件成本计算器登陆页面,勾选了所有方框,并收到了估算。
我的计算器考虑了应用程序的目标平台和预期功能以生成准确的软件成本估算。接下来,根据项目阶段和特定于行业的影响,实施各种修改器来降低或提高定制软件的价格。在最后一步中,将以人时估算的软件开发工作量乘以混合 IT 团队比率。
为了设计评估机制,我研究了我公司完成的 20 多个项目和我们合作伙伴组合中的十几个项目。这些项目的规模和复杂程度各不相同,从活动预订应用程序到定制智能家居解决方案。一些技术和解决方案,比如人工智能和AR/VR,在计算器中被故意遗漏了,因为我很少构建这样的应用程序。因此,该计算器反映了我公司的核心专业知识,我可以保证其估算的准确性。
修饰符。行业和软件功能有难度乘数。例如,我将医疗保健 IT 项目的小时数增加了 20%,以解决可能的开发问题,例如与现有医疗系统的集成、合规性等。为了计算复杂性修正值,我将软件功能的总和除以总小时数数数。常数修饰符将项目管理和质量保证数字添加到估算中。评估应用程序的功能和预期平台后,该数字将乘以 1.3,将小时数增加 30%。最后,还有项目阶段修改器,它根据产品的准备情况评估软件开发的成本。如果用户只想设计应用程序的界面,则最终估算值乘以 0.16。对于功能原型,修饰符为 0.25。软件解决方案的最小可行产品 (MVP) 版本仅包含足够投放市场的功能,其修饰符为 0.5-0.75。最后,市场就绪产品的开发工作量乘以 1。
开发人员的小时费率。构建定制软件解决方案的价格取决于制造者。软件工程师的时薪根据个人的专业、经验和居住国家/地区的不同而有很大差异。根据
您将在下面找到一个公式,该公式总结了上述因素以产生估算值:
如果一个功能与移动无关,不需要在多个平台上实现,它将被标记为featurePrice。
avgFeatureComplexityMult根据项目的技术堆栈和目标行业增加估计。
productStageMultiplier表示产品的预期阶段——即设计同意、原型、MVP 或市场就绪解决方案。
PM/QA 时间对所有项目都是强制性的,除非客户处理管理和质量保证部分。然而,在这种情况下,没有开发人员可以保证错误不会出现在代码中。这里需要澄清一点:一些公司希望他们的供应商在第一次尝试时就产生无错误的代码,并且真正想知道为什么他们需要质量保证。
相反,成熟的客户对测试代码质量有足够的期望,并及早投资 QA 以避免在发布后处理错误。
问题是,这些估计有多准确?
考虑到我作为 CTO 和高级 Android 开发人员的经验,软件成本计算器可以为所有简单项目和中等复杂度项目提供即时估算。
对于涉及物联网等创新技术的更具挑战性的工作,计算器可能会将最终估计值降低 10-13%。在这种情况下,我们会在决定解决方案的技术堆栈和功能集后修改价格。如果您的 IT 系统包含计算器中省略的功能和技术,例如人工智能和与第三方服务的集成,也需要进行修改。
网站访问者需要填写有关应用程序以下特征的信息:
万岁,我们做到了!
现在用户有了一个大概的估计,他们可以通过手动删除或添加软件功能、指定产品阶段等来调整它。
在撰写本文时,我还填写了表格,选择了准备投放市场的符合 HIPAA 标准的定制医疗物联网产品的特征。计算器给我的估计是 3390.4 人时,如果乘以混合团队费率(41.6 美元),则为 140,992 美元。
让我们将估算值提高 10%,考虑到项目类型 ( IoT ) 和目标行业(医疗保健)可能存在的差异,我们将获得 150,000 美元。
我在文章开头提到的冷冻室软件套件可帮助我们的客户管理安装在美国数十家健身中心和水疗沙龙中的联网冷冻装置。虽然该项目仍在开发中
总的来说,我对结果很满意:我已经成功地测试了 Flutter,确信它强大的跨平台开发能力,最大限度地减少了我团队的评估工作,并让我们的潜在客户在之前对他们的软件项目进行了现实的估计联系一家软件工程公司。
但是因为我可能有各种各样的偏见——毕竟,是我写了代码! — 我鼓励您试用一下计算器,并分享您对其功能和准确性的看法!
所以,点击下面的评论部分!非常感谢您的反馈!