工作三年半记

自上次写工作笔记已经是两年半以前的事情了,见工作一周年记,当时给自己制定的规划是每半年写一篇博客来记录自己的所思所学所想,以避免自己过的太过于浑浑噩噩,可惜连着鸽了好几次。过完年终于有些时间能够坐下来,做一下总结和反思,这里先描述下自己这两年半的经历,然后从工作生活以及技术路线上的得失进行展开。

一、这两年半

1.1 2018.07 ~ 2019.01 360企业安全

从2017年毕业入职到360企业安全,然后2018年底离职,一年半的时间,有感恩的地方,也有遗憾之处。

庆幸的是自己能够继续做自己喜欢的编译相关的工作,可以自由的“读”论文,给开源社区提代码,从开源社区学到的东西无需多言,对于我的职业生涯肯定有很大裨益。另外彻底搞懂了dataflow analysis的相关理论知识,把clang static analyzer的代码翻了个底朝天,以至于到目前为止我的博客还靠着这两个技术主题撑着人气(哭笑脸)。

不幸的地方在于,我赶上了360和企业安全的拆分,所在部门偏安一隅,与总部连接不紧密,限制了自己的技术视野。同事的技术水平参差不齐,技术全靠自己的兴趣来推动,业务单一,缺乏大平台下所带来的职场体验,例如完整的去推动一项技术,无法经历一个产品的从无到有。而且静态代码分析这一块儿的知识,只有leader身上能有我学习的东西了,知识到了一个瓶颈,既没有做到以点到面,更没有做到在单一技术点上的专精。这一年半,起码有半年的时间都是浪费的。

1.2 2019.01 ~ 2020.01 elastic

中间面试了阿里安全部,最后被HR挂掉了,据朋友说当时给了一个不错的评价与职级,还是有些遗憾。后面在知乎上,通过蛙总关注到了赵扶摇赵老师,了解到他们正在做一些大规模代码索引的事情,然后面试了insight.o(当时赵老师以及朋友创立的公司Insight.io)更坚定了要加入的想法,虽说当时加入的有些晚了,错过了收购以及elastic的上市。

elastic的一年是放松的一年,工作轻松,外企氛围,同事关系简单,提高了自己的视野。可惜自己在elastic的一年,没有走出以前的技术栈,包括赵老师的三位leader在硅谷,时差等原因没能经常面对面沟通。没有给自己的组做出贡献,相反三位leader却给了我很多工作与生活方面的经验,一正一反,让我汗颜。

CZ教导我生活的重要性,如何工作与生活,金钱观等等,更是让我养成了主动与领导 1:1沟通的习惯。赵老师是小组的tech lead,话不多,说实话我是亏对的,半年多没有任何产出,赵老师也没有给我压力。有一次在一个问题上死磕了很久,没啥进展,由于我再在360养成了很独的习惯,不善于和同事请教。在一天下午赵老师把我单独喊了出去,开诚布公的与我聊了我现在遇到的问题,如何克服等等。虽然关于当时沟通场景的回忆所剩不多,只记得两句话“不要一个人闷头解决技术问题,不了解或者有苦难需要及时求助,向同事或者我”和“我不是来给你打绩效或者judge你的工作的,我是来帮助你解决问题的,我是你最大的资源”。这两句话虽然简单,但是受用终身。

这一年的压力特别大,经常失眠到凌晨3点多,虽然明白自己工作上遇到了问题,但是不知道如何适应及解决。

虽然后面被layoff,但是整体在elastic还是很感谢的,白嫖了一年工资,没有什么实际产出( ̄□ ̄||)。如果说在360企业安全还是学生思维,在elastic就是开始明白“如何工作”了。

1.3 2020.01 ~ 2021.02 字节跳动

后面开始准备找工作,被layoff以后加上自己的不自信,一直想准备一下再找工作,两三个月的时间错过了很多好的机会。阅读过我博客的一些蚂蚁金服的同学找到我进行了了解与沟通,被layoff以后,缺乏安全感,希望等到一个足够合适的机会。后面主动面试了华为与字节,华为各种缘由,最后也是亏对。自己当时太着急,没有失业待家的勇气,就没有argue offer,最后给出的offer是偏低的,但这是后话了。

中间另外一家公司的陈前辈也找过我,希望协助我去读一个程序分析方向的博士,如果不继续深造,我在clang static analyzer以及静态代码分析上的积累舍弃掉有些可惜。最终各种缘由还是继续选择呆在字节,在此谢过陈总!

目前在字节呆了一年了,从360企业安全到外企elastic,经历了一段时间的转变。然后由外企elastic到字节经历了一段更为痛苦的转变,高压的互联网工作节奏,不熟悉的工作内容,虽然还是编译这一大方向,但是前期干了很多脏活儿,所以前期的融入也很痛苦。但是收获也很多,前面说了360企业安全是学生思维,elastic是一个短暂的转变,在字节自己可以算是一个初入正道的职场人。

二、得与失

2.1 失

2.1.1 失去了金钱

首要失去的是金钱吧。以前我不是一个功利的人,可能是学生思维作祟,就像CZ和我说的,钱你现在不需要,但是你需要钱的时候,它会成为你最大的问题,尽可能在合法的前提下争取自己的合法权益,例如加班、奖金等等。在360的时候没有听从同学的劝告加入高速增长的字节,加入elastic的时机不对,既没有享受到上市的红利,也没有拿到该归属到自己身上的期权。跳槽到字节时,没有尽力争取符合自己的offer。

但是也算是经验教训吧,金钱是自己的合法所得,是自己的就应该努力争取,尊重自己的劳动,莫让“不争”成为习惯

2.1.2 “丢掉”了自己擅长的领域

自己在代码分析方面积攒了两年的经验,虽然不算资深,但是考虑到静态代码分析在国内的发展情况,我去大厂靠这个混口饭吃还是没有问题的。可惜一而再,再而三的转变方向,先是切换到代码搜索,然后是再次切换到泛工具链。你说有什么积累吗?每个方向倒并没有多少积累。蛙总也劝我,是时候在一个航道里好好积累经验,不要再来回跳,否则迟早自己会废掉的。

2.1.3 牺牲了高速增长的机会

由于自己毕业三年的黄金时期,没有走在快速车道上,一直在匝道上晃悠悠地前行,倏然发现同龄人陆续开启了新的征程。在自己精力最旺盛,业余时间最充足的时候,没有拼尽全力,攫取知识。

2.2 得

方面,最重要的是学会了如何做好一个职场人。

如何做一个职场人是自己这两年最大的得。职场上的“得”来自于下面几个人。

赵老师

赵老师是我在elastic的tech lead。

  • 工作的目的不是比拼谁能力强,谁能力弱,而是以“产出”为目标。
  • 领导不是为了judge你,而是为了帮助你完成事情。

CZ

他是我在elastic的team lead。

  • 金钱和生活很重要,要合法利用规则为自己争取合法权益

覃超

覃超虽然在知乎上有褒贬,他在直播里分享过自己的一些观点,这里我摘出来一些,感兴趣的可以关注他或者买他的课。

  • 参照打LOL的思考工作
    • 前期闷头刷兵,不要浪,不要骚,把安排的任务做好就可以了。安心补兵,带线。
    • 中期打团战。中期能力强了,要打团了,不要一个人在河道里日河蟹,放下自己手头上的工作,一起参与项目攻坚。
    • 后期抗伤害,主力输出。后期成长起来之后,可以带领小团队一起打团战了
  • 摒弃学生思维
    • Proactive 主动揽活和思考,不要reactively的工作。
    • 在大公司有永远做不完的活儿,所以priortize tasks - 去做impact和 urgency最高的事情。 

Being proactive means anticipating what might happen, planning ahead, preparing in advance and acting ahead instead of simply reacting to circumstances.他给出的具体步骤是:

  • 职场1到3年的新人,要成为你所做方向的专家,在工作中不断提高自己的raw productivity。别人写不出来,你能写,别人不敢写,你敢写。或者你写的代码更好等,新人要给人一种靠谱的感觉
  • 学生时代每个人的卷子都是100分。但是工作之后你所做的方向的天花板只有60分,而别人所做方向的天花板有300分。所以在工作一段时间之后,你的技术路线或者direction就会变得非常重要。
  • 必须知道老大或者你这个组现在最重要的是什么。拒绝简单任务的诱惑。

具体步骤

  1. 1 ~ 2年积累时期
  2. 2 ~ 4年进阶时期
  3. 再后来是培养人、建立团队
  • 注重productivity
  • proactive的做事情
  • 成为一个靠谱的人
  • 有更大的scope之后,就需要更多的资源,形成团队雏形之后,开始培养 & 优胜劣汰,最后持续的培养leadership

 

  • 作为一个公司新人:吃亏、加班、只管耕耘
  • 遇到不足,说明这是机会
  • 当你在公司看不到问题的时候,那你在公司的价值就没有了
  • 当你发现公司有很多问题的时候,你就要狂喜,你要转变自己成为producer,然后主动的解决问题
  • 不要想着公司或者别人能给我带来什么。而是我能为公司带来什么东西,成年人的社会没有白嫖,你要想着你能为公司输出什么价值

注:我不想断人财路,请关注覃超获取更多职场以及技术上的知识

现leader

目前在字节跳动的leader,在“如何做一个职场人”方面,他带给我的持续影响是最大的。

  • 做事情,要有边界感,但始终要抱着开放合作的心态来做事情
  • 工作重要,但是把自己的工作show出来更重要。工作的能力很多人都具有,但是show出来的能力并不是每个人都具有的。
    • show自己的工作时,需要考虑自己的目标和受众。
  • 小进展也是进展,不要总想着万事俱备以后才开始工作,很多大的项目都是从一个POC开始的。开始做是最重要的。
  • 做事情要有结论,行或者不行,为什么不行
  • 要勇敢say no
  • 要努力成为问题的终结者
  • 每天给自己一些时间,理理思路,写写文档,画画思维导图,反思下自己目前的工作,是不是最重要的。就是要及时跳出来思考进行自我反思
  • plan -> do -> check -> action
  • 随着能力的提升,自我时间管理的能力也要及时跟上
  • 不要限制于边界,要敢于打破边界。
  • 在基础技术领域,要做有深度的事情
  • “互联网公司,年轻人,干就完了,大胆去想,努力去做,缺啥少啥及时sync”。
  • 要懂得欣赏身边的同事
  • 要勇敢去尝试,失败经验也是重要的过程资产

zhenyuan

zhenyuan是字节的高层领导,公司内部有过一次分享,zhenyuan的分享总之一句话,“成长是自己的事情,其它的都是资源”。

其它

第一个是张强分享的内容,忘记出处了(脉脉?)。虽然我还没有做到专精,编译领域的渣渣,但是编译这个圈子很容易陷入孤芳自赏,我就认识很多这样的人,认为自己才是最牛逼的,反而丧失了最基本的沟通能力。懂的这个道理的人肯定是很多的,可惜当落在自己身上时,还是会只缘身在此山中的。

注:如有侵权删除

 

第二个需要分享的林正刚在领英上的分享,疲于奔命也是一种舒适区,忙不一定等于有效, 在字节这种互联网公司中,自己每天都是很忙的,“忙”会给人一种安全感,但它也是一种舒适区。有理智的主动的做事情,而不是被动的疲于奔命无方向感的忙。例如经典三问:

  • 你正在做什么?
  • 为什么要做这个?
  • 这是你当前最重要的吗?

第三个需要分享的是“老蒋巨靠谱”的分享,不要在碎片化的时间去做认知层次的思考,在一段连续的长时间内做认知层次的思考,来重构进你自己的知识结构中。

第四个需要分享的是,在应聘华为的时候,华为leader给我的建议“大部分人都会高估每一天,而低估一年,在新航道好好划水,踏实干好手头的工作。”

自己的思考

不结合自己的现实情况而一味罗列知识点,没有任何意义。要把知识点构建进自己的知识体系中,我在《Some Thoughts》以及《莫居以名》中有过一些自己的思考。

其实字节跳动有字节范儿,这些字节范儿其实都是精炼出来的职场要点,如果感兴趣的可以自己去搜索。除此之外,还有一些其它收获,例如拓宽了自己的技术视野。但是没有职场上的收获的来的多,这里就不罗列了。

 

未达成的事情肯定有很多,例如挂在博客首页的电影旅行敲代码的To Do List 

三、问题

3.1 时间管理

目前自己最大的问题,就是时间管理。在高速成长的互联网公司,做不完事情是一种常态,任务到来的速度远超于你处理问题的速度,如何进行时间的管理和分配是一个很重要的问题。哪些任务重要?哪些任务次之?哪些任务紧要,如何进行合理的任务分配,就变得非常重要,否在就会陷入林正刚所说的“疲于奔命的舒适区”的问题。

很多人都问过我“为什么不更新博客了?”,我现在太“忙”了,或者自己没有把时间管理好,其实我心里有很多东西想要写出来,写东西已经成为我学习新知识一个很重要的途径,虽然我在公司内部写了很多文档。但是在CSDN上已经没有时间来更新博客了。

同时我很久没有主动学习新的知识,读新的书,上coursera的课等等了。

3.2 技术路线

在字节也面试了很多人,面试很多人以后,就会思考我如果去面试,工作三年半的我有什么“原能力”,我怎么说服别人聘用我,我出去混饭吃的看家本领是什么?我既不是编译器专家,也不是代码分析专家,C++也是半吊子,我的元能力是什么?

虽然我不想把学习技术当做一个混饭吃的手艺,但这就是事实。自己能够养活自己,才能去学习自己想要了解的知识,还好我本人很享受学习新东西的过程。

我现在接触过的技术有

  • 编译及工具链
    • 编译优化
      • 编译后端
    • linker
    • debugger
    • 数据流分析
    • clang static analyzer
  • 编程语言
    • C++
      • C++实现
      • C++代码安全规范
    • golang的代码搜索
      • golang AST,gopls
  • 体系结构
    • CPU微架构
    • x86

3.3 如何认定自己现在的状态

在面试的时候,一个特别资深的面试官给一个候选人的评价是“他的状态不太对,如果有一个人好好带一下,会好很多”,看到这句话,瞬间联想到自己。自己也算是对技术有追求的人,可惜自己当前的状态是不是对的呢?没找到合适的mentor,这个问题只能留到半年后回答了。

 

另外如何看待王垠的《微软感受》?这篇文章也是常读常新,共勉,或许我现在“就处于发现问题或者给自己定义问题,然后解决问题的阶段了吧”!

一方面,你要选择正确的 direction 就需要收集很多信息,例如公司未来计划是什么,重点会在哪方面投入,近期最大的障碍会是什么。这些信息都在不同的人手上,你需要很多的沟通才能收集回来。另一方面,一个人的 technical 再怎么厉害也是有上限的,你要你的输出程指数级增长,唯一的办法就是借助别人的 technical 能力帮你解决部分你的问题,否则你达到自己的上限了就上不去了
 

对于科技公司来说,级别增长对于输出的要求都是指数级增长的,线性增长是没办法帮你晋升的,只能拿更多的奖金。作为 senior,输出至少要相当于几个 junior,而且最好能做一些几个 junior 各自为政做不到的事情。前者估计王垠可以做到,其它 junior 修改几天才能完美的代码他一天就写出来完美的版本。后者他可能就做不到了,因为 junior 需要别人给他们定义问题,需要别人告诉他怎样成长,而我看不出来王垠有这种能力。(如果他有这种能力的话,他在博客上抱怨的问题应该是不一样的。他应该抱怨级别比他低的人不理解他设定的目标,或者是有意愿但没能力对他的目标作出贡献。)

从 senior 到 principal 或 staff 的过程也是类似的,你的输出至少是一个顶几个,而且最好能做到几个低一级的人各自为政做不了的事情。这时候 direction 和 people 就会显得越来越重要,因为你要说服别人各自带领自己的团队单干效果不如多个团队分工合作完成你的目标好,那首先你要有个好目标,其次你要能说服人。王垠觉得自己应该是 principal,但他估计从来没有意识到这个问题。如果一个 principal 要有能力帮助几个 senior,让他们做得比各自单干要更好,那作为 principal 的王垠要解决什么问题呢?(如果他真的有思考过和解决过这样的问题,从他的博客是能看得出来的。没有就是没有,这没办法装。)

回到最初提问者的问题上来,其实很多中国人晋升的瓶颈真的不在 technical 上面,但 technical 在优化下去对全局的贡献不大。你需要意识到自己当前的瓶颈在哪里,是什么阻碍了你的输出指数级上升,然后专注于解决这些障碍。还是回到上面所说的,不要等着别人告诉你你的问题在哪里,你要在千千万万的问题里面找出来你身上的什么问题如果解决了你能更快地成长


作者:知乎用户
链接:https://www.zhihu.com/question/50539172/answer/121771903
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页