Latest

当代码不再稀缺 - 06

Prompt 不是新的 Source Code A prompt can generate an answer. It cannot, by itself, preserve why the answer should be true. 提示词可以生成一个回答,但它自己并不能证明这个回答为什么是对的 AI coding tools 刚开始流行时,有一个说法很有吸引力: Prompt 是新的 source code。 听起来很合理。 以前我们写 Python、Java、TypeScript;以后我们写自然语言,让模型完成 implementation。既然 prompt 决定 output,那就像管理代码一样把 prompt 保存、version、review,不就行了吗?

By andy
当代码不再稀缺 - 05

当代码不再稀缺 - 05

Code review 没有过时,但我们可能 review 错了对象 AI can produce a diff. Review decides whether the team is willing to own the change. AI会产出代码,但是团队应该决定是否拥有这个改变 上一篇:AI 时代还需要 Estimate 吗? 床位系统那个 bug 暴露以后,我反复想过一个问题: 我们明明做了 code review,为什么还是没有发现这个bug? 实现并不离谱。代码在判断查询时刻是否落在预约区间内,局部逻辑说得通,边界也长得像正常的时间处理。 只是业务真正问的是“这一天是否已经被占用”,代码回答的却是“当前这一秒是否落在区间”。 我们不是没看代码。我们看了一个错误问题的正确答案。 这件事让我意识到,AI 时代关于

By andy
当代码不再稀缺 - 04

当代码不再稀缺 - 04

AI 时代还需要 Estimate 吗? Don't estimate how long it takes to generate code. Estimate what it takes to trust the change. 不要只估算生成代码需要多久,要估算团队需要付出什么,才能相信这个 change。 上一篇:别再用更多 Ticket 衡量 AI Productivity 下一篇:Code review 没有过时,但我们可能 review 错了对象 如果现在有人问 engineer:“这个 ticket 要多久?”答案可能越来越像这样: “代码今天能出来。至于什么时候敢上线,我不知道。” 这不是

By andy
当代码不再稀缺 - 03

当代码不再稀缺 - 03

别再用更多 Ticket 衡量 AI Productivity Code is cheap. Verified outcomes are not. AI 可以廉价制造代码,但不能廉价制造可信结果。 上一篇:AI 没有消灭瓶颈:Slop 正在吞掉团队的注意力 下一篇:AI 时代还需要 Estimate 吗? 有一种项目周会,特别容易让 EM 心情愉快。 这个 sprint 完成的 ticket 比以前多了,PR 数量涨了,commit 也很活跃。自从团队开始用 AI,dashboard 上的每一条线都在往右上角走。管理层一看:不错,AI productivity 已经兑现了。 然后 reviewer 默默打开

By andy
当代码不再稀缺 - 02

当代码不再稀缺 - 02

AI 没有消灭瓶颈:Slop 正在吞掉团队的注意力 When generation becomes abundant, attention is all we have. 当生成变得充裕,注意力就是团队最后的稀缺资源。 上一篇:AI 几乎写完了代码,项目为什么只从六个月缩短到四个月? 下一篇:别再用更多 Ticket 衡量 AI Productivity 上一篇写到,我们用 AI 做床位管理项目,AI 几乎取代了人工代码输出,但项目周期只是从预计的六个月缩短到四个月。 Coding 快了很多,code review 和 QA 的绝对耗时却增加了。 这件事有点像把高速公路前半段拓宽到十条车道,却忘了后面的收费站还是两个窗口。入口看起来特别繁荣,车都在往前冲,最后大家整整齐齐堵在下游。 软件项目也一样。 AI 没有消灭瓶颈。它只是非常高效地把瓶颈从“谁来写代码”,搬到了“

By andy
当代码不再稀缺 - 01

当代码不再稀缺 - 01

AI 几乎写完了代码,项目为什么只从六个月缩短到四个月? AI can generate code. It cannot own the outcome. AI 可以生成代码,但它不会替团队对结果负责。 下一篇:AI 没有消灭瓶颈:Slop 正在吞掉团队的注意力 我们最近做了一个床位管理项目。 按照过去的开发方式,团队估计大概需要六个月。这一次,AI 几乎取代了人工代码输出,项目最后用了四个月。 四个月当然比六个月好。我也很高兴。 但这个结果有点别扭:写代码这件事几乎都被 AI 接管了,整个项目为什么没有出现同样幅度的压缩?剩下的时间去哪儿了? 项目结束后回头看,我们确认了几件事: * Implementation 明显变快; * Code review 的绝对耗时增加; * QA 的绝对耗时增加; * 团队投入了更多验证工作; * 最终返工和缺陷反而减少。 这些事实不支持“AI 只帮我们省了两个月”这种简单结论。

By andy
低绩效同事,先别急着下结论

低绩效同事,先别急着下结论

团队里最难处理的,往往不是最差的同事,而是那些卡在board line上,挤挤能出活、但不挤就磨洋工的low performer 同事。 这类 low performer 一出现,很多Manager的第一反应就是:ownership 不行。问题是,这句话太空了,空到几乎没法行动。 我更喜欢用一个简单的框架看这件事:先判断原因,再调整支持,接着设观察期,最后做去留决定。 先判断:到底是哪一类问题 low performance 不等于 low ability。常见情况其实不一样: * 不会做:能力还没到,拆问题、推进、沟通都卡住。 * 不想做:知道怎么做,但投入不够。 * 做错方向:很努力,但目标理解偏了。 * 岗位不匹配:人不差,只是不适合这个角色。 比如: * 一个同事总是晚交,但每次都能把问题讲清楚,可能是任务切太大了。 * 一个同事总返工,

By andy

Vibe coding 之踩坑记

Vibe coding 对于程序员的技能要求反而比之前高了 先讲一个故事。 我这几天突然被隔壁组叫去,帮他们解决一个支付系统的问题。 简单来说,我们的客户分成机构和下属的医疗场所。一个机构下面可能有多个场所,然后机构可以统一管理下属场所的账单,支付等等。这样就需要我们能在我们的支付系统里面建立一个关系树,让父结点能看到子节点的账单,并支付。 问题就出在这个关系树上。因为我们之前用过一个另外的支付系统,所以有一部分老客户是从之前的系统迁移过来的。 这个老系统给每个客户创建了一个独特的id,但是这个id 和我们内部使用的id 并不一致,所以我们需要自己把客户的id 和他们的支付账户连接起来。然而: * 新的支付系统只支持固定的一些属性进行搜索。所以之前做这个项目的工程师A耍了个小聪明,用客户的last-name 属性存储了我们的id * 第一个雷:用户的last-name是可以由用户自行修改的。如果他们修改了,我们的对应关系就乱套了。 * 但是这个id A存错了,应该存储机构的id,A存成了下属场所的

By andy

关于flashblocks

争取整个短文系列,迎合短视频的潮流。 base前段时间整了个活,提出了一个新的概念叫flashblocks。 在有flashblocks之前,每个区块的状态是要么这个区块还不存在,没法拿到区块的任何状态和信息;要么就是这个区块已经存在了,它的状态是不可变的,拿到就是最终区块。base链每2秒产生一个新的区块,即任何的交易需要2秒钟才能确认。 如下图,区块A生成之后,2秒内用户只能看到区块A,直到区块B生成。 flashblocks呢,它允许用户提前获取正在打包的区块的状态。正在打包的区块每200ms更新一次状态,直到10次更新之后,正在打包的区块变成一个完整的区块。 如下图,区块A打包200ms后,用户可以立刻看到区块B的状态0. 再200ms后,可以看到区块B的状态1,直到区块B的状态9,然后区块B稳定,开始生成区块C的状态1。 flashblocks的好处是什么呢?它可以在一个区块完全打包好之前,让用户提前知道自己的交易是否有被打包进当前的区块,加速交易状态的确认。 缺点又有哪些呢? 首先这个确认属于预确认(preconfirmation), 这个预确认还没有状态更新

By andy

啥是稳定币以及咋研究这玩意

CIRCLE的股价自从6月5号 上市之后,从发行价的25刀一路涨到220刀, 翻了9倍。随之而来的就是各路媒体,自媒体上的各种讨论,”啥是稳定币“, “GENIUS法案是啥”,“稳定币凭啥稳定”,“CLEAR法案又是啥”。 作为一个从2024年开始在币圈边缘讨口子的菜鸟,希望能通过这篇文章给大家一个扫盲。 开天辟地之比特币 2009年,有个叫中本聪的哥们,由于各种原因,提出了比特币这个概念。比特币当时集合了几种很玄乎的概念,但是其核心就是: * 用一个叫比特币的代币来进行交易 * 没有传统的账号密码系统。通过密码学,任何人只要能证明对账户的所有权(私钥)即可控制账户里的资产 其他去中心化啊什么的都不重要,简单理解就是这哥们建立了一套独立于银行之外的支付体系,并且不需要通过银行来进行认证,任何人都可以创建一个私钥,然后开始交易。 比特币之我钱呢? 随着比特币逐渐走入大家的视野,很多人发现了这个系统的巧妙之处:几分钟就可以转账;手续费低廉;最关键的是账户全是匿名的,方便搞一些见不得台面的东西。 于是在各方利益相关推动之下,比特币居然真的成为了共识货币。这里我们也不讨

By andy

Uncategorized

记一次大规模裁员事件

1月19日 19号的时候,我有个同事从国内刚回美。我们约了半个小时的1:1。期间,聊到了在当前经济形势下,Google会不会像其他科技公司一样大规模裁员。当时我跟他说,裁应该是裁的,不过他本身rating还不错,做的项目也很重要,就算裁员应该也不会裁到他头上的 1月20日 从早上6点多开始,我就陆续收到微信消息,不过因为手机是静音模式,直到7点才被推送消息提醒。看着20多条未读消息,我第一反应就是“国内朋友们在提前发红包么?” 点开消息,发现内容都在讨论Google裁员。我脑子当时嗡了一下,闪过两个念头:1. 我这么乌鸦嘴?2. 我没被裁吧? 急忙忙的点开邮箱去搜Sundar的邮件。他在凌晨两点多发了一个关于全球裁员12000人的邮件。再点开内部群,微信群,看同事们都在讨论怎么知道自己有没有受到影响。 10点多的时候,各路消息灵通人士们大概总结出来几种方法看自己是否收到影响:比如有没有收到hr的邮件;是否还能访问内部系统等等等等。多方验证之下我大概可以确定我暂时没有被影响到。 暂时确认后,心情稍微平复了一下。从早上刚听到消息时的茫然,震惊,变成三分侥幸,七分慌张。侥幸自

By andy

闲文

写在2022的最后一天

每年写一次总结,就很grad 工作 2022年中,我从工作了三年的cloud转到了Geo。如果用三个关键词来总结2022的工作变动的话,我想应该是就是 responsibility, leadership, strategic responsibility 蜘蛛侠里有句著名台词,“能力越大责任越大”。这句话也同样适合放在工作中。 转到了Geo之后当了某个产品的负责人,自此对该产品有了“无限责任”。头脑风暴,写提案,写设计,拉客户,和其他组协调,调整项目优先级,分配项目等等等等很多之前工作中认为的“总会有人去解决的问题”,变成了“我会去解决”。 leadership & strategic Strategic和leadership串起来一起看,就是因为责任大了,必须得要学会如何分配时间,考虑问题的时候需要抓大放小,把问题打包分配出去,并且还要考虑时序上的关系,确保大方向上我们和整个Geo保持一致。除了产品,改进组内文化,定期反思,改善工作流程,也是leadership的一部分。 同时,当负责人的第一年,思考问题的模式也有所变化。曾经作为纯IC(个人开发者),思考问题

By andy

工作

如何建立自己的PKMS(个人知识系统)

学习的本质就是记忆 纸笔模型 念书的时候很多人都有做笔记的习惯,我也不例外。上课的时候我习惯的会把课堂笔记写在书页的边角,课后再转抄到笔记本上。一方面重抄强化了记忆,另一方面我会在重抄的时候把散落的知识点整理一下,让它尽可能有条理。 课程在编写时有考虑到知识的连贯性,所以对于课程的知识图谱很容易被梳理出来。我把这种模型成为“纸笔模型”。它基于几个假设: * 每个知识节点在创建后基本趋于稳定,不会有过多修改。即便有修改,数字化后的纸笔模型也是“修改友好”的 * 节点之间的联系稳定且有限 * 完整的知识图谱内容有限,体积不会太大 * 节点是随时间添加,检索起来也比较方便,比如按教科书章节检索 纸笔模型的挑战 工作了之后,我也有尝试过很多次做工作笔记,却收效甚微。和学习笔记不太一样,工作中接触到的知识很散乱。更多的时候需要快速学到一个全新的领域知识,然后应用在工作中,然后再学习下一个领域知识,循环往复。学到的知识本身也会随着时间被更新,或者推翻。这些工具/知识之间并不甚相关,导致了知识的碎片化,并且很难被检索。 这时,纸笔模型的假设受到了挑战:知识点之间的联系微弱,

By andy

Uncategorized

工作学习论

特别鸣谢宫师姐校对 ——甚至这个鸣谢也校对过了 今天突然想写点关于方法论的东西。 起因是组里有个小哥跳槽了。我和他一起做过他离职前最后一个项目——接触之后,我对他的离职早有心理准备。和他导师聊了之后,我们都觉得他缺少工作中学习的能力:和他工作非但没法把工作分出去,反而会给自己增加很多答疑的工作量。 细想之下,小哥在工作中体现出了学习能力和写作能力的不足,导致合作双方平添了许多不必要的工作。如果他能够做到会提问题,善用搜索,勤记笔记,我想我们的合作会更加愉快。 提问的艺术 刚开始工作的时候,我经常会问组里高工(Senior)一些很蠢的问题,要么是太泛没法让人回答(比如“Docker 是啥啊?”),要么是对方不知道从哪个角度来回答你(比如“我该咋用Docker部署啊?”)。在我读了《提问的智慧》之后明白了一件事:一个问题,你问的越具体,事前做过越多的研究,被问的人越好回答你。而越含糊,无脑的问题,别人越难回答。 “在for循环里应该用i++还是++i”就比“这个循环应该咋写”好回答。前者把问题聚焦到一个很小的范围,提供了上下文(是for 循环不是while

By andy

Uncategorized

写在2022年第一天

关键词:疫情 2021年元旦的时候,我曾写过2020年是过的最没有实感的一年。因为疫情,从三月开始就居家隔离;每天过着睡觉和工作的两点一线的生活。没想到2021重复了2020。更糟糕的是,2021年里我们见到了两次抗疫胜利的“曙光”,却分别被delta和omicorn给打了回去。以此来看,距离疫情胜利,一切恢复正常依旧遥遥无期。 2020年曾有专家预测过疫情可能会在2025才完全结束。只能做好继续抗疫3年的心理准备。 关键词:工作 对我来说,过去的一年在工作上,算是收获的一年:项目推进顺利,经理认可,升职成功。 当然,每次都要甩出Ben Parker那句名言,能力越大责任越大:工作上也是如此。从负责一个人做的小项目,到负责几个人做的中型项目,越来越意识到交流,流程,文档的重要性。希望在2022年在工作上能继续保持劲头,争取再进一步。 关键词:生活 去年一年,随着fed的无限QE政策,我也是亲眼见证了:物价飞升,排骨从3块一斤涨到7块一斤,苹果也从9毛9涨到3块一斤;车市紧俏,疫情前买车是可以和dealer降价的,现在是要和dealer加价的;房市一路疯长;股市屡破新高

By andy

Uncategorized

升职记录

升职不写博客,如衣锦夜行 距离上次写blog有大半年了。这段时间里一直在急忙忙的弄升职的事。直到昨天收到通知:升职通过,心里一块大石头落了地。 与其他的同事相比,用了5个Cycle(每个Cycle 半年)升职的我属于不长不短,恰在中游的位置。但是两年半的过程中,我经历了一系列变动:领导A在一年半时跑路;然后等来了领导B。好不容易和B制定了一系列的升职计划,进行到八个月时B又转去做其他领域;纠结继续按计划执行还是观望的时候迎来了新领导C。运气比较好,C还是很认可K的计划并帮助我在最后三个月里尽量完善升职资料,最后顺利的升职了。 下面来总结一些我认为有用,并行之有效的干货。 对项目要有Ownership Ownership 名词。物主,身分,所有;所有权。 每次和我老板1对1聊天的时候,他总是强调要有项目的Ownership。起初我对这个很不以为意:做项目,有Ownership不是很应该的吗?但是随着参与进各类不同的项目之后,我发现每个人对Ownership的概念是不一样的。 有些人做项目做到一半,遇到一些来自其他组的阻力(blocker)后就原地躺平等别人来推动项目;有些

By andy

Uncategorized

而立

不知是否很多人都和我一样,曾在儿时憧憬成年,幻想过成年后自己的生活。梦想的职业从科学家,到被选召的少年,再过渡到社畜。也是从懵懂无知,到幻想主义,到现实主义一步步蜕变。 人生有几个常常被赋予特殊含义的年龄,比如十八,三十:一个是生理上发育结束;一个是社会发育结束。 站在二字头的岁数,每年都掐着指头算离三字头还有多远。二十出头曾幻想三十岁的自己应该身家过亿,挥斥方遒;差五天满三十岁时,正在拉excel算怎么投资退休金能少交收入税,再根据银行户头余额制定购物计划。此时身家离过亿少了一个亿左右。再回头看二十岁的自己,恍惚觉得自己读懂了史铁生的“看透生活并热爱生活”:经管我还看不懂它,但我依旧热爱它。 今年也是第一次在圣诞节收到了泡脚桶这种“保健养生”类产品。联想到了呼兰说他31岁生日收到的祝福从“生日快乐”变成“身体健康”。三字头的阶段看来更多转成“攘外必先安内”了。 2020是一个低谷,这一年经历了太多“百年未有之大变局”。触底一年,希望2021年是一个触底反弹局。在此,也祝身边的朋友们2021年事事顺心,身体健康。

By andy

Uncategorized

写在感恩节前

你的感恩节,火鸡的受难日 工作 8月换了老板。前老板休了3个月的假,把自己给休出组了。新老板之前也在彭博干过,第一次私聊的时候也算有个破冰的话题。 相比于前老板的太极拳和画大饼,新老板直白很多。这个项目有什么影响力,为什么现在在做这个项目,为什么不做另一个项目。30分钟的会开下来,让我后背都湿了一层。不过有这种直指核心的谈话也很有帮助,我也算静下心来想,除了“老板分配给我”之外,还有什么理由让我做A不做B,做C不做D。这应该算是软技能++吧。 生活 放在年初,我可能也不会想到自己会养狗。隔离日久,加上疫苗与解禁都遥遥无期,这次积累的精神压力是休假也无法缓解的——休假与工作,都囿于客厅的方寸之地;休假无限接近工作时不碰公司电脑而已。所以在我精神紧绷的时候,终于驾车300英里外抱了只黑柴回来。每天的生活从吃饭睡觉敲键盘,变成了吃饭睡觉敲键盘训奥利奥。 狗带来的生活变化是明显的——作息规律了,早晚要按时遛狗;做事有耐心了,训狗时一个动作重复几十次是家常便饭;做事细心了,出门之前会看有没有带狗粮,便袋等。建议其他快被疫情逼疯的小伙伴们可以考虑养个狗,真的会让你生活焦点稍微转移下

By andy

Uncategorized

写在中秋

我国庆不放假,也没有加班费 自从疫情开始之后,我对日期都没啥实感了。刚开始在家办公的时候,还觉得很好,每天能省出来2个小时的通勤。在家办公一个月之后,感觉自己快要对客厅过敏了。再一个月之后,就麻木了,每天“吃完早饭就上线,饿了吃午饭,再饿了吃晚饭,困了就睡”这个循环,也不知道啥时候能跳出这个while-loop。后来连日期都模糊了,对时间的判断就剩下“今天天冷了,空调应该不用开了吧?” 从3月开始吧,知乎开始要求实名制了。我又不想把自己证件照发给一个非官方机构,所以养了几年的知乎号算是废了。不过随着知乎娱乐化,干货越来越少,私货越来越多,退乎也没啥心疼的了。 在家工作到8月,我觉得自己快要社会边缘化了。迫不得已,去养了个狗。本来以为每天遛狗应该能增加我的exposure,可是养狗之前没人告诉我狗没打满疫苗不能出门啊。结果现在我每天都不能出门:带着狗吧,它疫苗没打全怕它染病;不带狗吧,又怕它拆家。低头看看自己缺乏运动而日益丰腴的小肚腩——奥利奥,这都是你养父为你作出的牺牲啊! 昨天pixel 5 发布了。在现在这个智能手机更新换代频繁的时代,反向升级(

By andy

Uncategorized

编程语言的边际效益

之前跳槽的时候加了好多刷题群,在群里问过很多问题,也从其他大佬分享的经验里受益匪浅。 所以跳槽之后我也没有退群,希望能够分享一些经验给后来人。 在这类群里水的多了,就经常能看到很多人在“炫技式编程”。 比如列表推导这种入门级别的;进阶一点的就是TMP,脑子展开的时候经常容易溢出;更高端点的就是宏+TMP,基本上想上一天能想明白这代码干了啥。 我刚开始工作的时候也特别喜欢这么写代码,感觉每次不加点语法糖就浑身难受。那时候用C#,基本上是能上LinQ的就绝不用循环,能用异步的就绝不用同步。后来用了python,能列表推导就不写循环,能lambda就不写人话。再后来,有一次要给别人讲我的代码,点开文件后我自己都懵了——这是我写的?这在推导啥?这个lambda 在干啥?这都是个啥啥啥(王宝强脸)? 随着看的代码多,写的代码多,收到的评审多了,我慢慢的感觉到学习一门编程语言的边际效用:当你对一门语言的特性应用的越多,你的代码的可读性就越差。而且当你用到生僻的特性或者方法时(哪怕是标准库里的),很难保证未来修改你代码的人是否同样也熟稔这个特性,他可能也会像你不熟悉这个方法时一样大挠头皮,然后

By andy

周记

2019电子产品及周边剁手总结

2019年对我来说是一个圆梦之年。这一年买了几件电子产品:M10, iphone 11 pro,ergodox,。还借了借件电子产品: iMac, pixel3 XL, ergodox ez. 顺便还体验了一段时间的chrome book. 接下来是对各个产品的一个总结 最有价值& 最有逼格:Leica M10 黄铜铸就,健身伴侣,帕金森患者的福音书。 街拍神器,护体利器,激励我学习的永动机。 纯手动用起来真的是有门(逼)槛(格),黄斑我练了一个多月才能够合焦准确。不过确实是德味满满,尤其是夜景,真的是好看。也迫使自己开始研究拍照,要不然这么贵的相机岂不是浪费了。 至于最有价值,这相机买来就涨价,都成理财产品了…… 最关爱身体:健身环大冒险 自从买了之后就开始了日日深蹲活动,感觉自己离健身达人已经不远了。感觉是那种买了就会觉得自己已经变瘦就不需要健身的产品了。嗯买了就会瘦,可以放开吃了! 最佳体验:iMac Pro

By andy

周记

杂事

与年龄呈负相关的,除了发量还有记忆力 ——沃资基硕得 最近事情很多,过年,冠状病毒,封城,隔离,perf,项目……坐下来想写点什么的心思都没有。 本来年初想写个年终总结再加个新年立志,后来想想19年一年似乎也没干什么,职场高光都是在18年了;19年前半年划了四个月的水,又用了半年wrap up,剩下三个月基本上是快放假了划划水。今年回来才体验到due 卡到脖子上急吼吼的拽着同事干活的感受。 再说立志这个事,我觉得除了“我今年想买个XX”之类的愿望值得写,其他的真的都还是憋在自己的日记里吧,要不然等再过个三五年被翻出来批评一番会觉得当年太中二了(画外语:你们有人翻过自己的人人或者qq空间么?)。当然三五年之后有人愿意翻这破玩意也算好的…… 最后说说记忆力这个事。我强烈觉得自己是单线程生物,在线程切换这方面不是很好。尤其是并行的项目多了之后经常抓狂。后来跟隔壁的小哥学了一个很好的方法:记笔记…… alright,写完之后继续看代码去了。

By andy