科研
言论
- 人生就是一个”长板问题”。 一生中,失败和挫折其实不重要,多少次都不重要,只要有一次大的成功,人生就成功了。最大的那一次成功,决定了你一生的成就和高度。很多诺贝尔奖得主,一生就做出了一个重要的科学发现,就足够成为伟大科学家了。程序员写过多少代码不重要,只要创造过一个重大影响力的软件,职业生涯就成功了。我们必须学会区分”短板问题”和”长板问题”,它们的解决方法完全不同。 短板问题的解决,需要盯着薄弱环节,补齐最短的那块板;长板问题的解决,只需要推进最强的环节,不要在乎别的。人生不必在乎那些不重要的事情,没必要为了挫折和拒绝而沮丧,都会过去的。你要做的是向前看,拼命争取一次大的成功,让它足够大、更大,只要一次就够了。 – Frank
- 有一句软件开发的名言:”过早优化是万恶之源”。就好像你真正开始某项爱好之前,就开始花费大量时间和金钱,为这个爱好挑选最好的装备。
- 小团体比单独交往,更容易建立友谊,也更持久。因为小团体经常有定期活动,容易产生更多的接触机会。因此,如果你想交朋友,加入一些小团体吧。 – You’re not uncool. Making friends as an adult is just hard
- 为什么 AI 最终将取代人类工作?因为当你是生产链条中最慢的那个部分时,取代你将提高整个链条的生产力。 – 为什么 AI 最终将取代人类工作?因为当你是生产链条中最慢的那个部分时,取代你将提高整个链条的生产力。
- 时间和注意力是不一样的。正确的说法不是”我没有时间”,事实上挤出时间并不难,我无法挤出的是注意力。我每天有8小时用于工作,但真正能够专注的时间可能只有4小时。我不能再把这点时间分出来了。 – The difference between time and attention
- 创业公司有一个准则,叫做”最小可行产品”,意思是产品只要做到最简单的可运行程度,就可以发布,让市场来检验是否可行。我想提一个相反的概念,叫做”最大可行产品”,意思是产品的主要功能完备以后,就到此为止了,不再添加新功能。我见过太多的优秀软件不断膨胀,功能越来越多,直到变得无比难用。 – It’s Time For ‘Maximum Viable Product’
观点
印度程序员ixaxaar点评AI
It looks like my job is safe this year. Time to generate an elaborate software project and claim supremacy on my ChatGPT usage abilities to hedge against next year.
Frank点评:你的工作今年是安全的。如果你努力的话,明年也是安全的,而且很可能从此都是安全的。因为如果一直不断学习 AI,你会越来越熟练地掌握它,让它为你工作,达到你的目的。也就是说,它会放大你的生产力。这就是最关键的地方,AI 与人类不是竞争关系,它未必会减少机会,反而可能带来更多的机会。
英国企业家Adam点评AI:New Layer of Abstraction, Not the End of Software Engineering
- AI 会大大增强程序员的生产力,并创造过去不可能的产品。
- AI 本质是生产力工具,跟高级语言、云服务、开源代码等是一个性质。
- 写代码的门槛会降低,更多的人会进入 IT 行业,软件市场将变大。
- AI 推动行业发展,将为所有人带来更多的增长、产品和机会。
- 我们要成为这个过程的一部分,需要让自己积极主动,不断更新技能,接受新工具。
左耳朵耗子的话:陈皓2021年的讲话
从阿里出来后,我就一个人在家里待着,安心陪父亲。没想到的是,这时候,几乎国内所有的云计算公司都来找我,还有一些创业团队,我就帮他们解决各种各样的技术问题。那段时间,我就感觉技术人的技术能力是被社会认可的,而且大家的付费意愿也很好。
记得当时,一家创业公司找我。他们花钱买流量,但大流量来了后,系统接不住,用户没办法注册,等于投放的钱打了水漂。于是,我帮他们解决这些问题。
他们系统是 PHP 的,我直接在线上帮他重构,没有重构源代码,只是重构架构。然后大概干了两天吧,基本上就可以救火了。我用了一些纯运维的手段,在不改代码的情况下,帮他搞定这种高并发的营销活动。
这一套都搞定之后,他问我要多少钱,我说两天 5000 块钱,你这没啥技术含量。他赶忙说可不是,我必须得给你五万块,因为你帮我们解决了大问题。
就这样,我一边在家里待着陪父亲,一边帮其他公司解决问题。印象中有一个月,我大概一口气服务了七八个公司,挣了 50 万。算了下,那段时间,我的平均月薪是我在阿里、亚马逊三到四倍的样子。
我意识到,可以创业了。很明显,市场对技术是有强烈需求的。因为绝大多数好的技术人员都被大公司垄断了,但中小公司也要发展,他们的发展也需要技术,所以他们需要像我这样的一些技术人员,能够帮助他们解决一些实实在在的技术问题。
有一个观点,数据是没有用的,只有把数据关联起来才有意义。数据关联了以后,才叫信息,我们不是做数据,我们是做信息。信息里面找到因果关系,我们才能有知识,比如说因为这个所以那个,这叫知识;有了知识以后,才能导出公式,我们才能通过公式去完成一些事情。 所有做科学实验都是走这条路的,不断地做实验、拿数据,在数据里面把它标注好,关联起来,然后找信息,从信息里面找因果关系,从因果关系里看看能不能推出一些公式。大概就是这么一个逻辑。
我坚持“条件受限是好事”,让我可以去想一些更重要的东西。比如很多公司可能想怎么样拿投资,现在我在想的是,怎么样能让我们的公司不拿投资,自己成为一个能盈利的公司,能成为一个真正的公司,不是被人包养需要寄养的一个公司。这些是我每天在思考的。 其实大家也可以去思考,这个世界其实并不完美,你会遇到很多很多让你很无助的事情,我也经历过工资发不出来,自己掏钱给团队发工资的时候,我一晚上睡不着觉,也经历过。 但是我想说的就是,所有的路都是可以走的,不用担心。但不是纯靠坚持,关键是你一定要去想方法,想更好的、更优的解,这个事很关键,千万不要使蛮力,没有太大意义。这是我创业学会的第一个道理。方法会比努力更重要,所以我们不加班,如果团队在加班,我觉得我们肯定方法不对。 我创业学会的第二个道理是关注你的重点,不追小兔子。能让你分心的事情太多太多了,你不知道你前面那座城池有多高。因为你从来没见过,一路上都会有很多很多的小兔子来找你。你一看,这个兔子好看,我来追一下,那边又有一只蝴蝶,你就忘了你未来要去哪。 这两个东西我觉得挺重要,这也是我创业这几年来受到最大的两个教训。我觉得跟我们的人生也是很相通的。
很多外包公司我觉得还是缺少思考。一个人,一家公司,如果不思考的话,那颠覆你的往往不是不是这些云计算、低代码这些技术,而是什么都有可能颠覆你。因为你只是在按部就班地做事,别人让你做啥你就做啥,你没有去想更多。客户说我要一匹更快的马,你就去训马了,而不是想着做个汽车。这是外包公司最大的问题,他们没有任何的话语权,客户让他干啥他就干啥。而绝大多数客户,绝大多数时候是不知道自己想要什么的。
不要觉得在大公司里就不是做外包,要理解,真正的技术是要拿来做创新的,你要去颠覆点什么,要去创造点什么。
我一直强调要学好基础底层技术。两个原因,第一,你得知道原理,知道某个技术它是怎么运作的。不要着急,有的人可能会说今天学了也没什么用,你还是要坚持学,因为你慢慢会发现,很多东西都是相通的。 第二,当遇到一些比较难解的问题时,你学到的这些知识就会派上用场。这些难解的问题会让你跟别人拉开差距,懂基础和不懂基础的人,他们的思考完全是在两个层面。不懂基础知识的人,他就在那瞎搞,这里试一下,那里试一下。运气好,碰巧解决了,但也不知道怎么回事。而懂基础的人,他可以很快理解大概是怎么回事。
是不是你需要有个人帮你坚定想法,还是需要有人告诉你一个答案,你才去做这个事情?我觉得你不要把人生的一些决定寄托在我身上,你自己的决定最好自己做。
我跟大家说一下,我之所以能够做成今天这个样子,就是我随时都在追逐一些我觉得是主流的技术,它是未来技术。就像我在阿里追 Docker,惹了 3 个团队。但是我一点都不后悔,为什么呢?因为我今天的很多想法都是因为我去用了这个技术我才会有。 包括我学 Java 也是一样,我始终都觉得我必须要靠上主流。说得俗一点,就是你必须要去风口,这个风口猪都会飞。但是,要看那个风口是不是个短暂的风口,千万不要去找短暂的风口,你要去找长风口,风可以吹一辈子的。 因为你是猪,你是没翅膀的,你必须要一直有风吹着你才能飞;否则的话,你飞不起来,因为你没翅膀。你不是鸟,没风都能飞,绝大多数人跟我一样都是猪。
那些只刮了一两天的风,你要小心,因为你没翅膀,飞上去以后,风停了你就会摔得很惨。
很多人觉得我已经完成了自己的技术积累,已经开始探索马斯洛需求层次理论上层的事情了。是这样子。
很多人知道我的时候,我已经有点名气,我已经去了阿里、亚马逊,反正稍微有点成就。所以你并不知道我刚开始出来是去了工商银行,他们给我分了套房子。我父母是下岗工人,每个月两个人加起来就 200 块钱工资,我是 600 块钱,我们一家三口 800 块钱。
但当时,我不要了,全部都不要了,我要出去到上海做外包。
到上海的时候我拿 1500 块钱的工资,租房 900 块钱,然后一顿饭要吃 15 块钱,你们算一算,一天的生活费我只够吃一顿饭,而且我还得自己做饭。公司说出差一天有 30 块钱的出差补贴,而且出差还管饭,所以我必须得出差。一出差,我的收入就好很多。
那时,我无时无刻都在想着,我要去更好的地方。那时候我们封闭开发,周一到周六全部待在开发中心,家都回不去。即便这样我也要去学习,周日我也要出去面试,去改变自己。因为那种没有技术含量的事情,我知道再做 100 次,也依旧没有任何未来。
我选择职业或者工作的时候,我宁可被公司开掉,也要去做有价值的东西,我从一开始的初衷就是这样子。并不是说今天功成名就了,我才这样选;而是我一直都在这么选,所以我才会有今天的成就,大家要理清楚这里面的因果关系。你不这么选,你永远不可能成为这个样子,明白吧?
现在我做公司也类似,有些项目我不接就不接了,我要接项目的话,也可以把自己做成一个外包公司,一年也有几个亿,但是有什么意义呢?我设想是十几个亿的事情。
刚才有人跟我说我做的事情太大了,有点不可能。这就对了,因为绝大多数人都不敢想,他们想一想就觉得这事不可能,就离开了,所以我没有太多的竞争对手,明白吗?因为绝大多数人都不敢想,他们一想他们觉得我做不到,就傻掉了,他们自己就给自己思维框架里面就设了一座墙,因为连尝试他都不敢尝试。
至少我敢尝试,失败了又能怎么样呢?反正我不会后悔。我未来老了以后,四五十岁看我这段时间我至少试过失败、至少试了一个牛逼的事情。
那你们呢,自己的人生你连试都不敢试,想都不敢想。人,最可怕的是不敢想。不好意思,讲得稍微有点激动。
任何事情我们都得回到目的上,如果找工作的目的是为了找碗饭吃,不让自己饿死的话,那 996 这些我觉得都顺其自然就好,因为这是让你不饿死的一条路。 如果你找工作的目的是为了实现自我价值,那假使现在的公司不能帮你达到这样的目标,你就应该勇敢寻找能够帮你达到目标的公司。比如,我以前是在银行里,从甲方跑出来,房子都不要了,我就是为了实现自我价值,所以我选择公司的标准就是这个公司可不可以帮助我实现自我价值。 这是互相成就的一个事,我跟我的团队的员工也是这样说的:你成就我,我成就你,这是双向的事情。 所以我觉得换不换工作问题在于,你得问一问自己,你想要什么?如果你想要的是提升自我,那就应该去找能够成就你的公司。那些公司也会问你,你能成就我啥?这就是一个相互交换的过程。当我们不断去索取的时候,我们也需要给予。 我贡献价值,反过来,我希望公司也能给我价值。这是互相交换。大家都是在签合同,是雇佣关系,而不是什么劳动关系,不是说是我为你工作,我就是你的人,不是卖身关系,这是个相互合作的关系。所以,如果不能达到目的,我建议你不要去,公司也需要很好的人。好的机会从来都是给好的人,不会给不好的人。
其实无论大公司也好,小公司也罢,只要你用心观察都能学到东西,但你不用心什么都学不到。
大公司最大的问题就是一个萝卜一个坑,你就只能干你那一小个环节,你就是他的零件。所以很多人觉得大公司里面学不到东西,反而在小公司里可以做一个面的事情,能学得更多。其实不是。到大公司里面,我觉得有三个东西是可以学得到的。
第一,组织管理。大公司组织的运作方式、体系化的管理方式,怎么调动那么多人来完成一个事;或者一些思维方式,为什么他要做这个而不是做那个。这是大公司跟小公司不一样的地方,因为大公司有资源,可以去试错,试过很多很多错误。每一个东西都是可以让你思考。第二,怎么挣钱,大公司怎么挣钱的。
第三,大公司里面的一些高手是怎么工作的。因为大公司里我觉得应该是有这个世界上最好的人。比如这个世界上最好的运营、最好的产品经理、最好技术人员,都在阿里、亚马逊、谷歌这样的一些公司。所以你进去要去找大公司里面那些聪明的人,跟他学,就像你打羽毛球下象棋一样,你必须要找高手学。就这三个东西,在大公司里面我觉得是最有价值的。
亚马逊组织整个公司是以微服务架构以工程师文化来分工的,不再以技能分工,是以职责分工,也就是说我让你完成一个事,你得从前端一直干到数据库,干到运维等等,任何一个环节都不算完,必须全部从头到尾干完。
所以亚马逊拆分组织是竖着切的。比如说这是购物车,这是下单,这是发短信,这是地址,然后有一个团队负责所有事情,这个团队是 two-pizza team,两张披萨可以喂饱,也就是 10 个人左右。所以,亚马逊是小团队可以干大事。这是我学到的,相当厉害。因为以前什么瀑布模型、敏捷,我都觉得有很多问题,直到我看到亚马逊的这种组织方式。
亚马逊是用技术挣钱,所以你看他做了世界上第一个推荐系统,也做了世界上第一个云计算平台。 他是这么想的:首先一件事情,你必须把它抽象化,因为抽象化之后才可以简化,简化后才可以标准化,标准化的事情才能自动化,自动化的事情才能规模化。 简化—>标准化—>自动化这条线,全部都是技术在干的事,第一次工业革命、第二次工业革命是一样的,只有技术做到了,你才最终可能规模化,之后才有飞轮模型。这是亚马逊的理念。
其实在小公司也能成长,关键是你有没有跟那些聪明人在一块。因为并不是所有聪明人都会在大公司里,越是聪明的人,可能越不喜欢待在大公司。因为他待在大公司收益其实很小,他必须得没有约束,不需要去搞什么办公室政治。 所以你的朋友圈会比公司更重要。你到大公司,也是要看你的朋友圈,这是一个非常非常重要的观点,你跟什么样的人在一起,决定了你怎么样成长;你跟什么样的人在一起,你就会被影响成什么样的人。所以有的小公司也不一定不能成长,关键是你有没有跟对人?他的格局够不够?
我觉得写作是一种深度思考,在写作的过程中,你才会认真地去想、去总结、去归纳你所学到的知识。 没有时间怎么办? 这个事情我是这样想的,你得管理时间。有时候向下管理,有时候向上管理。 向下管理就是管理自己的时间。 我们现在有点不好,有手机随时都会来通知,一会就被打断。如果你的时间总是被打断的话,利用效率是不高的,所以不要被打断。你说我们公司里面还有什么钉钉群这些东西,就很可怕的事,反正管理好自己时间。一般来说我喜欢专注做事情,在阿里有些时候我也害怕被打断,我就跑到别的办公区里工作,把手机直接静音,然后一个小时以后再出来回复一波。 然后第二个,向上管理。 比如说是这个事情本来就是得一个星期才能做完的,他就要让你两三天做完,你要自己接了,就不要怪别人。该跟他斗争的还是要斗争,但是斗争是要有资本的。没资本的话,就比较麻烦。 对于类似的事情,我的思路是我可以辛苦,我可以加班,我肯定会努力做。欲先取之,必先予之。等到领导对你、公司对你有比较大的依赖的时候,你就可以跟他谈任意的条件,因为他很害怕你跑了。这就是资本。 但沟通的时候,也不要太直。我在外企里面学到的一个方法叫 Never Say No。他说和用户沟通的时候,你永远不要说不,这事我做不到。你要说 Yes,但永远是有条件的 Yes。比如这种情况下我能做到,那种情况下我做不到。你给我更多的时间,我能做得到,你给我那么短的时间我做不到。或者说在那么短的时间内我只能交付你半成品,你要不要?
我永远都可以给你做出来东西,但是总是有代价的,总是有条件的。为什么要这样呢?别人把球传给你,问你能不能做?我们技术人员比较实在,好像只能回答“能做”还是“不能做”,那你就被 PUA 了,知道吧?你知道你被 PUA 是什么概念?被 PUA 就说是你进入了别人的环境里面,它营造了一个空间,把你扔进来,按照他的逻辑,就问你,给你一个答案,你能干还是不能干?那无论你的答案是能还是不能,你都是被 PUA 的。 你要反 PUA 的话,必须得把他拉到我们喜欢的角度来,把这个压力推回去,给他一系列的条件:
- Option 1 :我可以再按时完成,但是质量别想。
- Option 2 :你给我足够的时间,我保质保量全部交付。
- Option 3 :我还是按你这个时间,但是你必须砍掉一些需求。 三个 Option 传回去,就反转了,因为这个逻辑是你的。他这时候就要痛苦地做选择了。到底选 1、2 还是 3?因为每个选择他都要付出一些东西,那就让他去选,不要剥夺他的选择权,不要硬杠,你把选择权传给他,表面上你是在很好的交流,实际上你在 PUA 他。
我跟大家讲一个故事。我以前刚去上海的时候买不了书,只能在书店里面看书。我就把书店当成一个图书馆,看完后我会做笔记。我希望大家都有一种写作或者做笔记的习惯。 以学编程语言为例。你学一门编程语言,总是要把它抽象成一棵知识树。 因为刚开始你学各种各样的语言,会发现,这个语言也有这几块东西,那个语言也有那几块东西。比如说,一个语言,它必然会有变量、分支,还有循环,这是它最基本的逻辑结构,所有语言都应该有的。然后更高级一点的特性,它也有一些数据结构,还有数组、字符串,再高级点比如泛型,还有面向对象的多态,还有一些类库等等,这些都必须得要有。没有这些东西的话,这个语言是挺难用。 所以我学一个新的语言,我就会把这个语言照着我的框架来套。这个语言有哪些分支逻辑、哪些声明变量,多线程是怎么玩的、面向对象多态怎么玩的等等。我就照着套,半天或一两天就套完了。这个语言也就学会了。 所以,首先你有一个大的语言框架,新语言跑不出这个框架范围,然后你把语言特性往框架里面套就好了。你学得多了,你未来就会越学越快的,因为你会自己总结。这就是学习的一个过程,当你有了一个系统的知识树以后,然后你去填充这个树,把它全部填满了,你自然就学会了。 但是,我学 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。
还有就是你遇到一些实际的问题,在解决这些实际问题的时候,也会去真正地理解这个技术。总之,带着问题去学。
另外一本对我影响比较大的书:《Rework》。它不是技术书籍,但是我被它里面所有的想法,严重洗脑了。 里面讲“条件受限是个好事”,因为条件受限可以倒逼你抓重点,倒逼你做自动化,倒逼你简化。我突然就想起我以前买不起书,那个条件受限的时候就必须要用更聪明的方式去学习,因为你买不起书,所以你必须要画知识图,全部都是在条件受限。要是我条件不受限,可能我就不会这么样,我就会去买书,最后书堆着都没法看。 还有一个观点,就是挠自己的痒处,自己觉得不爽了自己要去改变它。所以我觉得这个世界上很多能创业的人,或者说是能改变世界的人,一定是不能忍的人。各位,如果你今天什么事都能忍,你想一想还是忍了,我不去抗争了,你一定不会成为这个世界的厉害的人,你一定没有什么利益的噱头。 这个世界是属于那些不能忍的人的,因为你不能忍了你才会想去改变它。知道吗?各位。从你身边的一点点小事开始,你觉得不能忍了,不能抱怨了,你决定行动起来,改变点什么,这时候,你就会琢磨怎么才能更好。所有的东西都是从不能忍开始的。 如果你什么都能忍,那对不起你一定是韭菜。我看过的很多好的产品经理,他们都是不能忍,都是各种不能忍。所以他们就可以做得很好。不能忍的人一般标准很高,就是这样子。
有趣
杂谈
手机版“神探玺洛克”请扫码