slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
软件开发这些年,我学会的道理和教训
17611538698
webmaster@21cto.com

软件开发这些年,我学会的道理和教训

资讯 0 2793 2018-11-14 12:03:00

21CTO 社区导读:学习就是逆人性的事,有些东西就是很枯燥,你就得啃,聪明点的人,啃个一两天,笨点的人需要啃个一两年,只要你啃,总有一天能啃的过去了,我觉得就是努力不要使蛮力。



640.webp_(92)_.jpg


 
1那些年,我犯过的错误

从业 20 年,98 年到 18 年,一共 20 年,98 年毕业,我学这么多东西整个过程也不是速成的,也是一点一点来的。今天我想先跟大家说一下,我之前犯过的一些错误,犯过最惨的一次错误。

今天我们也能听到很多的这种什么删了库,跑路的,或者说是不小心把生产系统给搞挂了,我以前也经常干这样的事,而且干的还是银行,把银行的一些数据库搞乱了。

我印象比较深的一次,是在银行工作,银行都是晚上上线,因为白天要生产,所以要加班。以前用 C 语言写程序,够变态的。C 语言出 Bug 的概率高的多的多,所以就很容易出这种问题,出了问题以后,要去把 Bug 改了,改完以后,又得把数据给订正回来,数据订正回来的时候脑子一晕,y 条件写错了,就把数据库给毁了,毁了怎么办呢?就只能把头天的备库拿出来,重新恢复一下,那今天的数据怎么办呢?那就让储蓄所关门,还好有纸质的,然后就把那个网点的数据重新补录一遍,然后银行方面就说,这分明就是搞破坏。

当然我犯过的错误还有好多,以前在国际化的公司工作,尤其是在路透,最痛苦的事情就是代码没写好出问题。然后晚上被叫起来,是凌晨三点钟或者凌晨四点钟被叫起来,在迷迷糊糊中进入到一个电话会议室里面,然后跟着世界各地的人在非常嘈杂的环境下说英语,解决故障。

在路透的时候,有一个 Bug 上线了,其实这个是在我们测试时已经测出来,但是上线的时候疏忽了,没有把修复这个 Bug 的那个代码给发布出去,而是发布了包含这个 Bug 的代码,结果造成生产线上数据丢失。你想那是金融数据,这个事可大了,凌晨四点钟被叫起来。想了想,脑补一下,好像是之前犯过的那个 Bug,就总觉得应该是发上线了,结果那个补丁没跟着一起上线,这事把我急坏了。然后就听见国外那些老板们就在那边那种骂,用的都是一些非常重的一些话来骂,后面故障处理还需要批斗,要找人负责。

所以这是这种人在江湖漂,哪能不挨刀。你做得越多,出的故障越多。除非你啥也不做,但是出的故障越多,你的成长才会越大。所以我还是跟大家说,趁着年轻,多犯错误
 
因为你现在犯的错误都还好,只有人犯过错误了,你才会有那种深刻的理解,对这个东西,你会有更深的理解,不犯错误的人你是不会成长的。把人送到那个月球上那个阿波罗,那个死了多少人?出了多少事?才上了去,所以这个东西,很多东西都是这种经验教训就这么来的,所以大家一定要珍惜犯过错误的这个事。

实现一个小的目标,犯一个大的错误。犯一个大的错误,一般来说你要么就被打垮掉了,你就平庸下去了,要么你就知耻而后勇,你就越来越牛了。所以为什么在拼命的学习?就是因为以前犯过这些已经严重的错误,对我来说,说好听点是一种忧患意识,说的不好听点,是一种心理阴影,这种心理阴影导致了你必须得不断的去学习,不断的去总结,所以这导致了我今天会一点一滴的走到今天这个样子,所以,把这些东西都当成自己的好事,如果你害怕失去你不敢去犯错,你就不会去做更多的事情,当你畏手畏脚的时候,是你失去更多东西的时候。
 
 
2我自认为做过最牛逼的事情和最傻逼的事情

最牛逼的事情是这样的,我永远记得我离开银行的时候,那个时候是 2000 年 9 月份的时候,我递交我的辞职报告,我上面写了:本人对现有工作毫无兴趣,申请辞职。就那么一句话。但是我当时已经在银行干了两年了,这个辞职单还放在云南省工商银行的那个档案库里,那边的人事中心还在整天叫我赶快把档案调走,到今天还被以前的前同事拿出来说事,说你当年那么年轻,写了这么一个辞职信,房子也不要了。

为什么我觉得这是最牛逼的事?因为这个决定真的不好做。首先第一个事情是所有人都反对。因为我父母都是下岗工人,父母两人加起来一个月工资不到两百块钱作为生活费。在 2000 年,老实说是不可能生活下去的。我大学的时候,因为银行需要做信息化改造,正好赶上了这个时代需要动手能力强的学生,而不是像以前一样的靠关系才去了工商银行,所以当时我是由老师推荐过去的,说我动手能力比较强一点。这份工作对我来说是有点来之不易的,因为还分房,所以整整做了两年。

所以离开银行的决定是很难的,做完了以后,你才会觉得自己牛逼,如果简单的东西就不会觉得自己牛逼了。那时候出去的时候,同学,同事,父母,家人,全部反对,差点还跟我父亲断绝父子关系。当时我的处长说:“你的辞职信可以这么写,但是请你在后面加一句话,经劝说无效申请辞职类,那分给你的房子也就收回了?” 我说行,那就收回。然后有人问我为什么?我说一套房子换不了我的人生,你永远看不到第三次工业革命。

我每天都在看微软怎么样了,甲骨文又怎么样了,雅虎又怎么样了,IBM 又怎么样了,惠普又怎么样了,看到这些,我总觉得自己选对了一个专业,呆在一个正确的时间,但是却呆在了一个错误的地方,所以就决定离开了。但是我跟大家说,我出去是为了一个更好的经历,因为整个世界有这样的变化,所以要出去。
 
 
3出去了以后,牛逼过去就是个傻逼,为什么?

因为出去的时候马上遇到的是互联网泡沫。互联网泡沫当时一下就倒闭了好多公司,所有公司全部冻结。本来还想信誓旦旦的出去就有不一样的天地,结果一出去马上就傻逼了。
 
这个事情,有同学可能不知道互联网泡沫,当年的 Dotcom,只要你申请一个 Dotcom 域名,放一个网站里,你就可以融钱了。区块链泡沫也是差不多。所以那时候也是说,用互联网就可以颠覆世界。一会儿我再跟大家说颠覆世界的事,这是下半场的事。

出去后,我就找不到工作,找不到工作就只能去做外包,那时候银行需要外包,外包公司又缺人,所以我就进入了一个系统集成商。系统集成商把我外包进了一个银行,在银行里面做封闭开发,从早上九点到晚上十点,礼拜一到礼拜六,今天所谓的九九六。2001 年到 2002 年,就这么干了一年。

反正,自己觉得自己挺牛的,出去以后,就马上傻逼掉了,发现这个差距还是挺大的。后来我从昆明到了上海,发现这个一线城市与昆明差距巨大无比,就是过高的预估了自己的能力。去面试的时候啥也不懂,面试问我 C 语言几个问题:C 语言的宏定义是啥?C 语言的对内存和栈内存是什么意思?这两个问题我都答不出来。又问我第三个问题,你要是有不知道的,你怎么办?我也答不出来,因为不知道的我也不知道怎么办。人家就说你不会问人啊?你不会看书啊?你不会上网查啊?我说谢谢指导,我当时就那么傻逼,真的,面试的时候就是那么傻,今天还敢在这做直播。那时候,连正眼都不敢看那个面试官。

后面还有更傻的事,我在上海呆了一段时间以后,我就记得有个人就跟我说,让我一定要去外企。我本来也要去外国公司。那个时候国内还没有像 BAT 这样的公司,所以那时候还是想去国外的公司。然后面试的时候,一说英文就傻了,就说了两分钟,对面那个老外跟我说算了,我们还是找个会说普通话的来跟你说吧,然后就让他同事和我聊,所以很尴尬。但是还是被招进去了,招进去就写代码,试用期写了三个月的代码。
 
 
4从上海到北京

再后来,我就从上海来北京了,是 2002 年的冬天,我还记得是 12 月 2 号我到北京,试用期三个月,三个月差点就被辞退了,因为代码写的巨乱无比。写 C 语言,不是写业务代码,是写那种分布式计算的代码。然后公司说你这个不行啊。这个写代码不行怎么办呢?要不你去做测试去吧?我就去做测试去了。测试的时候,有 KPI,每天至少要找到三个 Bug。

我懂代码,我会写代码,我看得懂代码。一般做测试的都是做黑盒测试,我可以做白盒测试。到最后,我就开始看着那个代码来做测试。比如说,它这个数组是 15 位的,它分配了 15 位,我就给它弄个 16 位的,让它溢出,就这么来搞,一下子找好多,找完以后,我还解 bug,给一些建议,然后一下子那些开发人员,就是国外那些开发人员发现,这人找的 Bug 跟一般测试人员找的 Bug 完全不一样,这人完全是做开发的料,怎么来做测试了?然后,搞的中国区经理里外不是人,到底你们想要怎么办?这人写代码不行,做测试你们也觉得他又像做开发的。

就这样,如果你做过一些测试,玩儿这些事情,你大概会了解,你从一个不同的角度看不同的软件的质量,会让你有更多的感触,大概是三个月的样子,我又被调回来,调回来就不做开发了,做什么呢?让我做维护。维护什么?Bug Fix。我要修复线上的那些问题,大概是这个样子。

后来让我做三线开发。一线是接电话的,二线是做调查的,三线是解决技术问题。解决技术问题过程当中用户会抱怨,用户就说你们这个一线的太慢了,我一个问题报告给你们公司,一直要等一到两个月我才能拿到这个问题的一个解。这个事公司一调查,发现是一线技术支持不好,那时候公司就说谁愿意去一线做技术支持?我说我去,因为想学英语,我就去做一线接电话。我一开始接不了电话,一开始就是处理邮件。我在亚洲这地方,主要一个跟日本,一个就是跟亚洲区,还有欧洲那边有一个上班的,跟欧洲那边德国、巴黎。那个时候学英语这个比较好一点,我觉得我英语够烂了,日本人比我更烂,德国人,巴黎都不咋的,跟着一堆母语都不是英语的人说英语,觉得这个自信心还是很强的,我也不发怵。尤其是跟那个德国人,德国人说英文是一个单词一个单词的说,这事让我觉得很慢,但是他力图把这个单词说清楚,我觉得他说这么慢,我也跟他说的慢,他慢我也慢,本来正常话速聊个五分钟就能聊完,我们可能要聊 15 分钟。但是没事,这是一个让我觉得练英语口语就是一定要说慢,不要图快,一定要慢,把每个英语单词音发准。

我那个时候对我帮助最大的不单单是英文,帮助最大的就是跟用户打交道,了解到用户的一些诉求,用户来问你一个问题,你不能直接告诉他这个问题的原因是什么,这没用。你要告诉他怎么解,你要告诉他一个解决方案,一个 Solution,在技术支持我学到了一些。因为我在一线解决技术问题动作很快,用户好评不断,后来不做了,用户还找我。

这是我人生当中觉得,做开发从来没有得到这种荣誉,这么高赞扬的荣誉。为什么?因为你总是出 Bug 的,一出 Bug,你就一定会被人批的。好像是做开发总是被人骂,做技术支持不一样,当你为用户解决完问题,用户会表扬你的,用户表扬你,有时候用户一高兴,他还会到 CEO 面前表扬你,老露脸了,这是做一线支持事。我做过开发,做过测试,做过一线的技术支持,经历还是比较丰富的。
 
 
5我的创业趣事

如果说是我创业,我又做出一个和别人一样的公司,那我何必呢?如果我做了一个阿里巴巴,我做一个亚马逊,我做一个谷歌,我直接加入他们得了。

我欣赏的公司就是团队小,分布式,抓重点,做最重要的事情,不要太多。我甚至一度把公司取名叫十六进制,后来不能注册,我想我的工号就是 0 到 F,再也没有了。现在估计可能不行,0 到 F 这工号不行,可能得到 32 了。我希望能够做一个小团队,能做大产出的公司,为什么?条件受限你才会去关注你要重点你要做的是什么东西。条件受限才会逼着你要去和别人合作。条件受限才会逼着你去自动化,所有的创新都跟自动化有关系。

你想想从第一次工业革命,蒸汽机时代。第二次工业革命电力时代,内燃机时代。第三次工业革命,信息化时代,全部都是在自动化,自动化一切可以自动化的东西,所以你只有条件受限你才会去想自动化,你要人多了,你就不会想自动化了,你一定会想着,赶快找人去干,这些人都闲着呢,我天天在付他们工资,赶快给他们找点活干。但是我现在不行,我人没那么多,别人来找我说,我就那么点人,你给我说什么最重要?我干不了那么多。然后逼着自己还要做自动化,就这样。基本上,扑克牌当工号应该够了,这个挺好。
大概这是我想创业的一个目标,就是失败了也不后悔的事。
 
 
6天赋重要还是努力重要?

我觉得都重要,天赋当然更重要,但是你不需要,拼天赋的人是世界上少数的人拼的,举个例子,比如说是中国有一百万的程序员,如果要到拼天赋的,可能也就是那一百个人在那拼天赋了。
 
但是其实还有,除了那一百个人以外还有很多了,你要突破一千,肯定是拼努力的,就可以进去了,有的人天赋强一点直接就进去了,天赋差一点努力也进去。对于更多的人来说,应该是拼努力,但是我想说的更多的不是拼努力,努力我听起来有点像蛮力,有 很多人会把努力理解成蛮力,这是一件很不好的事情。好像是我付出了时间,我付出了辛苦,我就能够收获一样。错,努力是一种方法,你要努力找到那种方法,而不是在那使蛮力,方法比什么都重要。所以你要努力改变自己克服自己的一些不良的一些习惯,比如说偷懒、不专心以及那些逆人性的一些东西。

学习就是逆人性的事,有些东西就是很枯燥,你就得啃,聪明点的人,啃个一两天,笨点的人需要啃个一两年,只要你啃,总有一天能啃的过去了,我觉得就是努力不要使蛮力。

   

作者:陈皓
来源: InfoQ


评论