不要成为程序员,而要成为软件工程师
让我们明确一点:懂编程并不意味着你就是软件工程师。这是一个残酷的事实,但在过去几年里,尤其是在科技界经历了裁员、经济转型和不断变化的预期之后,这一点变得越来越清晰。
程序员的工作就是写代码。软件工程师的工作就是解决问题。如果你只是在不停地写代码,你是可以被取代的。但如果你负责设计系统、理解利弊权衡、并进行全局思考,那么你构建的东西就很难被自动化或外包。
那么,它们之间到底有什么区别?你为什么要关心它们呢?让我们来一一分析。
编程与软件工程
编程是编写代码使某件事物运转起来。软件工程是设计一个能够有效且可持续地解决问题的系统。这就像搭建乐高塔和设计摩天大楼的区别。前者有趣且快捷;后者则需要规划、协作以及对复杂系统的理解。
过去几年,我见证了公司只重视程序员的后果。当科技热潮放缓、裁员潮开始兴起时,被裁掉的并非那些构建了强大、可扩展解决方案的工程师,而是那些只会照做、写代码的工程师。
这个行业需要的是问题解决者,而不仅仅是代码编写者。如果你想蓬勃发展,你需要超越语法思维,开始思考系统。
为什么你需要升级
科技格局已然改变。以下是为什么将目标定得比“程序员”更高至关重要:
1. 就业市场已经饱和
懂 JavaScript 或 Python 就能保证找到工作的时代已经一去不复返了。现在,市场上充斥着各种训练营,这些训练营里充斥着能够编写基本 CRUD 应用的初级开发者。如果你的技能水平达到这个水平,那么你将面临一个拥挤而残酷的竞争环境。
公司正在寻找了解架构、可扩展性以及如何在时间、成本和复杂性之间进行权衡的工程师。这些技能并非来自照本宣科的学习,而是来自像工程师一样思考。
2. 自动化正在悄然兴起
你了解过 GitHub Copilot 和 ChatGPT 等 AI 工具的功能吗?它们可以编写样板代码、修复错误,甚至构建简单的应用程序。程序员的工作——基础编程——正在实现自动化。
但问题是:人工智能(目前)还无法设计复杂的系统、做出判断或理解用户需求。而这正是工程师的闪光点。
3. 企业正在削减成本
当预算紧缩时,公司会追求效率。他们不想要只会写代码的人,他们想要的是了解业务问题、设计出智能解决方案,并能与利益相关者协作以创造真正价值的人。工程师能够带来这种整体视角。
如何从程序员转型为软件工程师
这不仅仅是编写更多代码,而是需要换一种思维方式。以下是你可以实现转变的方法:
1.学习软件设计的基础知识
理解 SOLID、DRY(不要重复自己)和 YAGNI(你不需要它)等原则。学习如何将问题分解为模块化、可维护的解决方案。
Robert C. Martin 的《Clean Code》和 Martin Kleppmann 的《Designing Data-Intensive Applications》等书籍都是必读的。
2. 主系统设计
如果你想成为一名软件工程师,你需要知道如何设计系统。这不仅仅是编写代码,而是要创建可扩展、容错的架构。
了解:
- 负载平衡和缓存。
- 数据库设计和索引。
- 分布式系统和微服务。
系统设计面试是出了名的艰难,但为此做准备将教会你远远超出求职范围的技能。
3.了解业务背景
这听起来可能很无聊,但请听我说完:最优秀的工程师不仅了解如何构建,更了解他们为什么要构建某个东西。学会思考用户需求、项目预算和时间表。提出以下问题:
- 这个功能对用户有什么影响?
- 有没有更简单的方法来解决这个问题?
- 我们如何平衡速度和质量?
当你了解业务时,你就不仅仅是一名工程师了,你还会成为一名值得信赖的顾问。
4. 乐于合作
工程是一项团队运动。你将与产品经理、设计师和其他开发人员合作。学习如何清晰地沟通、给予和接收反馈,以及如何记录你的工作。
这不仅仅是编写出色的代码,而是要确保您的团队能够理解、维护和扩展代码。
5.保持好奇心
最优秀的工程师永不停止学习。探索新的工具、框架和范式。尝试 Rust、Kubernetes 或 GraphQL 等技术。科技世界瞬息万变——保持好奇心才能让你适应变化。
您还应该学习编码吗?
当然!编程是我们一切工作的基础。但如果你想拥有一份长久的职业,不要止步于编程。要学会批判性思考、解决问题和设计系统。
成为一名软件工程师意味着将技术技能与创造力、协作能力和战略思维相结合。这条路并非易事,但却能让你在瞬息万变的行业中保持竞争力,并成为不可或缺的一员。
最后的想法
不要让自己沦为普通的程序员。要志存高远。学习如何像工程师一样思考,专注于构建系统,而不仅仅是编写代码。行业正在发生变化,但这并不是坏事——这是一个成长的机会。
你的看法是什么?你的目标是超越编程吗?欢迎在评论区留言讨论。
文章来源:https://dev.to/holasoymalva/dont-be-a-programmer-be-a-software-engineer-4366