大咖面对面 | 一个技术大佬的自我修养
技术人的成长是一个长期的过程,从一个懵懂的青涩少年,到一个具有一定影响力的技术专家,伴随的是自己能力的提升、认知的升级、影响力的壮大。都说成长没有捷径,但有方法,那这条成长的路,我们要怎么走,才能少走弯路,更快前行呢?
基本素养
根据自己这么多年的亲身经历,以及周围同事的成长路径,我总结了下面六条技术人应当具备的基本素养,作为我们技术之路能够走得更远,走得更顺的基石。
1
长期学习
技术人的底气来自于技术。只有在技术实力上占据了制高点,我们才有自信,而当今设计技术的发展可谓一日千里,各种新技术层出不穷。大的趋势上,区块链热度还没有过去,元宇宙、web3 就已经迅速崛起,紧接着 AIGC 横空出世。到各个细分技术领域上,编程语言不停地更新迭代,带来各种新的特性,不同的语法。先进的框架拥有更出色的性能,更优雅的实现方式,更快的编码效率,或更低的成本,逐渐会取代老旧的技术。只有不断跟上技术的发展,保持对新技术的敏感,技术人才能避免被懂得新技术的人淘汰。
以云计算为例,一开始只是简单地将物理服务器划分为多个虚拟机,很快就扩大到了整个数据中心、计算资源、存储资源、网络等领域,全都可以按需创建和使用,在此基础之上,很快又向平台即服务(PaaS), 软件即服务(SaaS)的方向发展。到现在,FaaS,LCaaS,AIaaS 等各种 XaaS 蓬勃发展,跟上了这一波技术潮流的人,也就容易把握住自己职业发展的机遇,获得更高的成就。
2
Owner 思维
Owner 思维是一种工作态度和精神,它要求我们在工作中具有自主性和责任心,将工作视为自己的事业,积极主动地承担责任和解决问题。这些话经常出现在领导和员工的谈话中,甚至会被误认为是 PUA 的一种方式。但事实上,无论在什么时候,Owner 思维都是最重要的一种职业素养。Owner 思维通常表现在:
主动:无需领导催进度,不用兄弟团队打报告,自我驱动,提前制定好计划,遇到事情立即主动扑上解决。
责任:为自己负责,为团队负责,敢于做决策,敢于背锅,才可能成为团队的主人。
改进:经常反思和修正,持续提高业务输出。
协作:愿意与他人分享信息,协调各方面的工作,以完成团队工作作为最终目标。
有的同学可能会说,我就只是一个做业务需求的小兵,人微言轻,领导让我做什么,我就只能做什么,那我还需要 Owner 意识吗?答案无疑是肯定的。事情再小,一样需要有一个人从头到尾得负责,前期功能细节沟通,中期进度节点同步,后期使用情况跟踪汇报等等。从我这么多年合作过的同事来看,职业发展较好的,往往都是具备 Owner 思维的人,他们从最开始负责一个小需求起家,慢慢到一个应用,一个模块,一个小组,负责的范围越来越大,个人能力也越来越强。
以一个简单的需求 Owner 为例,包含了前后端开发和 QA 等研发角色,产品、视觉、运营等协同角色,还有 DBA,SA 等运维同学。如果是业务模块的 Owner,可以在需求调研和设计阶段就介入,对于需求的合理性、设计的合理性提出自己的意见。
更常见的则是从需求评审阶段开始,产品产出了需求稿,需求 Owner 负责理解消化需求,然后牵头制定需求开发计划,包括技术方案产出节点、联调时间、提测时间、上线时间等,Owner 除了负责自己的研发工作外,还需要在各个环节负责协调和推进,保证需求的按时按质交付。上线也不是一个需求 Owner 的终点,上线之后,还要关注用户的使用情况以及各种反馈,如果出现了线上问题,Owner 还必须能够第一时间站出来,响应并解决。
3
产出/产能平衡
产出是指员工为公司实现的价值,也就是干了多少有意义的活。
产能则是指干活需要具备的能力,包括了员工的技术水平和团队的基建质量。
技术人通常更多追求的是自己技术实力的提高。客观上,跳槽去其他公司进行面试以及本公司内的职业晋升,看重的也是一个人的技术能力。而对于团队来说,产出则是衡量最终绩效的唯一标准。在技术部门,例如中间件开发团队,产能和产出往往相同,这方面矛盾不大。而在业务部门,则会存在短期产出目标和长期产能提升的资源抢占问题。对于技术人来说,要平衡产出/产能矛盾,一方面来自于自己的规划能力,另一方面也需要有这方面的主观能动性。
伊索寓言中,有一个下金蛋的鹅的故事,讲的就是为了快速暴富,杀鹅取卵的故事,为了快速得到产出,进而扼杀产能,这种做法显然不可取。中国古人也说磨刀不误砍柴工,但是,如果我们只磨刀,不砍柴,那团队最终也只能活活饿死,或者团队 leader 会在团队饿死前,先把只会磨刀的开掉。因此,只有把个人利益放在和团队利益相同的方向上,个人也才能更容易取得成功。
为了实现这个平衡,最重要的有两点:
提前做好规划。产能建设是一个长期的过程,提前预留好资源,保证重要的事情在规划里面得到体现。
做好沟通协调。资源投入冲突时,和业务同学(产品,市场,运营等)的协调就显得至关重要,既要保证产能建设不被挤压,也要保持一定的弹性。
4
适度洁癖
自古以来,文人相轻这种现象一直都存在。到了现代,许多程序员看到继承来的代码,往往心底里冒出的第一句话都是:“这写的是什么垃圾”。然而我观察下来,更普遍的一个情况是,大家一边骂着前人,一边继续往上堆着垃圾代码。基本的编码规范其实大家都懂,甚至更高级的设计模式、架构原则等都能信手拈来(推荐阅读 Bob 大叔的《代码整洁之道》)。然而在实践中,很多人只以功能实现,甚至是代码能够正常运行作为目标,不自觉得成了自己讨厌的那个人。
我们这里再列一下代码洁癖带来的好处:
提高代码质量:遵循最佳实践和标准的代码,可以更加健壮、可靠、安全和高效。
易于维护:有洁癖的代码可以更加易于理解和修改,进而降低了代码维护的成本和难度。
改善团队协作:大家遵循一致的代码规范和风格,可以降低沟通成本,提高协作效率和质量。
5
遵守承诺
诚信守诺是做人的一个基本美德,就算强大如暴雪,跳票次数多了,也难免走向衰败。在技术领域也是如此。在一个普通技术人的日常工作中,守诺最重要的就是守好项目进度中的各个关键节点:方案评审、联调、提测、上线等。技术项目的产出通常很难量化,负责技术项目的开发则要向他人充分展示自己项目的实际价值,而不仅仅是按时交付一个勉强可用的版本。遵守承诺可以让你在同事面前树立靠谱的形象,而这个形象也同样价值千金,领导和同事对你的信任感越强,你的项目就越容易得到支持,争取资源时也就更容易。
遵守承诺对人的能力要求非常高,并不仅仅是思想层面,长期通过加班,临时抱佛脚等方式来保证准时提测,按时上线的行为,显然不能长久。我认为,我们必须具备下面这些关键技能:
对工作量的精确评估:与实际工作量偏差越小,后期偏离的可能性就越小。要做到这点,除了丰富经验之外,也有一些常规的思路,比如用结构化的思维方式全面评估项目的技术方案和对外依赖,将大项目拆分为一个个细粒度的小项目甚至小需求点,详细了解项目成员能力以及并发项目等。预留一定风险 buffer 也是常用的手段,不过预留 buffer 的原因一定要对外做好说明。
时间管理:做任何事情,我们通常都推荐前紧后松的节奏,将风险尽量在前期充分暴露。如果同时有多个项目在并行,更要排好任务优先级,合理规划时间资源。
风险识别:无论前期评估多么周密,风险并不能被完全消灭。当出现风险时,一定要尽快评估影响,并在团队内部产出对应的解决方案,然后和所有相干方同步。
6
对生产环境保持敬畏
一栋高楼,无论造型多么巍峨,装饰得多么现代化,如果地基不稳,电路三天两头跳闸,那这个房子也是不会有人去住的。同样的道理,对于互联网的线上服务来说,稳定性也同样是生命线。特别是在 toB 行业,服务的稳定性是客户选择供应商的重要标准之一。
因此,我们在进行任何线上操作时,都需要保持足够的谨慎。俗话说得好,变更是万恶之源,在做变更的时候,务必要充分做好影响评估,包括:
代码重构:前节我们有说需要有代码洁癖,但在对现有代码进行重构时,也要保持足够的克制,有条件的可以直接推倒重来,没条件的则必须保持修改前后业务逻辑的一致性。这类旧代码的重构会有一些固定的思路和范式,读者可以自行去探索。
运维操作:代码上线,配置变更,中间件升级,数据库迁移等等都属于线上运维操作,执行这些操作时,必须给出详细的操作步骤,影响评估,以及回退预案。
技能方向选择
技术栈是技术人需要选择和发展的方向之一,通常分为宽和专两个方向,各有优势。对于业务线上的研发人员来说,更宽的技术视野通常更为重要,可以为解决业务问题带来更多的可能性。而对于技术中间件开发人员来说,专精于一个技术方向则能让他在特定的领域走得更远。
技能方向的选择需要结合自身的职业规划和个人兴趣进行考虑,同时我们要明白,技术栈只是工作技能的其中一种,选择时还要多考虑我们自身的软能力特质,包括性格、思维方式等。
1
复合型人才
复合型人才了解多个技术方向和领域,每个领域不一定做到专家那么极致,但至少也会具备丰富的知识和经验,他们还有一个名称叫做全栈工程师。技能方向随着时代的发展,也会经常出现变化,例如混合开发让移动端向大前端靠拢,Node JS 的出现让前端也慢慢接触后端领域。
俗话说,技多不压身,对于业务线上的研发人员来说,宽技能视野具有以下优势:
业务需求理解更加到位。面向用户端的功能通常都需要多端协同实现,如果对于各端的技术都有较好的理解,在进行方案设计时,可以考虑得更加全面。
更容易换位思考,做好团队协同。技术人员之间的对话通常都是技术性的,当对对方的技术有足够的了解后,与之沟通交流会更加有效,避免出现鸡同鸭讲的局面。
拥有多重技能,可以让我们在业务变化,技术变革时拥有更大的选择空间。面对困难局面时,能够从更多的角度来思考解决方案,从而具备更强的韧性。
由于这些优势,在业务团队中,业务架构师、系统架构师等这类角色通常由复合型人才来担任,他们也通常更有可能成为团队的技术负责人。但除了更深的技能栈外,这些角色通常还要求更多的软性素质,包括:
较强的业务思维,能跳出纯技术的视角,站在业务,站在用户的角度,产出技术方案。
良好的沟通协调能力,作为架构师,对外需要和其他职能部门打交道,对内需要协同各端开发。
2
领域专家
复合型人才通常离业务更近,而领域专家更加喜欢深耕技术。作为涉及技术领域的专家,在工作中通常具有如下的优势:
作为领域专家,拥有比较大的技术影响力,被业内认可和尊重,更能凸显自身的价值。
在一个垂直领域,深耕技术的人通常不会太多,工作的可替代性会非常低,因此比较容易构建自己的技术护城河,在工作选择和职业晋升方面会占据显著优势。
技术领域的革新基本只会由技术专家推动发起,通过技术创新,领域专家可以以降维的方式给上层业务赋能,推动业务的发展。
作为领域专家,主要面对的技术难题的解决,对于软性能力的要求相对会低一些。由于不直接参与业务,业务波动对于自身相对也小一些。
结语
都说成功是百分之一的天赋加上九十九分的努力,对于技术人来说,努力就是不断的提升我们的能力和意识。提升技术实力是大家最看重的,但却是最基础的。要成为一个真正的技术大佬,除了技术之外,思维习惯、影响力建设、稳定性意识等软实力一样都不能少,我们必须在日常工作中有意识的培养这些习惯,让我们的升级打怪之路更加顺畅。
推荐好友活动