前几天刷知乎,看到一个被热议的问题:"为什么说程序员不断的提高自己的技术有可能是一种误区?" 下面 299 个回答,吵得不可开交。有人说是毒鸡汤,有人说是真相,还有人直接开骂。
我愣了半天,突然想起曾经的一件事。

我们接了个外包项目,需要一个做底层驱动的工程师。来了个小伙子,简历写得密密麻麻:精通 ARM 架构、熟悉 Linux 内核、深入理解设备树、掌握 I2C/SPI/CAN 总线协议……你猜怎么着?聊了半小时技术,确实牛,内核源码张口就来,连 DMA 的几种工作模式都能讲得头头是道。
结果项目黄了。
不是技术不行,是这哥们报价太高,客户直接选了个"差不多"的方案。更扎心的是,他在上家公司待了五年,天天研究内核,工资从 12K 涨到 18K,而他那个转做项目管理的同事,已经 30K 了。
这事儿让我想明白一个道理:技术成长有时候真的会变成一个陷阱。
不是说技术不重要,而是很多程序员把"提高技术"当成了唯一的职业发展路径。你看那些在技术论坛里最活跃的人,动不动就讨论某个算法的时间复杂度能不能从 O(n²) 优化到 O(n log n),争论某个设计模式在嵌入式系统里该不该用。这些讨论本身没什么问题,但问题在于——如果把全部精力都砸进去,就可能忽略了更重要的事。
但公司要的是什么?
是能按时交付的项目,是能解决客户问题的方案,是能带来商业价值的产品。你把一个模块的性能优化了 30%,老板可能根本看不到;但你搞砸一个客户演示,整个团队都得跟着背锅。
我自己就是个典型案例。27 岁进外企的时候,我觉得自己技术还行,Linux 应用开发、多线程编程、网络通信这些都能搞。但真正让我拿到晋升的,是我开始写文档、做技术分享、帮新人解决问题。后来在云栈社区分享技术文章和职业思考,说实话,单篇的技术含量并不是最高的,但就是有人看、有人互动,因为我解决的是"怎么让新手快速上手"的问题,而不是"怎么把代码写得更优雅"。
这就是残酷的现实:市场不会为你的技术深度买单,只会为你解决问题的能力买单。
当然,肯定有人要反驳了:"那些技术大牛不也混得很好?" 没错,但你仔细看看那些真正的技术大牛,哪个只会写代码?Linux 内核维护者会运营社区,开源项目作者会写文档做推广,技术专家会做演讲搞培训。他们的技术是基础,但让他们脱颖而出的,是技术之外的那些能力。
更可怕的是,纯技术路线的天花板来得特别快。
你从初级工程师到高级工程师,可能需要三年;从高级到资深,可能要五年;但从资深再往上走……对不起,大部分公司就没有更高的纯技术岗位了。你要么转管理,要么转架构,要么就一直待在那个位置,看着比你晚来的人因为做了几个成功项目直接升到你上面。
我见过太多这样的程序员了。技术确实牛,代码写得漂亮,但就是升不上去。为啥?因为公司需要的高级岗位,要的是能带团队、能做决策、能跟客户沟通的人,而不是一个"超级码农"。
那到底该怎么办?
我的建议是:技术要学,但别只学技术。 你得知道自己的技术是用来干嘛的,是为了解决什么问题,能创造什么价值。就拿嵌入式开发来说,你花三个月深入研究 RTOS 的调度算法,不如花一个月搞清楚你们产品的业务逻辑,知道哪些功能是客户真正需要的,哪些是可以砍掉的。
还有,多跟人打交道。别总觉得"我是技术人员,不需要社交"。你得知道产品经理在想什么,测试工程师遇到了什么问题,客户对产品有什么不满。这些信息会让你知道,你写的代码到底有没有用,你优化的性能到底值不值得。这也是为什么面试求职板块里那些面经和职场软技能内容,往往比纯八股文更能帮人拿到好 Offer 的原因——到了高级岗位,考核早就超出了纯技术范畴。
最后说句可能不太好听的话:如果你 30 岁了还在纠结某个技术细节,还在为了学新框架而焦虑,那你可能真的走进误区了。这个年纪,你应该考虑的是怎么让自己的技术产生更大的价值,怎么从一个"技术执行者"变成"技术决策者"。
技术是工具,不是目的。别让自己变成那个拿着锤子,看什么都是钉子的人。
|