来源 | quanticdev.com
译者 | 弯月,责编 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
以下为译文:
本文以GitHub Octoverse的数据为基础,加上本文作者十多年来软件工程师的经历与观察,来谈一谈2020年及未来软件工程的发展状况。
传送门:https://octoverse.github.com/
概述
在过去的20年中,软件工程行业取得了突飞猛进的发展,而且这种势头还将继续。根据《财富》的数据,2019年全球排名前15位的科技公司的总收入再创新高,达到1.67万亿美元,比2018年增长2%。软件公司数量之多达到了史无前例。
现非软件公司陆续将软件组件引入到自家产品中,例如车辆、洗衣机等。未来是软件的世界,但并非所有软件都是平等的。找到最有前途和发展最快的软件领域有助于你的职业生涯发展和项目推进。
投资迅速增加的领域可以帮助你更轻松地找到工作并获得更高的报酬,并帮助你为项目寻找资金。因此我们不应该浪费时间,立即行动起来吧。
编程的发展2019年,GitHub新增的开发人员高达1000万,这是个庞大的数字。GitHub能够发展到如此规模,且几乎没有出现任何问题,我表示十分敬佩。
这些新增的开发人员为来自世界各地的4,400万多个代码库做出了贡献。提交的代码中80%来自美国以外。美国之外的科技行业也在快速增长,GitHub数据也表明了这一点。也许在未来几十年内,硅谷将面临与多个国家和地区争夺全球软件工程中心第一名的情形。
虽然GitHub的数据不能代表整个世界,但这是全球最大的代码托管提供商,因此能够很好地代表总体趋势。
去年,在全球财富50强的公司中,有70%为开源做出了贡献。70%的贡献度非常巨大。
据GitHub显示,这个数字还在不断增长。不仅如此,去年GitHub上的组织数量高达290万个,虽然这个数字非常惊人,但随着越来越多的公司在工作流程中引入软件组件,因此即便是更大的数字也不足为奇。
开源的增长
平均来说,GitHub上每个开源项目都拥有41个不同国家和地区的贡献者:
继美国之后,中国、印度和德国的开源发展也非常迅速。中国的开发商分叉并克隆的项目比去年增加了48%。我认为对于中国软件的增长,大家都不会感到惊讶。目前的问题不是中国是否会超越美国,而是何时会超越。
从各个大陆来看,亚洲已经领先于美国和欧洲。然而,亚洲的人口总计达16亿,南美和非洲远远落后,不足欧洲的1/3。
顶级代码库
对于每种编程语言(包括JavaScript、Python、Ruby等),排名前50位的开源软件包都有大量的依赖项目。
例如,尽管平均每个开源软件包的直接贡献者少于40个,但流行的npm软件包仍可能是数百万其他代码库的依赖项。依赖最多的是Java、Python和JavaScript,这也不足为奇,因为这些是目前排名前三的编程语言,我认为这种形式在短期内不会有所变化。
热门项目
随着开源代码越来越多,面向开源代码的贡献也越来越多。我强烈建议每个人都来为开源项目做贡献。这是进入开源社区以及获得宝贵经验的绝佳机会,你还可以在简历中注明你创建和贡献的项目,这是个很好的加分项。
如下表所示,去年贡献最大的项目都是最常用的项目。例如,Visual Studio Code是最佳的文本编辑器之一。TensorFlow、React Native和Kubernetes也是如此。这些都是无价的工具,深受众人喜爱,所以拥有大量贡献者也是预料之中的事情。
顶级编程语言
毫无疑问,支持大多数Web的编程语言JavaScript仍然排名第一。我认为Python有望超越JavaScript,就让我们拭目以待吧。实际上,在GitHub之外,Python可能已经是排名第一的编程语言。与往常一样,Java、PHP和C ++并驾齐驱。
TypeScript的迅猛发展有点超出我的预料。我曾预言,一旦TypeScript所有的优秀功能都被并入JavaScript后,它就会像CoffeeScript和许多其他库一样被丢弃。
只有少数TypeScript的功能并入了JavaScript,包括私有/静态字段、可选链接和空合并。TypeScript仍保持着其独特的身份,并继续发挥作用。
我仍然认为现代JavaScript在简洁和干净方面比TypeScript略胜一筹。TypeScript的工具和依赖项(即第三者类型定义包)带来巨大的复杂性,我认为这样做不值得。不过话说回来,我也不是先知,因此我们只能等待,看看TypeScript是否能逃过CoffeeScript的命运。
数据科学与机器学习
2019年是数据科学和机器学习的一年。我认为未来十年中,这种状况还将持续。分析和理解大数据有大量价值。尤其是结合机器学习,这两者所产生的价值可能会超过计算机科学的所有其他分支。
我认为,唯一可以击败数据科学和机器学习的技术就是量子计算的突破。否则,我们还是应该投资这个最热门的计算机科学分支。我常常说,如果你投资不断发展的技术,那么就可以随之一起发展。
机器学习正在渗透生活的方方面面。通过机器学习预测购物行为并提供专属建议就是一个很好的例子。Siri和Alexa等虚拟个人助理、垃圾邮件过滤器、自动化的客户支持等等领域都在朝着机器学习领域发展。
云计算、开发运维与安全性
软件系统的复杂性和规模与日俱增。此外,诸如机器学习之类的特定任务需要非常规的服务器硬件(如TPU,即张量处理单元),它们是定制设计的硬件,可加快机器学习任务的速度。因此,我们需要投入大量的内部工作来管理和维护服务器。
解决这个问题最明智的方法就是使用开发运维工具来自动化服务器的部署和维护。将这些服务器移至云提供商也是不错的选择,这样你就永远也不用担心物理服务器了。
随着云托管和开发运维需求的增加,这方面的技术在市场中变得越来越受欢迎。如果你希望使用硬件和网络,那么尝试使用云提供商和开发运维工具将是一项不错的投资。大多数云提供商都提供了免费的免费套餐,你可以在Google Cloud、亚马逊的AWS、Azure或其他小型供应商上创建一个免费账户,然后进行尝试和学习。
显然,将所有数据都放到互联网上存在重大的安全隐患。因此开发运维和云用户都需要增强安全意识。此外,专用软件和网络安全工程师的需求也开始增加。投资学习云和开发运维决策对安全的影响至关重要。如果你打算面试开发运维或基础设施的职位,则应该高度重视安全性。
总结
整个软件行业都在迅速发展,并正在向其他行业和领域融入。随着这个领域的发展,学习编程和提高软件工程的技术可以为你带来丰厚的回报。
此外,瞄准软件行业软件发展最快的领域,并投资时间和精力有助于你的职业生涯发展。我们需要不断学习,并尝试找到可以利用的机会或可在不断发展的软件领域中占据一席之地的产品。
一旦这种小众产品成为主流,你的产品就能获得巨大的成功,而你也可以跻身成功人士。即便失败,也可以成为你作为产品人员的宝贵经验。
原文链接:https://quanticdev.com/articles/software-engineering-in-2020/
本文为CSDN翻译文章,转载请注明出处。
☞讯飞智能语音先锋者:等到人机交互与人类交流一样自然时,真正的智能时代就来了!
☞中国GitHub开发者数量年增长37%,为全球最快
☞从Nginx到Pandownload,程序员如何避免面向监狱编程?
☞只会高中数学运算就能发现算法?Google开源的AutoML-Zero有多厉害
☞Spring Cloud云架构下的微服务架构:部门微服务(Dept)
☞从Spring Cloud到Service Mesh,微服务架构治理体系如何演进?