程序员必看:一个bug引发的“血案”

程序员必看:一个bug引发的“血案”_第1张图片

程序猿一直被称为“屌丝”“码农”“搬运工”等称号,似乎像怪人一样的存在,但不可否认,少了这些疯狂工作的怪人,从iPhone到其他最新的电子产品,以及现在的人工智能等等一切科技技术产品,都不复存在。因为他们的努力工作,从而改变了我们的生活方式,物联网社会的快速发展,也是与他们息息相关。

程序员必看:一个bug引发的“血案”_第2张图片

一个bug引发的血案

程序猿对社会的影响十分大,不过他们的世界里除了代码之外,还有bug,bug,bug。程序猿一生与bug奋战,可谓是杀敌无数。可以每次遇到自己写的bug,内心也有一些波澜,尤其是自己写的代码中可能存在着暂时未发现的bug,那可是有相当危险的隐患。如果是小bug,那么修复一下就没问题了,如果出现很大影响的bug,那损失可是很大的。在我们开发的诸多解决方案中,也遇到了不少bug,比如在开发一个B2G商城系统解决方案时,功能多同时系统复杂,最后完成,程序员可加了不少班。

1、Intel CPU设计爆惊天BUG,几乎全系受影响

据外媒TheReg报道,Intel处理器近日被披露存在重大硬件安全设计缺陷,该缺陷让任意用户态程序可以通过bug访问到任意内存区域,这一bug牵涉范围非常广,Intel采用X86架构的型号,从初代奔腾处理器到最新推出的酷睿8代8700k无一幸免全部中招,据称AMD因为架构设计不同此次免受影响。(但Linux开发社区部分讨论者则认为,此bug对所有X86架构处理器都有威胁,不能过早得出AMD已安全的结论)。硬件是很重要的,我们每开发一个智能产品的解决方案时,都需要对硬件模块进行反复的测试,以达到方案标准要求甚至更高。

程序员必看:一个bug引发的“血案”_第3张图片

2、Android Wear 2.0延期

2017年3月份, 谷歌向三款智能手表推送了Android Wear 2.0系统的升级,但是承诺过的其他可升级机型并不能在第一时间升级,这引起了用户的不满。原因是他们在发现Android Wear 2.0中发现了一个bug,所以不得不推迟。

从这件事情上可以看出一个谷歌因为一个bug的出现,而推迟了产品的升级,如果不解决这个bug,将无法对产品进行系统升级,可能将会遇到很多用户的使用问题,从而造成了一定的经济损失。系统有bug是很正常的,我们开发过不少的智能手表解决方案,也会遇到很多问题,但解决方案的作用就在于此,可以很好的应对问题,解决bug。

3、一个Bug导致每秒钟亏172,222美元,持续了45分钟

这是一个悲惨的事实,一个因bug而损失了巨大的资金,这个描述了一个爆发的软件bug是怎样一步步使得骑士资本(Knight Capital)在交易中损失了4.6亿美金,并且直接导致了公司的破产。

这个故事的主要原因是技术问题,无法想象一个大型的代码库,中间有长达差不多9年时间没有用过了,基本处于无维护、腐烂的状态了,最主要的是居然还没有认真重视,从而导致了如此惨重的结果。在我们开发软件解决方案的同时也要强调后期维护,任何系统想要在后期升级使用都要重视这个问题。

程序员必看:一个bug引发的“血案”_第4张图片

由此可见,程序员这个职位是非常重要的,一不小心,就将酿成大错。所以职位所在,应当坚守职业素养和操守,将自己的工作做到极致。

怎样避免bug带来的影响?也即是提出解决方案

程序员写代码出现bug是很正常的事情,不过他们的内心也都是拒绝的,尤其是产品经理或是测试人员在使用或测试产品的过程中抓到你一个bug之后,他们那种抓住至宝的成就感,都会让你感觉很诅丧,但是想到bug可能带来的影响,减少编程中的bug,对产品和程序员来说,都是最好的结果。

程序员必看:一个bug引发的“血案”_第5张图片

一般来说,很少有人能够一次编写出没有bug的程序,除非那些天才程序员差不多可以做到这一点。他们在接到任务之后,通常是先思考,然后在笔记本上画出数据结构或某个算法片段,再打腹稿,最后进行编程,这一个流程下来,他们大部分时候能够一气呵成,然后构建代码,构造测试数据,运行程序,在反复调试中修复几个编程过程中没有考虑到的问题,就可以提交到代码库了。

不过,对于普通的程序员来说,可能无法做到一次编写没有bug的程序,但是要尽量减少bug的数量。大部分bug的起因都是对业务逻辑的抽象不准确,对业务代码的具象不严谨。

一、提升自身的能力素养,减少自己与他人麻烦

1、理清真正需求

经验稍浅的程序员经常在收到任务需求的时候,很少动脑思考任务需求,而是直接按照需求去做。而有经验的程序员多半是拿到需求的时候,会站位思考这个需求是否是真正需要,功能开发是否真的有用,然后跟团队进行沟通分析,达成一致的任务需求。

程序员必看:一个bug引发的“血案”_第6张图片

所以,这也就是为什么,很多程序员刚写完几千行代码,然后被要求重新写,这种崩溃的感受,谁也都不愿意接受的啊。

2、明确每个细节

了解真正需求之后,就是梳理实现这个目的需求中的各个细节是否合理,对于细节需求描述模糊或者存在歧义的地方,可以和团队或者客户进行沟通,在项目开发之前将细节敲定下来。

如果是任务需求是开发的方向,那么细节末枝则是整个开发项目的枝干,每一个枝干的需求都可能影响到真正的需求,如果一个小部分没理清楚,那么可能整个项目的走向都会出现差错。

3、规范自身,专注练习

程序员自身也存在着一些致命缺点,而这些缺点都需要认真去对待与克服。比如说对待其他程序员写的代码时,都是带着一种挑剔和学习的态度,但一旦对待自己的代码,就认为自己写的代码都是正确的;所以,应该端正态度,一视同仁。

程序员必看:一个bug引发的“血案”_第7张图片

虽然说难以接受自己会写有bug的代码,但是为了那一点点自尊和不拖后腿的觉悟,不如多花点时间专注练习,来保证代码的质量,毕竟技术在于实践。

4、建立bug库

年少读书那会儿,我们经常会写错某个汉字,以及常错的习题,一般老师都会教我们学会建立错题本。编程也是一样,为了防止在编程方面不在同一个地方,摔倒两次的原则,也可以建立bug库,将每一次自己程序出现的bug案例,都记录到bug库里,检查代码的时候,逐一对照,确保不会再犯错。

二、团队协作,减少重大错误和弱智bug

在开发大量的解决方案时,我们也会遇到相同的问题,比如智能手环方案和智能手表方案,其功能是差不多的,甚至可以说部分代码可以替代使用的,bug则可能因为先前解决过而没有出现。

工作不是单打独斗,团队写作也很重要,前期的技术方案和设计评审、代码审查,能够减少一些重大的错误和弱智bug。

程序员必看:一个bug引发的“血案”_第8张图片

没有经过代码审查,仅凭测试是很难保证代码的质量。尽管通过了测试,但没有经过代码审查的代码,还依旧会出现各种问题;代码审查的意义在于你的代码进入代码库之前,有经验的程序员读过你的代码,并能够看懂,有经验的审查程序员能够通过时间等干扰,来发现这个bug在未来的某个点可能爆发的问题,而这个时候可能帮你避免掉一些隐藏的和弱智的bug。

在编程的路上,如果将以上方式付诸行动,它们的体现都在你日后的编程工作中,不过养成习惯不是一蹴而就的,需要执行力,这样你会发现bug真的会渐渐减少,离没有bug的代码,越来越近,而接近于没有bug才是程序员最对自己的最高要求了!

我是英唐众创,如果文章对你有用,如果你是一名程序员,那就转发给你身边的程序员看看吧。

你可能感兴趣的:(程序员必看:一个bug引发的“血案”)