程序员,时间都上哪儿了


       晚上调试修复了一个线上的小 BUG, 花了2个小时, 加上昨天花费的时间, 总共大概3个小时。

       BUG 是这样的: 一个 API 返回的 JSON 串是一个对象数组 [{field1: 'xxx', field2: 'xxx',  'source_cidr_ip': 'xxx'}, {'field1': 'xxx', 'field2': 'xxx', 'source_group_no': 'xxx'}] , 有一个字段是可能变化的, 大多数时候是 source_cidr_ip, 极少数时候是 source_group_no , 所采用的 JSON 解析库是 JACKSON-lib , 这个库对要填充的对象定义有一些要求: 所声明的对象的属性必须包括所有 JSON 串中的字段, 若少了则会报错, 若多了则会填充为 null. 而我定义的对象中只包含了 field1, field2, source_cidr_ip 三个字段, 忽略了 source_group_no , 结果当返回含有 source_group_no 字段的 JSON 串时, 就会出现解析异常。 


      为什么花了这么长时间呢? 按理来说, 这样的 BUG 只要查看一下日志, 是很容易定位的; 原因可能有如下三个方面: 1.  返回含有 source_group_no 的 JSON 串出现的概率非常低, 也许只是最近才出现, 否则应该早就报出异常了;  2.  出现 BUG 的时间距离开发的时候已经过去了近 7-8 个月了,  料想到是这些细节坏事还真是不容易; 3.  这个解析异常可能被多线程中的代码“吃”掉了(切忌把异常捕获了却什么都不处理!), 以至于没有看到。   


      令我痛心的是, 这样一个小 BUG 就耗费了我大概3个小时! 如果把调试时间加到开发时间上, 那么这个小小的展示功能实际上是耗费了4-5个多小时! 由此, 我想到了, 程序员, 你的时间都上哪儿了 ? 


       我们程序员常常自豪地宣称: BUG, BUG! 无休无止, 无穷无尽的 BUG! BUG 是无法避免的, 然而, 如果在开发时能够更加仔细一些, 更加苛刻一些, 是不是可以减少无谓的调试时间? 减少这些不必要的调试, 是不是可以节省出更多时间,用于更有意义的事情上? 扪心自问, 你是不是花了 1个小时开发, 又花了2个小时(常常是一点一点地累积出来的)不断地调试和修复?  这是不是咎由自取, 自食其果? 虽然当时可以自豪地对主管说, 我达到了预定的工期和目标, 实际上很可能是自欺欺人。你的主管不会在意你在工期之外所花费的时间, 但你必须在乎。 因此, 快速开发, 有时是得不偿失的。 看到了眼前的“快”, 却看不到为前面埋下了“雷”。


        因此, 在开发时尽量苛刻一些, 充分测试, 对代码质量充分重视, 实际上是尽量减少无谓的调试时间(离开发时间越久远的BUG, 修复所花费的时间会越长), 从总量上节省了时间。


        从另一个角度来说,  程序员应当对自己的时间非常敏感, 毕竟, 技艺永恒, 生命短暂; 多留点时间给所爱的人!



你可能感兴趣的:(时间,bug)