随着 2024 年接近尾声,软件行业发生了巨大的变化,当我们进入 2025 年时,这些变化将产生重大影响。我们今年在 Yassir 观察到的趋势并不是转瞬即逝的;他们正在深刻地塑造软件开发的未来。
混合工作正在成为软件工作的新常态;生成式人工智能正在从根本上改变我们编写代码的方式,Go 和 Rust 等高性能语言正在提高大型系统的效率,而正确的系统设计对于可扩展性和可靠性比以往任何时候都更加重要。
了解这些趋势对于任何想要在职业生涯中蓬勃发展的软件工程师来说都是至关重要的。
- 混合工作的兴起
作为一名主管工程师,我负责管理一支由 30 多名工程师组成的团队,分布在 10 个国家/地区,指导 Yassir 的技术方向。过去,这个角色需要在办公室,这意味着我只能指导位于我心爱的开罗的团队成员。
如今,大部分工作都可以通过笔记本电脑、可靠的互联网连接和美味的咖啡远程完成。这使我们能够更快地扩大团队规模,并帮助我为从摩洛哥到巴基斯坦的人们提供帮助。
我们采用了一种混合模型,结合了两全其美的优点。团队可以在家工作,享受灵活性和自主权,但也可以进入我们的办公中心之一进行协作会议以及面对面的问题解决和辅导。
(在这里查看我们的空缺职位!)
这种混合方法正在成为软件工程的规范。许多公司正在远程工作和办公室工作之间找到平衡,允许适应性,同时仍然通过偶尔的互动来培养更深层次的团队联系,并确保初级成员获得他们所需的支持。混合工作提供了远程工作的灵活性和效率,同时在最需要时保持了面对面协作的优势。这一转变改变了我们团队合作的方式,提高了科技行业的生产力和团队凝聚力。
2. 人工智能:游戏规则改变者
随着团队接受远程工作,改变软件开发工作流程的另一股力量是人工智能 (AI) 的集成。在当今世界,人工智能已经席卷了几乎所有行业,无论在哪个领域,任何人几乎不可能避免听说或使用 ChatGPT 这样的工具。对于 Z 世代来说,ChatGPT 等人工智能工具将像互联网本身一样普遍——这在几年前是不可想象的资源。这些工具属于生成式人工智能(Generative AI)一类,可用于调节对话、生成内容并通过简单的交互协助完成各种任务。
在软件行业,人工智能的影响是巨大的。它有可能彻底改变我们编码和开发的方式。如今,软件工程师可以利用 Github Copilot 或 Cursor 等工具来自动生成代码、简化工作流程,甚至处理手动需要数小时或数天才能完成的任务。但与任何变革性技术一样,问题也随之而来:这些工具真的可靠吗?我们能否相信人工智能能够取代一直定义软件工程的工艺和解决问题的能力?我们能否期望人工智能理解业务领域和必要的权衡?
为了解决这些问题,我们在 Yassir 开始了一个小实验,利用其中一些代码生成助手,并试图了解其对开发人员生产力的影响。
(在这里查看我们的空缺职位!)
简而言之,我的直觉是,虽然人工智能工具可以自动化许多任务,但它们并不能取代人类工程师带来的深厚专业知识、解决问题的能力和创造力。将人工智能视为一个强大的助手,可以增强您的工作(即副驾驶)——简化日常任务、提出优化建议,甚至生成代码片段。但是,确保最终产品可扩展、安全且可靠的责任仍然在于您(工程师)。
对于初级工程师,我强烈建议在深入研究人工智能生成的代码之前先培养基础编程技能。从第一天起过度依赖这些工具可能会阻碍您对核心概念和解决问题技术的理解,而这些对于该领域的长期发展至关重要。人工智能可以协助完成琐碎的任务,但真正的工程仍然需要人类的直觉、经验和判断。
总之,人工智能无疑是软件行业及其他行业的游戏规则改变者。它打开了我们以前无法想象的效率和创新之门。但为了充分发挥其潜力,工程师必须明白人工智能是一种工具——一种强大的工具——但不能替代人类思维。人类专业知识和人工智能能力之间的协同作用将推动工程的未来。
3. 高性能语言(Go、Rust)
如今,对于数字产品来说,性能就是一切,尤其是对于按需服务领域的产品。人们想要流畅的用户体验,如果他们得不到,他们就会转向其他事情。
为了提供高性能,您的系统背后需要合适的技术。您选择的编程语言起着巨大的作用。当然,如果您追求纯粹的性能,您可以选择 C 或 C++ 之类的语言,它们非常高效。但说实话,开发体验可能是一场噩梦,找到真正精通这些语言的开发人员就像大海捞针一样。
这就是 Go 和 Rust 的用武之地。这两种语言正在崛起,无需 C/C++ 那样陡峭的学习曲线即可提供高性能。我在我们的一个系统中使用了 Go,并将其与 JavaScript 进行了比较。我们发现该项目使用更少的资源,性能提高了 80% 以上。很明显,在后端系统方面,Go 的性能明显优于 JavaScript。
至于 Rust,我计划更深入地研究它,但从我们在市场上看到的情况来看,用 Rust 构建的编译器和运行时已经被证明是非常高效的,特别是与 C/C++ 相比。 Rust 绝对是值得关注的一个。
4. 系统设计:适当扩展的关键
当初创公司第一次设计他们的系统时,他们经常在组件如何交互和一起运行方面走捷径。重点通常是利用有限的资源和时间快速发布功能。但随着这些初创公司开始成长,他们用这种快速而肮脏的方法埋葬的问题又回来咬他们。
这个循环几乎是不可避免的,但情况正在发生变化,特别是随着人才在全球范围内变得更加分散(见第 1 点)以及更多工程师创办自己的公司。这些工程师亲眼目睹了大型系统的复杂性,但他们也知道,当系统设计良好时,它们可以推动成功并帮助公司有效扩展规模。
对于当今的工程师来说,尽早开始考虑系统设计至关重要。 Alex Xu 所著的《系统设计访谈》一书是一个很好的资源。随着您职业生涯的发展,您最终将面临面试,要求您设计特定的系统组件。如果您尽早掌握系统设计,您将为自己的长期成功做好准备。
结论
显然,软件行业正在经历巨大的变化,这些变化将继续影响我们在未来几年构建和扩展系统的方式。为了保持领先地位,请采用人工智能工具,投资高性能语言,并将系统设计作为优先事项。未来属于那些今天就做好准备的人。
版权声明
本文为本站原创内容,转载需注明文章来源(https://www.eiefun.com),另:文中部分素材可能会引用自其他平台,如有侵权或其它,请联系 admin@eiefun.com,我们会第一时间配合删除