跳转至内容

Lentis/Featuritis

来自维基教科书,开放世界中的开放书籍

Featuritis,或功能蔓延,是指产品功能的扩展或添加,远远超出项目最初的范围或意图。尽管这种产品开发现象可能发生在任何领域,但软件开发中常见的持续集成和持续交付 (CI/CD) 实践往往会导致功能蔓延。这些实践使开发和交付内容给用户的渠道变得极其高效。随着更新的开发速度越来越快,它们中内容的效用对于最终用户来说可能会变得很可疑。本章研究功能蔓延的原因和影响,并提供消除它的潜在解决方案。

开发者方面的原因

[编辑 | 编辑源代码]

与用户群脱节

[编辑 | 编辑源代码]

新功能的有效性源于它们对用户群的效用。如果开发人员没有花时间适当地与用户就产品使用情况和需求进行沟通,那么添加的任何功能都可能无法为最终用户带来任何价值。尽管开发人员可以猜测最终用户会发现哪些功能有用,但花时间收集用户关于现有功能性能的反馈以及他们希望看到哪些新功能,可以大大降低产品遭受功能蔓延的可能性。

扩大市场份额的愿望

[编辑 | 编辑源代码]

随着产品功能数量的增加,吸引更大受众的潜力也随之增加。如果一家公司希望扩大产品的目标受众,他们可能会添加专门针对该市场的功能。虽然这会增加潜在客户的数量,但也使产品失去了对最初用户群的关注。长期用户可能会感到产品对他们越来越没有用处,因为他们过去使用的功能在为了创造新功能而努力时变得过时了。

这也可以应用于维持用户。一家公司可以通过在自己的产品中包含竞争对手产品的不同功能来阻止他们目前的客户转向竞争对手的产品。这也可以以类似的方式来挽回被竞争对手吸引走的用户。这很危险,因为竞争对手产品用户群的愿望可能略有不同,从而导致对继续使用该产品的用户来说不太有用的功能。

需求创造

[编辑 | 编辑源代码]

可以向产品中添加功能,希望以此来创造需求。如果添加到新产品中的功能被用户认为有用,或者至少足够有趣,那么他们更有可能购买新产品,无论他们当前的产品是否好用。因此,公司可以通过说服用户在需要之前购买新产品来提高客户的整体终身价值,方法是添加看似有用的功能。实际上,这些功能可能不过是一些聪明的营销策略,让用户得到的产品与他们已经拥有的产品几乎相同。

消费者方面的原因

[编辑 | 编辑源代码]

消费主义

[编辑 | 编辑源代码]

在当前的经济环境下,消费者已经习惯了新产品在很短的时间内开发出来。无论他们在哪个市场购物,客户都希望尽快看到新产品。因此,他们会给开发人员施加压力,要求他们创建新功能或与其他产品的功能相匹配。虽然这可以帮助公司轻松地营销和销售新版本的產品,但它也给想出新功能带来了很大压力。如果开发人员无法以消费者需求新产品的速度创建出新的有用功能,他们就可能不得不添加毫无意义但易于实现的更改,从而导致功能蔓延。

沉默的大多数/有声的少数

[编辑 | 编辑源代码]

随着社交媒体的兴起,许多软件产品在开发人员迎合有声的少数群体而忽略沉默的大多数 (消歧义)时,会受到损害。沉默的大多数是指对产品整体感到满意的用户,他们没有留下意见的动机。不满意且有声的少数群体通常会要求新功能。从开发人员的角度来看,这些功能似乎受到整个用户群的广泛需求,但实际上,这只是一小部分用户的需求。因此,可能忽略了迎合沉默的大多数用户的功能,而专注于有声的少数群体要求的功能。

短期盈利能力

[编辑 | 编辑源代码]

即使消费者知道产品可能更难使用,他们也会选择功能更多 的产品。公司提高产品的功能是为了增强或区分它们。[1] Carpenter 等人 (1994) 发现,品牌可以通过在其产品中加入毫无意义的功能来区分自己。[2] 然而,如果在此过程中牺牲了核心功能,则会导致购买后消费者的不满和更低的整体终身价值,因为用户的偏好从购买后功能转变为可用性。 [3]

时间损失

[编辑 | 编辑源代码]

开发人员的时间是有限的。随着开发人员花费更多时间添加功能,他们对产品的核心功能的关注就会减少。这可能导致软件膨胀或核心功能的损失。如果核心功能受到影响,那么开发人员可能不得不停止生产,直到他们解决问题,从而导致更多时间损失。

近年来,智能手机已无处不在,制造商必须快速有效地开发产品才能在市场上取得成功。三星在 2018 年开发了一款可以对折的智能手机。2019 年 4 月,三星在媒体测试期间发现多款手机出现故障后,取消了这款新智能手机的发布。[4] 这些手机于当年 9 月上市销售。[5] 由于该功能尚未完善,这些手机变得无法使用,并且需要几个月的时间才能解决与新功能相关的问题。

可维护性下降

[edit | edit source]

无论代码库的功能如何,由于复杂性增加,在产品中添加功能会使维护变得更加昂贵和耗时。[6] 据估计,超过 50% 的软件生命周期成本是由于维护造成的。[7] 拥有过多功能的产品可能会比核心功能较少的那些产品遇到更多需要维护的错误和问题。随着所需维护量的增加,开发人员必须投入更多资源进行维护,或者接受产品性能下降。

可用性下降

[edit | edit source]

随着开发人员向产品中添加功能,用户界面可能会变得拥挤且难以使用。核心功能可能会被次要功能掩盖或阻碍,因为功能的位置会发生变化或变得更难导航。由于消费者在购买产品后重视可用性,因此可能会导致消费者不满。

宝马 iDrive 系统是控制宝马汽车次要功能的计算机系统的用户界面。它于 2002 年首次亮相宝马 7 系轿车。由于其复杂性和糟糕的可用性,最初的系统受到了公众的严厉批评。[8][9] 该系统在中控台上采用了一个旋转旋钮,用于在控制面板中导航。虽然该系统确实消除了许多按钮和旋钮,但用户发现它难以导航且令人困惑。一位评论员指出,需要六个步骤才能更改广播电台。此后,该系统已进行了大量改造,以提供更好的用户体验。[10] 当前迭代具有一个更小的旋钮,控制的功能更少,一个类似于平板电脑的触摸屏,以及能够识别语音命令和手势以控制功能的能力。

随着支持 Wi-Fi 设备的普及,智能家居技术已成为一种常见现象。该技术包括可以控制家庭功能的设备,例如照明、门、供暖和空调,以及从移动设备控制电器。虽然用一个按钮控制所有家用电器的愿景自 20 世纪中叶就已存在,[11] 但由于功能问题,该技术尚未被广泛接受。[12] 用户抱怨设备集成困难、学习曲线陡峭以及不希望的功能。许多房主选择传统的系统,例如灯开关、标准电器和机械锁门,因为它们能够可靠地执行其预期功能,并且不需要学习曲线。

软件臃肿

[edit | edit source]

当产品的大小、内存使用量、最低硬件要求等增加时,而与之前的版本之间没有可衡量的差异,就会发生 软件臃肿。在极端情况下,新版本可能会出现性能问题,使其比前代版本更慢。由于速度变慢,用户可能会对遇到软件膨胀的产品感到沮丧。此外,许多导致速度变慢的附加功能对他们(或大多数其他用户)来说并没有用处。

潜在修复

[edit | edit source]

批判性分析新功能

[edit | edit source]

项目经理经常会沉迷于添加功能,因为修复系统中的错误对于公司来说并不像添加功能那样引人注目和有益。这种思维方式会加速功能过多症。因此,在考虑是否应该实现一项新功能时,需要考虑两个重要因素:有多少人会使用它,以及他们会使用它多长时间。例如,如果一项新功能将被所有用户始终使用,那么它就是一个很棒的功能,应该予以实现。另一方面,如果一项新功能只会被少数用户始终或大部分时间使用,那么它可能不是最好的时间利用方式。可能存在一些需要改进的当前功能或一些需要解决的未解决错误。

错误修复

[edit | edit source]

如前所述,在某些情况下,实现新功能应该让位于错误修复。因此,在尝试减少功能过多症时,应该采用“先修复错误”的方法。这种方法侧重于首先修复当前功能集中的所有错误,而不是在每次发布产品时都推出新功能。这样,用户就不会被过多的功能所淹没,反而会感觉到他们的反馈得到了重视、认可和实施。这种方法将使核心功能强大。

修剪

[edit | edit source]

关键在于专注于从系统中剔除不必要的功能,同时增强核心功能。换句话说,专注于打造强大的根和树干,然后再创建多个分支。确定哪些是核心功能需要倾听用户群并分析他们的用例。然后,以与上述相同的方式批判性地分析功能,以找到系统的核心功能。修剪后,应实施上述两种解决方案,以阻止或减少系统中的功能过多症。修剪揭示了哪些被忽视的、高度利用的核心功能应该得到改进,以及哪些未充分利用的组件应该被移除。主要收获是关注产品的核心组件并完善它们。

模块化

[edit | edit source]

与修剪类似,模块化是将系统拆分为其主要组件,然后添加额外的附加组件。这样,用户可以根据需要或想要添加软件或产品,而不是一次性加载过多的功能。在修剪过程中被移除的额外功能可以变成额外的模块。然后,用户可以获得更加个性化的体验,并可以根据需要或随着专业知识的增加使用附加组件。因此,用户构建的复杂性看起来并不像功能过多症,因为用户对系统中的每一次添加都很满意。计算机科学中对此的一个例子是框架的概念。例如,React Native 是由 Facebook 创建的用于构建原生移动应用程序的开源框架。Facebook 专注于支持和维护框架,而世界各地的开发人员则创建可以在框架中导入和使用的库或附加组件。因此,在每个 React Native 应用程序的核心,它都使用相同的框架,但构建在它之上的组件、附加组件或功能却完全不同。

可配置的用户模式

[edit | edit source]

与模块化类似,但附加组件被组合在一起并由系统预设。某些软件或技术需要拥有大量功能才能支持广泛的、几乎无穷无尽的用例。在这些情况下,开发人员可以实现用户模式,以显示和隐藏不同的功能。这允许用户根据他们在系统中的经验在模式之间切换。因此,新用户可以从初学者模式开始,然后随着他们变得更加舒适和获得更多专业知识而切换到其他模式。这将减少首次用户被放置在专家模式下的功能过载问题,而实际上他们刚开始使用该系统。

SolidWorks 工具栏,已选择“附加组件”功能区

SolidWorks 是一款计算机辅助设计软件包,允许用户根据自己的需求配置界面。默认屏幕显示七个最重要的功能区和一个包含其余专业功能区的“附加组件”功能区,而不是一次显示所有 20 个可用的功能区。可以通过单击适当的位置访问许多隐藏的工具栏。侧边窗口可以最小化并重新定位。这些功能允许用户根据自己的工作量身定制界面,并在需要时提供所有所需的功能,并说明可配置的用户模式如何增强功能丰富的软件的可用性。

结论

[edit | edit source]

功能膨胀症源于消费者、产品开发人员和营销团队之间相互竞争的议程的互动。根据奥卡姆剃刀原理,最复杂的解决方案往往不是最好的解决方案。正如三星可折叠智能手机的案例所证明的那样,如果核心功能得不到维护,过度强调新功能将使开发人员付出大量的时间和金钱。产品功能可能具有革命性,但只有当产品与以前的版本一样可靠且易于使用时,消费者才会投资。关于功能膨胀症的进一步研究可能包括进一步研究产品功能增加对盈利能力的长期影响,用户反馈如何影响开发人员的决策和实践,以及敏捷产品开发的有效性。

参考文献

[编辑 | 编辑源代码]
  1. Hamilton, R.W.,Rust,R.T.,Thompson,D.V.(2005年11月).Feature Fatigue: When Product Capabilities Become Too Much of A Good Thing. Journal of Marketing Research. Vol 4. (No. 4). 431-442. www.jstor.org/stable/30162393
  2. Carpenter, G.S., Glazer, R., & Nakamoto, K. (1994年8月1日). Meaningful brands from Meaningless Differentiation: The Dependence on Irrelevant Attributes. Journal of Marketing Research. Vol 31. doi:10.2307/3152221
  3. Hamilton, R.W.,Rust,R.T.,Thompson,D.V.(2006年2月). Defeating Feature Fatigue. Harvard Business Review. Vol 84.(No. 2). 98-107. http://re5qy4sb7x.search.serialssolutions.com/?url_ver=Z39.88-2004&url_ctx_fmt=info:ofi/fmt:kev:mtx:ctx&rft.atitle=Defeating+feature+fatigue&rft.aufirst=RT&rft.aulast=Rust&rft.date=2006&rft.epage=%2B&rft.genre=article&rft.issn=0017-8012&rft.issue=2&rft.jtitle=HARVARD+BUSINESS+REVIEW&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.pages=98-%2B&rft_id=info:pmid/16485808&rfr_id=info:sid/webofscience.com:WOS:WOS&rft.spage=98&rft.stitle=HARVARD+BUS+REV&rft.volume=84&rft.au=Thompson%2C+DV&rft.au=Hamilton%2C+RW
  4. Samsung. (2019年4月23日). Samsung to Postpone the Launch of the Galaxy Fold. https://news.samsung.com/global/samsung-to-postpone-the-launch-of-the-galaxy-fold
  5. Samsung. (2019年7月24日). Galaxy Fold ready for launch September 2019. https://news.samsung.com/us/galaxy-fold-ready-for-launch-september-2019/
  6. Banker, R.D., Datar, S.M., Kemerer, C.F., & Zweig, D. (1993年11月). Software Complexity and Maintenance Costs. Communications of the ACM. Vol 36. (No. 11). http://www.pitt.edu/~ckemerer/CK%20research%20papers/SwComplexityAndMaintenanceCost_BankerDatar93.pdf
  7. Banker, R.D., Davis, G. B., & Slaughter, S.A. (1998年4月). Software Development Practices, Software Complexity, and Software Maintenance Performance: A Field Study. Management Science. Vol 44. (No. 4). 433-450. https://www.jstor.org/stable/2634607?Search=yes&resultItemClick=true&searchText=software&searchText=maintenance&searchText=management&searchUri=%2Faction%2FdoBasicSearch%3FQuery%3Dsoftware%2Bmaintenance%2Bmanagement%26amp%3Bacc%3Don%26amp%3Bwc%3Don%26amp%3Bfc%3Doff%26amp%3Bgroup%3Dnone&ab_segments=0%2Fbasic_expensive%2Fcontrol&refreqid=search%3A0ab30622098d6880a4a44862c8ae3b23&seq=17#metadata_info_tab_contents
  8. Hoover, Tyler. (2017年8月). I Bought the Most Hated BMW in the United States. https://www.autotrader.com/car-video/i-bought-most-hated-bmw-united-states-267950
  9. Kacher, Georg. (2001年12月2日). 2002 BMW 745i. Automobile. https://www.automobilemag.com/news/bmw-745i-2/
  10. Bornhop, Andrew. (2012年11月6日). 2002 BMW 745i.Road & Track https://www.roadandtrack.com/new-cars/reviews/a9297/2002-bmw-745i-1/
  11. [historycomestolife]. (2014). Westinghouse All Electric House (color). https://www.youtube.com/watch?v=jyrTgtPTz3M
  12. Paxton, Mike. (2017年6月14日). Smart Homes in the U.S. Becoming More Common, But Still Face Challenges. https://www.spglobal.com/marketintelligence/en/news-insights/blog/smart-homes-in-the-u-s-becoming-more-common-but-still-face-challenges
华夏公益教科书