guanhui07/blog

左耳朵耗子的话

Opened this issue · 0 comments

一直关注技术圈 都知道左耳朵耗子 ,推特 也有关注大佬
RIP

转载 自 https://mp.weixin.qq.com/s/bOnW8gDJ-dXp4KbAjhDw9A

技术
低代码会不会颠覆外包公司?这是一个很有意思的话题。过去一段时间,云计算,更多是对企业运维侧工作的变革。特别是 IaaS 和 PaaS,它做的都是技术侧的事情,比如怎么管理计算资源,怎么做好监控。
我相信,未来云计算肯定是要慢慢向业务渗透的,因为有一部分业务是可以标准化的。从这个角度看,外包公司可能会被颠覆。很多中小公司并不一定需要一个特别复杂、定制化的产品,它们的需求是可以快速使用。
而快速使用、开箱即用类的产品,有两类。第一,SaaS。像项目管理软件、聊天软件、销售软件这类的产品,企业没有特别多的定制化需求,标准化的产品就够用了。第二,低代码。通过低代码,企业可以搞定一些简单的定制化类的需求。
很多外包公司我觉得还是缺少思考。一个人,一家公司,如果不思考的话,那颠覆你的往往不是不是这些云计算、低代码这些技术,而是什么都有可能颠覆你。因为你只是在按部就班地做事,别人让你做啥你就做啥,你没有去想更多。
客户说我要一匹更快的马,你就去训马了,而不是想着做个汽车。这是外包公司最大的问题,他们没有任何的话语权,客户让他干啥他就干啥。而绝大多数客户,绝大多数时候是不知道自己想要什么的。
低代码肯定会替代一部分简单的 CRUD 类的工作,但我觉得我们技术人员本应该去干更高级的事情,而不是纠结这些。我想说的是,技术不是用来写 CRUD 的,技术是用来创新的,这一点大家要理解。
如果你只是把业务流程给数字化、代码化,那即使在大公司里,你本质也是做外包。不要觉得在大公司里就不是做外包,我给你讲,你很有可能是在给那些运营做外包。要理解,真正的技术是要拿来做创新的,你要去颠覆点什么,要去创造点什么。
基础知识的意义
我一直强调要学好基础底层技术。两个原因,第一,你得知道原理,知道某个技术它是怎么运作的。不要着急,有的人可能会说今天学了也没什么用,你还是要坚持学,因为你慢慢会发现,很多东西都是相通的。
第二,当遇到一些比较难解的问题时,你学到的这些知识就会派上用场。这些难解的问题会让你跟别人拉开差距,懂基础和不懂基础的人,他们的思考完全是在两个层面。不懂基础知识的人,他就在那瞎搞,这里试一下,那里试一下。运气好,碰巧解决了,但也不知道怎么回事。而懂基础的人,他可以很快理解大概是怎么回事。
我举个例子,Linux 操作系统有时候我们会感觉写硬盘很慢,但我想说,写硬盘其实不慢,因为它有 Page Cache。你写硬盘,其实也是写在操作系统的内存,然后内存在一点点换页换到硬盘上。很多中间件,比如 RocketMQ、Kafka,都会使用到 Page Cache 技术。只要 Page Cache 玩得好,那系统性能也会不错。
还有像 TCP 原理。有些时候网络连接会闪断。从 a 节点到 b 节点,中间经过了很多设备,你怎么排查故障?如果你懂原理,那就会容易些。第一,你先看看 TCP 的状态,如果是 time wait 的话,那就是我主动断开连接;如果是 close wait 的话,那就是对方主动断开连接。你看状态就能有一个基本的判断。
第二,如果没有看到连接建立的话,你需要使用抓包的方式,像什么 tcpdump、wireshark 之类,用这些工具,就能很快定位问题。如果你不懂基础知识,那你很可能就不知道怎么使用这些工具。而没有这些工具,解决那些问题,你估计就得使用蛮力了。
如何选择技术?
每次直播的时候都有人来问我一个问题:我该不该从 .NET 转 Java、该不该从 Java 转 Go。我不直接回答这个问题。
我不知道这个问题背后的思维方式是啥,就是 .NET 怎么样?或者说 .NET 转 Go 怎么样?我不知道你为什么想问这个问题,你想从我这边得到什么样的答案?想转就转呗。是不是你需要有个人帮你坚定想法,还是需要有人告诉你一个答案,你才去做这个事情?我觉得你不要把人生的一些决定寄托在我身上,你自己的决定最好自己做。
但是,我跟大家说一下,我之所以能够做成今天这个样子,就是我随时都在追逐一些我觉得是主流的技术,它是未来技术。就像我在阿里追 Docker,惹了 3 个团队。但是我一点都不后悔,为什么呢?因为我今天的很多想法都是因为我去用了这个技术我才会有。
包括我学 Java 也是一样,我始终都觉得我必须要靠上主流。说得俗一点,就是你必须要去风口,这个风口猪都会飞。但是,要看那个风口是不是个短暂的风口,千万不要去找短暂的风口,你要去找长风口,风可以吹一辈子的。
因为你是猪,你是没翅膀的,你必须要一直有风吹着你才能飞;否则的话,你飞不起来,因为你没翅膀。你不是鸟,没风都能飞,绝大多数人跟我一样都是猪。
所以你需要站在一个天天都有风吹的地方,比如说你选对了计算机专业,这就是一个风不停地吹的地方。过去也好,今天也好,未来也好,整个世界都是被一堆程序员驱动,就是这些写代码的人在改变着未来。
所以今天这个风口是没啥问题的,那问题就是你有没有站在这个风口里面的主流的技术上。
比如说,我觉得主流技术就是 Java,你又没去学 Java。你看那么多公司,有多少公司在用这个技术?这个技术可以干什么?我用了它我就不会失业,对吧?Go 语言也上来了,你是不是也要去看一下?满世界都是 Linux,你怎么可能不学呢?所以就这个意思。
现在都是手机,都是移动互联网,所以你也得要去了解一下。包括云原生很火,大数据也很火,这些都需要我们去看一下。
但是像区块链这些东西,你就扪心自问一下,区块链是不是所有公司都在用?没有用就让那些猪在天上再飞一会,指不定哪天风停了呢。但是,今天那些很强劲的风已经刮了十多年、二十年了,你为啥不去呢?
那些只刮了一两天的风,你要小心,因为你没翅膀,飞上去以后,风停了你就会摔得很惨。那些刮了十几二十年的风,你还没站上去,要赶快站上去。
如何完成早期的技术积累?
很多人觉得我已经完成了自己的技术积累,已经开始探索马斯洛需求层次理论上层的事情了。是这样子。
很多人知道我的时候,我已经有点名气,我已经去了阿里、亚马逊,反正稍微有点成就。所以你并不知道我刚开始出来是去了工商银行,他们给我分了套房子。我父母是下岗工人,每个月两个人加起来就 200 块钱工资,我是 600 块钱,我们一家三口 800 块钱。
但当时,我不要了,全部都不要了,我要出去到上海做外包。
到上海的时候我拿 1500 块钱的工资,租房 900 块钱,然后一顿饭要吃 15 块钱,你们算一算,一天的生活费我只够吃一顿饭,而且我还得自己做饭。公司说出差一天有 30 块钱的出差补贴,而且出差还管饭,所以我必须得出差。一出差,我的收入就好很多。
那时,我无时无刻都在想着,我要去更好的地方。那时候我们封闭开发,周一到周六全部待在开发中心,家都回不去。即便这样我也要去学习,周日我也要出去面试,去改变自己。因为那种没有技术含量的事情,我知道再做 100 次,也依旧没有任何未来。
老实说,我跟那些外包公司极度不和,我跟老板吵架,我甚至跟甲方的行长吵架你们相信。因为我把事情做完了以后就在那看书,那个行长过来说,大家都在这外包,你为什么要在这看书?我说我看的又不是闲书,我看的是技术书籍,你凭什么不准看?你安排活给我做就好了,你管我看不看书?我就跟他吵架。
后来我选择职业或者工作的时候,我宁可被公司开掉,也要去做有价值的东西,我从一开始的初衷就是这样子。并不是说今天功成名就了,我才这样选;而是我一直都在这么选,所以我才会有今天的成就,大家要理清楚这里面的因果关系。你不这么选,你永远不可能成为这个样子,明白吧?
现在我做公司也类似,有些项目我不接就不接了,我要接项目的话,也可以把自己做成一个外包公司,一年也有几个亿,但是有什么意义呢?我设想是十几个亿的事情。
刚才有人跟我说我做的事情太大了,有点不可能。这就对了,因为绝大多数人都不敢想,他们想一想就觉得这事不可能,就离开了,所以我没有太多的竞争对手,明白吗?因为绝大多数人都不敢想,他们一想他们觉得我做不到,就傻掉了,他们自己就给自己思维框架里面就设了一座墙,因为连尝试他都不敢尝试。
至少我敢尝试,失败了又能怎么样呢?反正我不会后悔。我未来老了以后,四五十岁看我这段时间我至少试过失败、至少试了一个牛逼的事情。
那你们呢,自己的人生你连试都不敢试,想都不敢想。人,最可怕的是不敢想。不好意思,讲得稍微有点激动。
成长
996 没有成长怎么办?
“毕业两年,现在公司里头都是 996,日常的业务需求做不完,感觉自己在这个公司没有什么成长,学习也没有多少时间,是不是应该考虑换工作了。”
对于这个问题,我想问,大家想过没有,你找工作的目的是啥?
任何事情我们都得回到目的上,如果找工作的目的是为了找碗饭吃,不让自己饿死的话,那 996 这些我觉得都顺其自然就好,因为这是让你不饿死的一条路。
如果你找工作的目的是为了实现自我价值,那假使现在的公司不能帮你达到这样的目标,你就应该勇敢寻找能够帮你达到目标的公司。比如,我以前是在银行里,从甲方跑出来,房子都不要了,我就是为了实现自我价值,所以我选择公司的标准就是这个公司可不可以帮助我实现自我价值。
这是互相成就的一个事,我跟我的团队的员工也是这样说的:你成就我,我成就你,这是双向的事情。
所以我觉得换不换工作问题在于,你得问一问自己,你想要什么?如果你想要的是提升自我,那就应该去找能够成就你的公司。那些公司也会问你,你能成就我啥?这就是一个相互交换的过程。当我们不断去索取的时候,我们也需要给予。
我贡献价值,反过来,我希望公司也能给我价值。这是互相交换。大家都是在签合同,是雇佣关系,而不是什么劳动关系,不是说是我为你工作,我就是你的人,不是卖身关系,这是个相互合作的关系。所以,如果不能达到目的,我建议你不要去,公司也需要很好的人。好的机会从来都是给好的人,不会给不好的人。
大公司和小公司的权衡
其实无论大公司也好,小公司也罢,只要你用心观察都能学到东西,但你不用心什么都学不到。
大公司最大的问题就是一个萝卜一个坑,你就只能干你那一小个环节,你就是他的零件。所以很多人觉得大公司里面学不到东西,反而在小公司里可以做一个面的事情,能学得更多。其实不是。到大公司里面,我觉得有三个东西是可以学得到的。
第一,组织管理。大公司组织的运作方式、体系化的管理方式,怎么调动那么多人来完成一个事;或者一些思维方式,为什么他要做这个而不是做那个。这是大公司跟小公司不一样的地方,因为大公司有资源,可以去试错,试过很多很多错误。每一个东西都是可以让你思考。第二,怎么挣钱,大公司怎么挣钱的。
第三,大公司里面的一些高手是怎么工作的。因为大公司里我觉得应该是有这个世界上最好的人。比如这个世界上最好的运营、最好的产品经理、最好技术人员,都在阿里、亚马逊、谷歌这样的一些公司。所以你进去要去找大公司里面那些聪明的人,跟他学,就像你打羽毛球下象棋一样,你必须要找高手学。就这三个东西,在大公司里面我觉得是最有价值的。
那亚马逊和阿里我学到什么东西?
在亚马逊,我学到的是他组织整个公司是以微服务架构以工程师文化来分工的,不再以技能分工,是以职责分工,也就是说我让你完成一个事,你得从前端一直干到数据库,干到运维等等,任何一个环节都不算完,必须全部从头到尾干完。
所以亚马逊拆分组织是竖着切的。比如说这是购物车,这是下单,这是发短信,这是地址,然后有一个团队负责所有事情,这个团队是 two-pizza team,两张披萨可以喂饱,也就是 10 个人左右。所以,亚马逊是小团队可以干大事。这是我学到的,相当厉害。因为以前什么瀑布模型、敏捷,我都觉得有很多问题,直到我看到亚马逊的这种组织方式。
然后怎么挣钱?亚马逊是用技术挣钱,所以你看他做了世界上第一个推荐系统,也做了世界上第一个云计算平台。
他是这么想的:首先一件事情,你必须把它抽象化,因为抽象化之后才可以简化,简化后才可以标准化,标准化的事情才能自动化,自动化的事情才能规模化。
简化—>标准化—>自动化这条线,全部都是技术在干的事,第一次工业革命、第二次工业革命是一样的,只有技术做到了,你才最终可能规模化,之后才有飞轮模型。这是亚马逊的理念。
那在阿里我学到了什么?
第一,怎么组织整个企业。我觉得阿里用一种政委文化。我虽然不太认可,但是这也是一种组织方式。另外是一种激情、热情,我觉得阿里巴巴的员工就像打了鸡血似的,可以为公司拼命地加班。当时双十一的技术支持团队,因为要做连续做 48 个小时,我说你们分成两个团队,一个做第一天,另一个做第二天,看行不行?然后他们说不,我们可以干 48 小时不睡觉,大概是这样。
而且我经常在阿里看到员工说我这事做不好了,我就去跳西湖,或者说有军令状对赌的方式,员工跟公司立军令状说我今年我要做 300 亿,如果做不到,我全年白干,奖金升职都不要给我,但是我要是做上去了,每一分钱我都要参与,我要分给我的团队。
我觉得,阿里让我看到了跟其他公司完全不一样的文化,他们太有热情了,非常非常有热情,比起外企那种闲着整天想着怎么早下班,是两种不同的文化。这是阿里的组织,我到今天我都在想怎么样把人的这种热情给激励出来。
然后怎么挣钱的?电商,其实核心是想着怎么样让你更快地做决定,因为你做决定的时间越短,我流量的转化率就会越高,对吧,这跟我们做技术一样的,响应时间越短,你的吞吐量就会越大。所以我在买一件东西的时候,做决定的时间越短,转化率就会越高。
阿里挣钱其实跟亚马逊有点类似,但是他们走的不是同一条路。
亚马逊走的路叫简单标准化,我为了要让用户更快地做决定,我要把最好的商品呈现在他面前,或者展示出能够影响用户做决定的那些最关键的因素,比如好评率,所以会有一些 rank。
但国内不是。国内要让用户更快做决定,其实要让用户疯狂。国外是认为让用户在理智的情况下,会更快地做决定,国内是觉得用户越不理智,会越快做决定,这是两种不同挣钱方式。
所以我觉得这些东西都只能在大公司里面学,小公司完全不开窍。那如果你一直在小公司去不了大公司,怎么能快速成长?
其实也能成长,关键是你有没有跟那些聪明人在一块。因为并不是所有聪明人都会在大公司里,越是聪明的人,可能越不喜欢待在大公司。因为他待在大公司收益其实很小,他必须得没有约束,不需要去搞什么办公室政治。
所以你的朋友圈会比公司更重要。你到大公司,也是要看你的朋友圈,这是一个非常非常重要的观点,你跟什么样的人在一起,决定了你怎么样成长;你跟什么样的人在一起,你就会被影响成什么样的人。所以有的小公司也不一定不能成长,关键是你有没有跟对人?他的格局够不够?
我们公司就非常注重员工成长,每周都要让他们去做分享,我会留出大量的时间让大家去学习,甚至要去写东西。因为我觉得写作是一种深度思考,在写作的过程中,你才会认真地去想、去总结、去归纳你所学到的知识。
没有时间怎么办?
这个事情我是这样想的,你得管理时间。有时候向下管理,有时候向上管理。
向下管理就是管理自己的时间。
我们现在有点不好,有手机随时都会来通知,一会就被打断。如果你的时间总是被打断的话,利用效率是不高的,所以不要被打断。你说我们公司里面还有什么钉钉群这些东西,就很可怕的事,反正管理好自己时间。一般来说我喜欢专注做事情,在阿里有些时候我也害怕被打断,我就跑到别的办公区里工作,把手机直接静音,然后一个小时以后再出来回复一波。
然后第二个,向上管理。
比如说是这个事情本来就是得一个星期才能做完的,他就要让你两三天做完,你要自己接了,就不要怪别人。该跟他斗争的还是要斗争,但是斗争是要有资本的。没资本的话,就比较麻烦。
对于类似的事情,我的思路是我可以辛苦,我可以加班,我肯定会努力做。欲先取之,必先予之。等到领导对你、公司对你有比较大的依赖的时候,你就可以跟他谈任意的条件,因为他很害怕你跑了。这就是资本。
但沟通的时候,也不要太直。我在外企里面学到的一个方法叫 Never Say No。他说和用户沟通的时候,你永远不要说不,这事我做不到。你要说 Yes,但永远是有条件的 Yes。比如这种情况下我能做到,那种情况下我做不到。你给我更多的时间,我能做得到,你给我那么短的时间我做不到。或者说在那么短的时间内我只能交付你半成品,你要不要?
就是我永远都可以给你做出来东西,但是总是有代价的,总是有条件的。为什么要这样呢?别人把球传给你,问你能不能做?我们技术人员比较实在,好像只能回答“能做”还是“不能做”,那你就被 PUA 了,知道吧?你知道你被 PUA 是什么概念?被 PUA 就说是你进入了别人的环境里面,它营造了一个空间,把你扔进来,按照他的逻辑,就问你,给你一个答案,你能干还是不能干?那无论你的答案是能还是不能,你都是被 PUA 的。
你要反 PUA 的话,必须得把他拉到我们喜欢的角度来,把这个压力推回去,给他一系列的条件:
Option 1 :我可以再按时完成,但是质量别想。
Option 2 :你给我足够的时间,我保质保量全部交付。
Option 3 :我还是按你这个时间,但是你必须砍掉一些需求。
三个 Option 传回去,就反转了,因为这个逻辑是你的。他这时候就要痛苦地做选择了。到底选 1、2 还是 3?因为每个选择他都要付出一些东西,那就让他去选,不要剥夺他的选择权,不要硬杠,你把选择权传给他,表面上你是在很好的交流,实际上你在 PUA 他。
我给大家再举一个例子,当时从阿里出来的时候,因为工作居住证的一些问题,所以我需要阿里给我赔偿,但当时他们就很可怕地说:你是不是要敲诈我?律师团队这么说。我一想我敲诈多大的罪啊?要把我抓到监狱里!因为我要求的那个数是比他要赔偿我的更多一些,所以我说:
第一个我不要钱,一分钱不要。既然你也认这个事的话,你给我写个道歉信,盖上阿里巴巴的公章就好。
第二个是按你说的赔偿,你不用给我道歉,你告诉我这个钱的事由是什么样子,然后盖上盖公章,不然你说我诈骗,我可不敢要了这个钱。也就是说你给我赔偿这个钱,必须说明这个钱是用来干什么的,然后盖上你的公章,不然我以后说不清楚。
第三个是这些都不需要,然后我们就签个协议,按照我的要求给我。他们自己肯定不愿意出具我可以拿出去说的这么一个证明嘛,对吧?
也就是说要反向 PUA,选项给对方,选项永远都说可以干的,但是你要有条件。小胡同赶猪,我给你了 5 条路选,但是你肯定不会选那 4 条路,你只会选这条路,因为那 4 条路他自己就去盘算了,就这样子反向 PUA 就是反过来给他更多的选项。
好,这些都是这些我教大家的,不单单是管理时间了,哈哈哈。
怎么才能学得快?
我之前说我学 Go 语言大概一两周时间就能够学会。但很多同学说自己已经是 Java 程序员,要学 Go 语言可能用半年时间都搞不定。
我跟大家讲一个故事。我以前刚去上海的时候买不了书,只能在书店里面看书。我就把书店当成一个图书馆,看完后我会做笔记。我希望大家都有一种写作或者做笔记的习惯。
以学编程语言为例。你学一门编程语言,总是要把它抽象成一棵知识树。
因为刚开始你学各种各样的语言,会发现,这个语言也有这几块东西,那个语言也有那几块东西。比如说,一个语言,它必然会有变量、分支,还有循环,这是它最基本的逻辑结构,所有语言都应该有的。然后更高级一点的特性,它也有一些数据结构,还有数组、字符串,再高级点比如泛型,还有面向对象的多态,还有一些类库等等,这些都必须得要有。没有这些东西的话,这个语言是挺难用。
所以我学一个新的语言,我就会把这个语言照着我的框架来套。这个语言有哪些分支逻辑、哪些声明变量,多线程是怎么玩的、面向对象多态怎么玩的等等。我就照着套,半天或一两天就套完了。这个语言也就学会了。
所以,首先你有一个大的语言框架,新语言跑不出这个框架范围,然后你把语言特性往框架里面套就好了。你学得多了,你未来就会越学越快的,因为你会自己总结。这就是学习的一个过程,当你有了一个系统的知识树以后,然后你去填充这个树,把它全部填满了,你自然就学会了。
但是,我学 Rust 语言就没那么快,虽然 Rust 我也在套,但套完以后,准备上手写点东西的时候,就发现挺复杂。
我讲一下我学 Rust 遇到的问题。首先,Rust 有所有权、生命周期、借用(借用就是引用)、共享各种各种乱七八糟的概念。
我写代码,要共享内存。但是 Rust 不支持共享,一个变量赋值给另外一个变量,所有权就转移了。但是我偏要实现共享,然而共享就要用引用,引用就要玩生命周期,我就去写 Lifetime ,写 Lifetime 又要写多线程。多线程里面必须得用闭包,我就要在闭包里面玩共享变量,闭包里面我就要用 Lifetime……完蛋了。
这个代码,我调了 3 天都没调通,编译我都编译不出来。我到 Stack Overflow 上问了这个问题,两天以后有人告诉我答案了。我看那个语法,哎呀,我都崩溃了,我是绝对不可能自己想得出来的。所以我想说为什么 Rust 门槛有点高,当我想去干一件事情的时候,我却发现我干不出来。所以我觉得它不是很成熟,学习门槛太高。
学了就忘怎么办?
很多同学说自己学了就忘,这种情况下,要不要继续坚持。
我觉得你学了就忘,是因为你在用记忆去学,而不是基于问题去学。任何一个技术,都是在解决一个实际的问题。你一定要明白,你学这个技术,它到底解决什么样的问题,它是为什么而生的。当你明白了这个“为什么”以后,你才能够记住那些原理。
“为什么”是件很重要的事情。大家可以看我的 CoolShell 上的一篇博客《如何做一个有质量的技术分享》,你必须要告诉用户为什么,到底要解决什么样的问题。
Why 这种学习方式,我们叫理性学习;What 这种学习方式,我们叫感性学习。任何事情都是先从感性从是什么开始,因为一开始你也问不出那么多 Why。比如数学是 10 进制,不是 2 进制,不是 8 进制,也不是 16 进制,那为什么一开始就设计成 10 进制,但是时间又是 12 进制?这些东西,你不知道 What 是问不出来的,但你一旦问出这个 Why,没人告诉你,你的老师可能都不知道。
你的学习一定是从感性到理性的,所以一开始你大概知道有那么一回事,慢慢地看的东西多了,顺理成章你就会想去了解一下为什么。比如说我学 Windows、Unix、 Linux 这三个系统,里面有很多东西是相似的,有些东西又不太一样的,学多了以后自然会问为什么 C 和 C++ 全都是玩指针, Java 里面为啥没有指针?
如果只学单一的东西,你不会有那么多疑问。你看多了,学多了,开始比较,自然会有疑问,有了疑问就会想去探究背后的 Why。
还有就是你遇到一些实际的问题,在解决这些实际问题的时候,也会去真正地理解这个技术。总之,带着问题去学。
对我影响比较大的书
技术书,对我影响比较大的是《Effective C++》,这本书让我感受到了作者 Scott Meyers 的严谨精神。他不是把一个技术设计出来就好了,他会想这个事有各种各样的副作用,然后这些副作用怎么不断地求解,这种求真精神让我很受震撼。所以为什么 《Effective C++》是一本全球畅销书。很多后来的书,比如 《Effective Java》、 《Effective GO》都在模仿它。
书中有一句话,其实我记了一辈子,他说:“美丽的东西都是肤浅的。”意思就是你看得见那些美好的东西都是表面上的,所以他就是肤浅。你把它剥开了以后,那些东西才是比较深刻的东西,所以千万不要被美所迷惑。哈哈,这也是我教育我们家孩子的,但是我不知道什么时候才能感受到这个东西。
第二本书是让我感觉写代码有一下子能够提高的《Code Complete》。这本书可能有点过时,微软的书,但是内容非常好。装在书包里面还挺重的,可以防身,你遇到有人要抢你,先拿这本书先,就是随身带着一块板砖,可以拿着来打人的。
这本书讲了怎么样把一个代码写好的各种各样的方向,以前从来没有人跟我讲过这些东西,没有训练,所以这是一本让我觉得很爽的一个东西。和这个书更相似的是像《设计模式》这样的书,比如《Beautiful Code》,就是教你怎么写代码,怎么组织代码,《重构》也是。
还有另外一本书,对我影响比较大:《Rework》。它不是技术书籍,但是我被它里面所有的想法,严重洗脑了。
里面讲“条件受限是个好事”,因为条件受限可以倒逼你抓重点,倒逼你做自动化,倒逼你简化。我突然就想起我以前买不起书,那个条件受限的时候就必须要用更聪明的方式去学习,因为你买不起书,所以你必须要画知识图,全部都是在条件受限。要是我条件不受限,可能我就不会这么样,我就会去买书,最后书堆着都没法看。
还有一个观点,就是挠自己的痒处,自己觉得不爽了自己要去改变它。所以我觉得这个世界上很多能创业的人,或者说是能改变世界的人,一定是不能忍的人。各位,如果你今天什么事都能忍,你想一想还是忍了,我不去抗争了,你一定不会成为这个世界的厉害的人,你一定没有什么利益的噱头。
这个世界是属于那些不能忍的人的,因为你不能忍了你才会想去改变它。知道吗?各位。从你身边的一点点小事开始,你觉得不能忍了,不能抱怨了,你决定行动起来,改变点什么,这时候,你就会琢磨怎么才能更好。所有的东西都是从不能忍开始的。
如果你什么都能忍,那对不起你一定是韭菜。我看过的很多好的产品经理,他们都是不能忍,都是各种不能忍。所以他们就可以做得很好。不能忍的人一般标准很高,就是这样子。

35 岁危机

我在一些群里,40 岁程序员的群,然后还有些 35 岁以上程序员的群。我觉得那些群我连一天都不想看,太无聊了,里面就是各种八卦,我不知道为什么这些中年人天天都喜欢聊八卦,今天看见这个社会热点又怎么样,那个热点又怎么样。
我觉得是这样的,不要觉得 35 岁、40 岁会是一个坎。我今天也在写代码,有句话是这么说的:“人不是因为变老了才没有热情,而是因为没有热情才会变老。”
有的人说我老了,我学不动了。不是的,因为你学不动,你才变老了;不是你老了,你才学不动。这个世界上有大量这样本末倒置的因果关系的逻辑,如果你学得动,或者你还对这个事情充满憧憬,有想法,愿意去奋斗的话,70 岁你都不老。
像我今天这个样子,我也不觉得我老。我觉得很多年轻人可能还不如我,他们在 20 多岁、30 多岁,可能就已经放弃了自己的人生,我今天还没有放弃。所以, 35 也好, 40 也好,不用去想这个数字的事。

左耳朵耗子的话
https://mp.weixin.qq.com/s/bOnW8gDJ-dXp4KbAjhDw9A