随着2024年接近尾声,软件行业经历了一系列显著的变化,这些变化将在我们进入2025年时产生深远的影响。今年在Yassir观察到的趋势并非昙花一现;它们正在深刻地塑造着软件开发的未来。
混合职位正逐渐成为软件岗位的新常态;生成式AI正从根本上改变我们编写代码的方式,像 Go 和 Rust 这样的高性能语言正在提升大型系统中的效率,而良好的系统设计比任何时候都更为重要,对于可扩展性和可靠性至关重要。
了解这些趋势对于任何想在职业生涯中取得成功的软件工程师而言都非常重要。
- 混合职位的兴起
作为一名Staff Engineer,我管理着一个超过30名工程师的团队,这些工程师遍布10个国家,我在Yassir公司指导技术方向和发展。在过去,这个职位要求我必须在办公室工作,这意味着我只能指导位于我心爱的开罗的团队成员。
如今,借助一台笔记本电脑、稳定的网络连接和一杯好咖啡,许多工作都可以远程完成。这使我们的团队扩展速度更快,并且让我能够为从摩洛哥到巴基斯坦的朋友们提供帮助。
我们采用了一种结合了远程工作和办公室协作优势的混合模式。团队可以居家办公,享受灵活的工作时间和自主性,并且也可以到我们的办公室枢纽参加协作会议和面对面的问题解决及指导。
(点击这里查看我们的开放职位:https://jobs.lever.co/Yassir!)
这种混合模式正在软件工程领域成为常态。许多公司正在找到远程工作与办公室工作之间的平衡点,既保证了灵活性,又可以通过偶尔的互动增进团队之间的联系,并确保新入职的员工得到他们需要的支持。混合工作模式提供了远程工作的灵活性,并保持了工作效率,同时并在必要时保持了面对面合作的优势。这一转变改变了我们对团队合作的理解,提高了科技行业的生产力和团队的凝聚力。
2. AI:游戏规则的改变者
随着团队拥抱远程工作的方式,另一种正在重塑软件开发工作流程的力量是集成人工智能(AI)。在当今世界,AI 几乎渗透到每一个行业,无论你从事哪个领域,几乎不可能避免听说或使用像 ChatGPT 这样的工具。对于 Generation Z 来说,像 ChatGPT 这样的 AI 工具将像互联网一样普遍的存在,几年前还难以想象的资源如今却变得触手可及。这些工具属于生成式 AI 的范畴,可以用于管理对话、生成内容并通过简单的互动协助完成各种任务。
在软件行业中,人工智能的影响是巨大的。它有可能彻底改变我们的编码和开发方式。如今,软件工程师可以利用诸如Github Copilot或Cursor之类的工具,来自动化代码生成,简化工作流程,甚至处理那些需要手动花费数小时或数天才能完成的任务。但就像任何变革性技术一样,随之而来的问题是:这些工具到底靠不靠谱?我们能不能信任AI来代替那些一直以来定义软件工程的手工技艺和解决问题的能力?我们能不能期望AI能理解业务领域和所需的权衡?
为了应对这些问题,我们在Yassir做了一个小实验,用了些代码生成助手,尝试理解这对开发人员工作效率的影响。
您可以在这里查看我们开放的职位机会!(https://jobs.lever.co/Yassir)
我的感觉是,虽然AI工具能做许多自动化任务,但它们不能替代人类工程师带来的深厚的专业知识、解决问题的能力和创造力。可以把AI视为一个强大的帮手,它可以简化日常任务,提出优化的建议,甚至生成代码——像副驾一样,作为你的助手(即一个副驾),协助你完成这些工作。然而,确保最终产品能够扩展、安全和可靠的责任仍然在于你这样的工程师。
对于初级工程师,我强烈建议大家在培养扎实的编程基础技能之前,再接触AI生成的代码。一开始就过度依赖这些工具可能会阻碍你对核心概念和问题解决技巧的理解,这会影响你的长期发展。虽然AI可以处理一些繁琐的任务,但真正的工程仍然需要人类的直觉、经验和判断力。
总而言之,人工智能无疑彻底改变了软件行业乃至更广泛的领域。它开启了我们以前从未想到过的效率和创新之门。要最大限度地发挥其潜力,工程师们必须认识到,人工智能是一个强大的工具,但不是人类思维的替代。正是人类的专业知识与人工智能的能力相结合,将推动工程学未来的发展。
3. 高性能语言(Go,Rust),
如今,性能对于数字产品而言是关键,特别是在提供按需服务的产品中。用户希望体验流畅,否则,他们可能会选择其他产品。
要达到高性能,你需要在系统背后使用合适的技术。你选择的编程语言至关重要。当然,如果你追求极致性能,可以选择C或C++这样的语言,它们非常高效。但说实话,使用这些语言的开发体验简直糟糕透顶,而且找到真正精通这些语言的开发者就像大海捞针一样。
那就是 Go 和 Rust 上场的时候了。这两种语言正在兴起,它们提供了高性能和相对平缓的学习曲线,不像 C/C++ 那样陡峭。我在我们系统中使用过 Go,并且和 JavaScript 做了比较。在该项目中,我们用 Go 实现了 +80% 的性能提升,同时使用了更少的资源。很明显,Go 在后端系统的表现远超 JavaScript。
关于 Rust,我计划更深入地了解它,然而,从目前的市场表现来看,用 Rust 编写的编译器和运行时已经显示出极高的效率,尤其是在与 C/C++ 比较时。Rust 绝对值得关注的。
4. 系统设计:正确扩展的诀窍
当初创公司刚开始设计系统时,他们在组件的交互和功能协同方面通常会采取一些捷径。他们的重点通常是利用有限的资源和时间快速上线功能。但随着这些初创公司的发展,这些快速且粗糙的方法带来的问题开始反过来困扰他们。
这个循环几乎是不可避免的,但情况正在发生变化,特别是在人才变得越来越全球化(参见第1点)的情况下,越来越多的工程师开始自己创业。这些工程师深知大规模系统有多么复杂,但他们也知道,当系统设计合理时,它们可以促进成功并帮助公司高效扩展业务。
对于今天的工程师来说,尽早开始考虑系统设计是至关重要的。一本很好的资源是亚历克斯·徐(Alex Xu)所著的《系统设计面试》一书。随着你在职业生涯中的成长,你最终会面临要求你设计特定系统组件的面试。如果你能尽早掌握系统设计,你将为自己长期的成功铺平道路。
总结
显而易见的是,软件行业正在经历巨大的变革,这些变化将继续塑造我们未来几年构建和扩展系统的方式。为了走在最前沿,拥抱人工智能工具,投资高性能语言,并优先考虑系统设计方面。未来属于那些今天就开始准备的人。
作者简介
我是雅哈·埃尔阿拉ビー,Yassir的一名软件工程师,有着十年的软件行业经验。我的职业道路由解决问题的热情和技术领导力,以及推动工程团队创新所定义。
(您可以在这里看看我们的职位空缺哦!)!
共同学习,写下你的评论
评论加载中...
作者其他优质文章