写在前面
春招莫名其妙被字节捞了,进了现在的部门。既没有良好的算法基础 ,也没好好刷leetcode的我,甚至连个像样的项目都没,能进组里和各路大佬亲密接触,实属幸运。
出来混,迟早要还的,不仅要透支未来的头发,还要还过去的债。组里的工作是推荐,而我的小组是推送中台,负责字节相当多产品的推送,对技术栈一无所知的我开始了自己的折磨之旅
正文
陌生与熟悉之间:技术栈
面试java进组,却先做了两道粗浅的小作业:mapreduce和rpc相关。毕竟是data组。
data的架构两字不代表多么牛逼的工作,可能大部分工作落到个人身上都是打杂。我理解架构是一种内力,对数据和技术的敏感。可惜当时我并没有,只顾着完成需求,然后调试调试调试,endless
换作现在的我,大概会先找几篇全面的科普文章,解决“是什么“的问题————不要预设自己知道,用费曼学习法要求自己:你可以把技术给别人讲的清清楚楚明明白白吗?之后可以尝试做几个小demo,不去敲的代码只是笑谈。最后了解了技术的应用场景并落地了其中之一后,思考这项技术的底层设计,为什么能做到这样,会带来什么样的瓶颈,这种设计思路可以上升到哲学,在其他地方应用吗。这应该成为一种基本功。
粗浅的作业做完直接就安排活,字节的新人文档很差,让我在摸索的时候浪费了很多时间。总体而言,新人要面临的一些困难有:1. 自研平台太多,目不暇接;2. 内部框架尚未演化成熟,文档也不够面向新人;3. 业务不熟,上下文不了解;4. “fly bitch”
技术栈是什么?技术栈就是一系列你闻所未闻的东西,但还会让你感觉很熟悉。因为大佬已经把你耳熟能详的东西(rpc、flink、hadoop)拆解成有利于公司业务的基础组件,同时又封装好了傻瓜式的api/业务算子供你选用。你不会剑法(c++或jva或go等)没关系,只要你会劈、砍、刺,那用剑还是刀并没有什么大不了。在大公司里你确实只是螺丝钉,但其实有追求的螺丝钉能做的不止于待在螺帽上。譬如,某个学长根据自研的类flink框架迁移到了go,利用语言特性优化性能;有一些业务的流程过于繁琐,可以和上游沟通一起开发简化;如何观测或者计算某些业务的开销,怎么节省资源?或者至少可以在熟悉框架后了解设计思路,深入源码。
以上都是我想拥有但没有做到的梦。
交流与沟通的艺术:长话短说
字节的企业文化还是很有魅力的,至少很适合年轻人。字节范中有”坦诚清晰“的要求,实际上确实有不少人践行了这点。技术公司都希望技术人员能排出其他因素的干扰,让全人力都能专心投入技术,无论大小,都宣称自己对技术有很大的自由度,在我看来,我们小组的沟通比较接近了。
- 如何跟需求方沟通?合理预估时间*2==排期,评估需求合理性
- 如何跟组内成员沟通?涉及复杂上下文立刻去问,是陌生场景索要相关文档,但能在代码中找到的答案最好不要假手于人;合理的问题不会降低别人对你的评价,反而提高效率,但蠢问题则相反
- 如何对不熟悉的人介绍业务?总览到细节,简短有力,逻辑清晰;着重关键点,例如对方业务涉及到的部分或者资源部分,不同场景的关键点也不尽相同
技术男“没有生活”:工作与学习的平衡
享受生活是一种积极的态度,好吧实际上很多程序员的生活是比较乏味,最长看到的娱乐活动是自己在家做菜……由于暂时我还是连做菜资格也没有的小透明,需要考虑的就是学习和工作时间的安排。
实际上每天下班都会很累,如果上班摸鱼,那工作没完成,学习的时间就有限;如果高效工作,累的就会更快,可谓“忠义两难全”。作为业务比较多的小组,打杂就是生活的日常,可想而知的是如果一直只是打杂,正式工作的绩效也不会很高。
因为白天工作的疲惫,晚上回去会迫切想要娱乐来调节,身边的朋友或多或少都有一些报复性熬夜的行为,而第二天当然也没法早起,形成恶性循环。字节没有硬性打卡时间,一定程度上助长了这种风气————在十点前到公司的人可能只占10%.
对这种困境我能想到的解法就是规律作息,早睡早起,然后利用早上的时间学习;或者下班回去先睡一会,再奋战不息。想要的还有更多,只能去做更多
人上人与人下人与人:见闻
评价一个人的指标当然是多元的,但在公司和程序员的价值体系上就很简单,此处所谓人上人人吓人只是对一个人工作和学习状态的评价,其实是各自的追求不同所致的不同结果。
绝大多数的普通人,但求一口饭吃,完成工作,止步工作; 小部分奋斗逼,想吃更多饭,做更多的工作,用更扩展的思维推进工作; 小部分养老族,饭已经吃够了,工作不工作甚至无所谓起来
很多优秀的同学,从小到大或许都是拔尖的那一批,清北乃止海外名校当然也很多,和他们在一个平台就意味着能力相同吗?
你想要什么呢,又愿意付出什么呢?
(待续)