十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

工程师成长路径:自省、学习、项目实战与面试指南

工程师成长路径:自省、学习、项目实战与面试指南 “我的工程师之路给需要的同学”这个标题本身没什么修饰但我猜点进来的同学想要的不是一份漂亮的简历也不是“如何三个月进大厂”的速成指南而是一个真实、可执行的成长路径。这篇文章不打算写成功学只想把我在入行、跳槽、带团队这几个阶段踩过的坑、悟出的道理以及反复验证过的学习方法掰开揉碎讲清楚。如果你正在犹豫要不要走这条路或者刚入行感到迷茫这篇文章应该能给你一些比“坚持”更具体的参考。1. 入行前的三个自省问题先判断适不适合再谈努力我在带新人的时候发现一个规律最后成长快的不一定是基础最好的但一定是目标明确的。所以在谈任何技术栈、学习方法之前我建议你先回答三个问题。1.1 你究竟是喜欢“解决问题”还是只是羡慕“工程师的薪资和地位”这个区别非常关键。喜欢解决问题的人面对一个诡异Bug时会先兴奋地搓搓手脑子里开始排查各种可能性甚至下班路上都在想。而冲着薪资地位来的人遇到第一个难缠的问题就会开始怀疑人生。我见过一个转行的同学本科学材料报了培训班学编程。前三个月特别猛每天刷题到凌晨。结果第一次做项目遇到一个线上环境才出现的偶发Bug排查了两天没结果整个人就崩溃了最后放弃了。这不是能力问题是动机问题。他不享受排查的过程只想快点看到“能运行的结果”。反过来如果你发现自己遇到难题时虽然也会烦躁但烦躁过后还是忍不住想去查资料、做实验哪怕没有报酬也愿意花时间去搞明白那恭喜你你具备工程师最核心的底层素质。1.2 你能接受“持续学习”这种常态吗很多人对工程师的理解是“一招鲜吃遍天”觉得掌握一门语言或者一套框架就能安稳干到退休。这个想法放在二十年前可能还成立但现在完全行不通。技术更新的速度远超任何一个行业的预期。我的判断标准很简单你过去半年有没有主动学过一项和工作无关、纯粹因为感兴趣才去了解的技术如果有那说明你有自驱力。如果没有你就要认真想想能不能接受每隔两三年就要重新学一套新东西的节奏。这不只是学不学的动的问题而是心态问题。有人工作五年其实只是把第一年的经验重复了五年这种人在行业波动期会非常被动。1.3 你有没有“从现象深挖到本质”的耐心工程师不是操作工不是照着文档把代码敲完就结束的。你需要不停追问“为什么”为什么这个接口要这么设计为什么这个数据结构在这种场景下性能差为什么这个报错信息隐藏了关键线索我面试候选人时特别喜欢问一个问题“你排查过最复杂的一个Bug是什么”能把这个故事讲得清清楚楚、有层次、有转折的人通常就是有深挖能力的人。这三个问题想明白了再往下看才有意义。如果还没想明白我的建议是别急着报班、别急着买书先用一两个月时间找个免费教程尝试着学一学看自己能不能沉浸进去。试错的成本远比硬着头皮走错方向低得多。2. 学习路径的工程化思维从“看懂”到“做到”的距离确定了要入行下一步就是怎么学。这个部分是整篇文章的重点因为大多数人不是不努力而是努力的方向和节奏错了导致越学越焦虑最后放弃。2.1 基础课和项目实战的比例应该怎么分业内有个比较常见的说法是“七成时间写代码三成时间看理论”。但根据我自己的经验和观察这个比例在入门阶段应该反过来三成时间看理论七成时间用来做练习和项目。原因是理论是别人总结好的抽象经验光看很难真正转化为自己的能力。你看着书上的排序算法看了三遍觉得自己懂了合上书让你手写一个快排大概率还是会卡壳。只有真正在自己机器上敲一遍跑出结果再故意改出几个错误然后修好这个知识点才真正属于你。我自己学新东西的习惯是先看一集视频或者读一章文档然后立刻停下来不跟着教程敲而是自己把例子里的逻辑重新实现一遍。如果实现不出来说明没看懂回头再看。这种方法学得慢但学得牢。那种“看懂了也照着敲了但脑子空空的”情况基本都是因为没做这一步。2.2 项目从哪来别只盯“网上烂大街的项目”很多同学喜欢选“博客系统”“电商系统”这类教学项目来做简历项目。不是说完全不行而是这类项目同质化太严重面试官一眼就能看出你是谁教的。有质量的简历项目应该具备两个特征一是解决了一个真实问题二是技术选型有讲究。真实问题怎么找我提供三个方向把你自己生活中重复做的事想办法自动化和简化。比如你发现每周要整理一次通讯录能不能写个脚本自动去重合并参加开源项目的贡献。不用上来就提大型功能从修文档、修简单Issue开始就行这个过程能让你接触到真实项目的协作流程和代码规范这在课堂和培训里学不到。给学校、同学或者朋友做一个小工具。哪怕是帮某个社团管理活动报名或是帮实验室做数据报表的自动化只要是真实有人使用的都远远好过自己造一个没人用的轮子。技术选型上我的建议是别盲目追求时髦框架。面试官不指望一个应届生掌握全套微服务架构他们更看重你有没有基本的分层意识、有没有考虑过异常处理、数据怎么设计更合理。能把一个东西从零做到能上线、能给别人用就比90%的同龄人强。2.3 遇到瓶颈时应该怎么办每个自学者都会遇到那个阶段学了两个月感觉什么都会一点但什么都不精打开招聘网站发现工作要求里一半的单词没见过开始怀疑自己是不是适合干这行。这个阶段太正常了。它不是能力问题而是信息带宽问题。你想学的东西太多但时间有限所以焦虑。解法只有一个收缩战线。把“我要学会所有东西”改成“我要先把这一小块吃透”。比如这个星期就只搞定HTTP协议和RESTful API的设计规范其他什么都不看。等你真的把这一块弄明白了积累的信心会让你有力量去啃下一块。还有一种情况也需要提一下如果卡在某一个具体问题上超过两三个小时不要死磕。换换脑子去散步、去洗澡、去睡觉答案往往会在你不经意的时候冒出来。我的很多关键问题都是一觉睡醒后想通的。大脑在后台整理信息的能力比你想象中强得多。3. 第一份工作的选择逻辑小公司还是大公司我经历过后的答案这个问题的纠结程度仅次于“要不要转行”。我没有标准答案但可以分享我的经历和观察帮你建立一个更清晰的判断框架。3.1 大公司的本质是一套精密的培养体系我第一份工作在一家千人规模的互联网公司。坦白说职业初期在大公司是有明显好处的开发流程规范有完善的代码评审机制有导师带能接触到高并发场景和海量数据这在简历上是硬通货。大公司还有各种内部技术分享只要你愿意永远有东西可以学。但大公司的坏处也很明显分工细螺丝钉化现象严重。你可能入职两年都只负责一个服务里的几个接口对整个系统的全貌缺乏认知。而且大公司的晋升通道虽然明确但竞争激烈论资排辈和向上管理的成分有时候会让人心累。如果你是一个自制力强、有规划、想先打好规范基础的人大公司是很好的第一步。3.2 小公司是一把双刃剑但前期成长确实快我的第二份工作去了一家只有三十几个人的创业公司。那时候什么都要做前端、后端、数据库、部署、甚至客服问题都要帮忙看一眼。非常累但成长速度肉眼可见。小公司没有完善的流程意味着你要自己摸索一套适合自己的工作方法没有明确的边界意味着你被迫去了解一个系统从零到上线的完整生命周期。这种经历会让你在职业生涯前期迅速积累起“全栈”视角看问题的维度会不一样。风险也很直接项目可能随时死掉公司可能发不出工资你的导师可能比你还迷茫。在小公司能不能学到东西很大程度上取决于你的自驱力和分辨能力。如果待了一年发现自己只是个“熟练工种”做的事情跟在流水线上没区别那就要警惕了。3.3 我现在的看法先想清楚自己要什么再做选择如果让我给一个比较明确的建议我会这样说如果你是应届生家庭条件允许优先选择成熟大公司。先借助平台建立职业习惯、见识专业流程两三年后再决定去留。如果你已经有一定经验且确定自己属于“需要看到全局才能安心”的类型可以考虑成长期的小公司。这里你能接触到更完整的业务链路也有机会更早地参与核心决策。如果你有两个Offer一个公司大但岗位边缘一个公司小但岗位核心我建议选岗位核心的那个哪怕钱少一点。你做的事情是否处在公司的核心价值链上直接决定了你的成长速度和未来议价空间。有个词叫“职业生涯的复利效应”意思是每一份工作都应该成为你下一份工作的跳板。选择工作的时候多想想这份工作能为你积累什么而不是只看眼前的薪资差异。4. 在“工程”中学会游泳一次典型的线上故障排查复盘很多同学以为工作中最大的挑战是写代码其实不是。写代码只是基本功真正的挑战是跟你完全不熟悉的代码、跟你没写过的模块、跟你没遇到过的故障打交道。我分享一个自己印象很深的线上故障排查经历你从中能感受到工程师“解决问题”的完整思维链路。4.1 故障背景一次凌晨的告警推送那是一个周五晚上十一点多我正准备睡觉手机上突然收到了告警支付回调成功率骤降到60%。第一反应是系统出大事了赶紧开电脑。看监控大盘发现QPS没掉数据库连接数没异常JVM内存也没波动各个服务也没有明显的错误日志。看起来一切都正常但回调成功率就是低了近40个点。这种“一切正常但业务指标异常”的故障是最难搞的因为它的根因往往不在常规监控范围内。4.2 排查链路从监控指标到业务日志最后锁定在“基础网络”我当时没有直接睡觉而是一步一步缩小范围。第一步排查是不是上游渠道出问题。我们接了三家支付渠道分渠道看数据发现有一家的回调成功率是100%另一家95%第三家只有30%。那问题基本锁定在第三家渠道的对接上。第二步查看这家渠道的接口调用日志。发现超时异常明显增多但超时时长不固定有时候300毫秒有时候5秒。如果是对端服务真的挂了超时时间应该是比较统一的。不固定的超时往往意味着网络链路有问题。第三步联系渠道方技术那边确认对方说他们的服务一切正常但查看了我们IP之间的专线拨测数据发现确实有跨地域抖动。原因是当天该区域网络负载过高发生了丢包重传导致部分长连接假死。虽然这不是我们服务代码的问题但作为负责这个模块的工程师我也反思了自己的不足当时只监控了业务层面的“成功率”没有做更底层的网络质量监控。如果早一点加上这个故障是可以提前感知到的。4.3 这类问题给你的启示这个案例想说明的是工程师的成长很多时候体现在“谁能更快地缩小排查范围”上。初级工程师的排查方式一个个点开日志看看一两个小时也找不到线索。有经验的工程师会先做假设分析从监控指标的变化趋势反推可能出问题的节点再逐一验证。这种能力不是天生的是平时多复盘、多了解系统全貌积累出来的。所以我有一个习惯每次处理完一个故障都会写一份简短的复盘文档记录现象、排查过程、最终根因和反思。时间久了这些文档就成了我的个人排查知识库。每遇到新问题时我都能从前面的经验里找到相似的影子。5. 工作几年后如何避免陷入“忙碌的平庸”入行三五年之后很多人会进入一个舒适区业务熟练了能按时交付领导也满意。但这时候最危险因为你可能已经在用战术上的勤奋掩盖战略上的懒惰。5.1 识别自己是否在“伪成长”我总结了几条“伪成长”的表现每天很忙但回忆一下今天学到的具体新知识基本没有。做的事情越来越顺手但挑战性越来越低。看的文章、收藏的技术帖越来越多但动手实践的越来越少。对新技术有了解但一问细节就含糊停留在“听说过”“看过概念”的层面。如果你中了三条以上就说明你的成长曲线已经变平。要赶紧跳出这个状态不然再过两年你的竞争力反而会比新入行的年轻人差——因为他们有冲劲、没有家庭负担、学东西也比你更快。5.2 建立自己的“一亩三分地”业务深度就是护城河怎么破局我的建议是找一个具体的领域把它做深做透。这个领域可以是技术上的比如消息队列、存储引擎、高并发架构优化也可以是业务上的比如支付风控、推荐算法、权限系统设计。你不需要成为公司里最厉害的人但你要争取成为“提到某个模块大家能想到找你问”的人。这种不可替代性不是靠加班获得的而是靠你把一个东西真正钻研透了能解释清楚它的设计原理、能预判它可能存在的问题、能提出别人没想过的优化方案。我自己就是在工作第四年主动申请去负责一个别人都不愿意碰的老旧系统重构。那个系统代码乱、文档缺失、线上事故频发。但在啃老代码的过程中我反而对业务的全链路有了透彻的理解后来几次系统优化都是基于这段积累做出的也让我在团队里形成了影响力。5.3 别让加班麻痹你的思考还有一个普遍现象值得单独提一下。很多同学觉得加班越多代表越努力、成长越快。但事实恰恰相反如果每天加班到十一二点回家后累得只想躺着刷手机第二天继续连轴转那你的大脑基本是停转的没时间整理知识、没精力深度思考。我见过很多成长最快的同事不是加班最多的而是下班后能保持学习、周末能抽出时间写博客和做开源项目的人。他们的状态是“工作的时候专注高效下班后充电蓄力”形成了一种正向循环。如果你发现自己陷入“白天被工作填满、晚上只想娱乐”的循环一定要想办法调整。可以试试每天早到公司一小时利用这段时间做深度学习和思考效果比熬夜好得多。6. 关于简历投递和面试准备的笔记这些细节没人教你最后聊一个非常具体的话题面试。很多人技术不错但败在简历关和表达关上非常可惜。6.1 简历不是流水账是“证据链”简历上的每个项目经历都要能回答三个问题项目背景是什么你承担了什么角色取得了什么可量化的结果很多人的简历写的是“负责某某系统的开发提升了用户体验”。这句话说了等于没说。更好的写法是“针对某某系统的首屏加载慢问题通过灰度发布接口合并懒加载等优化手段将首屏时间从8秒降低到2.5秒并输出了可复用的性能优化清单被团队其他项目采纳。”注意这里的关键词真实问题、具体动作、量化结果、可复用性。每个项目只写两三行但每一行都要有信息量。6.2 算法题的准备思路请教“两道题之间的思维桥梁”现在技术面试考算法基本是标配。很多人刷题的方式是一道一道地刷刷完就忘效率很低。我的建议是不要按题号刷而是按算法思想刷。你选择这个题目不是为了“做对那道题”而是为了“掌握那道题背后的一般性方法”。举个例子你刷了一道“两数之和”的题核心思想是“用哈希表以空间换时间”。那你就试试这个思想还能不能用在其他题上比如“最长连续序列”“字母异位词分组”。这样带着“方法论迁移”的意识去刷题刷十道题比刷五十道题更有效。6.3 面试是“展示思考过程”不是“背诵答案”这是我做面试官之后感触最深的一点。很多候选人基础很好但遇到没见过的题目时会紧张得不行生怕说错。其实面试官多半是在看你的思考框架你遇到未知问题时是怎么拆解的怎么提出假设的怎么验证的所以面试的时候大胆说出你的思考过程。哪怕没想出最终答案把你是如何尝试各种可能性的过程讲清楚了同样能拿高分。因为工作后面对的真实问题绝大多数都没有现成答案思考能力才是最核心的竞争力。6.4 反过来问面试官的问题清单面试最后面试官一般会问“你有什么想问我的”。这个问题别浪费至少可以问这几个方向这个团队目前最大的技术挑战是什么——了解岗位真实痛点。团队的技术氛围是什么样的有没有定期的技术分享——了解成长环境。入职后前三个月你希望我做成的唯一一件重要的事情是什么——了解预期和目标。这个岗位的晋升周期和评判标准是什么——了解成长路径是否透明。从面试官的回答质量你能很大程度上判断这个团队是不是值得去。如果对方回答得含糊其辞只跟你谈情怀不谈具体内容就要谨慎了。7. 给不同阶段的同学一张行动清单这篇文章写到这已经比较长了我最后把它压缩成一张清单你可以根据自己的阶段直接按照对应条目去行动。7.1 还在上大学有转行想法先去B站或者MOOC上找一门口碑好的入门课程完整学一遍完成所有课后练习。尝试写一个解决你生活中真实问题的小脚本无论多简陋都行。加入学校的开源组织或者编程社团找到一群能互相督促的同伴一个人容易放弃。大二大三的时候找一份实习体验一下真实的开发流程这比你上多少课都管用。7.2 刚入行一两年感到迷茫把当前项目的架构图画出来不参考任何文档画完对照修正直到能凭借记忆画出完整链路。主动去了解上下游团队的职责弄明白你写的代码在完整的业务流程中处于什么位置。建立自己的知识库对付费资料保持理性优先把官方文档吃透。每个月写一篇技术总结博客哪怕没人看也会逼你把模糊的地方梳理清楚。7.3 三到五年想更进一步选择一条细分赛道给自己设定一个为期半年的深度钻研计划。尝试在团队内部做一次技术分享这是梳理你知识体系最有效的方式之一。开始关注系统设计试着从更高的视角理解你所做项目的优势和不足。有条件就尝试带一个小任务或者一个新同学带人的过程其实是对自己能力的一次全面体检。严格的成长方法论反而往往是做减法的。以上所有内容如果只能留下来一条我觉得是这条想清楚你为什么要做工程师然后用行动去持续验证它。方向对了慢一点也没关系。
返回列表