Please enable Javascript to view the contents

【前途丛书】我能做软件工程师吗?

 ·  ☕ 6 分钟

最近在某到看到一套《前途丛书》,挑了其中感兴趣的《我能做软件工程师吗》读完,颇有收获,推荐给大家。

前途丛书 (豆瓣)

前途丛书

前途丛书

前途丛书,就是一套写给当代人的职业选择指南。

这套书共分为12本,包括《我能做教师吗》《我能做律师吗》《我能做医生吗》《我能做销售吗》《我能做HR吗》《我能做投资人吗》《我能做建筑师吗》《我能做产品经理吗》《我能做注册会计师吗》《我能做软件工程师吗》《我能做心理咨询师吗》《我能做保险代理人吗》。

前途丛书

每本书聚焦一个职业,邀请从事这个职业的顶尖高手,通过行业地图、新手上路、进阶通道、高手修养、行业大神、行业清单六个部分,从入门到进阶,从新手到高手,让高手们手把手带你将这个职业预演一遍。

《我能做软件工程师吗?》这本书邀请的行业大咖包括以下四位顶尖软件工程师:

  • 韩磊:《代码整洁之道》译者,CSDN总编辑。
  • 郄(qiè)小虎:腾讯集团前副总裁,被誉为“Google中国历史上最好的工程师(没有之一)”。
  • 陈智峰:谷歌大脑首席工程师,参与开发TensorFlow。
  • 鲁鹏俊:曾任谷歌主任架构师,后任百度集团高级总监、欢聚时代CTO、唯品会联席CTO。

软件工程师是个什么样的职业?

软件工程师是一个高薪、高竞争、高要求的职业,适合逻辑思维强、热爱技术且能持续学习的人。行业热度源于技术对社会的广泛影响,但压力与挑战并存。职业发展需突破“35岁瓶颈”,关键在于能力提升而非年龄焦虑;而996现象反映行业快节奏本质,需通过效率优化与心态调整应对。

软件工程师

“35岁现象”、“996”是怎么回事?

“35岁现象”,指的是软件⼯程师⼲到35岁就过了⻩⾦年龄期,会⾯临职业瓶颈,甚⾄遭遇被裁员、被优化、被淘汰的困境。

为什么会有“35岁现象”?

从社会层面看,初级⼯程师过剩,⾼级⼯程师紧缺。那些⽔平⼀般,⻓时间都没有⾜够⻓进的⼈,⾃然会被淘汰。⾄于为什么是“35岁”,或许只是因为早期涌⼊⾏业的那批⼈差不多到了35岁的年纪。

从个体层⾯来看,“35岁现象”的根源不在年龄,⽽在能⼒。这个⾏业淘汰的不是年纪⼤的⼈,⽽是拿着35岁的⼈的薪酬,却只会做25岁的⼈做的⼯作的人。为什么35岁是⼀个节点呢?因为35岁意味着⼀个⼈硕⼠毕业后⼯作也有10年了,如果⼯作10年还达不到资深⼯程师的⽔平,从某种意义上说,被淘汰是不可避免的。

35岁现象”明显是个社会问题。社会对⼈的需求改变了,任何⼈都没法阻挡。我们能做,也真正该做的,不是为此终⽇焦虑,⽽是考虑清楚⾃⼰对什么感兴趣,到底想做什么样的⼯作。解决⾃⼰的问题,这才是最根本的。

35岁现象

同样,“996”也是个社会问题。

⼀定程度的加班,是软件⾏业普遍存在的现象,这⼀点你要有清醒的认知——看不尽的代码、没⽇没夜的加班、进度的压⼒是⼤多数软件⼯程师必须⾯对的。

回到⾃身,如果你⼊⾏之后被加班问题困扰,不妨先问⾃⼰两个问题:这是有意义的加班,还是机械式的加班?加班本身有没有提升个⼈能⼒的价值?

学不到任何东⻄的机械式加班是没有意义的。如果加班不能带给你有价值的回报,那么你可以考虑离开。否则⻓此以往,你注定会“35岁被淘汰”。

(👍,完美闭环)

⼈⼯智能时代,软件⼯程师会被替代吗?

新技术不光淘汰了旧岗位,也创造了新岗位。⽐如,19世纪我们有了织布机,原来很多⽤⼿⼯织布的⼯⼈被淘汰,但更多使⽤机器织布的岗位诞⽣了。要想获得新岗位,我们要先了解AI目前还不能做什么。

  • 首先,⽬前AI还不能⼀步到位地根据任意⾃然语⾔指令⽣成完美代码。
  • 第二,⽬前AI仍然⽆法⾃主处理复杂的问题集。
    ⽬前AI⾯对“复杂的问题集”,它的回答会相对模糊。这时候就需要软件⼯程师把复杂的问题集抽象、拆解为⼀个个功能模块,这叫架构⼯作。架构⼯作⽬前还不太能被AI取代,这是因为它涉及具体问题领域⾥的相关经验和知识。
  • 第三,⽬前AI还⽆法⽣成以前不存在,或者⽆法⽤以前的⼿段组合⽽成的代码。这件事对软件⼯程师的启示在于,⼀⽅⾯,我们要不断在实践中发现新问题,提出新想法;另⼀⽅⾯,我们要学会把AI作为伙伴,使⽤它、优化它、挖掘它的种种可能性。

总而言之,AI时代并非淘汰软件工程师,而是淘汰低价值工作,重塑职业门槛。工程师需从“代码实现者”转型为“问题架构师”和“AI指挥官”,聚焦复杂系统设计与技术创新。

成为软件工程师,需要具备哪些条件?

软件工程师是一个门槛不高,天花板很高的职业。入门容易,很多不是计算机专业的同学,靠着自学也能找到一分写代码的工作。但精进难,因为这个行业的技术更新迭代非常快,很多人入行三年就被淘汰了。

这里简单分成硬性条件和软性条件:

硬技能

  1. 数学能力:数学是决定职业发展潜力的关键,涉及高等数学、概率分析、贝叶斯算法等,解决复杂问题时不可或缺。(当然,可能做应用的不太要求这一块)
  2. 计算机基础与底层逻辑:掌握计算机原理、数据结构与算法、操作系统等基础知识,理解计算机系统的运行机制,避免仅停留在“会编程”层面。
  3. 编程能力:熟练使用至少一门编程语言(如Java、Python、C++等),能编写高效、可维护的代码。
  4. 逻辑与问题解决能力:需具备清晰的逻辑思维,能够抽象和拆解问题,设计系统化的解决方案。碰到问题能想办法解决。

软技能

  1. 英语读写能力:程序员需能阅读英文技术文档、参与国际社区交流,一手技术资料多为英文。
  2. 自学与终身学习能力:技术更新迅速,需持续学习新技术,如AI工具的应用(如ChatGPT辅助编程)。
  3. 团队协作能力:需与产品经理、测试人员等跨岗位协作,沟通需求并解决问题,避免“单打独斗”。

如何在工作很忙的状态下高效学习?

高效学习需将知识获取嵌入工作流程,善用权威资源与碎片时间,聚焦深度实践与标杆学习,以热爱为动力实现持续精进。

聚焦核心资源:优先阅读官方文档(最权威的解决方案来源),利用StackOverflow等高质量社区筛选优质答案,避免错误信息干扰。

工作中学习:通过编写代码和修复bug积累经验,如用二分法或小黄鸭调试法定位问题,同时研读标杆代码(如被反复调用的函数、长期未淘汰的核心设计),学习优秀同行的代码风格与架构思想。

碎片化时间利用:在编码间隙挤出10-20分钟学习,牺牲部分娱乐时间为未来投资,但避免长期熬夜。

热爱驱动:真正热爱技术者会主动“挤时间”,将学习视为兴趣而非负担。


限于篇幅,我只列出了我感兴趣的话题,感兴趣的朋友可以去看一下这本书。

参考资料

分享

码中人
作者
码中人
Web Developer