现在,是时候谈一谈 2021年及以后的软件工程状况了。

本文以 GitHub Octoverse 数据为基础,加上我作为一个拥有十年经验的软件工程师的经验和观察。软件工程在过去 20 年来实现了爆炸式的增长,而且这种势头似乎还在保持。据《财富》(Fortune)数据显示,2019 年全球前 15 家科技公司的总收入达到了创纪录的 1.67 万亿美元,比 2018 年增长了 2%。今天的软件公司比以往任何时候都要多。

此外,现有的非软件公司在产品中引入了更多的软件组件,从汽车到洗衣机,无所不包。未来是软件的天下,但并非所有的软件都是平等的。确定软件最有前途和发展最快的领域,可以帮助你实现事业和项目的腾飞。投资于一个发展中的领域,可以帮助你更容易找到一份工作,并获得更高的报酬,帮助你为项目筹到资金。那么,闲话少叙,直入正题。

编程的发展

2019 年,有 1000 万开发者新人进入了 GitHub。我猜想大部分新用户都是来自美国以外的地区,但即便如此,这仍然是一个巨大的数字。非常感谢 GitHub,能够在几乎没有任何问题的情况下,将规模扩大到这样的程度,我对 GitHub 表示敬意。

这些新开发人员为来自世界各地的 4400 多万个仓库做出了贡献。80% 的代码提交来自美国以外的国家和地区。同样,在美国以外的国家和地区,科技行业也在快速发展,GitHub 的数据也表明了这一点。也许在几十年内,硅谷将会有多个竞争者争夺世界软件工程中心的头把交椅。

还有一点要注意,GitHub 的数据并不能代表整个世界,但它能很好地反映出总的趋势,因为它是世界上最大的代码托管提供商。

去年,在全球财富 50 强企业中,近 70% 的企业为开源做出了贡献。70% 这一数字是巨大的,根据 GitHub 的数据,这一数字还在不断增长。不仅如此,去年 GitHub 上有 290 万个组织,这个数字听起来大得离谱,但随着越来越多的公司将软件组件引入到他们的流程中,即使再大的数字也将会变得司空见惯。

开源的发展

平均而言,GitHub 上的每个开源项目都有来自 41 个不同国家和地区的贡献者。这再次表明了美国以外的国家和地区的增长速度。

继美国之后,开源的使用在中国、印度和德国加快了速度。中国的开发人员分叉(Fork)和克隆的项目比去年增长了 48%。我想,没有人会对中国软件的增长感到意外。问题不在于中国是否会超越美国,而是在于何时超越美国。

如果我们从大洲层面来看,亚洲已经领先于美国和欧洲。然而,看到南美洲和非洲远远落后,单单是欧洲的贡献还不到三分之一,这三大洲的人口加起来有 16 亿,出现这样的状况,是令人悲哀的,也有些令人惊讶。

顶级库

在每一种编程语言的前 50 名开源包中,包括 JavaScript、Python、Ruby 等,都有大量的依赖项目。例如,尽管平均每个直接贡献者不到 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 中,包括私有字段 / 静态字段、可选链接和 null 合并。TypeScript 保留了它的独特特性,并继续在市场上大行其道。然而,我仍然认为,使用简单、现代的 JavaScript 会让 TypeScript 以简单和干净的方式脱颖而出。TypeScript 增加了大量的复杂性,包括工具和依赖项(即第三方类型定义包),我认为这并不值得。另一方面,我不是预言家,所以我们只能拭目以待,看看它是否与 CoffeeScript 有同样的命运。

数据科学与机器学习

2019 年是数据科学和机器学习的一年。我完全期望,在几乎整个十年中,它将会以同样的轨迹持续下去。分析和理解海量数据具有很大的价值。尤其是与机器学习相结合,这两者所产生的的价值可能会超过计算机科学的其他所有分支。我想说的是,唯一能让数据科学和机器学习退居幕后的是量子计算的突破。否则的话,在计算机科学这个最热门的分支领域投入一些时间是个好主意。就像我常说的那样,如果你投资一项正在发展的技术,你就能随之成长。

机器学习在生活的方方面面都有应用。利用机器学习预测购物行为并提供定制的推荐就是一个很好的例子。像 Siri 和 Alexa 这样的虚拟个人助理,像 Google 和 Microsoft Teanslate 这样的自动化翻译服务,垃圾邮件过滤器、自动化客户支持等等,都越来越多的以机器学习为基础。

云计算、DevOps 与安全软件

系统的复杂性和规模越来越大。此外,像机器学习这样的特定任务需要非常规的服务器硬件,如 TPU,即张量处理单元(Tensor processing units),这是一种定制设计的硬件,用于加速机器学习任务。这就导致了企业内部需要进行大量的工作来容纳服务器并手动维护它们。解决这个问题的最明智的做法是使用 DevOps 工具实现服务器部署和维护的自动化。将这些服务器迁移至云计算供应商那里也是合理的,这样你就不必再看别的裸机服务器了。

随着对云托管和 DevOps 需求的增加,这些技能在市场上越来越受到青睐。如果你有从事硬件和网络工作的愿望,那么尝试一下云服务提供商和 DevOps 工具,是一项不错的投资。大多数云服务提供商都提供了慷慨的免费套餐,因此,你可以在 Google Cloud、Amazon Web Services、Azure 或其他任何较小的云服务供应商创建一个免费的账户,并立即开始试验和学习。

显然,将你所有数据都搬到云端上,会带来重大的安全隐患。这增加了任何从事 DevOps 或云的人对安全意识的需求。此外,这也增加了对专用软件和网络安全工程师的需求。投入时间去了解云计算和 DevOps 决策的安全影响至关重要。如果你打算面试 DevOps 或任何基础设施的职位,你应该会非常强调安全性。

总结

软件的发展如盛壮之时的骐骥,一日而驰千里。它正在融合到其他所有的行业领域。既然软件是一个不断发展的领域,那么学习编程并提高自己的软件工程技能,在未来会有巨大的回报。此外,找出软件发展最快的领域,并将时间投入其中,可以让你获得更好的发展。不断学习,努力寻找一切可以利用的机会,或者是可以在不断发展的软件领域中,找到可以为小众服务的产品,当这个小众成为主流时,你最终可以将一个成功的产品掌握在你的手中,这可能成为你未来的成功。如果失败了,那将是成为产品专家之路的一次巨大的经历。

本文引用的资源:

GitHub OctoverseWikipedia:最大的信息技术公司列表

Stack Overflow 年度开发人员调查

Hired:软件工程师状况

2021 年软件工程现状:Python 或将成为第一大编程语言,中国开源涨势最猛相关推荐

  1. 2020年编程现状:Python将成为第一大编程语言,中国开源涨势最猛

    现在,是时候谈一谈 2020 年及以后的软件工程状况了. 本文以 GitHub Octoverse 数据为基础,加上我作为一个拥有十年经验的软件工程师的经验和观察.软件工程在过去 20 年来实现了爆炸 ...

  2. 2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 现在,是时候谈一谈 2020 年及以后的软件工程状况了.本文以 GitHub Octoverse ...

  3. 网络同传软件有哪些_2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛...

    作者 | QuanticDev 译者 | Sambodhi 编辑 | 钰莹 现在,是时候谈一谈 2020 年及以后的软件工程状况了.本文以 GitHub Octoverse 数据为基础,加上我作为一个 ...

  4. python真的超过java了吗-JAVA会被Python超越成为世界上第一大编程语言吗?

    关键时刻,第一时间送达! 这个路还还长,暂时不会,未来5年不会,10年有可能,就看现在小学生.初中生学习的怎么样.最近,也在观注这方面的,偶尔看到新闻说python纳入到高考中,想想如果真纳入了,过4 ...

  5. 2021年12月Python小屋编程比赛获奖名单

    首先祝所有朋友元旦快乐,在新的一年里天天开心,在技术上每天都有新突破! 中国大学MOOC"Python程序设计基础"免费学习地址 推荐图书: <Python程序设计基础(第2 ...

  6. 2021年11月Python小屋编程比赛获奖名单

    中国大学MOOC"Python程序设计基础"第5次开课 推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社 ...

  7. 2021年10月Python小屋编程比赛获奖名单

    全国高校教师Python课程高级研修班(线上,11月20-21日) 中国大学MOOC"Python程序设计基础"第5次开课 推荐图书: <Python程序设计基础(第2版)& ...

  8. 2021年8月Python小屋编程比赛获奖名单

    推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社,第19次印刷,清华大学出版社2019.2020年度畅销图书,山东省高等教育 ...

  9. 2021年6月Python小屋编程比赛获奖名单

    推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社,第19次印刷,清华大学出版社2019.2020年度畅销图书,山东省高等教育 ...

最新文章

  1. Unable to simultaneously satisfy constraints.
  2. Zongsoft.Data 发布公告
  3. JavaScript权威指南(第5版)pdf
  4. 盘点常用Java排序算法
  5. jq ajax提交评论,织梦评论怎么改成自己的jq ajax评论
  6. c 语言 宏 默认参数,C/C++预处理宏可以使用默认参数值吗?
  7. OpenGL学习笔记:第一个OpenGL程序完全注释
  8. 在 Mac 上如何获取扩展来自定 Safari 浏览器?
  9. jupyter notebook python插件_Python文学化编程-Jupyter notebook使用和插件拓展
  10. git reset/git checkout./撤销操作
  11. oracle timesten tt的启动与停止
  12. 作为初学者,第一次用div+css编写淘宝静态首屏
  13. 给英语单词编故事的三个方法
  14. mysql查看sa密码_sqlserver怎么查看sa密码
  15. ieltsListen was compiled with optimization - stepping may behave oddly; variables may not be availab
  16. 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
  17. 制作一个浪漫温馨的生日礼物送她~html+css+javascript蓝色梦幻海洋3D相册(含音乐)
  18. eNSP第三篇:STP,生成树,xSTP,MSTP,多生成树,交换机工作原理,环路的形成
  19. python计算圆环的面积_巧用转化 计算圆环面积
  20. 上海沙龙回顾 | ​字节跳动在Spark SQL上的核心优化实践

热门文章

  1. ie系列浏览器_2020下半年河北教师资格准考证打印只能用ie浏览器吗
  2. 两台服务器数据库怎么自动同步数据库,mysql 多台数据库同步server-id 重复导致的问题...
  3. pycharm写python代码_使用pycharm写python代码的一些提高效率的技巧(持续更新)-Go语言中文社区...
  4. nginx升级修复(CVE-2016-4450)
  5. MySQL第41题怎么评分_mysql练习题1-41
  6. 回调函数 线程_从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2...
  7. autopep8_Autopep8的使用
  8. sscanf 连续相同编辑符_基于单调栈的滑动窗口法求解“和至少为 K 的最短连续子数组”...
  9. java buqi_Java 异常
  10. 300 Longest Increasing Subsequence 最长上升子序列