Skip to main content

3个国家,毒打8年,我的Tech行业生存感悟...

https://mp.weixin.qq.com/s/WtFtf60U3oMtH7ZGi8SSrg

 

Disclaimer: 没有one size fit all的规律,感悟更是很主观的东西,冒犯之处,见谅。

2015年前赴美读相关专业master,是一个风险小,投资少,周期短,收益大的行为,这里里面的金钱回报,一半是是行业趋势的上升带来的,另一半是心理精神损失费。

说工程师不善于交流已经是上个世纪,一个人可以开发一套系统不需要合作的时代的事了,现在工程师的交流是多样化的,你的每一封邮件,slack信息,文档,注释,PR的review,planing, meeting, 还有peer review,面试,都是在交流。

这种交流各个公司的文化有区别,但大致都是追求简单,直白,严谨,准确,高效,透明,职业,有时候也很伤人,有时候我觉得在这种框架和协议下说的每一句话,都像写遗言一样,让人一直保持警觉,焦虑,甚至恐惧,这一部分钱的,是精神损失费。

任何一个理论,都有一个边界,任何一个方案,都有trade-off,遗憾的是伴随着你整个职业生涯,往往都会有喜欢讨论回字有几种写法的人与你相伴,你会遇到很多人留下PR review,指出问题,不给出建议,让你提交不了,你会遇到你认为很难合作的人,但首先要知道,他首先是个人,其次才是你的同事,他可能只是有很坏的一天。

我听过很多人抱怨没有文档,包括我自己,其实更多的情况是,文档并没有按你的认知水平,和你的接受能力去写,文档的形式也是多样的,不是只有markdown,confluence,代码本身就是文档,口口相传也是一种文档,slack全局搜索,同事, mentor都是文档,只要这个东西存在,你总有办法了解他。只是这个像屎一样的过程,有时候很痛苦。

不要去做任何没有数据支持,没有好的故事的争论,很难去convince别人,你的结论和直觉一定是来自于数据或者经历,而别人再没有看到或者听到这些支持的时候,你很难推销自己的观点。

有些观点用同样的方法,你推销不了,别人说一样的话,就可以,这个东西叫做办公室政治,当你有了这种power以后,尽量不要政治的手段,去convince别人,因为办公室政治本身就是办公室里最大的变量,你一旦习惯了这种方式,当你没有这种力量后,你会到处撞墙。

成长最快的方式是冒险,就像创业可以给你带来更多钱一样,因为它风险太大,你给大公司打工,其实是用预期收入的减少,去对冲了风险。你需要犯错,需要引火上身,需要看到产品出问题,去debug triage,去总结RCA,才能去成长,你如果没有工程上让你遗憾的决定和行为,那么只能说明你冒险还不够多,冒的险还不够大,我很难相信这种人会在巨大压力下,在war room里,可以冷静的解决production 的问题。

当你在这个行业呆了几年,可能已经具备一些管理职能或者属性,就算是IC,也会参与一些决策密度高的工作,这时候一定不要去Micro management,要允许别人犯错,只要你知道底线在哪里,别人也喜欢通过错误去成长,就像你当初一样,你如果不允许别人这么做,你很快就会成为别人讨厌的那种人。

善战者无赫赫之功,很多时候,我们在做的是一个可以automatic的workflow,可以self Sevice 的系统,你看那些自以为ownership很强,只有它可以搞某个service 的人,要么就是它的service做的很差,要么就是他的knowledge share和internal open source做的不够。

很矛盾的一点,也是我最不知道怎么表达的一点,你需要好的peer review ,你需要collaborations, 同事,stack ranking也一定存在的,你的合作者,也是你的竞争者,你怎么让自己做一个没有威胁的人,让自己做一个有用的人,是这个行业要伴随你一生的压力与焦虑,你会发现,5年后,可能你对这个问题,也没有完美的解决方案,但是会更成熟,更坦然了。

公司不是你家,尽管有的公司很promote,或者去sell family这种感觉,甚至给出了很人性化的福利,这是为了破冰也好,为了润滑也好,归根结底是让你可以创造出更多的价值回报,对你个人的成功,幸福,热情的关心和投资,都是这个原因。

如果你burn out了,高血压了,失眠了,焦虑了,恐惧了,抑郁了,都很正常,你看那些心里医生的客户分布就知道,这都属于这个行业里的工伤,很遗憾,在有些法律框架下,这种工伤,员工没有得到很好的保护,而另一些法律下,这样的保护又太容易被滥用。

总而言之,你要打一场持久战,play for the long game,身体是最大的本钱,时间是最好朋友,会给你最大的回报。

8年生存感悟,2年是读master,6年是工作。三个国家分别是,中国,美国,荷兰,中国离开太久了,很多信息都滞后了,荷兰刚来不久,感受还不成熟,欢迎交流。

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...