去年在某几万人的大厂参与了校招。
很多 1 本的,一些基础知识都不知道。女生,简历写的也像模像样,结果随便一问 简直太水了。
给我最大的感受,计算机真是一门注重实践的课程。如果没有实践,你通过努力能把”知识点”被的很好,但是深层的原理,知识之间的联系,就不是靠背诵能掌握的,你得真的做一遍,才能感受到那种”意会”的感觉,悟了。
举个例子,tcp 的各种知识点背的很熟,但是问如何用 udp 实现可靠传输,大概就卡住说不明白了。很多同学的简历都没什么项目,做的东西更像是课后作业的水平。可能你会说,没有业务场景,没办法啊。我在小公司干了这么多年,当然能理解,我也有这个问题,所以想来大厂看看;但是就遇到有 nb 的同学,自己撸个轮子,写一个异步多线程的 webserver ,先不管能不能在生产环境用起来还是 github 有多少 star ,至少这个项目让他对知识的理解程度就更深入了。
写的多了还有一个好处我觉得更重要,你就知道哪些知识才是真正的”知识点”,是实实在在的能用起来的东西,而有些只是手册型知识,需要的时候去找一下就好了。
laravel-s/swoole 是个不错的解决方式,但是有风险。
可以找到哪个请求量不小,但是速度比较慢的接口,单独部署 2 台服务器走 laravle-s/swoole ,用 nginx rewrite 一下就行;如果失败了在走传统的 FPM 。
这样就 1-2 个接口,比较好测试,出了问题也好降级,随便弄 2 个 4 核 8G 的 ECS 就能抗住很多量了。
@
Richard14 操作系统也是在处理业务吧,只不过是处理计算机相关的业务,所谓"底层"业务
当然还是觉得算法难,动归到现在也没弄明白.主要是算法不是靠自己就能想明白的,业务逻辑大部分都可以.业务太复杂了还可以简化,总归能做出来.
但是数学不会, 不会就是不会.
@
beimenjun 技术主业跟赚钱副业的区别很大了。
比如大厂对技术的要求,要深入。大到性能优化 架构设计,小到代码规范,Bug 管理,都是严格有流程的。
但是自己干(不是做外包),做面向市场的产品,对产品 /需求 /市场的理解是第一位的,技术只是实现自己的目标的手段,退一万步说很多业务用低代码 /小程序 /公众号 /微信群 都能解决大部分,技术不是最重要的。所以是完全不一样的路线,没什么可比性。我见过很多朋友做 PHP 做的不咋地,远远不到 1%的,但是后来做老板生意做的挺大。
做外包(包括给 uniapp 做插件)当我没说,这个可能跟大厂纯技术导向要求差不多。
做生意: 管他什么平台什么流程,先上线看看用户反馈再说,搞量搞内容第一位
做技术:管他什么用户什么业务,先把运维搞完美
从小作坊来大厂大半年了.
其实纠结技术学到什么没啥用,肯定是大厂更广泛更有难度.
我觉得更值得关注的是,大厂是对人内心,精神的影响.
举个例子,最开始没有流水线的时候,生产汽车一个人要负责全部,或者大部分的组装工作.后来有了流水线,一个人负责其中 1 点点工作,比如你是安装座椅,一直干这个, 速度就很快很熟练.对于个人来说,公司也要求你是必须可替代的,你也只有机会干这个.你可以很精通安装座椅,但是对别的基本上不熟悉.
我在大厂,看到干了五六年的同事,基本上就是这个感觉.微服务就是完完全全的流水线化,基本上 1 年写了四五个接口 /项目,然后就是维护.都是十几年的业务了,修修补补也就那样.你会在某一个领域精通.但是对人的异化,人与人之间的关系,我觉得都比小厂要差很多,搞得我现在非常怀疑人生.
其实我觉得这件事本身就有点虚.
有句名言说,我们懂得很多道理,还是过不好这一生.年轻人不懂你说的这些道理吗?
懂了是一回事.为什么做不到?
不信邪,我可能是"例外",天赋异禀.
不认可,没有发自内心的认同,甚至形成思考习惯,是没法转化成行动的.
年轻人再聪明,也得需要阅历,才能真正懂得和接受一些道理,简单来说,就是被打过脸才知道真的疼.
@
haah 如果你不害怕,对未来不恐惧,有信心和希望,就行.
如果活在恐惧里,你还不着急吗?
大部分人都没有安全感的,除非心态上真正接受躺平,而不是嘴上喊的很响,其实又不敢那种.
看起来纠结最多的还是养老问题啊。
从文化角度来说,中国人非常讲究的一个问题就是,善终。
我老了一定要体面的走,不求风光,也要安详;要有晚节,孤独终老是非常非常悲惨可怕的结果。
对于老年,孤独终老,晚景凄惨之类的,我觉得打内心里害怕。所以我可以放弃『大部分』东西来获得一个晚年的保障。要提高这个保障的可靠性。
电影 《无依之地》,不知道你们看了没,美式的孤独终老。一个人开着房车,在大山里看着最美的景色,静静的离开这个世界,是浪漫还是悲惨?不同的文化肯定有不一样的解读。国内的老一辈,绝对更倾向于躺在医院里,周围一圈孝顺子女默默流着泪,哭着说不要拔管再坚持一下~~~
所以说到底是一个哲学问题:你选择如何去死。
想明白这个问题才能真正探讨问题的核心。
纠结生不生这个问题纠结好几年了,目前还没生出来
孩子的问题,养老是一个方面,不只是钱的问题,老年失去能力的照顾问题,财务问题,很多时候渲染的又挺悲惨,不多说了,都懂。
另一个问题是价值问题。
30 多岁,工作也快 10 年了,人生就进入一个瓶颈期了。一个人怎么着也饿不死,养一个老婆再爱,毕竟没有血缘关系;工作的压迫和异化逼着你思考为什么,然后很快就发现,这一切都没有意义啊。我的工作没有意义啊,努力赚钱就是为了努力花钱吗,为了努力花钱拼命 996 吗我可以选择不花,毫无价值
但是孩子不一样。有了孩子,这一切的付出就自动有了价值有了意义。人生或许也不需要思考了,就有了维持下去的激情。很多人有了孩子之后会觉得幸福,我觉得大概如此。
@
norland 我同意。
但是对于我个人而言,man seek to understand.我需要理解自己
@
norland 对这个世界感到不理解,想去理解这个世界,算不算是一个问题。
理解的过程就是寻找真相的过程。
提高入行门槛,大概是一个副作用。
我不太相信,一堆比在座的各位牛逼很多的人,会把『提高入行门槛』作为动力,付出巨大的心血来开发一个复杂的体系。
说一个另外的小故事,之前在小公司写 PHP ,感觉 CRUD 也就这样了,没什么意思。
后来这半年在大厂,本质上也是 CRUD ,但是几十万 QPS ,一天几个亿的写入请求,这种规模的 CRUD 导致项目非常复杂,一个保存接口写一个月很正常,为了 SLA 背后一大堆机制,几乎自己造了个 tiKV 一样的分布式数据库出来。
项目的复杂度指数上升的时候,解决方案就不是线性增加能解决的了。
之前写 PHP 好几年,开始写 Golang 觉得很麻烦,类型系统很麻烦,要多写出很多东西来.
后来生计所迫,开始写 C++, 回头再看 Golang,又感觉真的简单很多.都是对比出来的.
对比起来,我觉得 C++的一些难点:
- 编辑器和补全系统不如 Golang 那么好用,基础库又很分散,就直接导致记忆成本高.go 输入 fmt 就能自动补全 fmt 的包,C++至少我的 VIM 没有,就需要你记住 fmt 的 header 文件自己去引用.
- 语法更复杂了. 灵活性和对内存精细化控制的需求,对什么拷贝 引用 指针 左值,这些都要思考,带来更多思考负担.写其他语言不需要
- 并发编程, PHP 转 Go 的大部分都是觉得,简单的并发编程模型带来的性能提升是最爽的;然而 C++的线程+锁 的模型,说法太多了,玩不好容易悲剧.
- 调试 和 工具链,go 基本上几个命令就把周边的事儿都干了;C++的 GNU 工具链,make g++ ld gdb 每一个又都博大精深,一堆参数;一个栈溢出直接让新手无所适从,调试太麻烦也导致开发起来效率上不去.
总结,Go 或者 PHP,有 5 年开发基础的,基本上看 1 本 400 页的书就能开始干,看两本原理就能有深入的了解,干的很好了.
C++,大概你需要看:C++ Primer/Effective C++/并发编程 /STL 基础库 /模板元编程 /Linux 系统编程 /Make 教程 /gdb 教程大概才敢说我 C++入门了,可以写一些生产的项目了.....
由于人和组织的不靠谱性
看来世界最后还是会变成分布式无中心节点的。。。