搞区块链开发的心得体会
搞区块链开发的心得体会
啊,您好。我是 2016 年到 2020 年读本科的废物一只~。只要 git blame 一下这篇文档看看是谁写的,就可以在 GitHub 找到我啦~
好多同学写经验的时候,提到自己各种努力,各种适合自己的努力方法。
但我会尽量写一些meta 分析,尽量综合我对许多人的观察,而不只分析我自己。因为,他人的人生建立于他人独特的资源与背景下,参考价值大概不高。
我会尽量照顾大多数缺乏战略资源的同学(如果你家有压倒性的资源,你其实不用那么努力上 top3 大学,也不用看这本低端手册)。但我还是可能流露一些凡尔赛言行,还请多多包涵。
本文可能有点抽象(毕竟是meta 分析)。
我的背景……?
哦,我还不打算马上扯我自己的详细背景,因为我是废物,而且这是meta 分析。
一个人的命运啊,当然要靠悲壮的自我奋斗,但是也要考虑到外部资源与环境。甚至外部资源环境才是更重要的。
没有资源的我们,只能靠持续正确的决策与充足的努力,谨小慎微地活下去。
可惜,决策的正确性或许不是我们能掌控的。努力的有效性也不是我们能保证的。
学会努力,学会做决策是最困难的。任何错误决定和长期无效努力都有可能重挫整个人生。犯了错误的人可能会学到教训,但已经失去改正机会了,就像战场上已死的人一样。
为什么有的人在年轻时就能做出英明的努力与决策?也许因为他们的祖辈早就积累了大量经验。看起来他们顺风顺水一次成功,其实都是用血的代价堆出来的。
真是一个容错率很低的世界啊。
但是!但是你就因此开始选择最“正确”的道路?你选择和别人卷绩点卷保研卷出国卷 offer 卷考公考编考教资了?或者直接开始躺平了??NO!停止你的傻狗决策与无效努力!
我不是说你要像比尔盖茨一样退学开微软(毕竟比尔盖茨钱多技术好)。但是盲目地和别人卷完全一样的东西,和盲目退学开微软有什么区别?
你的一切努力都要为你的人生积累战略优势,而不是服务于一些你自己也不知道为什么要做的事。
而内卷,是没用的。这个世界一挥手就能毁灭你十年百年卷出来的悲壮成果。比如说,保研规则被改了,你努力三年保不了研这种事,应当视为家常便饭。比如说,新冠,虽然没那么家常便饭,但也不应视为离谱的情况。
但这不代表我们自己什么都做不了。在个人能掌控的部分里,方法论是最重要的。高效的方法论服务于战术努力与战略决策,能让你以数十倍数百倍的效率实现战略。
本文可能没法直接教你怎么总结新的方法论(那是《空中浩劫》这种空难调查该教会你的东西),所以就直接提供一些方法论吧。
为什么不去继续上学呢……
啊,因为我是废物。
- 绩点一般(前 10%都很难挤进去),托福 109,GRE 158+169+4.5。托福 GRE 都只考了一次,因为没钱,也没力气了。
- 科研/paper 做了一些可能有突破性的贡献,但实质上约等于没有,甚至约等于民科。我做的方向很冷门,发 paper 可能要发到数学期刊上,但数学期刊的审稿人可能都完全没见过这种研究课题。我猜测这个研究的应用还可能涉及雷达/隐身,有点敏感。我的导师可能也没太多门路去发大猛 transaction。
- 没有大牛推荐信
- 虽然我拿到了保研,但是本科的科研让我觉得,硕博就是被压榨的。我亲眼目睹硕士学姐刚进来时气色红润,一年后面黄肌瘦。国内硕博,狗都不去!
其实我在申请前一年左右,就通过大量案例察觉到,出国申请时推荐信和 paper 才是最重要的。但是众所周知,这都是学阀专属资源,并不是我这月薪三千的家庭该考虑的事。我本科一年级就试着(凭借上课成绩)向更牛的导师申请参与科研,但我凭实力显然卷不过硕士生博士生,凭资源更是干不赢学阀家庭。
最终我无力改变,无力获取这些东西。于是我在海外申请到的最好学校依然比较野鸡。
我在选择海外学校 offer 时已是 2020 年 4 月份,新冠已经爆发。我没有选择去海外上大学。一方面我的家庭会需要砸锅卖铁地凑这笔学费,另一方面新冠的健康风险不容小觑,最后是海外环境其实也卷得很,自带外国人 debuff 未必有好收益。
为什么会去学写代码呢……
啊,因为我是废物。
高中初中小学玩信息学奥赛(OI)的大佬好像都不用学的,看一眼就会了。
当然,学校是教过我写代码的。但是众所周知,学校里的学习就是个笑话。
真正学习写代码是为了给纸片人打萌战(珂学技术从来都是第一生产力!不会真有人用手投票用群拉票吧?)。当我把很多老师都不会的文档啃明白,写出了百度,谷歌,stackoverflow 都不会写的代码的时候,我觉得自己好像确实学会了一点东西,并且做出了独特的开创性贡献。emm,当我自己搞出一些非凡的东西时,我自己会自然意识到这玩意是非凡的。也许不是所有人都会意识到?
**兴趣是很好的老师,但是也要考虑资源和环境。**有的人运气好,正好有一些能功成名就的兴趣。有的人运气更好,拥有一些资源可以把他的兴趣定义为功成名就。可惜大多数人运气不那么好。
**自主学习是必不可少的环节。凡是学校里教你的东西,通常是谁都可以学的。因此凡是有老师能教你的知识,路边随便抓条狗都比你熟练。**当然,目前有很多高端工作已经卷到了,**只要是自学资料相对丰富的方向,那么路边随便抓 100 条狗,至少能抓到 128 条比你熟练的(p<0.01)。**因此你甚至需要考虑刻意选择难学的东西。
**自信心和基础知识是有用的战略性资源。**我试图教一些菜狗们写代码,他们打死也不肯学。这些菜狗有强烈的动机学会写代码,但缺乏成功信心,从未学过代码,以及英语水平不足导致他们学习困难。
(小小的推论:不要盲目地把老师,甚至更大范围的一些人的水平太当回事。大家都是废物,谁也别急着崇拜谁。)
(熟练的英语可以显著提高你的代码水平,以及很多其他方面水平的上限。运用得当时,英语会帮你碾压式地卷赢一大批人。)
但是战争的真相是什么……?
啊,大家都是废物。哦不对,只有我是废物。
充满前瞻性的预判和规划?
✞
假如你 2016 年入学本科,选择 all in 深度学习:恭喜你做出了当时看起来相当正确的选择。
2017 到 18 年:好耶!AI 算法岗是个人就收,躺着就有年薪三四十万!
2020 年:你毕业了,但是深度学习就业市场相比之下都快凉了,裁员铺天盖地。
如果你是 2016 年就努力拿着笔记本 GTX980 的 8G 显存狂奔 SOTA 模型的人,我相信你在 2020 年还是有机会走下去的。你的经验远远地碾压了 2018 年还拿着 2 核低压 CPU 机械硬盘,开浏览器都内存不足,跑 MNIST 要花一个月,光是训练时间都来不及交课程 project 的人。
大多数人就没 GTX980 同学那么幸运了。世界才不会给你那么多犯错机会。其实还有好多人连电脑都买不起。
只要你能健康地读完高中,就已经打败太多太多的人了。可惜这并没有什么战略意义。
仅有预判是不够的。世界如此多变,你需要有合理的资源保证你的战术可以执行,可以服务于战略。有的人喜欢做超长超精细的预判和规划。但是当这个 VUCA 的世界显著超出你的规划时,请做好推翻一切规划的准备。写死的预判与规划没那么有用。
随机应变,灵活换方向?
F**k!规划是没有用的!我用天才般的规划在 AI 方向努力了四年,结果什么收获都没有!
✞
要不,去做开发吧。刷算法题!
leetcode 刷完啦!结果大厂笔试还是没 AK……那我刷 codeforces?
我的天!怎么这个 div2 我题都没看完就有人 AC 了啊?这个 tourist 是谁啊!传说他父母是数学系教授……我不知道该怎么跟你说,因为我只是一个 pupil……不对,我上一场被人 hack 了,现在连 pupil 都不是了。
✞
算法题实在不行。先学八股!Java 多线程高并发怎么实现?
缇亚忒:你说得对,但是 Java 要实现高并发得走响应式改造,也是多反应堆结构,多个工作线程启动多个事件循环,单个线程监听一个端口,开启 reuseport 由 Linux 内核进行连接和进程的负载均衡。事件库的实现,Java 内置的是 selector。也可以用第三方事件库,比如 redhat 发起的 vertx 库,或者基于 servlet3.1 的 webflux 库,这些事件库在 Linux 底层用的都是 epoll,性能没有本质区别。要快速上手,可以试试 javalin、ktor、nima 这些框架。
我的天!你身边有没有这种同学?我是说那种谈起技术来全面碾压你的认知,你基本从来没听说过他用的东西!
✞
后来,终于随便找了个写代码工作。今天 leader 突然让我做面试官面几个人?好兴奋耶~
我的天!这帮人怎么学历都比我高?国内 top3 毕业已经狗都不如了吗!
我的天!这人怎么不仅发了一堆 paper,还主持过某大厂一百多项后端服务建设?P8 水平的人来这里卷实习??
我的天!这什么逆天简历?不光会算法模型,还会什么高性能计算?手写 CUDA kernel?图形学?渲染管线?深度学习编译?密码学算子?异构?FPGA?什么玩意??然后我让他写快排算法,他写了个比 nlog(n)更快的 OpenMP 并行排序??
✞
吾日三省吾身:简历池子里个个都比我强?我怎么还没被裁??这帮人都是怎么卷出来的???
换方向的时候,要考虑到你总有一些竞争对手,早就把你卷得家都不认识了。
战争的真相是:努力没什么用。规划没什么用。应变没什么用。战略性资源是有用的,虽然这些资源也可能随时变得没用。
你就是个废物!你才二十年寒窗,拿什么去打赢别人的权能!你不过血肉之躯,拿什么去打赢坦克大炮核轰炸!
但方法论依然在帮助你持续使用正确的战略。
✞
你坚持写代码,因为你相信写代码就算工资不高,总比当公务员强。至于裁员风险……你确定公务员不会欠薪不会裁员?
而且你没那么痴迷大厂。大厂工资真的高吗?大厂稳定不裁员?基本就是个笑话。
芜湖,协程异步 I/O 是什么东西?好耶!这玩意吊打多线程!于是你学会了一发大炮炸翻路边一百条只会多线程的菜狗。
为什么会去搞区块链……
啊,因为我是废物。
2020 年,找实习的时候,新冠来了。呜呜呜,啥工作都找不到。我是菜狗!哪家有锅的公司行行好,把我炖了吧!
但是菜狗怎么能单纯地菜呢?肯定还要给自己找借口,说服自己躺得平平的。你看这大厂又肝又难进,要不还是找点没人看得上的活做做吧。小公司实习工资也高,挺好的。
互联网行业其实我从头开始就不想去的,因为看起来是个人都能熟练地写一手前端后端(只有我不会!)。卷度太高,我卷不进去。
算法岗,那是属于硕博高端玩家的。这年头人均顶会 oral,而我连一篇 paper 都没有。
大厂算法题,八股文,好难啊。我 leetcode 一题都没刷,算法都是珂朵莉教的,勉勉强强才刚过笔试的水平。呕——
于是我第一次正经实习做的是联邦学习。借此攒钱,终于买了个性能正常的电脑。(啊,感谢公司大慈大悲收我这种菜狗)
然后去了区块链实习(主要指技术,不是炒币)。啊,怎么这面试没有八股也没有算法的?
实习……
好难啊,一周就想放弃。网上没资料,文档不齐全,报错不知怎么处理。硬着头皮啃源代码 debug 才能非常勉强地研究下去!
啊,这样 debug 好麻烦。建个自动化工具吧。
啊,我被正式录用了?
啊,钱好多(大厂 SSP 是什么辣鸡?直接把美帝工资干趴下!)。啊,活好少(在家上班/早上打完卡就可以回家/没有很多硬性布置的任务)。awsl。
什么?我上岸了?莫名其妙地上岸了?不过区块链方向确实没太多竞争对手。毕竟没那么多人会区块链。
但是一年半后,吾日三省吾身:怎么那么快就卷上天了?我怎么还没被裁?
- **不要只厌恶风险和损失,而忽略高收益带来的好处。**命中风口,可以获得巨大超额收益。
- 兵贵神速。**来得早是一种战略优势。**为了保证来得早,**自学速度非常重要。**速度快的可以五分钟学会一门编程语言(没错我在说 Solidity),一周摸清一个大项目的基本框架并开始有效产出,两个月精通一个行业。如果你要花四年学会区块链,或者大学四年才学会深度学习,你的努力就会失去意义。行业前沿推进的速度,或者技术被淘汰的速度,可以比你学习的速度还快得多。**速度是抓住风口的重要保证。**公司也更喜欢招收学习更快的人。
- 学校里教的数据库,网络,操作系统,编译原理这些东西,方向上可能是对的,但深度和广度都远远不够。不要抠书本细枝末节,争取远远超越书本,实现降维打击。
目前(2023 年 1 月)我个人还是会推荐你赶紧 all in 区块链,但一定要学得快。简历池里个个都是人才,门槛提高的速度实在太快了。我自己也在积极考虑/学习其他行业,但尚未确定下一个方向。居安思危!区块链也会迟早烂大街卷成互联网!我也有可能随时被裁!
我们最终需要的是什么?
对于大多数人,尤其是缺乏资源的年轻人,请把自己最终需要的东西设定为“钱”。
当然,有的人可能掌握了花不完的钱,或者拥有一些特殊的梦想/烦恼。这类人可称为“穷得只剩钱了”。我充分地理解,有太多的事是钱做不到的,但我们在此不考虑过于凡尔赛的问题。
我们到底在干什么?
我们时刻都在对自己做风险投资。
- **不要逃避风险。**风险是不可能被完全逃避的。资本家面对着生意做不下去的风险;打工人面对着疾病,失业,技术被淘汰的风险;躺平人面对着没钱,长期脱产带来的一系列不必赘述的风险。
- **不要逃避门槛。**低门槛的事一定被很快卷烂掉。
- **不要直接忽略系统外部的风险或代价。**一粒沙就是你的一座山啊!
- 普通人极易长期忽视健康风险。比如你坚持考了十年研究生终于考上了,但是熬夜复习得了一身病,高血压高血脂高血糖肝硬化肾衰竭活不久了。
- 普通人缺乏对政策,金融等风险的深入思考。可惜我无法在这里讲太多。
- 普通人极易低估前所未有的事件的发生概率。
- **适当热爱收益。**高收益常见于高风险高门槛的地方。
我们失败时真正损失的东西……
- 有资源的人可以投钱,投员工,投其他各种资源。失败的时候,他损失的是金钱,人才,各种资源。
- **没有资源的人,可投的以及可损失的只有自己的时间,也就是生命。**幸亏,生命的价值是我们自己定义的。
- 别忘了,你也随时可能变成有资源的人,并且会一不小心忽视/损失掉珍贵的资源。
我们成功时真正得到的东西……
- 通常应当是钱。
- 有时候确实不是钱的问题。但请注意,**要围绕你的战略目标来定义你自己的成功。**成功的必要条件是,对你的战略目标有战略性好处。(钱在大多数时候都对各种类型的目标大有好处)
- 也不要忽略掉,某一天所有的钱都变成了废纸,这种可能性。
- 我们在此不考虑过于凡尔赛的问题
哪里有钱赚?
- 稀缺性的,满足别人需求的东西有钱赚。
如果要成为程序猿,我具体应该做什么?
战术上,主旨是培养自己学习新知识的速度。
- 熟练英语。要非常熟练。查字典的速度和直接读完的速度没法比。只能百度的人和随便啃英文论文的人没法比。
- 熟练很多编程语言。高级语法应全部理解才算熟练。拜托,现在大街上随便抓条狗都平均会 4 门编程语言了(95%置信区间 3.97 门到 4.05 门)。但语言的真正用途是,帮你迅速学会更多新语言。
- 熟练常见项目搭建环境,debug 的工具、流程等。这会帮你迅速掌握新项目。
- 广泛了解各细分领域知识,包括但不限于代码本身。比如你要知道 EDA,汽车电子,区块链,数控工控行业各需要哪些专属数学物理硬核知识,而不是只知道算法前端后端。更坏的情况是,你脑中 ls 整个目录的时候只找出前端后端这种狗都会的烂大街搬砖方向,那么你永远不会自己想到还有区块链这种东西。
- 不要看书,不要看视频,不要过度练习。太慢了!真正的大神看一眼 Solidity 五分钟就会写了。
战略上……其实没那么多可以教的
- 我真的要当程序猿吗?冷静分析的话,你也许可以用自己的资源更快地赚到钱。
- 虽然你没有权力性,财产性,人脉性的资源,但你的信心和知识储备也随时可能变成有用资源。
- 有机会的话,尝试全新的方法论,创造全新的工作模式。比如很多时候,很多项目运行测试代码,以及 debug 的便利程度是不够的。来建个快速测试调试框架吧!
- 推论:虽然我是废物,但我周围的也都是废物鸭~!如果你的出身不怎么样,就更坚定地做你认为对的事。毕竟你周围的人很可能也提不出什么好意见。
~我没时间听你废话!我要学区块链!
阿巴阿巴。请直接找到我的 GitHub。
如果要我说区块链行业的现状,那我觉得可能只有中国人在正经玩区块链。很多项目都在炒币,而真正研究技术的大部分是中国人。
至于区块链有没有用?人类实现的第一种去中心化可信计算环境,你觉得有没有用?如果实在不知道怎么用,可以看一些区块链服务于钢铁供应链的例子。我觉得很多时候是大家不知道区块链怎么用,而不是区块链没用。简而言之,这届用户太菜!
习题
绩点,英语,科研,或者工作技能,考研分数等方面,我最容易实现突破的是哪一项?
读国内的硕士/博士,主要是做些什么?有哪些风险?能为我的战略目标提供哪些价值?
(当然,也可能毫无价值)
读国外的硕士/博士,主要是做些什么?有哪些风险?能为我的战略目标提供哪些价值?
本科毕业时工作,或者硕士/博士毕业时工作,甚至于本科直接退学去工作,甚至永远不工作,各有哪些价值和风险?
学习的广度和深度优先选哪个?
(当然,也可能没得选。说不定简历池里全是又广又深的怪物)
与编程相关的行业有哪些?
(别再只知道前端后端算法了)
如何判断下一个风口?我应该在什么时机下决定突袭 all in 一个行业?
(或者,永不 all in 任何行业也是有可能的)
我需要以多快的速度完成从 0 到精通?为了达到这种速度,我应当做哪些准备?
对我来说,五险一金是税还是福利?
如何理财?
如何省钱?
哪些地方不要省钱?
我们的未来……
很显然,我们也不太能预测自己的未来。我们只记得,不停开发新的方法论。
如果你真的搞到自己的优质资源(包括但不限于钱),开始向战略目标快速前进了,首先恭喜你。但是到那个时候,大概我们又需要研发新的方法论。这就像我们上大学时抛弃高考方法论,工作时抛弃大学方法论一样。比如,我们可能很快会发现自己穷得只剩下钱了,我们需要新的方法论来获取不止于钱的其他资源……