工作三年,许多想说
最近读到laike9m <工作三年我学到了什么>,听完那期捕蛇者说博客,觉得自己的视角下有许多不同,想也来写一写自己的感想。我毕业之后就一直在一家硅谷小厂工作,到今年6月也满三年了。前两年的角色大致是DE/SDE,最近一年在转向AI/LLM。这篇想把主题扩展到工作之外,到生活,心态,团队,方方面面,也算一个阶段性的记录。
换方向是常有的事
换方向是常有的事,在小公司里更是。我刚进公司的时候是做维护data pipeline,花了6个月做了一次AWS EMR到databricks的迁移,稳定之后就几乎不需要时间维护了。随后便去接手了后端服务的性能优化,以这个契机接触了python / redis / mysql / elasticsearch后端技术栈,有段时间还去做了一些k8s hpa的调研。然后就是从一年前的夏天开始做AI一直到现在,现在也逐渐走上正路。如果在大公司里,这算不算三年换了两次组呢?我不太知道。但总体来说,我觉得十分满足,给了我太多跨领域学习的机会。
我现在不太会想这样的经历会不会不专注,这是从后视镜看到的看法。在那个当下,我能看到的只是:面前有一个机会,我要不要抓住它?能在某个领域一直做很久并成为那个领域的专家,是一件幸运的事,但在目前的公司里我不太能看到这种可能。这个时代本身就是在变化的,所以我更多把换方向看作为一种常态,毕竟在科技行业,变化是一定会发生的事,我们谁也不敢说能依靠现在的技术栈一直工作到退休。
playground是我的工具箱
在小公司一个比较大的问题是技术栈比较简单,使用的技术一般比较成熟,甚至老旧。带来的问题就是视野和发展受限,“在工作中学习”是一种奢望,很容易处于一种“好像没什么再可以学的”状态,但是回归到人才市场时,却发现自己一无所长。我慢慢想出了一种变通解决的方法,叫做“在工作外学习,在工作中实践”,即选定一些自己感兴趣的知识和领域,慢慢了解它、学习它,并在工作中尝试运用它。一般来说,老板对新技术的采用抱开放态度(毕竟能提升性能或者省钱,都是看得见的成果),至少能申请一些做实验的机会,如果能上到生产环境那就是一次从0到1使用的经验,即使不采纳,也可以为以后的工作做铺垫。我发现在小公司里这样的机会还真不少,如果能证明有显著提升,最终能上到生产环境的概率很高,比如这几年我做了:
- [Y] (llm) ReAct agent
- [N] (benchmark) valkey vs redis
- [N] (benchmark) postgresql vs mysql
- [Y] (full stack) 带计费功能的openai api proxy
- [Y] (redis - client tracking) redis客户端缓存
- [Y] (redis - redis stream) 基于redis的可靠消息队列
- [Y] (mysql - replication) 基于mysql binlog的变动数据捕获 (change data capture)
- [Y] (k8s - keda) 基于keda的k8s HPA
- [N] (python - cpp extension) 用cpp写的trietree包,加速字符串匹配
有idea了,就花时间自己动手探索一下,在我的playground repo把教程跑一遍,或者做一个原型prototype看看情况,效果好的可以直接进行展示,效果不好也积累了知识。基本原则是小量试错,不花太多的时间就能得到初步结论,做一些笔记,然后拿着结论决定是否需要深入研究。这样长久积累下来我的playground repo就变成了一个大工具箱,里面有我的所有学习笔记和测试代码,可以随时clone下来作为知识库搜索。
欢迎来star我的playground: https://github.com/gongyisheng/playground
上twitter,找mentor
同样也是小公司的问题,由于人才密度不够高的缘故,容易视野受限,有时向同事学习的方法,也不一定是最优的,需要花时间关注社区和大公司的进展。我倾向于关注人,我在推特上关注了不少乐于分享的同行,以及独立开发者,他们一些发言能极大地启发我,一些例子:
- plantegg 教会我抓包,网络栈和数据库,和动手的重要性
- dongxi_nlp 提醒了我要多看AI论文
- MathewShen42 让我意识到要做动手做论文复现
和优秀的人相处才能经常有这种启发到的时刻,这些都是我在工作中也许要摸索很久才会发现的,或者是根本看不到在工作中能有习得的机会。
Tech Sharing
这三年在公司做了不少tech sharing,大概一年2-4次,分享的话题从完整的项目实现到case study都有,做过面向全公司(包含非tech听众)和面向大团队(tech,但不熟悉技术栈)以及小团队的,时长不超过一小时。做tech sharing压力并不大,也不需要深度很足,只要你懂得比同事多,就可以做tech sharing。我个人把tech sharing用作几个目的,一个是作为费曼学习法的实践,将自己学到的知识输出一遍,才算真正学会了,二是督促自己学习的方式,我常常会在自己有一个想share的idea,有所学习但不够深入的时候,就约一下一个月后的tech sharing,在这段时间鼓励自己深入动手学习,当然了还能让公司帮我顺便报销一下软件和硬件开支。
撇去一些业务模块的分享,这几年大概做了这些:
- valkey vs redis
- databricks vs AWS EMR
- prompt engineering - 如何写prompt
- RDS deep dive - mysql RDS疑难杂症
- packet capture - 网络抓包
- change data capture - 模块介绍的Q&A
tech sharing的话题选择和内容安排,需要非常了解听众,最好的是能引发听众讨论的。比如RDS deep dive那一期的讨论是所有sharing里最积极,我和听众的体验都很好。像这种话题,团队里每个人或多或少都有使用RDS的经验,Q&A会很积极,很有深度。像这样容易引发讨论的sharing,我甚至不需要写深奥的内容,能起到抛砖引玉的效果就可以。
不过时间久了,也发现tech sharing的局限性。一场tech sharing的内容,听众事后能有30%能记得已经不错,如果不是自己遇到一次或者动手实践过,从sharing上学到的知识也会很快忘记,遇到过很多次同事遇到我曾经tech sharing上分享过的问题,仍然毫无头绪。另一种情况是听众知道分享的技术/工具/模块更好,但是由于采用过程需要引入重构迁移,被认为是重要但不紧急的工作,安排在backlog,最终遗忘。所以我认为做tech sharing并不太能帮助一个团队显著提升工作效率,更多的可能是对于自己个人的意义,以及讨论时抛砖引玉的效果,作为知识的记录。
我与树莓派,以及失败的硬盘生意
找自己感兴趣的事做,并依赖它们养成习惯,会事半功倍。2024年初开始处于对硬件的兴趣,有了自己第一个树莓派,最初的想法是用来作为回国期间openai套壳服务的服务器,又不想在云服务上开t4.micro一个月花20刀,掐指一算性价比不如自己运维。后来故事就多了起来,首先是openai套壳在朋友中还挺受欢迎,有了十几个用户,然后是喜欢上了selfhost,在上面自建了许多包括监控、相册、对象存储、记账、密码管理、机器学习实验记录、KV缓存等许多服务,让我就有很强的动力去使用这些服务,帮助我自己养成了许多习惯。后来有了更多的派,还有一个在做我的mini主机。

虽然树莓派作为主机,服务器,都不算是一个很好的选项,性价比也不够突出,但它给我带来了好奇心,成为了学习和使用的理由,我觉得这种机会和经历是无价的,是我觉得在硬件/软件上花的最值得的几笔钱。另外两个是RTX3060和claude code,3060算深度学习入门级显卡,跑跑推理/embedding/BERT finetune无压力,也可以玩游戏放松;claude code在我不熟悉的领域开发极快,节省大量查文档时间,我经常拿来用于代码库问答和学习新工具。
类似的基于兴趣的试错我还有很多,比如我买了不少m.2硬盘,注意到ebay上部分硬盘有套利空间,一度想做硬盘转手买卖生意。卖了几块之后发现这个生意最大的bug在于要上州税和所得税,如果换去免税红州,运费又会上去,其实利润空间不大。然而这些硬件知识也没有白费,后来在投资中给了我意外的帮助,这当然是后话。学到的知识就是赚到,没有什么是会白学的。
管团队就像玩部落冲突
虽然我没有管理团队,但依据我的观察,团队的运作和部落冲突游戏里部落的运作非常像:
- 都是一群以利益为共同目标而聚在一起的人,公司(团队)最终面向的是赚钱(impact),部落玩家面向的是赚资源
- 团队的文化大多建立之初就决定了,部落的风格(chill or competitive)也是在部落建立之初就基本决定了,都是由创始的少数几个人决定的
- 团队的leader看上去有很大权力,但也受到组员制约,并不是绝对的权力,部落首领也是如此,部落首领想改变规则,需要部落成员配合执行,否则无法改变
- 即使团队leader离开了,团队仍有很大惯性延续过去的行事规则,执行共识的成本最低,部落也是如此,部落的规则延续是因为符合大家共同的利益
- 团队的流动性很高,是一个巨大的red flag,会很难积累起业务相关的经验和know-how,部落里流动性很高,部落也做不起来,很少会看到大神
- 在KPI压力小的地方,人际关系一般都会比较松弛
- 和leader建立信任最好的方式是持续地兑现承诺
- 经常说“对事不对人“,但我想说,人非常重要,管理层(leader)的能力非常重要,与平庸的人共事代价巨大,意味着会有一大堆麻烦事
我有个不成熟的想法是,能在游戏里管好部落,就也能管好团队。有点组织行为学的意思,以后真当了leader回头看
小厂,大厂
这是一件我没有想清楚的事,我没有执念一定要去大公司,过去在大公司实习的体验并不好,而过去三年的学习进度很让我满意,可能累一点的是需要我不断主动学习,工作中学习的机会都要我主动创造,仿佛工作在限制我的学习范围。我想再继续观察一会儿,虽然我已经观察了很久。
AI
- 大模型非常强,随着软件和硬件提升,会越来越快,能力越来越强
- 未来会继续存在的工作机会:创造新知识,或者在知识只储存在人脑中的小众领域避难,后者会越来越少
- AI完全替代人力不太可能,但部分替代,或者是提效,是完全可能的,觉得未来确实不需要这么多程序员
- 过去几年云服务厂商巨额资本开支(Capex),很快会进入折旧期,若营收不以相同幅度提升,必须挤占运营开支(Opex)来保持利润
- 所以基于4,Capex换Opex,裁员买卡,是我们未来可能会看到的
- 如果5发生了,那么AI税会提上日程,AI厂商要承担社会责任
我不想再听漂亮话
这个part会说话比较直接(难听),但也确实都是事实,大多基于我的观察
- 在美国如果不处于创新的前沿,就容易有被降本的压力
- 企业(以及管理层)内心中对于员工大多处于一种用完即弃的状态
- 上对下隐瞒十分普遍,在公司全员会只能听到"Wins come all day",layoff的消息到最后一刻才会知道
- “Let’s divide the work” = “I want to take your project”