“十年生死两茫茫,写程序,到天亮。千行代码,Bug何处藏。纵使上线又怎样,朝令改,夕断肠。”
bug,最初的英文里面表示“虫子”的意思。
1946年,一名叫葛丽丝·霍波程序员,在MarkII计算机的继电器里面,找到了一只导致计算机故障的小虫子。葛丽丝·霍波将飞蛾夹在工作笔记里,并诙谐地把程序故障称为“bug” 。
从此,在这之后的岁月里,bug有了另一层含义,那就是软件缺陷。
在计算机相关专业的工作环境中,bug会一直充斥在我们的工作生活周围。所谓软件缺陷,必然来自于具体的软件功能里面。而,软件功能开发又是软件工程师,也就是大家经常说的程序员落地执行的。是人,只要写代码,必然会写出过bug的。
所以,大家一说到bug的时候,大概率都要拉上程序员来背锅。bug这个锅背的时间长了,连程序员自己都会默默的把问题归咎在自己身上。自责,悔恨,自己为什么能写出这么无脑的bug。
程序员写出来的bug,可以称之为 功能实现bug。功能实现bug属于软件缺陷里面最常见的bug,最容易被人发现的bug。也是最低层次的bug。
在功能实现bug之上,还存在一种 需求bug。
需求bug较之功能实现bug,能隐晦一些。不太容易被人发现。需求bug,经常会导致软件开发项目返工。而在这返工的路上,需求bug常常会拉着功能实现bug来背锅。就比如,我们要开发实现一个针对女性的软件产品,而,程序员可能在一开始接到的需求是受众群体是男性的软件产品。
最后,当发现是需求造成的软件缺陷的时候,需求bug会大概率将锅甩给功能实现方面。会认为,功能实现有问题。同时还会附加一个匪夷所思的理由:软件功能不支持用户在线美甲。试问,哪个男性用户会做美甲?这明显就是一款女性软件产品么。
但是,程序员最初接到的原始需求是实现一款针对男性用户的软件产品。
还有一种终极bug,叫做 产品设计bug
和需求bug一致。产品设计bug更是将软件缺陷归结为程序员实现功能有问题。产品设计bug比需求bug更隐秘,更不容易让人分辨真伪。
打个比方,产品会让程序员实现一款模拟企鹅生活的产品。但是,要让企鹅默认出生在北极。
程序员问产品,企鹅应该生活在南极呀。产品说,生活在哪里无所谓,你能让他从北极跑到南极就行。
程序员说,企鹅行动比较缓慢的,从北极出发,还没到南极,估计就死了。
产品说,你傻呀,你怎么不给企鹅设置一个光速呢?
程序员说,这不符合自然现实呀。
产品说,好,我们做一版优化升级。
你看看,一个产品设计bug,会被用一个功能优化升级,轻描淡写的掩盖过去。bug虽然都是程序员经手操作的。但是其内在本质根源却会来自不同方向。
需求bug,产品设计bug是战略层级的bug。考虑不当,产品可能会改弦易辙,重新来过。
功能设计bug,是战术层面的bug。考虑不当,不影响产品运行,修复升级即可。
程序员天天和bug打交道。bug写多了,解决多了,就成为一个很bug的人。
人生就这样,不是在写bug的路上,就是在解决完bug的归途中,没有程序员可以例外。
左手键盘,右手bug,信马由缰,走出不一样的bug人生。
源自公众号 平凡技术人生