左耳朵耗子:软件开发这些年,我学会的道理和教训

landesk landesk     2022-12-23     323

关键词:

猫宁!!!

参考:https://mp.weixin.qq.com/s/-Gus3fGHXcRBvuKjrwQStA

 

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 面前表扬你,老露脸了,这是做一线支持事。我做过开发,做过测试,做过一线的技术支持,经历还是比较丰富的。

 

左耳朵耗子履历(代码片段)

个人简历陈皓,coolshell.cn博客博主。14年以上软件开发相关工作经验,8年以上项目和团队管理经验。擅长底层技术架构,软件工程。对高性能,高可用,分布式,高并发,大规模数据处理系统有一定研究。技术擅长C/C++/Java和Unix/... 查看详情

左耳朵耗子:云原生时代的开发者应具备这5大能力(代码片段)

...和金融架构从业经验,MegaEase创始人陈皓(网名左耳朵耗子)为云原生专题撰文!作者|左耳朵耗子(陈皓)责编|张红月出品|《新程序员》编辑部虚拟化技术的成熟和分布式框架的普及,使应用上云不... 查看详情

左耳朵耗子关于技术变现一文读后感

核心论点我完全没有必要通过打工听人安排而活着,而是反过来通过在公司工作提高自己的技能,让自己可以更为独立和只有地生活如何技术变现保持学习,掌握大多数人不能掌握的技能,先让周围的人有求于我关注有价值的东... 查看详情

左耳朵耗子:云原生时代的开发者应具备的5大能力

【CSDN编者按】十年前,Netscape创始人、硅谷著名投资人马克·安德森(MarcAndreessen)预言“软件正在吞噬世界”;数年后,软件里90%以上的代码都是开源代码,“开源正在吞噬软件”;如今,“云原... 查看详情

左耳朵耗子:云原生时代的开发者应具备这5大能力(代码片段)

【CSDN编者按】十年前,Netscape创始人、硅谷著名投资人马克·安德森(MarcAndreessen)预言“软件正在吞噬世界”;数年后,软件里90%以上的代码都是开源代码,“开源正在吞噬软件”;如今,“云原... 查看详情

耗子叔也曾是我榜样!

...就是其中之一。对了,耗子叔就是陈皓,网名左耳朵耗子,我习惯称呼他为耗子叔,他是个有着20年以上的研发与管理经验的资深技术专家。曾经在阿里、亚马逊等公司任职,精通架构,在程序员个人成长... 查看详情

前端入行三年--教会了我这些道理

 daveli1.前言光阴似箭,日月如梭。不得不感慨时间过得很快,2017已经结束了,一下子我从事前端开发的时间已经三年了。这三年可以说是一波三折,回想这两年的经历,让我忍不住了写下了这篇文章,记录自己在这三年经历... 查看详情

左耳朵耗子:我看chatgpt,为啥谷歌掉了千亿美金(代码片段)

...icles/22398.html,可点击文末阅读原文直达!作者|左耳朵耗子    责编|梦依丹两个月前,我试着想用ChatGPT 帮我写篇文章《eBPF介绍》,结果错误百出,导致我又要从头改一遍,从那天我觉得ChatGPT生成的内... 查看详情

神兽大厅源码搭建前端入行两年--教会了我这些道理

1.前言光阴似箭,日月如梭。不得不感慨时间过得很快,2017差不多结束了,一下子我从事前端开发的时间已经两年了。神兽大厅源码搭建(h5.hxforum.com)扣扣2952777280这两年可以说是一波三折,回想这两年的经历,让我忍不住了写下... 查看详情

程序员如何用技术变现?

...去生活的。但道理我都懂,怎么做才是关键。本文摘自左耳朵耗子。正文 1写在前面  程序员用自己的技术变现,其实是一件天经地义的事儿。写程序是一门“手艺活儿”,那么作为手艺人,程序员当然可以做到靠自... 查看详情

人生路上对我影响最大的老师

...和我讲很多道理,我当时很反感,但又不敢反驳。我就左耳朵进右耳朵出了。经过这次教训,我慢慢收敛自己的脾气(因为我不想去被罗老师说教),直到慢慢懂事的年纪,才知道那是罗老师是为了我好。第二位是我的初中班主任... 查看详情

如何应对“保姆式”软件开发

...文,作为一名测试行业从业者,对文中提到的“保姆式”软件开发感受颇深。从国内测试行业的发展来说,测试也需要用“云服务”的思路去做,一方面尽可能的提供测试工具和测试平台,帮助开发自测提高质量;另一方面提供... 查看详情

技术人员的发展之路(转载)

 转载自:陈皓(左耳朵耗子) http://coolshell.cn/articles/17583.html 酷壳–CoolShell  2012年的时候写过一篇叫《程序算法与人生选择》的文章,我用算法来类比如何做选择,说白了就是怎么去计算,但是并没有讲程序员可以发... 查看详情

技术人员的信仰

昨天左耳朵耗子来公司分享电商平台的架构,虽然基本没有涉及到技术细节,但一些思想还是收获良多。1. 团队和个人要建立起自己的信条刚好遇到一个难题,前不久接手了公司其它团队的一个项目,架构相当糟糕。接手后... 查看详情

我这些年对游戏外挂辅助开发的一些心得和体会

...说明一切吧。 好了,费话有点多,我今天要说的就是这些年我对于开发游戏外挂,游戏辅助的那么一点点心得和体会,高手请绕道,以下内容是给那些想学开发游戏外挂新手们的。写的不好不要拍砖,以后我会写的更好。&nb... 查看详情

《构建执法》阅读笔记之五

MSF简史微软公司中关于软件开发的思想和宣言有一个方法论——微软解决方案框架(MicrosoftSolutionFramework,MSF),也就是微软推荐的软件开发方法大约在1993年,微软在总结了自己产品团队的开发经验和教训,以及微软咨询服务部... 查看详情

代码审查的10个经验教训

...聚力的代码库。作为团队的首席开发人员,我是负责进行这些审查的主要人员。以前从未这样做过,我有很多东西要学习如何使这些评论有效。以下是我在过去几个月进行代码审查的经验中学到的#10技巧和经验教训。​1.总是从... 查看详情

2021年教会我的10个道理

...一项新技能。默默积累,总有一天会由量变到质变。这些事会给你带来想象不到的幸福感,甚至会悄无声息改变你的命运。4主动学习,是我们生存的必备技能。上学时,有学校安排我们学习,工作之后,... 查看详情