摘要:译者按等待用户反馈,一切都晚了实时监控线上应用才是王道。他们需要亲自去发现问题的原因然后寻找解法,而不是依赖于用户的截屏反馈。最终你会发现只有的用户会反馈问题,然而事实上多得多。事后评估发现总共影响了名用户,但是只收到个用户反馈。
译者按: 等待用户反馈BUG,一切都晚了!实时监控线上应用才是王道。
原文: Why relying on your users to report errors is the dumbest thing you’ll ever do
译者: Fundebug
为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。
我们热爱coding。
当我们coding的时候,就如同从零建造一栋大楼。新的特性、新的功能、绝佳的设计都在每一次更新后被用户所使用,期待他们的喜爱和赞美。这样的一个过程让我们感到心灵上的慰藉和拥有为数不多的成就感。
然而,现实并没有想象中美好。
如果debug是移除bug的流程,那么编程就一定是将bug放进去的流程。
软件工程师将大量时间花在了其它事情上。他们需要参加各种会议、讨论需求、制定计划、将现有的冗余代码重构,以及还有一项花费时间很多的工作:修复bug。
我还没有遇到过一位喜欢在代码中去找bug的工程师,大概因为查找和复现一个bug往往要花费很多时间。
一直以来,debug就像大海捞针一样。他们需要亲自去发现问题的原因然后寻找解法,而不是依赖于用户的截屏反馈。
用户的截屏并不能告诉你足够的信息,往往你会问更多。
你用的哪个浏览器,什么版本,操作系统是哪个,可以具体一点告诉我刚刚你是怎么操作的吗,你之前在哪个页面,你是怎么到这个页面的?
就算问了用户这么多问题,也不一定能解决问题。
Debug总是要花很多时间,然而还是一头雾水。
坐等用户反馈真的好吗?很多开发团队依然依靠用户反馈来改进产品,这其实是很荒谬的。
在快餐连锁店,客户用餐完毕之后,需要自己将没吃完的食物和用过的餐巾纸扔到垃圾桶。快餐店的食物可能一点也不好吃,客户没吃几口就扔到垃圾桶然后直接走掉。除非客户真的是一个爱抱怨的人而且恰好有时间,才会如实评价。否则,你只会认为一个客户吃完饭满意的离开了。
然而,他再也不会来这里吃了!
一些开发者会这么认为:如果没有用户反馈问题,那就代表我们的产品棒棒哒,对不对?认为“如果用户使用产品遇到问题,用户就会反馈”是比较局限的。最终你会发现只有1%的用户会反馈问题,然而事实上多得多。
开发者依靠很有限的信息去尝试debug一个问题,往往不能解决。
你开发的软件并没有你想象的那么完美!
一个在大型线上零售店工作的朋友跟我聊过他们解决公司线上订单系统的一个重大问题的故事。他们经过好几天的排查,都没有发现问题所在。最后决定使用一个专用工具来监控和诊断应用错误。
最终的发现令人惊恐!
八个服务器中的一个内存不足然后报错,导致用户的订单流程失败。也就是说:“每八个用户中有一个收到影响”。
发现和解决这个问题使得一个月的销售额提高了2万美元。事后评估发现总共影响了5000名用户,但是只收到2个用户反馈。虽然解决了bug大家都很开心,但这个错误导致了10万美元损失。
不建议这么做:一出错就给自己发邮件报警你可以坐在电脑面前盯着错误日志流。当你休息的时候,可以雇一个小伙伴这么做。或则,当异常出现的时候,给自己发报警邮件(貌似是个不错的主意)。直到你真的这么做了,你就不会这么想了!
你需要意识到:对于小的个人项目,一有错误就通过邮件报警还可以。但如果业务量起来了,访问量打了,事情就会变得一团糟:
由于版本以及兼容性,很多错误信息不完整
很难去指定一个报警规则,报警变成噪音
如果一个错误刚好在循环里面,可能一晚上给你发5万封邮件
错误没有优先级或则严重性区别,混在一起
当你查看了超过100封邮件以后,你再也不回去读它们了
你会开始忽略这些邮件,甚至把它们归类到一个多带带的文件夹然后发现无从下手而很少去碰。毕竟,从几千封邮件中找到严重的问题并解决很不容易。
ELMAH - 记录程序异常ELMAH (Error Logging Modules and Handlers) 是一个错误记录服务。它可以动态地加入到一个ASP.NET项目中,而不需要重新编译或则重新部署。ELMAH不支持所有的程序语言,他提供的功能也有点局限。ELMAH适用于小型的个人项目。
专业BUG监控如果你想认真对待应用BUG,可以使用一个专业的BUG监控服务,比如国外的Raygun(或则我们Fundebug)。一个专业的BUG监控服务可以帮你:
通过过滤和排序来定位严重错误
配置多种报警方式,比如邮件、Slack、或则HipChat
使用一个监控服务来追踪多语言多平台
相似错误自动聚合
团队协作齐力解决BUG
如果你使用简单的方案(直接邮件报警),那么你需要停下手头的工作,花费两三个小时去复现一个bug。这是非常浪费时间,非常低效的做法!如果一个团队注重快速迭代,那么他们会愿意为开发者节省花费的debug上的时间,去开发产品的新功能、新特性。
总结我们希望技术实现自动修复软件BUG。不过,软件自愈依然还有一段距离。你可以使用一些错误监控服务来使得整个debug更加简单和高效。
在你的用户发现问题之前发现,并且不要单纯依赖用户反馈问题!
版权声明:
转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/201...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/88410.html
摘要:另一方面,可穿戴设备的迅速火热,离不开大数据与云计算的普及。本次活动将由果壳高通等亲自讲述可穿戴设备与云计算的那些事。 到目前为止,虽然三星、索尼、Pebble等厂商推出了智能手表;耐克、Fitbit等厂商占据了约90%的健身设备市场份额,但仍没有一家厂商独大。即便是三星推出了Galaxy Gear,并试图将其作为智能手表先驱在市场中推广,但由于产品自身的不足,依然难获用户认可。sho...
摘要:本次活动中,我简单介绍了一下开发中的测试。今天和清风聊了聊北京的圈的线下活动。这也是清风坚持做北京用户组和支持活动。营造更好的环境对于一个社会人而言,更好的生态环境往往更为有利。更多更好的就业机会能够直接的刺激生态环境向着更好的方向发展。 本次活动中,我简单介绍了一下web开发中的测试。张教主介绍了一下Docker的相关知识,外国友人麦博特分享了他们的项目:http://wid.gy/...
摘要:运行得十分好,总是使用并且返回消息。这个问题的提出意味着通过实施你自己的函数来使用原套,从回应到读取。额外的缓冲是因为请求使用的是原始套接字的生成文件方法从中读取数据。手动进行所以如何从使用通过自己发出请求和处理响应。 Kubernetes有一个之前系统用来做很多工作的REST-ish HTTP API。这个API是开放的,而且文档十分齐全,很容易整合,可以从代码方面管理集群。然而这个...
摘要:龚先生是一位在当地非常有名气的厨师,但他对自己用的锅一直不太满意,于是打算自己造一个龚先生想好了。 1.什么是面向对象 面向对象是一种思维方式[与语言无关],教你如何思考代码Object Oriented Programmingorient 的英文意思 是 使朝向那么,面向对象不如说成是以对象为目标的一种编程思维方式 2.面向对象的主要概念浅析 好了,现在让我们进入正题 面向对象的难点...
摘要:如果使用的是完整的标准服务器这种,重启的时候需要重启很多服务,会浪费大量时间。但是,天下没有白吃的午餐,这么强大的东西,并不是免费的。注册完成之后,就可以获得免费的使用权。 在我们开发Java Web程序的时候,调试就是一个麻烦事情,每次更改类, 就需要重启服务器。对于Tomcat这样的小巧服务器来说,重启就重启吧,反正也就是几秒钟的事情。如果使用的是完整的Java EE标准服务器(G...
阅读 1176·2023-04-26 02:20
阅读 3277·2021-11-22 14:45
阅读 4071·2021-11-17 09:33
阅读 946·2021-09-06 15:00
阅读 1446·2021-09-03 10:30
阅读 3801·2021-07-26 22:01
阅读 959·2019-08-30 15:54
阅读 488·2019-08-30 15:43