作者丨伍杏玲

来源 | 程序人生(ID:coder_life)

程序员的日常三件事:写Bug、改Bug、背锅。连程序员都自我调侃道,为什么每天都在加班?因为我的眼里常含Bug。

但是真的有这么多Bug要改吗?就不能一次改完吗?

程序员听这问题后要拍键盘了,还!真!不!能!


用户使用场景的不确定性

在日常生活中,即便每个物品都有使用说明书,可一千个用户就有一千种使用方式。例如用诺基亚手机砸核桃,用iPad当切菜板,所以说程序是确定的,但用户的使用场景是不确定性的。

各种不按套路出牌的操作会给系统带来挑战,例如网上有个段子说:

一个人走进一家酒吧,要了一杯啤酒

一个人走进一家酒吧,要了一杯咖啡

一个人走进一家酒吧,要了0.7杯啤酒

一个人走进一家酒吧,要了-1杯啤酒

一个人走进一家酒吧,要了2^32杯啤酒

一个人走进一家酒吧,要了一杯洗脚水

一个人走进一家酒吧,要了一杯蜥蜴

一个人走进一家酒吧,要了一份asdfQwer@24dg!&*(@

一个人走进一家酒吧,什么也没要

一个人走进一家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来

一个人走进一家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿

一个人走进一家酒吧,要了一杯烫烫烫的锟斤拷

一个人走进一家酒吧,要了NaN杯Null

一个人冲进一家酒吧,要了500杯啤酒咖啡洗脚水野猫狼牙棒奶茶

一个人化装成老板走进一家酒吧,要了500杯啤酒并且不付钱

一万个人在酒吧门外呼啸而过

一个人走进一家酒吧,要了一杯啤酒 ';DROP TABLE 酒吧

一个人跳进一家酒吧。

一个人蒙着眼睛,倒退着走进一家酒吧。

一个人走进一家酒吧,要了一杯美国啤酒,一杯德国啤酒,一杯比利时啤酒,一杯青岛啤酒。

一个体重五百吨的人走进一家酒吧。

一个酒量五百吨的人走进一家酒吧。

一个酒量为零的人走进一家酒吧。

一个人走进一家酒吧,点了一杯啤酒,一边喝一边用指尖把啤酒逼出体内。

一个人来到一家酒吧门口,拿出电脑,敲了几个命令,2^32 - 1 个测试工程师走进一家酒吧。

一个人戴着墨镜,手持两把 Uzi 冲进一家酒吧,对着室内一顿扫射,然后要了一杯啤酒。

一个人走进一家酒吧,要了一杯Nil,一杯Null和一杯None

一个名叫exception的人走进一家酒吧,被丢了出来 。

我走进酒吧要了一杯">_ <”

我盗用老板身份走进了酒吧进了后台放了一瓶我自己的酒。

我走进酒吧在吧台放了一杯' or 1=1。

最后酒吧炸了。

软件设计中最大的现实是:设计难以完全覆盖现实。

一个简单的搜索框,测试用例高达几十个。可以说只要用户在使用系统,系统就存在Bug。

而程序员在编程时只能按照需求与经验覆盖大部分用户的使用场景,剩下的只能是见一个Bug灭一个。


需求的不确定性

之前有“AI都会编程了,要程序员干嘛”的言论,造成很多程序员产生焦虑纷纷要转行。

等等,说这话的人肯定没问过产品经理。

互联网公司的两大谎言一是程序员说的“没问题,上线吧”,二是产品经理说的“就按这个做”,现实是“我还要改几十版哦”。

产品经理自己没想明白需求要做成什么样子呢,在AI做出一个百分百正确无Bug的软件前,它学会给产品拍砖的可能性会更大。

随着产品不断迭代,不断增加的代码自带Bug时,还可能会给原有程序引入Bug。有时候涉及底层代码的修改,一旦出问题,有可能会带来多米诺骨牌效应。

还有时候是程序好好跑着,Bug从天上来。例如圣诞节阿里的Antd彩蛋Bug,又如在2005 年日本瑞穗证券的交易员输入错的股价,想撤销可被系统拒绝,导致造成400亿日元的损失。后来证实系统出Bug了,这个Bug是在2000年埋的。

所以很多公司会严格要求在程序修改后必须经过严格的回归测试,来验证对其他业务流程有没有影响。

程序员不是机器


程序员是人,不是机器,人做事是主观判断性去做的,再加上“禀赋效应”:心里头自动地给自己写的代码添一层滤镜,觉得自己写的代码没有问题,所以程序员总找不出自己的Bug。

这导致程序员日常的第四件事是:挖坑填坑。有人大手一挥,一大段代码不写注释,或业务方法不用公共定义,不拆分类,一个方法写了一千行,从此没人敢动这些烂代码。也有人默默地“感谢”前任给他有活干,一点点地将坑填上。

还有对开发流程的漠视也是导致系统Bug多的原因。有开发心想“我只是改了两行代码,不影响业务流程”,心想提给测试太麻烦了,便自顾上线了。

结果线上就出Bug了。

所以公司才设定各种软件开发规范来减少Bug的产生,例如提测前开发之间的Code Review和需经过测试人员的测试才能上线。

程序不是一蹴而就地做出来的,Bug也不是一时半会能改完的。毕竟“写程序不像是造一座桥,而是造一座城。”

(本文为 AI科技大本营转载文章,转载请微信联系原作者)

公开课预告

如何用AI技术为黑白老照片上色?本次公开课中,百度高级研发工程师李超将讲述对抗生成网络相关,学术界的研究现状和应用场景,以及GAN在百度视觉+百度PR+新华社合作的焕彩项目中的应用。

推荐阅读

  • AI找Bug,一键快速预测

  • 春节停车难?用Python找空车位

  • Python告诉你:为何年终奖多发一元,到手却少两千多?

  • 送你一份春节看片攻略~

  • 原子互换:一统公链江湖的神来之笔

  • 春晚鬼畜 B 站日排行最高,赵本山:我的时代还没有结束!

  • “离开360时,它只给了我一块钱”

  • 5G大规模商用来临之前,你必须知道的几个知识点

  • 女程序员:我敲代码养家,老公负责貌美如花!

程序员老在改Bug,就不能一次改好吗?相关推荐

  1. AI向程序员老司机学习:从眼神的变化中寻找bug

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 用AI找bug这件事,有人尝试过,结果翻车了.美国网站Yelp的程序员们试图让AI帮自己找bug,岂料AI却删库跑路,最后只能用回滚的办法 ...

  2. 厉害!95后2万月薪程序员,背着电脑送外卖,途中还要改bug!

    点击"开发者技术前线",选择"星标????" 在看|星标|留言,  真爱 [#95后程序员背着电脑送外卖# 随时应对甲方临时需求] 戳视频 近日,来自安徽合肥的 ...

  3. 程序员辛酸泪——当程序员老去,程序员又何去何从

    程序员将代码注入生命去打造互联网的浪潮之巅,当有一天他们老了,会走向那里,会做些什么?表面光鲜的"程序猿"的真实生活的背面是不为人知的辛酸史,让我们一起去了解程序员这个职业吧! 当 ...

  4. 程序员老王给自己的孩子取名字

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 背景概述 程序员老王喜得贵子,希望从8个备选名字中挑选一个最佳的给孩子上户口. 要求概述: 1 ...

  5. 午夜凶铃,阎王爷召唤程序员老王。。

    故事情节: 一.阎王来电 二.地府显乱象 三.怒搞生死簿系统 四.巧设埋点监听生死时间 五.黑白无常测试显神威 六.规章整治奈何桥 出场人物: 程序员老王,阎王爷,黑白无常,牛头马面,孟婆. 一.阎王 ...

  6. 程序员遇到难解 Bug 毫无头绪之时

    (给程序员的那些事加星标,每天看趣图) 程序员遇到难解 Bug 毫无头绪之时 ↓↓↓ (无声视频) 说明:为啥有时候「趣图」栏目是视频? 因为:① 微信公号后台对图片大小有限制,最大 5MB & ...

  7. 为什么程序员老在改 Bug,就不能一次改好吗?

    程序员的日常三件事:写Bug.改Bug.背锅.连程序员都自我调侃道,为什么每天都在加班?因为我的眼里常含Bug. 但是真的有这么多Bug要改吗?就不能一次改完吗? 程序员听这问题后要拍键盘了,还!真! ...

  8. 漫谈程序员系列:无BUG不生活

    我决定谈一谈世界上最著名的虫子:BUG ! BUG 困扰了一代又代的程序员,不论是杰出的计算机科学家,还是像 Linus Torvalds(Linux内核创始人) .Bill Joy(传说三天写出BS ...

  9. 程序员老炮20年摘录及感想

    读了<Rework>这本书好多遍,每次读都有不同的感想.但从来没有把这些感想记录下来,今天把<Rework>书中的一些章节做一些摘录,并把我的一些感想总结出来.供大家参考.这是 ...

最新文章

  1. mysql5.7跳过gitd_MySQL5.7在线开启/关闭GTID
  2. 美团点评基于 Flink 的实时数仓平台实践
  3. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
  4. 【工具使用】Xray与Burp联动--流量转发插件Passive Scan Client
  5. 2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击
  6. 如何设置ftp服务器上传文件夹至不同路径,设置ftp服务器上传文件夹
  7. 小米12系列旗舰最新爆料:内藏5000mAh电池但机身更薄
  8. mysql+时间串联_mysql时间操作
  9. MFC三大dll使用总结
  10. notepad++批量操作笔记(持续更新..)
  11. 启明星win7桌面天气预报软件下载与使用方法(带时间)
  12. 干货!仓储规划设计方法论
  13. C语言 队列的实现(链表实现)
  14. matlab差分法解拉普拉斯方程,拉普拉斯方程有限差分法的MATLAB实现
  15. 用matplotlib画sigmoid函数
  16. PlatformIO开发STM8S003F3P6
  17. CSR8615蓝牙芯片功能调试入门笔记---上
  18. IE提示:无法打开匿名级安全令牌
  19. IP电话系统和VoIP系统使用指南
  20. ppt幻灯片如何与母版背景一块复制到新幻灯片

热门文章

  1. 多个class相同的input标签 获取当前值!方法!
  2. two years in cnblogs.com
  3. Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)
  4. Jvm常见面试题及答案汇总1000道(春招+秋招+社招)
  5. QGC注释消息提示框
  6. shell 中长命令的换行处理
  7. JAVA 第五周学习总结
  8. Linux 开机网络无法自动连接配置、网络开机自动连接
  9. 每天写的叫工作日志,每周写的总结叫周报,每月写的叫月报
  10. ScaleYViewPager