从头脑混沌,渐渐恢复到我平常的水平可能半年有余吧,过去的半年感觉是我成长最快的阶段。
工作里,一直把一线的经验当做对自己的带薪受训。苦活,累活,压力活都接过。工作就是最好的老师,手把手用案例学,犯错,疏忽,犯错从自责,到转化成为启示录。
最近我也在继续挑战自己的极限,用两星期搞了两篇design,研究架构,很多方案从模糊,未知,到渐渐呼之欲出,到尽量考虑周全。就当做对自己的训练。而以前我可能得花3-4周都写不明白,即使写完了还漏洞百出。
面试里的系统设计都是简单版,真实工作中的系统设计得考虑更多,包括如何rollback,如何monitoring sucess / failure,Failure怎么处理,各种edge case是否照顾到,安全问题是否考虑了。传统面试里的手撕算法是leetcode,而算法在真实工作环境里的应用是用在如何节省latency,降低API call volume,如何降低wasted resource。
当把一线经验用成训练以后,跑几个真实项目下来,就会觉得面试里的系统设计很简单,甚至问的都只是我们工作里的冰山一角。
写design的时候,策略可以top down 和 bottom up一起用上,如果纯用top down方式写design也许给我3-4周纯写也写不完,也不会发现很多漏洞。这时候就需要bottom up,用真实的log去反向推导,用code 去walk through,然后再修正。双向并行,会互相补充,从而考虑更周到。
如何像八爪鱼一样张开触须搜集信息?
一方面是用ai加速搜索速度和广度,另一方面把design review,office hour当做收集信号,让别人看一下我的文档,再留言,评论里可能就会有好的信号是我没考虑到的。
现在的一天大概是这样:
最难的部分在design,每天和不同人开会Back and forth,当搞定了方案了,coding就很快了,而真正敲代码可能只用30m就写完了。
发布于 美国
