仅仅是个人的一些的体会和感受,以及提醒未来的自己。
刚来到波士顿地区是 22 年 1 月,正值寒冬和大雪。上一次见到雪可能还是在三年前,所以非常激动。对波士顿这个城市也十分喜欢,尤其是冬天的波士顿,灵魂契合般的喜欢。原来每个城市都有自己的气质,能和人的气质产生共鸣。
本当に
好き
2 月 15 号开始工作。记得刚进组时的兴奋与热情,想着要做出什么 distruptive technology,成为组里的中流砥柱(笑)。这种蜜月期大概半年多就结束了:现实比想象要萧条地多 — 制度和环境的限制,以及自己人际交往还有技术能力上的欠缺。也和一些真正大厂的员工交流过,好像大多数人也都在拧螺丝,并且容易温水煮青蛙,被周围的环境麻痹,慢慢丧失自我提升的兴趣,我觉得这是很恐怖的。
还记得在找工作时问过一个大厂程序员前辈,做程序员这份工作最重要的技能是什么,他跟我说:
当时觉得答非所问,现在就完全理解了。技术只是手段,重要的是如何为客户和公司创造价值,而这需要对产品本身的热爱和重视。在职场中最关键的不是能力,而是心态。不论是对于产品本身还是处于这个环境,总会有不喜欢的人或事,并且短时间内无法改变。现在向前回顾,意识到了几点应该重视和提升的地方:
沟通能力和情商十分重要
回过头来看,沟通能力和情商比想象中还要重要。之前以为程序员只要技术能力强就可以,但实际上交流至少占了日常工作的50%。在之前的 Team 中每轮代码提交前都要有 Solution Review,之后在实现的过程中可能会遇到各种业务逻辑或者环境上的问题需要找人帮忙解决。这个过程中于技术更重要的是情商和沟通 — 如何请人帮忙而不被反感、怎样针对不同对象有效交流…自己也高估技术在中(大)厂的重要性:当你加入一个组时,组里基本已经有了完善的技术栈,除非是有很明显的缺陷,否则不会有大的改动。很多时候在做的只是用已有的工具完成一些业务需求,要的是需求理解以及合作能力,而不是高超的技术。在中(大)厂中往往都是把每个任务的代码量尽可能地控制到很少,来降低失误的可能性和确保代码库的稳定,这样其实技术上的优势就更难体现。相反,像沟通能力这种底层能力,不管以后在哪里都能运用到,可以预见的是职位越高,和不同人的交流会不可避免地增多。良好的沟通能力能确保你能换位思考和简洁表达,让他人能更好地理解你的观点,在组织里(至少是显得) 更impactful。一些沟通技巧,像幽默与倾听,在熟稔之后对于拉近关系和调节气氛也会很有帮助。
技术上的 Rock Star 还是少数人,可就算技术实力再强,沟通能力差的话也会有明显的木板效应。能把技术用通俗易懂的语言解释给人听是重要的能力,不论是向上管理还是向下管理。
跳槽
对于 Individual Contributor (IC) 来说,专业能力可以分为业务能力和技术能力。技术能力可以自己主动提高,网上的资源像博客、公众号和开源项目都可以学习,但业务能力的提高就不是很容易,因为这需要真实的工作环境和人员配合。如果长期待在一个组里就只能接触同一种业务,除非这个业务是你很感兴趣或者想深耕的,否则业务能力大概率会停滞不前。早期跳槽或者换到感兴趣的组可以接触到不同的业务和技术栈,对于技术在不同领域的应用能有更广泛和深入的了解。
平时看一些 tech blogs 也可以提升一些业务的感觉。很多国内外的大厂都有自己的技术博客:
- 美团技术博客
- 阿里技术博客
- Netflix Tech Blog
- Uber Engineering Blog
- GitHub Blog
- Comprehensive List of Software Engineering Blogs
很多人都说到 x 年限就可以升 senior,时间或许和能力与贡献呈正相关,但主观能动性还是发挥了很大作用。最终看的还是能力和创造的价值,每天精进技术与完善能力的三年和得过且过的三年是不一样的。
可能单从能学到的东西最大化考虑,如果在目前的组里做不到什么核心工作或者没有很明朗的上升通道,大概第一份工作的1 ~ 1.5 年就可以跳一次槽。跳槽的过程中也可以(被迫)学习到很多,比如很多平时接触不到的系统设计的概念。从 job posting 中也能了解到市场对于哪些技能有强烈的需求,使学习有的放矢。就算不是真的想跳槽也可以在平时投递一下岗位,可以更好地感知市场和面试的节奏,同时这也是一个和外界接触的机会,不把自己局限在周围的一亩三分地里。
注重平时的积累
就算工资再高,如果做的不是自己真正感兴趣的东西,那也是用生命的 1/3 去换取金钱。如果不想打一辈子工,那么规划和平时的积累就很重要,要不满足现状,主动去做技术和能力积累,让自己变得值钱。输出是一种很好的学习方式,像做独立开发或者写博客,既可以运用到知识也能帮助到他人。
平时进行积累的话,跳槽也更容易。假如每天刷 3 道 LeetCode 和看三篇 System Design 的博客,应该在面试前就也不会过于焦虑了。
想告诉两年前的自己,以及提醒未来的自己
- 事情大多不会如你所愿,做好调整心态的准备。荣格说:“在某种意义上,生活中的最重大和最重要问题都是无法解决的。我们无法解决它们,只能在成长中超越它们”
- 永远不要在道德和自己的目标上松懈。顺利时不骄傲,遇阻时不消沉,保持一颗平常心
- 要经常思考自己能为他人做什么,而不是自己能得到些什么
- 凡事预则立,不预则废。计划,行动
- 道不会停止,自我的道在你停止前进的那一刻静止,不管已经走了多远。不论在什么位置或者处境,都要不断前进
- 天下大事必作于细,不要放过微小的恶习,每天反省,去除无益多余的习惯和想法,培养有益的习惯以及保护自己的梦想
- 尊重和理解他人。傲慢是最大的罪过
总结
软件工程师比自己想象中需要的能力综合的多的工作。沟通能力很重要,并且越往上走越是如此。对于职业发展需要规划,越早规划越好。同时,职场中的无奈无可避免,要改变环境的话可能需要付出巨大的努力,心态上的宽容和调整会更容易。最后,工作还是要选自己喜欢的,能做自己热爱的事情是一种幸福。
但 MW 的独立办公室是自闭者的天堂