ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

技术导师如何培养新人?把“希望你更强”落地的工程方法

技术导师如何培养新人?把“希望你更强”落地的工程方法 “铁虫”两个字在中文社交平台里常被用来形容钢铁侠与蜘蛛侠之间那段关系。很多人真正记住的是托尼对彼得说的那句“我希望你成为比我更好的人”。初看时只把它当作超级英雄电影里的情绪爆点直到自己开始带初级工程师、带实习生才发现这句话其实捅在技术团队最深的疼处我们每天都在布置任务、修改代码、答疑。但很少有导师敢把“我盼着你最终比我更强大”当作一个可执行的工程目标。如果目标是“把任务完成”那安排活就够了。如果目标是“让一个人真正长出来”那必须把这句话从情绪层面翻译成具体行为。问题在于这句话极难落地。难点不在于“教”而在于“你敢不敢让他超过你”以及“你有没有方法和流程去承接这种成长”。下面聊聊我自己的理解和踩坑经验。不灌鸡汤。1. 先说清楚我们带人到底想让他成为什么样的工程师1.1 任务分配器培养不出“更好的人”很多团队带新人第一步就是发任务。今天给他一个小需求明天让他改一个 bug后天让他写一个接口。听起来很充实但本质上只是在消耗新人已有的能力。任务分配只能让一个新手变得熟练不能让他变得厉害。判断一个人是不是在真正培养后辈有一个简单标准如果新人只是把你安排的事情全部做完了他获得了什么如果获得的只是“完成记录”那他不过是在用时间换交付量。真正的培养应该让他在接到一个新问题时开始有自己的判断路径该看哪些日志、该问哪些人、该在什么条件下暂停、该在什么边界上说“我不接这个需求”。这是我和团队在长时间带人之后才意识到的问题。带新人不是教他写代码因为很多新人写代码基础并不差。真正差的是工程判断。而那正是任务列表传不下去的东西。1.2 “更好”不是技术更强是判断权的转移这句台词最容易误导人的地方是把“更好”理解成“技术更资深”。写代码更快、框架更熟、工具更溜。但托尼期待彼得成为的样子显然不是第二个托尼。是彼得自己。把这个逻辑放到工程上可以翻译成一句很白话的话你培养的新人能不能在你不在场、信息不完整、没有标准答案的时候做出一个负责任的技术决策很多高级工程师在培养下属时特别焦虑因为他们把“更好”理解成一种线性比较他是不是比我更会写 SQL是不是比我更懂 Kafka这种比较没有意义因为经历不同。真正的成长不是成为我的竞品而是慢慢拥有自己的技术品味、风险偏好和取舍逻辑。所以带人之前最好先重新定义目标。不然你会陷入一种错误状态把对方当成一个“待优化的代码仓库”试图把他改造成一个低配版的自己。那不是培养是复制。1.3 能力成长需要显性化工程团队里有一个很明显的问题经验丰富的人面对异常情况时很多判断是在潜意识里完成的。他甚至来不及意识到“我刚才这样做是因为曾经踩过坑”。所以新人提问时他说“你试一下重启”“你把日志拉一下”看起来是给了答案其实没有给出判断模型。这个时候就需要把“隐性经验”显性化。导师不只是告诉新人怎么做还要解释我当时看到了什么信号我排除了什么可能我为什么先查这个而不是那个。一个判断是否值得传递有一个很朴素的检查方法——你没有在复盘时把那些“想当然”的细节说出来如果不能说出来新人对你的依赖就永远不会终止。2. 从一句话到动作把“希望你更好”落到日常工作里2.1 任务结束之后请他回答三个问题我最早带人时也犯过“问题解完就散场”的毛病。后来每次任务结束会拉着新人复盘三个问题这个任务里哪一个选择是你最不确定的如果时间重来你会改变哪个关键步骤你希望我在哪个环节不要直接给你答案第三问尤其重要。很多新人一开始根本不知道怎么回答因为他已经习惯了被直接喂答案。有新人说你不告诉我我可能会多花两天时间。这确实但这两天的价值远高于一小时的讲解。因为讲解只能让他理解我的答案试错才能让他长出属于自己的判断。这里要注意不是所有问题都应该让新人踩坑。明显会引起生产事故、数据损坏、客户投诉的低级错误导师必须提前拦。所谓“让他自己试”指的是有边界的试错。要在保证系统稳定和用户体验的前提下把一个足够小的问题完全交给他折腾。2.2 “我做你看你做我看你独立做”的三遍法这是很多团队在用的结对方式但大部分执行得不够彻底。第一遍资深工程师动手让新人坐在旁边看。操作时不能只讲操作要大声讲出每一步背后的判断为什么提交前先跑单测为什么这个字段必须判空为什么不在应用层做并发控制。新人此时的主要任务不是理解每行代码而是理解“一个人在面对不确定性时如何一步步缩小范围”。第二遍新人动手资深工程师在旁边看。这个阶段最难的是管住手。新人操作偏慢、思路偏绕但只要没有破坏系统就让他把错误流程跑完。因为错误的代价此时最低他收获最大。你唯一要做的是在他陷入死胡同且情绪开始低落时提供新的排查线索而不是替他敲键盘。第三遍新人独立完成一个类似任务只能在完成后进行事后评审。评审重点不是代码风格是问他的决策逻辑。如果他能清晰说出“我为什么选择这个方案”那才算真正吸收。这个三遍法真正厉害的地方是它把“希望别人更好”变成一次一次有节奏的责任让渡。每完成一遍新人手里的所有权就大一点。但现实是很多导师在第二步就忍不住夺回键盘。你的经验会想尽办法替你把问题快速解决掉。可那不是培养那是代笔。2.3 代码评审不是纠错是识别“他会怎么做决定”很多团队把代码评审做成了一场警察抓小偷。高级工程师在评论里列出一二三四条这里要改那里有 bug那个命名不行。新人看完之后唯一学到的就是“高级工程师不信任我”。当目标变成“希望你超过我”代码评审的核心就变了。它不再是判断代码是否符合我的习惯而是帮助新人识别自己的决策模式。我看到一次评审里资深工程师写了一条评论“我不确定这里为什么要用双写我猜测是为了兼容旧的消费逻辑但我没看到注释。如果是请补充注释并标注当时讨论的结论。” 这条评论没有让新人觉得被攻击反而让他意识到自己的工作需要让别人可推理。这比一句“这里看不懂改一下”有效很多。给新人做代码评审时尽量把修改类型分清楚。哪些是必须改的例如数据安全问题、明显的逻辑错误哪些是当前技术选型下建议改的哪些其实没有标准答案只是如果换作我我会写得更保守一点。如果所有问题混在一起新人会形成一种错觉代码评审的标准全看导师心情。那不是评审那是服从性测试。3. 从“单点任务”到“独立负责”一条可以复用的培养路径3.1 阶段一小任务加清晰边界先确认输入输出新人进入团队后的前一两周最适合做边界清晰的小任务。比如一个内部工具的页面联调一个告警规则补充一个接口字段透传。任务范围要小到即使做坏了也能快速回滚同时要完整到能让他走一遍需求理解、开发、自测、提交、回归的流程。这个阶段的目标不是快速产出而是让导师看清新人的工作方式他遇到不确定时会先自己查还是直接问他自测到什么程度才会提测他写代码时先考虑数据结构还是先套用习惯模板这些观察会成为后面判断成长节奏的依据。3.2 阶段二让他先写方案再写代码很多新人开发一个需求时第一反应就是打开编辑器。这是一个需要纠正的习惯。到了这个阶段可以要求新人先写一版简短的方案。方案只需要回答四个问题这个需求要解决什么用户问题现有代码里哪些部分是相关链路我打算改造哪几个模块需要别人提供什么资源或权限导师看到方案后不用把方案改得完美而是指出方案里假设不成立的地方。放他去做但要求他完成一段时间后再回头修正方案文档。这个动作的重点是训练“设计思维”。设计不是多高深的东西它只是要求在动手之前先建立对问题的整体猜测。一个工程师能不能独立负责系统关键是看他有没有这个“先思考再动手”的自觉。3.3 阶段三把一个完整模块的所有权交出去交所有权听起来简单做起来很难。大部分团队的问题在于嘴上说“这个模块以后你负责”但实际上仍然事事都来问导师或者导师一旦发现风险就立刻接管。真正把所有权交出去至少要满足三件事新人有权决定模块内部的实现方式只要不改外部约束。新人必须自己处理线上告警和故障导师只做复盘。如果新人做了一个你不太同意的技术选型只要不违反安全底线且能说清楚理由你接受。我见过很多失败案例几乎都是卡在第三点。资深工程师心里有自己的“正确答案”当新人选择另一条路且与自己的经验不一致时资深工程师会非常焦虑。但只要有这条焦虑在“成为更好的他”就是空话。你的经验当然值得被尊重但如果你要对方按你的方式做每一个决定那他永远只是你的延伸。3.4 同步补上文档、复盘和反馈机制光有任务层级还不够。一个新人要成长需要周围有稳定的反馈信号。我不能只会事后通过事故来教他那些才叫不可持续。比较好的做法是每周固定一个短会用来复盘本周遇到的非典型问题。更重要的是导师需要建立一个习惯把“观察到的变化”及时告诉新人。比如“这周你在排查问题时没有再重复问环境部署的事可以开始看更高维度的问题”这种反馈看似简单但让人有方向感。这个阶段要使用工具支撑文档可以沉淀Review 可以回看Sentry 日志可以对比。真正需要人工的部分是持续地给出反馈而不是只在“出大事”时来一波情绪输出。一个新人如果连续三个月没有得到具体反馈他的成长大概率是随机的。4. 阻力常在个人心里为什么“教人比自己干”更不容易4.1 组织环境时刻在暗示“被替代的恐惧”很多资深工程师不是不愿意带人而是不敢带人。尤其在大厂晋升路径不透明、绩效比较很赤裸的时候教出一个强者好像等于给自己安排一个竞争者。这种心态不能全怪个人组织制度在设计上就有问题。如果技术部门对经理和架构师的考核主要看“个人贡献”那带人这件事就只能靠导师的高风亮节。短期驱动不够。要真正让“我希望你成为比我更好的人”成为普遍现实组织必须把人才培养纳入正式考核晋升时看指导者的产出史、下属的发展轨迹、知识文档的质量而不只是看他的代码量、项目影响力和跨团队规模。作为个人也不妨换个角度真正不可替代的人不是那个把所有技能攥在自己手里的人而是能不断让团队成员具备处理复杂问题能力的人。如果你下面的每个人离开了你就不转那你其实是被系统绑定了。而当你能培养出多个具备独立判断力的人你的价值已经不在执行层而是在更上层的判断和组织层。这不是被替代是升级。4.2 心理安全比技术指导更稀缺很多新人成长慢不是因为不聪明而是不敢暴露自己的不理解。他们害怕提问后被贴上“基础不扎实”的标签害怕尝试后落下一句“这都不会”。导师要主动处理这种紧张关系。最快的方法其实是示范自己也会犯错在遇到不会的问题时当着新人的面去查资料、翻源码、承认自己记错了。这不是演技。技术领域每天都在变化经验再丰富也会有不熟悉的边界。承认边界不会损害权威反而会传递一种可贵的工程态度判断力不等于记忆力也不等于永不犯错。新人会因此更愿意把不确定的问题摊开在桌面上。当新人说“我不确定”时不要让这句话落在地上。你要认真接住把它变成一个共同的研究任务。长期拿不到安全感的年轻人确实会成长但长出来的是防御性技巧他们学会不被骂却学不会创造。4.3 不是每个人都必须成为架构师如果文章到这里有人理解为“我要把所有人逼成技术负责人”那就会变成另一种灾难。不是每个人都想走同一路径。有人就希望做一个稳定高效、按时交付的工程师业余时间用来陪家人和做别的兴趣有人天生更适合写文档、跑流程、做非常纯粹的执行类工作。“我希望你成为比我更好的人”不一定意味着“你要爬得比我高”它更准确的意思是我希望你找到属于你自己的那个“好”的标准。所以带人的第一步不是设计一条训练路径而是先问对方你想在接下来一两年里变成什么样哪些任务让你有成就哪些让你消耗听他回答完再决定怎么给机会。如果不尊重对方的自主性你的培养越努力就越像控制。5. 一种反向视角好的“导师传承”什么时候才算完成5.1 完成标准是他开始做主你开始被挑战成长的标志不完全是新人能独立写出很好的代码而是他和你的意见开始出现真正的分歧。他会说“我理解你的方案但在这个场景下我可能会选另一种做法。” 当他开始能够用清晰的论据支撑反对意见时哪怕他说的方向最后证明不够理想你的培养也已经成功了。这时候很多导师会犯最后一个错把分歧当成关系破裂或者立刻用职位经验压制回去。一个好的处理方式是给他一次小范围试验的机会。在成本可控的前提下允许你的判断被推翻。这不仅是在验证他的能力也是在验证你自己是不是真的做到了那句话。我们太容易接受一个抽象的“希望他超过我”却很难耐受一个具体的“这一次他不想按我做”。5.2 给不同角色的最小行动清单如果你今天刚看完这篇文字不知道该从哪里开始这个清单可以直接抄。如果你是带人的导师选一个任务把经典的第一遍和第二遍完整走完不要中途接管键盘。在下次代码评审里加一条“我不确定想听听你怎么想”的评论。把某个小模块的数据权限、发布入口、告警权限都交给新人让他承担一次真实发布。如果你是新人看完导师给的答案后多问一句“你当时是怎么判断出要先看这里的”。如果导师习惯直接给答案你可以主动要求“这次能不能先让我试一种方案再请你帮我复盘” 这是你的成长权。开始记录自己的错误模式。很多重复踩坑不是知识储备不够而是你没有整理自己容易在哪类问题上判断失灵。如果你是团队负责人把“培养者视角”纳入复盘会。不要只在项目延期时看交付要在季度总结时看每个成员的自主判断次数。检查你的团队是否存在“什么都要等我审批”的单点瓶颈。给导师留出带人时间而不是让带人成为工作之外的无偿劳动。5.3 技术会过时但这句“希望你比我更好”不会过时软件行业有太多很容易过时的东西框架的选择、部署的方式、工具的品牌。很多年之后人们不一定会记得某段代码如何写的但会记得有人曾经在自己不知道怎么办的时候没有直接下手解决而是坐下来问“你觉得应该先查什么”技术团队的长期竞争力从来不是由某一个人的碾压级能力决定的。它来自一套能让判断力代际传递的机制。这一代工程师里的资深者如果只在意自己的垂直深度、自己的代码风格、自己的完美交付那团队永远是围绕一个旋转中心在运转。如果资深者愿意把部分决策权交出去、允许对方以更好的方式做自己团队才会慢慢变成分布式系统。那句台词真正迷人的地方不在于表达了一种期许而在于说出这句话的人已经接受了“你会走到我看不见的地方”这个结果。回到工程语境里这大概是每个带人者能留给自己最好的成果多年以后对方做成一个重要决定时他已经不再需要回来问你。而你能像所有在技术世界持续投入的人一样继续往自己的未知深处走。到那时候师徒关系才真正完成。
返回列表