@程序员,承认吧,都是你的错!

老读者都知道的,我没干过什么大事,无非就是敲敲代码、写写文章。还有就是及时吃饭、睡觉、打豆豆。

这不,就有个哥们看不惯我了,再见之后还要撂下这句狠话:“你这种人是干不了大事的。”

好吧,我承认,都是我的错!我真没想过要干什么大事。我觉得打打杂,扫扫地挺好的。我估计我来到这个世界上的时候,父母也没对我抱太大的期望,否则清华北大没录取我这事会把他们气疯掉的。事实上,即便我只考了个大专,他们仍然没有抛弃我、放弃我。

不知道大家有没有看过《西西里岛的美丽传说》,漂亮的女主人公(女神)被生活无情的摧残,但最后,她仍然对那些欺辱过她的女人报以纯洁的微笑

我对这位贬低我的哥们也报以微笑(??),快,看我的表情,纯洁吧?那为什么我还要提这件事呢?难道不是因为我小肚鸡肠、耿耿于怀?还真不是的,我只是想引(che)出本篇文章的主题:程序员,承认吧,都是你的错

(看我耍了多么大的心机)

不知道大家有没有过这样的体验:明明程序在本地测试通过,运行的好好的;但不知道为什么在正式环境下就偏偏有问题,不仅见了鬼,还奇了怪!

我们找啊找,费了老大的劲儿,可还是找不到原因。问题把我们折腾得够呛,于是我们只好摊摊手,摇摇头,叹口气,很难为情地扔下一句狠话:“这特么肯定是环境有问题。”

是的,对于大多数的项目来说,代码里常常混杂着很多东西:团队其他成员的代码、第三方类库、数据库链接、网络通信等等,以及程序运行的平台环境。

对于大多数的程序员来说,不得不面对的一个沉重的事实就是,工作中用的电脑是 Windows 操作系统,而项目正式部署的环境是 Linux 操作系统。跨平台之间的差异,有的时候能把我们搞崩溃。

早年间我做过一个大宗期货交易平台,某一家客户为服务器端提供的环境是 Windows,某一家客户提供的是 Linux。代码打成 的 war 包几乎没有任何差别,唯一差别就是几个配置参数不一样。Linux 的运行的好好的,但 Windows 就很不幸了,Web 版的首页打开几乎要一分钟之久,那种什么事也干不了的等待几乎能把所有的用户杀死在摇篮中。

当时我很傻很天真,脑子也没怎么动,心思全放在如何减轻首页加载的资源上面。把 CSS 压缩、把 JavaScript 压缩、减少请求的访问数目、图片懒加载、缓存、减轻数据库的压力等等,我能想到的办法都试了试,但几乎于事无补——首页的访问速度没有什么明显的改善。

经过一周时间的琢磨,我打算放弃了,差点愤怒地把键盘砸坏(握紧双拳,用力地砸下去)——大家有过那种要发泄情绪的时候吗?

很无助,就像少年派和一只吃人的老虎飘荡在同一条救生船上一样的无助!

这特么肯定是环境有问题

但我决定忍住,于是我又花了一周的时间研究了很多其他性能优化的方案,虽然最后仍然没起多大用处。没办法,我终于妥协了。我开始和客户沟通,问他们能不能提供一个 Linux 环境的服务器。大家猜客户怎么说?他们说不用再提供,只需要一键切换就可以把 Windows 切换成 Linux,云服务器都有这种功能。what?

然后,我迫不及待地重新安装了 Linux 版的 JDK、MySQL、Tomcat,把之前在 Windows 上运行的 war 包往上面一扔,然后启动 Tomcat,大家猜结果怎么样?

首页访问速度和另外一台 Linux 的几乎差不多,几秒钟的事儿。当时我那个气急败坏的样子,就好像地主家生了个傻儿子一样。

从此,我就笃定一条:只要问题搞不定,就赖环境,就赖第三方

后来,我在做支付宝支付的时候遇到了另外一个奇怪的问题,用户的钱已经从平台的支付宝账户上划走了,但我们平台的资金账户就是没有更新。

我当时就怀疑是支付宝的第三方 jar 包出了问题。因为系统一直运行的挺稳定的,我也没有对支付宝接口做任何的修改。

我就愤愤不平地提交了工单,质问支付宝的小哥:“你们支付宝接口是不是有问题,为什么支付宝上的账户资金已经划转了,却没有给我返回通知,导致我们平台上的资金账户没有更新?”

来来回回和小哥沟通了几次,他态度一直挺淡定、挺友好的,我却一次又一次的心虚:问题找出来了,是我不经意间修改了一行代码导致收到的通知被漏掉了(竟然忘了比较代码版本)。

当时自己那个灰头土脸的样子,真的是想找个地洞藏起来,羞愧难当啊!我至今还清楚地记得我最后回复的那句话:“对不起,是我错怪支付宝了。小哥,请见谅。”十足的勇气。

不知道那位小哥当时收到我这句真诚的道歉时会怎样想,会不会心里恶狠狠地骂一句:“又遇到一个傻X,当我们支付宝是过家家的啊。”

在我这十年程序生涯中,遇到过的 bug 多到像秋天里的蚊子一样,数也数不清,补丁打也打不完。我总结出来一条真理:承认吧,都是你的错,问题就出在你自己写的代码里。只有抱着这种心态,才能在最快的时间内找出问题的解决办法。

从统计学的角度来看,软件中的故障一般都是人为引起的,例外的情况少之又少。这一点在《代码大全》这本书中也曾被提到过,尽管统计的年代已经离我们很遥远了,但仍然具有借鉴意义。

通过 1973 年和 1984 年的两次研究表明,所有上报的错误中,大约 95% 是由程序员引起的,2% 是由系统软件(编译器和操作系统)造成的,2% 是由其他软件(第三方类库)造成的,1% 是由硬件造成的。

就目前的情况来看,系统软件、第三方类库和硬件都越来越趋完善,那么相对来说,程序员肩负的责任就更大了。这大概也是程序员动不动被拿来祭天的原因了(呵呵)。

淡定淡定,就让我们做一个谦逊的程序员吧,遇到问题就毫不犹豫地从自己的代码找起,哪怕最后确定问题真的不是自己引起的,那么也为我们打足了底气,留下了确凿的证据。从另外一方面来说,这是防止别人甩锅的最好办法。

“嘿,哥们,这是我的错,就让我来把问题弄个水落石出吧!”就像我对待文章开头提到的那个抨击我的哥们来说,大家并不会觉得我不够硬气,反而只会觉得那哥们很可爱,而我很风度翩翩。



好了各位读者朋友们,以上就是本文的全部内容了。能看到这里的都是最优秀的程序员,二哥必须要伸出大拇指为你点个赞??。如果觉得不过瘾,还想看到更多,我再给大家推荐几篇。

程序员的遮羞布:这个需求技术上无法实现
@程序员,别再迷恋多线程工作了
@程序员,请掌握这些核心生存技能

日常操作来了!如果觉得这篇文章有点用的话,求点赞,明人不说暗话,我喜欢这种被大家伙宠爱的感觉。

one more thing!如果大家想要第一时间看到二哥更新的文章,可以扫描下方的二维码,关注我的公众号。我们下篇文章见!

原文地址:https://www.cnblogs.com/qing-gee/p/12083713.html

时间: 2024-10-01 04:27:00

@程序员,承认吧,都是你的错!的相关文章

36氪上的这七家程序员网站你都了解吗?

我始终相信程序员交付的不是代码,是价值,所以在万众创新下程序员成了最受伤的群体,36氪上的好的项目举不胜举,但是真正为程序员服务的都有哪些呢?让我们一起来看一下. 1,程序员在囧途(http://www.jtthink.com/) 程序员在囧途是中国新兴IT实训教育平台,由<失业的程序员>图书作者沈逸发起,专门为怀才不遇的.迷茫在IT囧途中的程序员所开设在线教育平台. 2,程序员联合开发网(http://www.pudn.com/ ) 作为一个老程序员网站,积累了大量用户和资源,现在是大发展的

程序员,我们都是夜归人【转】

[转]http://www.aboutyun.com/thread-18453-1-1.html 音响随机播放着音乐,偶然跳出一首<都是夜归人>的乐曲,让我不禁想起程序员这个群体,夜归人也是不少的啊.恩,我这里说的「夜归」正是指的加班,进入这个行业,成为程序员谁没加过班呢,所以我们都是夜归人啊. 加班是一个行业竞争激烈的表现,回想下读中学时虽不加班却要加课,因为高考的竞争很激烈啊.加班也是一个行业兴旺的表现,你看产能过剩的行业连工都不开了,哪里还需要加班.这些是加班的行业宏观原因,那么于个人微

程序员那些事儿:十个程序员十一个都是因为这些辞职的!

一直以来,小编认为程序员都是这样的,高薪.话少.会编程,玩的都是高科技,那叫一个帅.但是自打入了互联网,一切都变了. 现实总是残酷的. 怎么就变成了这幅"熊样"呢?噢不好意思,是"猿样". 一番查证之后,原因原来是这些: 员工杜某:我在公司辛辛苦苦干了四年,相信你加薪的承诺已不下九次.进公司时我身高1.61米,如今身高1.78米,而工资还是一点没长. 开发王某:我的智商实在太低,总是搞不清楚为什么我每开发出一种新产品,在老板那里却被冠上了你的名字?我得辞职出去好好想

30+程序员,平时都忙些什么事情?平时都想些什么?以后有啥计划?

很多人都说,30岁以后了,写程序还有前途嘛?我有时候也迷茫,但是迷茫过后,总会给自己寻找方向,每个人都需要有个信念.没有信念,活着就没意思,无聊,觉得没奔头了. 废话少说,我来说说,我平时工作都忙些什么? 01. 我比较喜欢技术,但是技术又不是很厉害,但是我有的是时间可以深入学习新技术,例如,我平时会学习 WF, WCF, WPF, Silverlight 等技术,还会安排年轻的同事一起学习提高,人都需要不断的提高,否则很容易落后. 02. 我会看一些书,每过一年半载会逛一趟书店,狂买一些,平时

所有有意愿成为程序员的人都应该看的文章

转发一篇不错的文章,从以下的几个方面思考一下,你是否认真思考过并得到答案. 一.90%的编程工作来自内部软件 二.别人雇你的目的,是让你创造利润,不是让你编程 三.不要自称为程序员 四.不要限定自己 五.如何提高求职时的谈判能力? 六.创业公司是否适合应届毕业生? 七.在创业公司工作是否值得推荐? 八.沟通技能是最重要的职业技能 详见

Java程序员新手老手都离不开八大开发工具

现在有很多库.实用工具和程序任Java开发人员选择.每个工具都有其优点,但其中有一些因它的知名度.多功能性和有效性从众多选项中脱颖而出.    以下这8个工具,从代码构建到错误挤压,覆盖Java开发的全域.学习这些工具可以帮助你改善代码质量,成为一个更高效的Java开发人员.一.Eclipse    尽管IntelliJ IDEA.NetBeans和一些其他的IDE正在日益普及,但是有调查表明,Eclipse仍然是几乎半数Java开发人员首选的开发环境.Eclipse是IDE领域的瑞士军刀,有着

[译]程序员都是工程师吗?

所有的程序员都是工程师吗?当然不是.工程师是必修课,程序员则是选修.工程师为自己的事业工作,而程序员做他们喜欢做的事情.工程是实实在在的,编程是抽象的. 为了吸引注意力,Slashdot提出了一个备受争议的老话题:所有的程序员都是工程师吗? 当然不是. 我曾经却不这么认为.我的母校是伊利诺伊大学香槟分校,计算机科学系是工程学院的.我可以证明,这好几年都在学和工程师一样的课程. 正因为很多学校把计算机科学归于工程学院,很多程序员毕业之后都以为他们和工程师没什么区别.但是差别很快就会显现出来.(写给

程序员都是有强迫症的

昨天晚上,为了完成实验室任务,一直写代码,写到两点多,然后总算是写完了.但是程序员都知道,调试的过程通常是最复杂的,因为可能遇到各种奇葩的错误,而错误产生的原因多种多样,或者是逻辑错误,或者是输入错误,或者是访问错误...各种各样的错误,毫无头绪..... 程序员大都有强迫症,尤其在编程这件事情上.为了改正程序中的错误,可以熬夜,直到找到错误并改正错误. 找到错误本身就有挑战,因为有些错误是逻辑上的错误,这种错误通常不易发现,只是结果和预期结果不一样,这时候就需要从头去思考整个流程,判断每一步是

野生程序员是指仅凭对计算机开发的兴趣进入这个行业,从前端到后台一手包揽,但各方面能力都不精通的人(转)

本文摘自:<Web 全栈工程师的自我修养> 野生程序员是指仅凭对计算机开发的兴趣进入这个行业,从前端到后台一手包揽,但各方面能力都不精通的人.野生程序员有很强大的单兵作战能力,但是在编入“正规军”之后,可能会不适应新的做事方法. 遭遇“野生程序员” 腾讯公司内部的团队很多,在团队管理上有项目和专业两个维度.也就是说,有些团队是项目维度的,整个团队共同维护一个产品,成员来自不同的职业岗位:有些团队是专业维度的,比如一个组都是前端工程师,维护不同的产品. 因为前端组是设计部最接近后台技术的团队,所