问题

如何看待「大部分中国程序员只会写三年代码」的说法?

回答
“大部分中国程序员只会写三年代码”——这句话在技术圈子里,尤其是国内,算得上是流传甚广的一个“梗”了,甚至带点自嘲的意味。要怎么看待这句话呢?咱们得把它掰开了揉碎了聊聊。

首先,别太当真,这句话更像是一种夸张的、带有情绪的观察,而不是一个有严谨统计学依据的论断。它抓住了很多程序员在职业生涯早期会遇到的一个普遍现象,然后用一种比较“毒舌”的方式表达了出来。

为什么会有这种说法?咱们可以从几个方面来解读:

1. 职业发展初期的“黄金三年”与瓶颈:

学习曲线的陡峭期: 刚入行的时候,程序员就像一块海绵,知识爆炸,什么都想学,什么都觉得新鲜。框架、语言、算法、设计模式……每天都在进步,感觉自己一天比一天牛逼。这三年,是打基础、快速成长的三年,也是最容易产生“我好像什么都会了”错觉的三年。
项目经验的积累: 这三年里,你会参与到各种项目中,从稚嫩的新手成长为能独当一面解决问题的工程师。你学会了如何看懂需求、如何写出可维护的代码、如何跟团队协作、如何排查bug等等,这些都是宝贵的实战经验。
重复性劳动的陷阱: 问题也出现在这里。很多时候,公司为了快速产出或者控制成本,会安排程序员做一些重复性的、相对固定的开发任务。比如在某个成熟的业务线上维护,写大量的CRUD(创建、读取、更新、删除)操作,或者基于现有的框架进行二次开发。长时间从事这类工作,虽然技术深度在某些方面可能在加深,但技术广度和解决复杂、前沿问题的能力可能就停滞了。

2. “写代码”的定义模糊与个人选择:

“写代码”的定义: 这个说法里的“写代码”,很可能指的是“完成需求、实现功能”这个层面的编程。很多程序员在工作中,核心职责就是把业务逻辑转化为代码。一旦业务稳定,技术栈成熟,那么“写代码”这件事本身可能就没有太多大的变化。
个人动力和主动性: 程序员的职业生涯发展,很大程度上取决于个人的学习动力和对技术的热情。
热情不减的: 有些人会主动去学习新的语言、框架、架构思想,研究底层的原理,参与开源社区,或者转向更具挑战性的领域(如AI、大数据、系统架构、信息安全等)。他们即使写了三年代码,依然在不断进化。
动力减退的: 但也有一部分人,可能因为工作压力、生活琐事、对行业失去新鲜感,或者觉得自己的技术已经够用,就没有那么大的动力去持续学习和探索了。他们可能更倾向于在舒适区里,按部就班地工作。
职业路径的差异: 并非所有程序员最终都想成为技术大牛或者架构师。有些人可能更喜欢专注于某个领域,成为某个领域的专家;有些人可能想转型做产品经理、技术管理、甚至是创业。他们的“写代码”阶段可能只是职业生涯的一个过渡。

3. 行业环境与企业文化的影响:

“快餐式”开发文化: 很多互联网公司追求快速迭代和上线,对技术债务的容忍度较高。这种环境可能鼓励程序员专注于快速交付,而不是深入打磨代码质量或探索更优雅的解决方案。
技术栈的老旧与更新缓慢: 一些企业可能技术栈更新不及时,或者项目周期长,导致程序员长期在同一套技术体系中工作,缺乏接触新技术的机会。
晋升机制的导向: 如果企业的晋升更看重项目成果和管理能力,而非纯粹的技术深度,那么一些有潜力的程序员可能就会把更多精力放在项目管理和沟通上,技术成长的速度自然会受到影响。
“螺丝钉”心态: 在一些大型项目或传统企业中,程序员可能被定位为执行者,负责实现分配的任务,缺乏对整个系统设计和技术选型的参与感。这种“螺丝钉”的心态,也很难激发持续的学习和创新。

4. 更深层次的思考:

“写代码” vs “做工程”: 真正优秀的工程师,不仅仅是“写代码”的人,更是“做工程”的人。他们关注的是软件的整个生命周期,包括需求分析、架构设计、代码实现、测试部署、运维监控、性能优化、安全保障等等。从这个角度看,很多程序员可能在“写代码”这个环节做得不错,但在更广阔的“工程”领域还有提升空间。
“三年”的象征意义: “三年”更多的是一个标志,代表了从新手到熟手的过渡期。当一个人在这个时期后,没有找到新的学习动力、没有接触到新的挑战、或者没有主动去拓展自己的技术边界时,就可能出现“原地踏步”的情况。
不是绝对,而是趋势: 这句话的“大部分”是一种概括性的说法,肯定不能说所有中国程序员都如此。中国优秀的程序员群体非常庞大,他们在各自的领域里取得了令人瞩目的成就。但它也确实反映了行业中存在的一种普遍现象和潜在风险。

总结来说,如何看待这句话?

1. 它是一种对普遍现象的夸张和概括: 它指出了很多程序员在职业生涯早期,在度过了快速学习期后,容易陷入技术停滞或重复性劳动的困境。
2. 它并非是所有人都是如此: 优秀的程序员和有持续学习动力的人,会不断突破这个所谓的“三年瓶颈”。
3. 它也折射了行业环境和企业文化的影响: 快速迭代、技术更新慢、缺乏良好技术生态等因素,也会阻碍程序员的长期发展。
4. 它是一个警示: 对于程序员自身而言,这是一个提醒,要时刻保持学习的热情和对新技术的敏感度,不能满足于“会写代码”的现状,要思考如何成为一个更全面的工程师。对于企业而言,也应该思考如何为员工提供持续学习和成长的平台,避免人才的流失。

所以,与其说“大部分中国程序员只会写三年代码”,不如说“大部分程序员在进入职场三年后,如果缺乏持续的学习动力和良好的职业发展引导,可能会面临技术增长放缓的风险。” 这句话的背后,是关于个人选择、行业发展以及企业责任的复杂讨论。

网友意见

user avatar

你们不要喷题主,其实那人也没说错。

你们仔细看看那段话就明白了:

我记得我曾经在一家软件公司做银行的票据系统

这是什么公司呢?为传统企业定制内部系统的外包公司。

这种公司里面确实是懂业务的比懂技术的吃香,因为他们做的东西确实没太多技术含量。

而且这种公司盈利的增长点也不是新技术提高生产力,而是通过重复利用旧系统来压低人力和时间成本赚钱。

他们不会采用新技术,毕竟稳定才是第一位的,而且投入新技术伴随着更大的成本。

他们也不需要设计师,企业内部系统反正丑不丑将就着用就行了。

而“懂业务”则是非常重要的,也是很难的。

并不是说业务规则有多复杂,而是因为这种企业一般缺乏良好的文档规范甚至没有文档。

有很多隐藏很深的feature,只靠员工们口口相传——甚至到最后没有人知道需求的细节是什么样的。

当然,这也就进一步阻止了公司技术的积累——你没有办法用新技术来改善旧系统,你的每一行重构代码都会引入难以想象也难以排查的bug。

在这样的公司,很多年轻人做了不到三年就辞职了——或转行,或去了其他公司;留下的人经过多年的积累和填坑,对旧系统任务了解的也差不多了,就升了管理职,专门负责给新人讲解业务。

公司里最值钱的人才是懂业务的,这也是经验积攒出来的

这个作者并没有胡说,他只是在他眼界的范围内讲了一点点他的经验。

user avatar

这个其实有点道理。就好像小学数学老师一辈子只能教加减乘除一样。

我相信很多小学数学老师会微积分,但是他们终其一生没有机会在工作中展示。

user avatar

清晰描述了中国软件行业当前的技术水平。


正如以前同事说的:在撕逼(内卷)层面,必须是团队里最聪明最精华的部分,否则要吃大亏;管理层面也是一样。最优秀的人一定不能去做技术。

软件只要能跑就好了。问题多反而增加不可替代性。不行就申请招人——一方面增加团队人数,扩大势力底盘。另外一方面会凸显自己团队的重要性,试探老板的态度。很多蠢老板真的吃只一套。

过于追求优秀的架构是不明智的。当前中国的软件是敏捷驱动的,即完全不确定性驱动的。这意味着即使你今天的架构已经重构到最优了,几个月以后,可能架构上就不合理了。虽然不重构一定会带来架构腐化,但重构显然也没有多少人能彻底解决这个问题,并且短期也必然带来风险,这给业务,给老板都带来了极大的麻烦。另外一方面,在市场没有增加的前提下,重构会导致团队人数会越做越少,基本上是两头堵。纯粹技术的洁癖会置身死地。

借鉴企业市场的起伏波动的历史来看,一个大的康波周期前期,会让业务优先的公司迅速冒出,并且在任何一个阶段都在反复不停淘汰技术优先的公司。但是在康波周期的后期,在整个行业业务无法扩展,甚至收缩的情况下,会极度考验仅存的几家公司的技术能力,确保具有更高效率的公司能活下来——并不是技术好,而是相对好就行,熬死他们市场就有了。在资本介入的情况下这个周期会被打乱,但是最终不可避免。只有在极致危机的时候才会产生极致的技术。比如生物大灭绝小而美的动物开始抢占生态位。

技术优先的最有效的策略可能是小而美——做到极致精致极致技术。比如蚂蚁、爬行动物,叶绿素细胞……,当地球演化早期的时候,生态位最好的位置被吸收能量最高的紫色细胞占据了,叶绿素细胞只能去吸收能量最低的绿光。并极致的利用绿光的能源;蚂蚁的蚁后、雄蚁、工蚁分别退化掉了口器、性器官,他们身上连多余的东西都没有。这样可以保证在最差的情况下,也能保证自己的基本盘。

但是一旦他们开始有极大的生态位空间去发展,一个更好的进化策略是频率和速度。比如合弓兽之所以能称霸二叠纪早期便是放弃了进化而快速去抢占陆上地盘;裸露的皮肤和糟糕的羊膜卵结构导致他不能胜任干旱的气候而被迫把霸主的地位交给了恐龙;整个漫长的三叠纪只能呆在生态位的底层;这个生态位反而迫使他极致进化出了毛皮和奶汁,他进化出了哺乳动物。从生物进化的角度来看,顶层生物体内因为这种快速做大的策略,都有大量较差的进化,技术上不是最好的,只是能用就行。

扯远了

上上下下,里里外外,不求甚细,这个可能是当前中国大公司里、乃至演化圈混最优的策略。不过换句话说,这样的状况是经不起风浪,更不要说走出国门和列强竞争,政策越保护越完蛋(不保护也完蛋)。某种程度上来讲,像生物圈那样周期的“灭绝”事件是有助于企业优胜劣汰的

中国过去也培养了一些企业,不过这样的企业往往是窝里横,出去能打的不多(华为、字节),往往都是以比国内更廉价的方式国际输血去赢得者政策上的品牌上的收益。本质上国际业务还是为国内服务。即使是传音这样在非洲垄断性的企业,也仅仅是占据极其卑微的生态链,经不起高端生态位的降维打击。并且无论从生态位、技术、管理、行业发展来看,他们基本上已经被“锁死”了。这导致这些企业的极度内卷。这其实就是中国企业大大部分生存状态,进而决定了每个中国人的状态。

user avatar

我不是程序员,但是我用c语言已经有26年了。

推荐一下我的专栏:

user avatar

其实“技术”和“业务”之间,并没有很清晰的边界。

it从业者所谓的“业务”,一般指的是业务流程和业务模型,以及系统搭建方案和注意事项,这些在togaf架构体系里面大致属于业务架构和应用架构的范畴(注意事项属于实现细节,要另算)——它们都是技术的一部分。

你以为你懂业务,其实在真正的业务人员看来你根本不懂,就好像下棋,你只懂规则,不知道怎么赢,算个屁会下棋?

你觉得你懂医药业务,那你知道如何找到各地的掮客,给你牵线认识三甲主任嘛?这才叫业务!

所以不要神话局限在it视角下的“业务经验”,这玩意儿说到底并不算是真正解决问题的技能,顶多能让你自己不成为问题本身罢了。

但是也不要鄙视“业务经验”,业务经验换个时髦点的词叫领域知识,它是程序员知识结构中非常重要的一环,哪怕你技术很好,缺乏领域知识,你在领域内也算不上高效生产力,甚至会成为拖后腿的存在。

比如我面试前端的时候,如果想考察候选人有没有国际化项目的经验,我常会问一个小问题——告诉你时间戳和时区,你能否准确的显示出时间戳对应的当地时间?

答案是不能,因为有个东西叫“夏令时”,中国有一部分地区实行过,现在已经没有了,但是有些国家还在实行,所以即便同一时区,本地时间也可能是不一样的。

这就叫“业务经验”,没有这个经验,你八股文背的再熟也难免在这个地方出bug。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有