写在前面
进击的叻叻是小灰的一位朋友,本文整理了他今年9月返校进行校友职场经验分享的内容,从职业选择、职业发展、工作体验和职业认知四个方面,分享自己微软八年职业生涯的经历和感悟。
这篇文章是对当时校友职场经验分享会内容的精炼和补充,一来更符合书面表达,二来适合更广泛的人群。
后文中的“我”不是小灰,而指这位朋友。
简要自我介绍
我本硕就读于北邮,研究生毕业于网络技术研究院交换与智能控制研究中心。毕业后一直工作于微软STCA(互联网亚洲工程院),先后从事Bing、Cortana和Microsoft Search产品相关研发工作,目前在MSAI部门任高级软件工程师。
Microsoft Search, Assistant and Intelligence (MSAI) brings together multiple areas of research to innovate in the products that millions of people use everyday. We power features in Outlook, Teams, Word, Sharepoint, Bing, Windows and others.
https://www.microsoft.com/en-us/research/group/msai/
讲什么?
主要讲四部分内容:
职业选择:现在还值得加入微软等IT外企吗?
职业发展:如何进行良好的职业规划?
工作体验:在外企英语和文化对日常工作有多大的影响?
职业认知:如何在职场里缓解焦虑,保持清醒认知?
这些主题是我从提前收集到的学生问题里提取出来的,我认为它们也是应届毕业生以及步入职场后的人所关心的主题。
其实还有一类问题学生们比较关心,即求职和面试准备。虽然我毕业后第一次回校做分享的就是求职经验,但是现在的我再介绍这部分内容很可能过时了。建议你们了解近1-2年的求职面试经验分享。
职业选择
现在还值得加入微软等IT外企吗?
也许我的职业经历已经VWYF(Vote With Your Feet)给出了答案,至少对于微软而言,否则我也不会一直在微软工作到现在。之前我回答过“2021 年的微软,是否还值得加入?
如果要一概而论地评价,我认为现在还是值得加入目前蓬勃发展的IT外企的,能满足个人短期和长期的职业发展。
首先,从短期发展看,IT外企依旧是一个稳健的职业选择。
在IT外企,我们容易寻求一个稳健且综合的个人职业发展,因为通常它们有较良好完备的职业发展路径、相信理性且人性化的管理、强调多元化与多样性文化、注重工作生活平衡的自主权等良好的制度和文化。而且,在IT外企里个人发展空间和速度并不比国内互联网大厂差多少。注意,在任何大企业里,晋升的真相总是残酷的:一小部分人幸运,一大部分人一般和一小部分人不幸。在同一档次的不同企业里,相同发展状况的人之间差距并不明显。别幻想哪里存在普天同庆的情况。
近年来IT外企越来越重视对中国研发团队的投入。许多发展趋势良好的IT外企都在国内建立研发部门甚至不断加大投入,一来为了人才,二来为了国内市场。我觉得目前人才因素重于市场因素。外企在国内招人,首先是肯定是为了减少成本,毕竟国内的人力成本还是比美国等发达国家要低;其次,国内研发人员的能力和成绩是持续被认可的,因此即使人力成本逐年上升,许多外企依旧持续加大投入,甚至扩大团队规模,而不是简单转移到成本更低的地区。随着团队的壮大,职业发展空间自然会更大,比如微软中国,从我入职到现在研发人员规模已经大了一倍不止,整体职级结构持续良好向上发展,国内职级天花板抬到了CVP。注意,要持续获得投入离不开实实在在的成绩,毕竟企业都是商业利益驱动的,不分国外的企业还是国内的企业。
外企需要在中国投资,而我国的全面发展同样希望获得致力于国际化的优秀外资的助力,这符合我国全面提高对外开放水平的基本战略之一——“引进来。因此,在外企工作是很正常的职业选择,同样享有作为劳动者的合法权益。
其次,从长期发展看,在IT外企培养的国际化职场能力能够迎合IT行业未来的发展机遇。
如果坚信全球化/国际化是人类社会发展的必然趋势而且技术创新是推动此进程的关键力量,那么在优秀的IT外企能够让自己走在这个历史潮流的前沿,哪怕谈不上影响,至少可以更近距离地观察、感受和学习。
同时,我国优秀IT企业甚至整个行业未来会越来越需要国际化职场人才。我国全面提高对外开放水平的另一个基本战略是“走出去”。虽然国内IT企业出海依旧困难重重,但我们已经看到好的苗头,比如TikTok,我坚信未来能成功走出去的优秀产品会越来越多。那个时候国内IT行业会越来越需要具备国际化职业视野和能力的技术及管理人员。选择IT外企作为职业起点,但终点不必是IT外企。
如何做出适合自己的职业选择?
上面我简单讲了一下加入IT外企有益的一面,但这些只是我个人的想法,事物总有两面性,有的优点对于其他人可能是缺点。记得,职业选择是个人选择,没有对于所有人都成立的最优选项。每一个人追求的职业和生活不同,每一个企业能提供的职业发展条件不尽相同,我们要做的是根据自己情况,扬长避短,做出适合自己的职业选择。
以下我从选择行为的时间线谈谈自己对职业选择的一些看法。
首先,在选择之前,具备选择权是最重要的事情。
没有有效选项的选择题并不成立。我们不必为了将来可能的选项而过虑,应该将时间和精力集中在学习知识和培养能力上,有了选项再去考虑选择问题。当我们面试拿到了offer,我们也才真正了解选项的细节。提前发挥想象力多是徒增烦恼的行为。
其次,在选择时,保持良好的选择心态,了解自己想要什么,选项能给什么,然后抓住主要矛盾。
人生的选择题都如「帕拉图摘麦穗问题」:走在一片麦田里摘最大的麦穗,只能往前走,不准后退,只能摘一次。虽然在职业选择中我们大概率不会像柏拉图那样选择困难到空手而归,我们总会选择一个,但面临的选择挑战是类似的:我们只能看到身边触手可及的麦穗,却不知道是做出选择还是期待前方能摘到更大的。有没有确保能摘到最大麦穗的策略?我不知道,所以只能选择一颗自己能接受的,同时坚信人生未来还会不断进入麦田,而下次会摘到更大的麦穗。
判断选项是否适合自己,先要了解我们自己想要什么以及选项能给什么。在了解自己想要什么方面,绝大多数人都容易直接列举很多因素,比如薪酬、发展空间(个人、部门、企业、行业)、工作地点、社会地位、确定性、自主、公正平等、人际网络,等等。
然而,通常offer给不出这么多有效信息。除了薪酬和工作地点,其他都存在较大的不确定性,比如入职后的项目工作,未来团队和部门的发展情况,工作氛围等等,校招统招下很多人甚至不清楚自己会进入什么部门(同一家企业,不同部门不同团队不同老板情况都可能差别很大)。虽然我们可以通过师兄师姐甚至网络上陌生人的分享了解一些侧面,但真实性难以保证。实习会帮助我们了解一些,但也就冰山一角。
因此,我们要懂得在信息不充足的情况下抓住主要矛盾从而做出选择;当初我选择加入微软,很大方面是因为实习体验良好(工作有挑战性,和周围人相处愉快,相信公司和团队会向上发展),其次离对象工作地点近,再次薪酬待遇和发展空间尚可。
再次,在选择之后,要明白这只是收获的开始而不是结束。
选择了一份职业,就像选择在一个地方播下了果树的种子。土壤和气候固然重要,但是要收获甜美的果实始终离不开辛勤劳动。而且,通常一份高薪酬好前途的工作经营的难度也不会小。别相信获得一份好工作后就能选择不努力甚至躺平而职业生涯还能自然而然地往前发展。
我们始终要注重能力的提升,不管是为了选择一个适合自己的职业,还是为了在职业生涯不断前进。我选择职业的时候更看重工作体验,因为有一个好的心情更有机会做出好的工作。
分享会时有提问,“我还会不会在微软待下一个8年?怎么看待跳槽?”
我不确定还会不会待下一个8年,至少我不会以此作为目标,我一直留在微软主要是因为还能持续有更大的挑战,以提升目标的职业能力。
关于跳槽,我认为跳槽时要考虑的内容和上面说职业选择要考虑的内容差不多,要额外补充的想法是:跳槽应该是一个从白盒去到黑盒的过程;白盒表示我们理应能看清未来的发展可能性,黑盒反之;我们要考虑有哪些是白盒给不了我们而我们想要的,而黑盒是不是能提供;如果黑盒可以提供,选择黑盒后能接受的最坏情况是什么,问自己是否值得冒这个风险。
职业发展
在介绍软件工程师的职业能力模型之前,我想先探讨另一个另一个问题:
不了解系统的职业能力模型,不做职业生涯规划,我们的职业发展真的会受到阻碍吗?
幸运的是,通常这不怎么影响我们的职业发展,尤其在职业早期(前5年)。
这些年来IT行业仍然在不断快速发展,产品、商业模式和技术的不断演进给我们带来了足够多的挑战,迫使我们不断提高自己的技术能力和职业能力,以取得更有业务影响力的绩效,推动我们职业生涯道路上的前行。
哪怕只关注当下,走好一步再看下一步,只要保持砥砺前行,也能拥有良好的职业发展。也许选择加入大厂在这方面有较大的优势,因为总有经理(manager)甚至导师(mentor)能给出一些经验性的建议和指导。
然而,这样做有明显的弊端。长时间缺乏系统化的角度观察和调整个人职业生涯发展,容易遗失对职业成长的掌控感,不容易经受逆境的考验,遇到不确定性更容易迷茫,找不到长远的职业定位,难以根据当前工作状况、能力状况和职业目标制定具体可执行可衡量的计划。
因此,我认为我们始终需要树立管理职业生涯的意识,系统化地思考和规划自己的职业能力发展。
如何进行系统性的职业发展规划?
现在我们并不缺乏足够的理论指导,因为书籍和网络上充斥着各种各样的职业规划方法和模型。无论选择哪一种方法和模型,只要具备「成长性」和「系统性」,并且持续执行、复盘和调整,我不认为结果会有根本性的差距,而且通常最终我们会融合建立适合自己的一套方法论。
下面是我结合自己工作中的实践思考整理的软件工程师职业能力发展模型。
左边的圆形描述的是系统化的能力模型,从内到外分别是核心能力、职业能力和岗位关键结果。越往内,越是通用;越往外,越能有效表示职业价值。每一个能力在不同的职业阶段会有不同的要求。
右边向上的箭头描述软件工程师的职业路径,从初级工程师、中级工程师、高级工程师、主管或高级专家等。越是往后,所承担或要求的业务影响力越大。
目前各大公司都通过职级描述了各个岗位的职业路径。软件研发工程师通常都需要经历从初级中级高级到更高职级的职业发展路径,虽然各大公司对其定义不尽相同,但大致如下:
初级工程师,作为团队或项目的萌新成员,基本职责是良好地执行交代的具体设计与实现任务,或者能够如期完成可独立设计及实现的业务功能。
中级工程师,作为团队或项目的骨干成员,需要有能力端到端(从头到尾地)地主导涉及多人协作的业务功能的交付。
高级工程师,作为团队或项目的专家,需要有能力端到端负责特定业务领域的项目交付,良好地完成跨团队及团队内的协作。
主管/高级专家,则负责更高层次的业务领域或产品的研发,影响的团队规模更大。
……
在不同的职业阶段,能力要求的差异通常不在于具体能力类别的差别,而在于要求的程度不同,因为所承担在业务职责大小不同,比如到了高级工程师后除了自己要具备这些能力还需要辅导和训练项目和团队成员提升能力。
下面简单介绍核心能力、职业能力和关键结果的具体内容。
核心能力指的是能够跨专业领域迁移的通用能力,具体包括:
判断力:能够有效地界定问题,辨别关键问题、利益相关人和结果;能够构建并应用与工作相关的知识库;能够确信地做决策。
结果导向:能够坚持追求积极的结果,用有效的方法解决问题;能够履行承诺并寻求更具挑战性的工作;能够为他人的行为、决定和目标承担责任。
影响力:能够有效地沟通和搭建人际网;能够倾听他人的想法,关注和承认不同的观点,以尊重的方式与他人沟通;能够成功地说服和影响他人;
协作:能够推动团队、部门或跨组织边界的团队合作;能够整合资源,共同努力实现团队、部门以及公司的目标。
适应力:能够表现出好奇心并积极地探索各种选择;能够快速有效地响应需求和环境的变化,在不明朗的场景下有效地发挥作用;能够在压力下保持着有建设性的态度。
时间管理:能够在有限的工作时间里有效地完成更多高优先级的任务。
职业能力指的是在软件工程领域里的通用能力,具体包括:
组织领导力:能够在团队和组织内创建清晰的目标,确认彼此有一致的理解,定义行动计划;能够激发团队和组织成员的活力、乐观心态和创造力,创造良好的环境,促成团队的成长;能够帮助团队和组织交付成功,推动人们喜爱的创新,寻求解决方案不设置边界,坚持不懈地追寻正确的结果。
技术卓越:能够展示技术深度、解决问题的能力,适应能力和好奇心;能够将持续学习应用于技术挑战中;能够积极寻求新的、困难的挑战,去测试和应用新的技术成果。
端到端创新:能够结合客户关注、创新和端到端思维,交付具备产品完整性的创新成果;能够坚持使用系统或工具来产生可行的想法;能够裂解产品或服务生命周期,主动管理风险,并对现有风险管理流程提出改进建议。
客户关注:能够预见客户需求,主动满足并超越客户期望;能够认识到客户想要解决的问题,并创造或促进产品和服务的创造,以满足客户的需求。
计划、组织及管理:能够为单独的项目和程序的实施创建并推动计划能够通过有效的沟通、度量、组织和领导力,推动项目相关利益人之间的协调一致。
高管成熟度:能够在压力下有效地管理自我和人际关系;能够进行规模化的领导,并通过他人推动领导力议程;能够在不同的场景适宜地应用不同的管理方法。
关键结果指的是在软件工程师岗位里需要交付的关键结果,具体包括:
产品和技术的设计及实现:能够构建正确的产品和服务以满足客户预期的价值和必需的商业目标;能够数据驱动地洞察需求并结合对全局商业目标的理解去做出决策;能够开发高质量的代码,满足技术需求,并满足期望的ROI(投资回报率),比如扩展性、全球性交付和在分布式系统、监控、可服务性、调试和维护上的实现;;能够运用技术上的软件研发技能去鉴别问题和倡导产品或服务设计的改善。
卓有成效的团队:能够在团队环境中采取建设性的行动, 以提高整个团队的效率、影响力和士气;能够主动跨越团队、产品、服务或平台边界工作, 以共享信息和技术, 并确保对等团队目标保持一致;能够在适当的情况下构建团队;能够辅导他人, 主动向他人寻求辅导。
质量工程生命周期:创作和验证高效的(低时延,高吞吐),稳定的,安全的,可维护的,可扩展的,高性能的,经过良好测试的和可复用的代码以实现产品或服务的客户和业务目标。构建正确的测试和工具去验证代码符合质量目标和服务标准。分析数据并以适当的方式得出结论以确保自己和同伴理解和解决问题。确保在整个产品或服务的生命周期内保持质量。使用、定义和改进编码和测试实践、流程、工具、基础设施和标准,为微软和客户提供预期的产品或服务结果,提高效率。
产品和服务的所有权:能够一贯和强烈地展示了个人对整个产品或服务以及用户体验的质量和完整性的责任感;能够保持自豪感和工艺感, 使产品具有美感和技术价值。
注意,在职业发展中,我们大可不必做到面面俱到,完善上述所有能力。
通常我们只需要重点了解自身情况,以及影响自己进入下一个职业台阶所需要的具体能力及要求,找到冲突,衡量差距,然后通过针对性的训练和实践提升所需的能力,按新的要求交付关键结果,以能力提升目标为先,最后无论是耐心等待还是积极争取都能饱满自信。
工作体验
狭义地说,这部分谈论的问题只和外企有关系,而且和日常沟通协作有关,即英语和文化差异对在外企工作甚至外企职业生涯发展的影响。不过,我觉得本质上这都是需要在职业上面对的沟通协作问题,只不过在外企里给做得不好的沟通情况多了两个看似合理的借口。
先说英语。
英语固然重要,毕竟它是在外企里人与人基本的沟通工具。我们内部写邮件用英语,发即时通信消息用英语,和国外同事开会讲话用英语,公司/部门等员工大会讲英语,甚至和国内同事讨论工作也总参杂着英文单词,当初面试微软还幸运遇到不会说中文的面试官。如果说进外企英语不重要不是门槛,那肯定不现实。
然而,英语这个门槛,实际上并没有想象那么高,稍微努努力就可以迈过。相信努力复习考过全国大学英语六级的学生都容易迈过这个门槛。我英语就一般般,考六级花了不少钱;不是考了好几次才过,而是一开始低分过了,之后想着刷分,结果没一次比之前更高分;感觉上天认为我之前过六级太便宜了,冥冥中让我多交了几次钱。
作为过来人,我理解大家对使用英语的不自信,毕竟平时用得少。不过,环境增益的效果远远比我们想象中强大,或者对方对我们的期望并没有我们想象中那么高。
语言就是一个工具,而熟练需要实践的积累。而且,我个人感觉,熟练主要先是练胆,而不是要说得多么标准。只要胆子够大,敢说敢问,便能沟通起来。对方没听懂,自然会问你的。
其实,不止英语,语言沟通这个问题在我们身边也很常见。作为一位从小说粤语的广东人,来北京上大学就是一直没说我的母语。本科毕业后,我一位本科同学和我坦言,当初大一第一次班里自我介绍的时候他就没听懂我说了什么;我微笑回复,我也一样🙂。
而且,很多沟通问题并不是语言问题,而是表达逻辑问题。一般国语表达清晰的人,英语表达一般都不会差,顶多是口音一般和缺乏高级词汇罢了。英语说得好的人,我相信国语表达也会条理清晰。现实中,我们少有刻意提高国语沟通的表达能力,即使啰里啰唆我们也自然认为对方听得“懂”,然而切换成英文后啰里啰唆看似成为比简练精准的更困难的一件事。
从另一个角度,这说明了有效提高表达逻辑能力是学习一门外语的一大好处。讲英语的时候,我们不自然地会刻意锻炼表达的准确性,最好还能少说几个单词。渐渐地,我们国语的表达逻辑也会改善的(虽然口音依旧)。
接着,说说文化差异的影响。
简单说,相比英语,文化差异问题通常对我们日常沟通影响更小。走国际化道路的IT外企都无比重视「多元化与包容性」(D&I,Diversity and Inclusion)文化。它们需要招聘来自不同国家及地区的员工,自然需要尊重不同的文化。因此,加入这些外企并不代表要放弃原来的文化或融入欧美文化,理解和尊重不同的文化可看作国际化职场文化的基本原则。
目前D&I文化主要关注平等。国外重心在种族平等。我国在这方面做得很好,因此重心在于性别平等,即男女平等。微软中国,作为女性友好职场,有不少针对女性员工的特别福利,比如女性日、针对女性员工的辅导项目,等等。男性员工6周的陪产假,很大程度也是为了关爱女性。
D&I文化有更广泛性的内涵,我认为其核心在于理解和尊重彼此的“不一样”。比如,大家能理解各自生活节奏不相同,因此不会硬性要求大家固定上下班时间。有的人习惯早出早归,有的喜欢晚点来晚点走,有的大早上要开会但会灵活安排白天的时间比如健身。看到晚上在公司工作的同事不需要感受到“内卷”的压力,一般有这种感觉的多是刚从外面社招进来的人。
注意,看起来十分美好的D&I文化,适应起来通常要比想象中困难。再以灵活安排上班时间为例子,这需要个人拥有较强的时间管理能力,否则你可能每天要比955花出更多的工作时间,甚至甚于995。去年受疫情影响,全球微软员工都被迫在家办公了很长一段时间;公司后来做了一个关于在家办公工作效率的问卷调查,其中最多人抱怨最多的一项是“感觉工作时间比过去更长了”,因为在家办公很难控制工作和生活的边界,感觉随时随地能工作。
不清楚是否有人担心我们国人并不容易适应D&I文化,我认为实际上我们更容易适应,至少在包容性上。或许我们在表现个性方面尚待提高,毕竟从小的教育告诉我们“趋同”更安全,应该营造“和谐”的氛围。我们需要适当锻炼Speak Up的能力,同时鼓励他人Speak Up。也许这对于更重视个性的年轻一代不再是问题。
当沟通协作出现了问题,要判断这是否真的源于语言障碍或者文化差异,一个简单的方法是去将对方设想成一位中国人,他说着某种你太不熟悉的方言,或者来自你不熟悉的民族,然后思考沟通问题是否依旧。也许你会发现问题并不在于语言障碍或文化差异,而通常在于沟通的耐心以及理解对方的意愿。
职业认知
如何缓解焦虑,保持清醒?
我发现有的学生有些焦虑,因为收集的问题已经有考虑35岁危机了。我今年刚过34岁生日,依然觉得自己的职业生涯很漫长。但我多少能理解现在很多人焦虑的心情,如果他/她们日常只从网络和书本上了解职场情况的话。
在此,我分享缓解焦虑,保持清醒的四个小建议:
避免幸存者偏差。
缩小知行差距(知道和做到的差距)。
懂得分辨观点和事实。
锻炼端到端能力。
第一,要避免幸存者偏差。
在第二次世界大战中,美国军方在研究如何加强飞机防护降低被枪炮击落几率。从联军的轰炸机遭受攻击后返回营地的轰炸机数据,发现机翼是最容易被击中的位置,机尾则是最少被击中的位置军方认为“应该加强机翼的防护”因为被击中次数最多,而参与此次方案的一位统计学教授认为“应该强化机尾的防护”,因为机尾被击中的飞机很可能都没飞回来。事实证明,强化机尾防护是正确的。这里军方犯的错误便是幸存者偏差。
现在网络上大量信息都存在幸存者偏差,比如职场类匿名社交应用脉脉里的言论,以及一些贩卖焦虑的网络文章。也许有些例子是真实的,但别轻易认为这些例子具备一般性。
如果真的想了解一般性,至少要从身边认识的人那边多打听些消息。这总比网络上道听途说的要更平常些。
第二,要缩小知行差距(Knowing-Doing-Gaps)。
下图描述了三种知行差距:
GAP A告诉我们“做到的”总会比“知道的”少。
GAP B告诉我们“做到”总比“知道”在时间上要晚。
GAP C告诉我们“知道的”总比所有的信息要少。
source: https://www.researchgate.net/publication/335143300_From_Work_Ability_Research_to_Implementation
这幅图给了我们一些启示,帮助我们行动得更早,做到得更多:
首先,要明白关注于缩小GAP C(获取更多信息)并不能直接缩小GAP A(做更多)和GAP B(更早做)。常见的一个误区是认为自己要知道得够多才能行动起来,实际上这可能是拖延行动的借口。选择的差异通常并没有想象中那么巨大,差距总源于执行。对于一位刚入门编程的学生,选择谭浩强老师的《C语言程序设计》还是国外经典著作《The C Programming Language》(中文版是机械工业出版《C程序设计语言》),只要认真学习实操,结果不会有太大的差距的。
其次,要关注于缩短GAP A和GAP B,简单说即做到“知行合一”。这并没有什么深奥的新智慧,中国古人早已言简意赅地告诉我们怎么做到这一点——学以致用,用以促学,学用相长。要将“知道做到”看作一个螺旋式上升的过程,我们要加速行动,多进行小迭代,理论要联系实际,以实践去推动学习,使理论知识和实践能力相辅相成地得到提升。
第三,要懂得分辨观点和事实。
现在是一个信息过剩的时代,信息的生存、传播、接受和处理超过了人们的实际需求和能力,我们容易缺乏深入地思考,进而混淆了观点和事实的界线。在接收新信息时保持清醒的头脑,我们需要时刻向自己提问——“这是一个事实还是一个观点?”。
我们会发现,绝大多数信息都是观点而不是事实。这并不是一个问题,而是客观合理的现象。我们要避免的是误将观点看作事实,尤其是下面几种情况:
将个例看当常态。“工作几年便年薪百万”,“学了XX技术就拿到年薪60万的offer”,“35岁被裁员找不到工作”,这样的案例肯定存在,但是不是常态呢?是不是符合你身边人的情况呢?希望你想到了之前提到的“幸存者偏差”。
轻信统计数据,数学模型等表示方式。比如平均数据,我们不知道它使用的是算术平均数还是中位数,或者其他,甚至我们也不清楚样本集是否足够多且均匀;一个数值增加一两位小数位会显得更可信;加一个四象限图会使得一些观点更像“知识”;等等。注意,即使这真的是统计上的真实数据表明这是大概率事件,这对于个人也未必成立。
认为真情实感便是事实。暂且不考虑判断是否出自真情实感,但真情实感的内容确实容易让人相信,并认为是事情的全貌。
片面的事实。常见于截取照片、文字的局部,以断章取义。
这里并不是说我们不该相信任何观点。我们可以捍卫自己和他人的观点,而是不能盲目地认为我们相信并捍卫的便是事实,更不能强迫其他人接受这是事实。
注意,我这篇文章的绝大多数内容都是我的观点。
第四,从三个维度(深度、广度和进度)锻炼端到端能力。
端到端能力,在此说的是从头到尾完成一个项目的能力。这里的项目至少要是以月为单位的事情。当我们能完成几件这样的事情,我们能增加自信,自然不容易感觉到焦虑。焦虑感,很多时候就是觉得自己做不成一件事。
从我这些年面试的经验,尤其是校招面试,端到端能力是一个重要的分水岭。相信现在绝大多数人都知道求职面试要背八股、刷算法题,然而通常面试最重要的前10-15分钟里便定了面试结果的基调,其中重要的一环就是通过项目经历考察端到端能力,即对一个项目或具体工作讲清楚“为什么做”,“综合过去和其他权威经验有什么设计方案而最终为什么采取这个设计”,“遇到过什么不符合预期的问题以及怎么处理的”,“如何衡量成功以及怎么实现的”,“如果没有某些限制,还能做哪些改进”,等等。
现在我们都清楚简历里的实习经历很重要。实际上,关键的并不是有没有实习经历,而是简历里有内容去给面试官展示端到端能力。这内容还可以是学校的项目,参与的开源项目,甚至你业余捣腾的个人小项目。对于研究生,实验室的项目也是一个好的素材,只要思考好上面列举的问题并真正做好。本科生在这方面倒是吃力些,但也不乏准备充足的例子,比如参加创新项目等。
如何综合性地培养端到端能力?
除了找事情做之外,我觉得还应该重视三个维度能力的锻炼。
思考的深度:要多思考4W1H(Why, What, When, Where, How),比如我上面提到面试项目经历时可能问的问题;停留在听从执行是大忌。
知识的广度:一个人知识的多元化程度,能更透彻地看一个项目,带来更多的可能性;在协作的环境更容易倾听他人,创造清晰的目标和计划;不同领域知识的灵活运用,亦有利于提高创新能力。
项目管理的进度:要端到端完成一个复杂任务,进度的掌控必不可缺;懂得管理进度,才能使我们成为一位有效工作的人,而不是忙碌工作的人。
这里引用了我的研究生导师徐鹏老师在培养研究生上提出的三个维度模型,而上述的具体阐释是我围绕锻炼端到端能力展开的理解。
有学生看到知识的广度有所顾虑,问“很多企业都强调深入钻研技术,如何做好知识的广度?作为技术人,是不是该先尊重技术?知识的广度会影响技术的深度吗?”
这些都是很好的问题,我过去到现在偶尔还会反思这类问题。我讲讲我目前的看法:追求深度和广度通常并不矛盾,懂得相辅相成才是提升正途。
技术或知识的深度固然重要,是作为工程师的立身之本。为了持续地解决工作中面对的越来越困难的问题,我们自然需要不断去提高深度。我们在讨论选择深度还是广度的时候,应该确保在达到必要的深度之后。实际上,在无法称职完成工作之前,我想也没什么人有心思考虑这个问题。
选择深度还是广度通常不矛盾。一部分时间选择深度一部分时间选择广度是很常见的现象。我们在意的是分配比例问题。
优先选择深度还是广度,取决于你当前的成长问题是什么。广度有利于提供更多可能性,比如发挥当前知识深度解决更多领域的问题;追求深度则一般为了解决当前业务领域机遇下更大的技术挑战。
离开实际问题去追求深度通常是盲目低效的。知识的深度反映在解决某系列问题的难度,而不是通用知识的堆积。知道更多并不代表能解决更多问题(参阅“知行差距”部分)。
日常花一些时间积累知识的广度总会是一个有益的事情。广度使人视野开阔,看待工作生活上的事情更加透彻,偶尔还能激发一些灵感,找到更大的技术挑战,进而为进一步追求技术深度找到方向。
写在最后
分享我很喜欢的一句话作为结语,出自《Clean Architecture》。
特此共勉!