故障强奸了我 我还要谢谢她

痛并快乐着

进入新公司后,接手小程序3周,接连被”故障”强奸两次。

​说实话,我到现在内心是崩溃的,甚至有点”恐惧”,一听到”故障”我现在都会手脚出汗。

不过遇到”故障”,必须要直面面对,这也是开发和成长的一部分,所以我必须选择一种直面应对”故障”的方案,因为只要我持续开发下去,肯定会有”故障”出现,但是我可以规避一些”故障”和快速发现一些”故障”。

(如果目前你也没有建立起”故障”的概念,我希望用过这篇文章能让你对”故障”产生一定的意识,因为这对于你以后可能会有所帮助。)”故障”,

在每个公司可能名称不一样。
我理解的”故障”是bug的升级版,一般在生产环境下发生的问题我认为叫做”故障”,而在开发环境下一般叫做bug。

以前所在的公司,因为用户消费行为比较少,对于”故障”的概念,并没有完整意义的理解,也不会引起代码本能的意识。

但是目前的公司,因为用户量和用户行为与消费直接挂钩,一旦发生故障,就会对业务产生影响。

故障一般都是从bug隐藏开始的,因为实际的生产环境和开发环境有着很大的不同,在开发环境下,不管是程序员本身还是测试人员,都不能够覆盖到所有的bug。

而在生产环境下,用户基数变大、场景变化以及设备多样性还有很多不定项的因素,这些因素都是在测试环境下很难模拟的。一经生产环境下一定用户的使用,就会触发bug,进而影响业务进行,升级为”故障”。

这也是为什么产品小步快跑,这样不仅可以验证产品本身的正确性,也可以在可控范围内查看产品本身是否就具有bug。

有必要说一下,在经历了这段恐怖的日子以后,我总结了几点规避”故障”和定位”故障”的经验

一 做好足够的经验储备

(是的 虽然你被强奸了,但是还是要写出你的经验!)

这一点我认为是最重要的,发生”故障”虽然恐怖但是可以容忍,
但是再次发生同样的”故障”这就是极大的错误和失败。

所以,每次发生”故障”,解决以后,你必须要做好文档和解决方案的编写,避免再次发生。

具体就是维护一个常见的”故障”库,每次进行”故障”review,都要写明”故障”的原因、发现、解决、规避的过程,形成文档这样也可以让这份文档,成为代码review、测试参考、编写规范的一部分,有效的规避出现同样的错误什么叫做专家? 每行每业经验多了,踩坑填坑填多了就变成了专家。所以经验是很重要的,切记切记。

二 收集环境变量,所谓环境即用户使用的环境,确定这些环境是否发生变化。

(注意查看强奸现场, 保存证物)

比如,对于小程序而言,影响因素有很多,手机型号(iOS/Android)、手机版本(iOS10.0.x or iOS9.x)、微信版本(6.5.4/6.5.6)、小程序的SDK版本等。

我遇到的”故障”中,如果是在全量下发生的”故障”,基本上可以肯定是代码错误或者是逻辑错误,但是比较难发现和定位的基本上就是在特定机型或者特定版本上发生了”故障”,这点是很痛苦的。

Screen Shot 2017-04-07 at 10.00.24 PM.png
Screen Shot 2017-04-07 at 10.00.38 PM.png

比如在这个”故障”中,当你在输出超过4位时,只在Android 微信版本为6.5.6的下才会被触发,实际上很简单,只要修改value不再绑定test值即可,这个在MVVM中很容易出现的”循环绑定”,但是这个问题却在其他机型和系统上不会出现。

最后,才发现是因为前几天微信版本升级后,不再”包容”这个错误,然后点燃了这颗”炸弹”。

所以及时的关注这些环境变量,一旦发生环境变量变化,自己主动去验证在这种环境变量发生变化后,程序会不会发生”故障”,及时发现及时修正

三 做好版本管理,发生故障,切回上一个版本,看是否是在以往代码就已经存在,缩小”故障”点排查范围

(及时的摆正心态,应对强奸)

这一点,比较容易理解,不再展开。

四 做一个代码保守派

(大半夜,别出门。老老实实在家了,减少遇到坏人的几率)

尽可能使用流行方案编写你的程序,除非你想要尝试新东西,并且自己有足够的实力来进行维护新库。

新的代码库,可能引发一些未知的错误,所以如果业务面向的是用户,那么选择一种比较流行的代码库是一个明智的选择。可以参考github的star数,因为越是流行的代码库,遇到的问题、修复的问题、存在的问题都会被及时有效的控制,你也可以在相关issue或者社区中找到解决方案的答案,即使没有,你也可以提出问题,获取其他人的帮助。

反观新库,由于种种原因,可能不适合你在生产环境下使用,风险太大。

但是,对于你来说,如果发现一个新代码库比较好,可以尝试在平时关注和提出你的想法,维护和壮大这个库,来让大家更放心的使用。

比如小程序中使用”es6-promise”\在OC中使用AFNetworking\在PHP中使用TP\在Node中使用Express等

五 尽可能的自己测试

(多学一点防狼术, 遇到坏人,一招毙命)

这一点基本上公司是会提供支持,不管是QA,还是你需要的设备已经环境,可以和相关的人进行申请,不要认为这是在增加你的工作量,相信我,你越是测试的多,越是能保证你自己的工作进度和心情。

为什么不让QA进行测试?我告诉你,”故障”的直接责任人是你,但是你可以尽可能的陪同QA进行测试。

关于修复”故障”方面

不同技术有不同的方案
对于后端来说,代码可以及时的在服务器上修正或者回滚
对于前端来说,代码可以及时的在服务器上修正或者回滚对于
iOS/Andorid, 也有类jsPatch(不知道苹果爸爸还让不让用)的热修复方案

我举的几个例子,可能太多以小程序为例子,毕竟小程序是一个特例,发生故障后,时间修复问题的时间是不可控的,因为本身小程序不支持热修复和回滚版本。

但是对于小程序,我目前没有很好的方案来做一个bak方案,如果你有更好的方案,可以留言或者找我,非常感谢。如果代码强奸了你,别反抗别挣扎,尝试去享受.

201704061140:翻过珠穆朗玛峰,你还害怕阿尔卑斯山吗?

Di 订阅号“小码消息” - 或许,只有小码消息才可以拯救中国程序员

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,049评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,494评论 18 139
  • 文章来自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鹏阅读 9,181评论 2 126
  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,206评论 4 123
  • 看过文物鉴定的人大概都知道,考古专家时常会说这样一句话,“这件东西不对”,这算是着实让人惊讶的一句话,其实仔...
    神威上将军阅读 950评论 0 2