Option and future

Share
选择与未来——从不灌鸡汤的角度来聊聊刷题与IT

最近有几件事让我觉得应该谈谈职业选择/发展。一是听说前东家又有同事溜了,一个组流动性高达40%;二是有小伙伴问如何准备面试;最后是昨天收到一个小朋友的求助,关于如何选择职业。

从我个人角度来说,我是很幸运的。能把爱好当作职业。从大环境来讲,IT仍是目前极具竞争力的行业。尤其在955的环境下,少了996的疲于奔命,多了更多的时间可以支配。当然从另一方面来说,职业发展不在工作的8小时内,下班后依然要学习工具/技术。

选择:跳?不跳?

北美IT圈有一个惯例,每年3-6月是跳槽的高峰期。原因有四,一来3月左右,前一年的奖金/股票已经到手,跳槽的机会成本比较小;二是跳槽成功会有一个比较高的签字奖励(现金 + 股票)和涨薪;三是新公司招人一般是做一些新产品,相比在现在公司做维护,开发新品对未来的职业发展更有帮助;最后就是,跳槽可能会顺便升一级。

不跳槽的原因,最多的就是因为身份。比如被绿卡/h1b牵扯住了之类的。少数的是因为懒或者怕学新技术。也有的因为有机会当team lead/tech lead。当然在IT圈逐渐咖喱化的今日,上升管理的通道逐渐减少,甚至有很多同行提出了“不求升职但求加薪”的口号。

一个无奈但真实的情况是,大多数人都是通过准备面试来学习新技术/工具/算法。从另一个角度来说,跳槽热提高了整体行业水平(?)

未来:去哪里刷题?

不论跳槽成功与否,生活总还是要继续的。失败的再接再厉,准备下一年的面试。跳槽成功的,基本上还是在准备面试,为了下一轮跳槽。于是生活陷入了每N(N <=4)年一次的跳槽刷题循环,或是困局。(为什么是4年?因为大多给股票的公司是分4年拿清,提前走的话损失比较大)(AMZN就别说话了)

选择与未来

从好的方面看,IT行业流动性比较高,试错成本相对较低。不会一步走错,十几年没机会跳出来。相比于传统行业比如金融,IT跨产品的机会更多。从后端转mobile,前端转AI,甚至码工转房产经纪的比比皆是。但同样,坏的方面就是行业壁垒几乎不存在,老人被新人倒挂情况屡见不鲜。而且随着年龄增长,学习能力走下坡路加上新工具层出不穷,在市场上的竞争力会逐渐下降。就算去了Oracle,依然会在多年后被N+6。

最后,不能怕去做选择(尤其是怕选错)而止步不前,因为唯一不变的只有变化本身;也不要担心陷入刷题循环的怪圈,毕竟IT行业除了脱发,没有其他太多的缺点。

借用一句话来总结:张华在脸书当数据科学家;李萍在CMU读CS Phd;我在刷题找工作:我们都有光明的前途。

Read more

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

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

团队里最难处理的,往往不是最差的同事,而是那些卡在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