如何成为一位优秀的工程师?让这位微软技术大牛告诉你

Posted 程序员小灰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何成为一位优秀的工程师?让这位微软技术大牛告诉你相关的知识,希望对你有一定的参考价值。

本文来自小灰的一位朋友,在微软工作多年,任职Senior Software Engineer。下文中的“我”不是小灰,而是这位朋友。

1. 如何成为一位优秀的工程师


最近听了公司里一位工作十多年的资深工程师的分享会。

主题是How to become a great engineering,如何成为一位优秀的工程师。

主要内容包括两个方面的建议,即分别对职业能力发展和职业生涯发展的5条建议。

在职业能力发展方面,

第一,了解你的驱动力并制定目标。思考自己在意什么想成为什么样的人,设定目标,并保持持续地提升。

第二,安排好工作任务的优先级。能够根据任务的ROI和轻重缓急来优先完成更重要的工作。要事第一。

第三,做好时间管理。合理利用大脑去处理它擅长的思考同时利用工具去帮助完成一些记录工作。注意任务的并发度。懂得预取(Prefetching)。

第四,有清晰且结构化的思考。学习一些成熟的好的思维模式(例如 https://fs.blog/mental-models/)。

第五,持续学习。保持求知若渴的心态,保持阅读学习、探索和分享。

在职业生涯发展方面,

第一,提高工作的可见性(visibility)。我们的工作成果是什么,怎么展示给其他人并帮助到他们,进而获得更大的成功和影响力。

第二,寻求差异化。如何根据自己的特点和优势突出自己,形成自己的差异化优势。

第三,注重细节。把握住从优秀到卓越的细节关键。要主动地而非被动地了解细节。时刻做好准备。

第四,承担风险。做一个工作,当准备好了,也便是晚了。做好失败的准备,且不畏惧失败。好的判断力来源于经验,经验来源于失败的判断。懂得从失败中学习和相信自己的直觉。

第五,投资时间和精力在人际网络和协作上。要懂得通过帮助支持他人和寻求他人帮助支持来获得更大的成功和影响力。

听完分享,虽然谈不上深有启发,但是大多有体会并深以为然。

也许你们会发现,这些并不是针对工程师的特殊建议,而是基本适用于所有职业的通用建议。把主题换成如何成为一个优秀的职场人,上述建议依旧有用。

为什么没有分享一些针对工程师职业的特殊建议?

可能准备工作或刚工作一两年的人更期待听到具体知识和技术学习成长的建议,比如应该学习什么编程语言,怎么高效学习算法与数据结构、应该选择哪一门热门的专业方向,等等。

或者期待听到软件工程师的核心职业能力包含哪些以及它们的成长路线,比如软件技术设计与实现、工程质量和生命周期管理、技术优势(techinical excellence)、适应性、团队及跨团队协作、结果导向、判断力、组织领导力,等等。

虽然我并不知道那位同事的想法,但我觉得这和从业经验有关。

我们每天自底向上地完成各项技术工作,然后某一天回顾过去进行自顶向下的观察思考。工作时间越长,经历的技术工作越多,所总结的经验建议越是和具体技术无关而和一般能力相关,越会感觉成为一位优秀的工程师和成为一位优秀的社会人并没有本质区别。

这并不是说学习和提升具体的技术知识和应用对工程师的职业发展作用不大。技术能力依旧是工程师立身之本。然而,从长期发展看或从成长型思维看,工程师技术能力的差异主要源于通用能力之间的差异。

2. 关注关键的业务场景


前段时间在看四月份部门EVP的月会录像,里面有一个案例分享让我印象深刻。

这是一个反面的案例。一位大客户有一个高频协作的文档的更新因故丢失了,里面包含十多人在近数日里的内容更新。

很遗憾,这最终无法恢复了。

从全局上看,服务可靠性一直保持良好。再好的服务也无法确保100%不出问题。然而,这类问题可能会对客户造成巨大的影响,进而影响客户对公司的信任。这对于2B产品服务尤为重要。

EVP最后提出,我们应该针对一些关键的高强度(high-intensity)业务场景制定可靠性指标,并确保其服务等级。

这是一个非常好的洞察。当我们为所负责的服务制定可靠性指标的时候,我们应该深入理解业务并对其中的关键业务场景监控可靠性指标,而不能仅仅满足于监控着整体的可靠性。也许有些占比低的业务场景能造成的影响远比其他业务场景要严重得多。

我认为,这里有两点关键。

第一,要能够深入了解用户在使用业务过程里的关键行为模式。这是一个大前提。2B产品服务在这一方面还是面临很大的挑战,因为要满足合规要求能利用的企业客户侧的服务数据非常有限。

第二,对于坚信要去追求的目标,只有制定了正确的衡量指标,我们才能收获相应的成果。在此引用沈向洋博士的一句话——有检验才有收获 (You get what you measure)

3. 关于mentoring


去年参与了公司内的一个“良师益友”计划——STCA mentoring program for female。这是一个针对L60-62的女性员工的职业辅导活动。为期半年,最近结束了。

有幸成为mentor一员,称得上是最近一年里一次非常宝贵的经历。在和mentee的交流过程中一直觉得受益匪浅。

这是一个非常好且难得的机会,无论对于mentee还是mentor。

虽然微软一直有mentor机制,即会给新入职的员工分配一个mentor以帮助其快速融入公司环境和文化。有的时候manager和mentor会是同一个人,比如当年入职的我。

然而,这个mentor的角色一般在3-6个月之后就默默谈出了。如果对方转项目了或转组了,后来联系也少了。对于近几年我的mantee,虽然我偶尔会提醒如果想偶尔1:1聊聊近况可以约聊,但目前并没有和我约聊的。而我一直认为长期的mentoring关系应该由mantee去主导,因此我也没有更主动地要求保持联系。

我觉得能和一个比自己资深的人保持一个长期的沟通联系是一个非常有益的事情,尤其当对方并不和自己身处一个有利害关系的工作项目中(资历自带的权威性会增加mentoring过程建立信任的难度)。这些年来我一直还保持和自己在Lab One项目里的职业教练(career coach)保持定期的1:1——交流讨论近期工作生活的一些好的和不好的事情以及思考,因此深有体会。

而这次为期半年的导师计划,给了我很多机会去学习如何当一位良师益友,以及实践一些我从职业教练学习和感受到的行为和原则。

结合自己的感受和其他人分享的宝贵经验,简单总结一下成为一位良师益友我个人认为非常关键的三点:

第一,好的开始是建立充分的信任。mentor要花时间和mentee建立平等的信任,彼此清楚各自的角色、责任以及能讨论交流的范围。

第二,要做好coaching的角色。要多去引导mentee思考其提出的问题/主题和相应的解决方案;不能让会话变成mentee问mentor答;要有耐心,不能轻易进行评价或者直接告诉mentor应该怎么做。好为人师,在mentoring里并不是一个好的品质。

第三,注意这肯定需要花许多时间和耐心,不管是建立信任,还是后续的对话。

也许对于我来说,最大的挑战是怎么让自己耐心多引导对方更多地说,而自己沉住气少说话多聆听。当然,有的时候我还是控制不住自己????。

除了公司内的这个mentoring项目,我年初还参与并完成了领英职场导师的活动任务。这类辅导主要是在短时间内答疑解惑。与之类似的还有知乎的付费咨询;年初开通玩玩结果还真有单子;接了三单挣了顿点餐费????。

4. 走出舒适区 vs 打破舒适区


最近听到一个看待舒适区的不错的想法,即我们要打破并扩大自己的舒适区,而不是要离开自己的舒适区。

虽然有点文字游戏的感觉,但是我觉得这两种说法还是带来一些心态上的不同。

为什么要走出舒适区?不是为了让自己不舒服,而是为了自己以后更安稳地舒服。因此,在舒适区并不是一个问题,怎么持续地在舒适区才是。

走出舒适区后的目的地应该是我们希望占领的舒适区。同时,我们也没必要放弃原来的舒适区,更多情况我们只是去打破现在的舒适区,让自己的舒适区覆盖的范围更大更广而已。

这样换个说话,感觉心态会好许多,至少我自己是不太喜欢盲目地苦行。我觉得应该带着攻城略地的心态和策略去发展自己的舒适区。


以上是关于如何成为一位优秀的工程师?让这位微软技术大牛告诉你的主要内容,如果未能解决你的问题,请参考以下文章

如何成为一名优秀的工程师?顶级程序员的5点建议

鹅厂6年在职架构师告诉你如何成为iOS大牛开发者进阶篇

百度陆奇最新内部演讲:如何成为一个优秀的工程师?

如何成为卓越的工程师?腾讯大牛带来这些思考

程序员老司机谈到的一位优秀程序员应该具备的十个优秀的习惯

一位优秀老哥的淘系Java面试经验(总包80W)