- 浏览: 18045 次
- 来自: 北京
最新评论
每一个软件都不是完美的,因为软件是由那些珍惜时间的人或团队编写创造的。
你曾经放弃过一个功能吗?
或者你有没有经历过尝试做一些新的东西,但是后来发现工作量太大,然后放弃转而做了其他的事情呢?
或者说,你是否曾经尝试修复一个 bug,但是发现它只影响少数用户并且难以复现,而忽略它呢?
你怎么可能让你的代码中留下一个已知的错误?为什么要故意发布不完整的代码?
那么,完成这个功能需要花多少时间呢?修复这个 bug 对你的公司来说值多少钱呢?
每一个软件都不是完美的,因为软件是由那些珍惜时间的人或团队编写创造的。
我的一位经理曾经给我讲过一个添加一个手势动作的功能的故事。很多用户不断地要求提供这个功能,最终我们尝试实现它。
我们把它交给了一个初级开发人员,一两天后,他不知道怎么做。然后我们把它交给了另一个开发者,让他们一起干。但是,他们仍然不知道如何去做。
这种情况又发生了三次。我们把它交给了五个开发人员,干了几周最终还是“流产”了——我们在这上面浪费了大量的时间。
假设每个开发人员花了 6 个小时在这上面。5 x 6= 30 小时。假设开发人员的平均时薪是每小时 43 美元,43 x 30 = $1290。那最终,他们花了一千多美元试图实现最终没有成功投入生产的功能。
也许你几乎开发完了所有的 UI 功能,但是设计师想搞点特色。假设你被要求实现一个应用程序内的 web 浏览器。iOS上 Swift 的开箱即用解决方案看起来是这样的:
IOSCreator.com 教程中的一张示例图
注意顶部和底部周围的按钮,这些都是免费的,可以通过 URL 和几行代码就可以创建整个视图。
然而,如果设计师希望调整按钮的位置,或者减少一些按钮,或者可以为按钮设置不同的颜色。突然之间,几行代码就变成了一个为期两周的项目,在这个项目中,你需要创建一个自定义视图,为按钮创建所有你自己的逻辑,并为整个屏幕设计样式——你可以在脑子里计算这笔费用。
我们最近遇到了一个 bug,当一些用户的应用程序在应用程序中执行某个操作时,该 bug 导致程序崩溃。我们的应用程序监控工具显示:只有不到 100 个用户 (我们有数百万用户) 看到了崩溃。堆栈跟踪的级别都非常低,且非常混乱和冗长。我们不确定是什么导致了系统崩溃,我们只知道这和用户设备上的数据库有关,而我们无法复现这个问题,但我们相信卸载和重新安装应用程序很可能会修复这个漏洞。
你害怕了吗?大多数的 bug 在可复现时都很容易修复。当缺陷影响的用户比例较大时,它们的优先级就会快速上升。这个 bug 越不容易复现那么影响的用户比例就越小。修复这个 bug 的成本是无法计算的,但是修复它的价值却最小。
软件的成本效益是一个复杂的方程式。
如果那个定制的网页浏览器对你的产品经理来说是值得的呢?或者这个手势的价值超过了1000美元呢?一个现有的手势功能能够给用户带来的价值是什么?对于用户来说,一个漂亮的、可以自定义的网络设置有什么价值呢?
也许你工作的公司不会让任何用户的应用程序崩溃,你根本不会遇到上述 bug。也许你在飞机上工作或者为医疗设备编写软件,你的软件不会崩溃。那么,修复漏洞的价值就取决于它对整个公司的价值(希望这个漏洞是可以修复的)。
这就是产品经理存在的原因。但开发人员也必须参与其中,我们就是那些做功能评估的人,也是那些有时不得不说“这就是做不到”的人。
我们还必须说,“做这个需求比你想象的时间要长”。设计师和产品工程师在设计功能的时候都会考虑功能的大小。他们要求改变,并且知道成本或者需要多少时间。但他们不是开发人员,软件的变更带来的工作量变化很难估计!
以 web 浏览器为例:设计师可能想要改变按钮的颜色。他以前就被要求改过按钮的颜色,和这次改动非常相似,所以他认为这次改起来也会很快。但你知道事实并非如此。当你接到要更改按钮的任务时,作为开发人员,你的工作就是反馈这个改动将花费更多的时间。
大多数时候,完美的东西是不值得的。
如果你来问我,我永远不会花时间去做一个自定义的 web 功能;我可能会在找第三个开发者开发手势功能的时候就停止;我甚至不会把崩溃归档到待办中。因为这么做投入产出比太低, 但如果你的软件能为你的用户提供价值,就没问题。
所以说,你的软件不一定要完美。
你曾经放弃过一个功能吗?
或者你有没有经历过尝试做一些新的东西,但是后来发现工作量太大,然后放弃转而做了其他的事情呢?
或者说,你是否曾经尝试修复一个 bug,但是发现它只影响少数用户并且难以复现,而忽略它呢?
你怎么可能让你的代码中留下一个已知的错误?为什么要故意发布不完整的代码?
那么,完成这个功能需要花多少时间呢?修复这个 bug 对你的公司来说值多少钱呢?
每一个软件都不是完美的,因为软件是由那些珍惜时间的人或团队编写创造的。
我的一位经理曾经给我讲过一个添加一个手势动作的功能的故事。很多用户不断地要求提供这个功能,最终我们尝试实现它。
我们把它交给了一个初级开发人员,一两天后,他不知道怎么做。然后我们把它交给了另一个开发者,让他们一起干。但是,他们仍然不知道如何去做。
这种情况又发生了三次。我们把它交给了五个开发人员,干了几周最终还是“流产”了——我们在这上面浪费了大量的时间。
假设每个开发人员花了 6 个小时在这上面。5 x 6= 30 小时。假设开发人员的平均时薪是每小时 43 美元,43 x 30 = $1290。那最终,他们花了一千多美元试图实现最终没有成功投入生产的功能。
也许你几乎开发完了所有的 UI 功能,但是设计师想搞点特色。假设你被要求实现一个应用程序内的 web 浏览器。iOS上 Swift 的开箱即用解决方案看起来是这样的:
IOSCreator.com 教程中的一张示例图
注意顶部和底部周围的按钮,这些都是免费的,可以通过 URL 和几行代码就可以创建整个视图。
然而,如果设计师希望调整按钮的位置,或者减少一些按钮,或者可以为按钮设置不同的颜色。突然之间,几行代码就变成了一个为期两周的项目,在这个项目中,你需要创建一个自定义视图,为按钮创建所有你自己的逻辑,并为整个屏幕设计样式——你可以在脑子里计算这笔费用。
我们最近遇到了一个 bug,当一些用户的应用程序在应用程序中执行某个操作时,该 bug 导致程序崩溃。我们的应用程序监控工具显示:只有不到 100 个用户 (我们有数百万用户) 看到了崩溃。堆栈跟踪的级别都非常低,且非常混乱和冗长。我们不确定是什么导致了系统崩溃,我们只知道这和用户设备上的数据库有关,而我们无法复现这个问题,但我们相信卸载和重新安装应用程序很可能会修复这个漏洞。
你害怕了吗?大多数的 bug 在可复现时都很容易修复。当缺陷影响的用户比例较大时,它们的优先级就会快速上升。这个 bug 越不容易复现那么影响的用户比例就越小。修复这个 bug 的成本是无法计算的,但是修复它的价值却最小。
软件的成本效益是一个复杂的方程式。
如果那个定制的网页浏览器对你的产品经理来说是值得的呢?或者这个手势的价值超过了1000美元呢?一个现有的手势功能能够给用户带来的价值是什么?对于用户来说,一个漂亮的、可以自定义的网络设置有什么价值呢?
也许你工作的公司不会让任何用户的应用程序崩溃,你根本不会遇到上述 bug。也许你在飞机上工作或者为医疗设备编写软件,你的软件不会崩溃。那么,修复漏洞的价值就取决于它对整个公司的价值(希望这个漏洞是可以修复的)。
这就是产品经理存在的原因。但开发人员也必须参与其中,我们就是那些做功能评估的人,也是那些有时不得不说“这就是做不到”的人。
我们还必须说,“做这个需求比你想象的时间要长”。设计师和产品工程师在设计功能的时候都会考虑功能的大小。他们要求改变,并且知道成本或者需要多少时间。但他们不是开发人员,软件的变更带来的工作量变化很难估计!
以 web 浏览器为例:设计师可能想要改变按钮的颜色。他以前就被要求改过按钮的颜色,和这次改动非常相似,所以他认为这次改起来也会很快。但你知道事实并非如此。当你接到要更改按钮的任务时,作为开发人员,你的工作就是反馈这个改动将花费更多的时间。
大多数时候,完美的东西是不值得的。
如果你来问我,我永远不会花时间去做一个自定义的 web 功能;我可能会在找第三个开发者开发手势功能的时候就停止;我甚至不会把崩溃归档到待办中。因为这么做投入产出比太低, 但如果你的软件能为你的用户提供价值,就没问题。
所以说,你的软件不一定要完美。
发表评论
-
微服务架构框架?这里为你汇总了15种
2020-06-29 14:51 490这几年来,微服务这个 ... -
2020年云计算的发展与应用现状
2020-06-09 15:05 360随着云技术的采用又出 ... -
7种会导致业务失败的数据分析方法
2020-05-29 16:27 463真正的数据价值取决于 ... -
如何做一名出色的初级开发?
2020-04-07 11:03 420希望本文能够为初级开发人员提供一些建议,帮助他们成长为合格的开 ... -
黑客攻击,五个步骤保障公共云安全
2020-03-26 15:31 455对于任何组织来说,其 ... -
优秀的程序员是如何处理技术 Bug 的?
2020-03-19 16:12 349最近我的圈子里人们都 ... -
盘点全球十大搜索引擎:中国百度只能排第三!
2020-03-18 10:59 680在当今互联网高速发展 ... -
股价爆跌、员工确诊,美国科技公司的新冠肺炎挑战来了
2020-03-04 15:01 377就在上周,全球股市迎 ... -
科技行业的起步时代已结束
2020-03-03 14:00 366在理解科技行业的主导 ... -
Android 11 首个开发者预览版新功能抢先看
2020-02-26 21:31 3485G支持引领了Google移动 ... -
又一起删库跑路事件!宕机36小时、损失近10亿。。。
2020-02-25 21:03 433在家中坐,删库天上来。 靠给微信公众账号提供营销推广服务发家 ... -
2020 开春程序员面试必备!拿走不谢!
2020-01-21 16:15 399软件技能在科技界很重要,如果你不会正确使用编程语言或平台,你可 ... -
程序员构建总是出问题,怎么办?
2020-01-15 14:36 268构建这一问题,到底是哪个环节出了 Bug? 我总是听 ... -
为什么越来越多的企业选择云数据库?
2020-01-13 10:23 291提到程序员,就逃不过 ... -
5G来了,Wi-Fi会消失?
2020-01-10 09:43 263当移动网络越来越快, ... -
2019年互联网那些事儿
2020-01-09 14:06 1582019年互联网大事件盘点,你还有印象吗? ▍ 1. ... -
如何在技术浪潮中屹立不倒?
2019-12-24 11:20 402关于程序员,一直以 ...
相关推荐
7. 好的测试员不懈追求完美。该题目考查了测试员的职业道德和素质。 8. 不存在质量很高但可靠性很差的产品。该题目考查了软件质量和可靠性的关系。 9. 测试是为了验证该软件已正确地实现了用户的要求。该题目考查...
质量管理应根据商业目标进行调整,追求的是在满足用户需求的同时,控制成本,而非盲目追求完美。实践中,应当向有实战经验的专家学习,避免过度依赖理论。 2. **软件质量属性和质量要素**:质量属性描述了软件的...
1. **软件工程的核心理念**:“大道至简”这一概念强调了软件工程中最根本的原则和思想。它主张去除冗余,追求简洁高效的设计与实现,将复杂的软件问题简化为最基本、最清晰的形式。这种理念鼓励开发者关注软件的...
- **追求卓越**:不断提升质量管理标准,追求完美。 #### 七、QA与QC的区别 - **QA(Quality Assurance)**:质量保证,旨在通过一系列预防措施来避免质量问题的发生,确保产品或服务符合规定的标准。 - **QC...
好的测试员不懈追求完美(题7)。 测试的基本概念 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性(题5)。测试程序不仅仅按预期方式运行就行了(题6)。发现错误多的程序模块,残留在模块中的错误...
【正文】 作为一名软件测试人员,我深知我的职责是确保产品的质量与可靠性,通过细致的测试工作,揭示潜在的问题,...我将持续提升自我,追求卓越,以期在软件测试领域中达到更高的境界,为用户提供更完美的产品体验。
软件架构师在职业生涯中需要不断地学习和适应变化,对自身定位清晰,将技术与业务完美结合,以期达到商业价值最大化。通过不断实践上述的架构师行为准则,软件架构师将能够有效地引导项目顺利进行,为客户提供高质量...
计算机在我们的生活当中用的越来越多,尤其是计算机软件,种类众多,无论是娱乐,还是工作,计算机已经是不可或缺的工具,计算机软件行业发展的更是如此的迅速,无论是我们工作的地方,还是学习的地方,总少不了...
它通过一套系统化的工具和技术,追求在所有业务活动中达到近乎完美的水平,即每百万次机会中的缺陷不超过3.4个。JMP是一款由SAS公司开发的强大统计分析软件,广泛应用于质量控制、数据探索和预测建模等领域。"六...
【全面质量管理在软件开发中的实施】要求在软件生命周期的每个阶段都注重质量,从需求分析、设计、编码到测试和维护,都需要贯彻质量保证活动。 【世界质量组织和管理奖】如波多里奇国家质量奖等,表彰那些在质量...
《软件质量保证和管理——全面质量管理》 全面质量管理(Total Quality Management, TQM)是一种以客户为中心,全员参与,全过程管理的质量管理模式。它的核心理念是将质量视为组织生存和发展的关键,强调预防为主...
书中详细记录了一个由二十多名程序员组成的团队,在三年的时间里,面对4,732个bug,如何努力追求卓越软件的故事。 #### 二、核心主题:为什么好的软件难以创造? 本书的核心问题是:“为什么好的软件如此难以创造...
在开发软件时,科学家可能会关注算法的效率、理论上的完美性,而工程师则需要在有限的时间和资源内,设计出能够满足用户需求、稳定运行的软件产品。这意味着工程师必须在功能、性能、安全性、成本等多方面进行权衡,...
任何事情都要追求完美才敢继续往后进行,是一种性格缺陷 大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的...
首先,从“凡事均有可改善的空间”这个故事中,我们可以学到,任何事物都不存在绝对的完美,只有不断的改进。就像降落伞的例子,即使99.9%的合格率看似非常高,但在关乎生死的情况下,0.1%的缺陷也可能导致致命的...
6σ是一种追求近乎完美的质量管理方法: 1. **6σ含义**:每百万次机会中有不超过3.4次缺陷。 2. **6σ推动战术**:定义、测量、分析、改进、控制(DMAIC)。 3. **PPM**:百万机会缺陷数的单位,用于衡量焊接等...
业务流程重组(Business Process Reengineering,简称BPR)是一种对企业管理方式进行根本性的变革方法,旨在通过重新设计和优化业务流程,以实现企业绩效的显著提升,包括降低成本、提高质量和响应速度。这一概念由...
2. **匹配原则**:对于TTL、LVDS、422等信号,匹配电阻的选择应确保过冲可以接受,而不是追求完美的匹配。 3. **功耗和信号幅度**:过度匹配可能会导致功耗过高和信号幅度减小。 #### 八、软件对功耗的影响 **现象...