我认为,这是一种暗示...
我经常被 我的学生们 问到的最常见的问题之一是,“为什么你在课程中教授Node.js而不是PHP?” 告诉他们,“相信我,我在行业内工作”显然不够。因此,本篇就是我在课程中包含Node.js的原因,以及如果你想要成为一名开发者,你应该抛弃PHP的原因。尽管我用这两种语言作为一个例子,但我会在本文中向你展示一个框架,用来决定你应该在接下来的开发生涯中学习哪些工具、编程语言、框架以及代码库。
作为一名开发者,你的时间和资源是有限的,你必须决定将你的时间投入到哪些语言和工具中,从而获取最大回报。
现在,你最好问自己一个问题:我能将时间和精力投入到哪些学习上,才能在未来的开发事业中获得知识、薪资和满意度方面的最大净值?
这并不意味着选择最容易的路径。这意味着选择一些工具,使你能够在接下来的许多年中保持竞争力的同时,提升你的技能,从而使你成为一名 高级开发人员 。
在本文的结论部分,你会发现所有我所推荐的2018年的技术,如果你想要成为一名Web开发者的话。因此,如果你实在急不可耐,可以直接跳到本文末尾。否则,请抓住这次千载难逢的机会,开启一段冒险之旅。
我们会在本文中使用两种类型的分析: 就业前景分析 和 技术分析 。下面就是具体内容:
图片来源: https://vizteck.com/blog
我们会这个分析中使用 Stackoverflow开发者调查 数据和 LinkedIn 数据。我们也将只聚焦Web开发相关的技术。
在排行榜中,JavaScript连续5年是最常用的编程语言。Python的使用5年内首次超过PHP。那么Node.js是什么情况呢?Node.js是一种JavaScript运行时环境。通俗点讲,Node.js是一种使用JavaScript的方式,就像你在服务器端使用PHP那样。因此,在本文中,你可以将Node.js当作JavaScript。
你可以看到,Node.js和JavaScript排在首位,而且明显比PHP流行。
在过去5年中,Stackoverflow从开发者调查中收集数据,发现JavaScript和Node.js之类的语言的流行度在增加,而像PHP之类的语言的使用情况在萎缩:
React最受开发者喜爱,然而,Node.js是开发者最想要掌握的,而且是第二受喜爱的。
考虑到拥有的开发经验,使用下表中蓝线以上语言(例如Go、Rust和Clojure)的开发者的薪资相对较高,而使用蓝线以下语言(例如PHP)的开发者的薪资相对较低。表中圆圈的大小表示该语言相对于其它语言来说的使用者数量。
PHP开发者的薪资明显更低且他们的开发经验年限更少。
在LinkedIn招聘,你可以看到全世界发布的Node.js职位比PHP职位多了 差不多10,000个 。这还不算Node.js相对于PHP来说是一个 年轻得多的技术 ,而且PHP在WordPress中广泛使用,而WordPress 构建了互联网上30%的网站 。
最终,你可以看到,各地区的技术职位的平均薪资(我没有包含世界栏,因为PHP都没有在世界栏上榜):
当然,我们在这里不是要吐槽PHP。我们只是通过观察这些数值来决定选择学习什么。PHP明显比JavaScript和Node.js之类的技术排名低。
更新:截至本文发布,stackoverflow发布了2018年调查结果。 PHP的衰退在扩大 。
PHP人气在下降,而Node.js的就业市场和人气在增加。总之,PHP开发人员的薪资明显比其他开发人员低,而且差距 似乎在继续加大 。
让我们看一看这两种技术各自的优缺点。
Node.js非常适合那些并发连接数比较多的应用,每一个请求只需要很少的CPU时钟周期。这使它非常适合目前互联网上的许多应用,例如单页应用应用和实时应用。
使用JavaScript内置的异步处理,可以创建高度可伸缩的服务器端代码,最大化单个CPU的利用率和内存,并且能够比传统的多线程服务器处理更多的并发请求。
Node.js的依赖、规则和指南更少,这使得开发人员可以更自由更有创造力地按照他们的方式开发他们的应用。开发人员可以为他们的项目选择最佳的架构、设计模式、模块和功能,通过NPM从社区中获益。
PHP简单易学,围绕它有一个庞大的社区。对于标准化的博客或新闻站点方案来说,PHP是一个不错的选择。它能够借助于最流行的CMS(内容管理系统)——WordPress的力量。WordPress使你能够无需编写太多代码,就可以定制博客。然而,在这种情况下,更简单导致质量不怎么样。一项技术越容易学习,人们进入该领域也就越容易,然后就增加了人才供应,你的服务的收费也就更低。
随着WordPress的普及,PHP是Web 1.0时代最顶尖的语言之一。Node.js在2009年发布,而且技术上来讲并不是一种语言,而是JavaScript的一种运行时环境。Node.js是新一代Web开发的佼佼者,在Web 2.0时代遇到的越来越多的基于事件的、数据驱动的、I/O密集的应用,更适合用它来构建。
特别是,Node.js基于事件的异步架构,使得它非常适合实时应用,例如消息和协作应用。在这些应用中,会发生大量并发请求,并且客户端和服务器之间会有大量前后端交互。没有WordPress就活不成?Node.js有它自己非常棒的CMS—— Keystone.js 。
总是需要有所取舍。从来不会有一种技术,你学了之后就能解决所有的难题并且不会过时。我们所能做的就是分析我们的选项,然后挑选出投资回报最好的一个。看看上面所讲的工作前景分析和技术分析,我们可以看出一个明显的赢家。
尽管所有技术用它们特定的方式使用都非常棒,但我们生活在一个信息如此丰富的世界,因此我们必须对我们可以集中精力并深入学习的话题数量进行限制。
在我的课程中,我教授一些这个领域的职业生涯相关的方法论,以及像Facebook、Netflix、Google和Amazon之类的一些大公司所使用的工具。如果你想要在2018年成为一名全栈Web开发者,我建议你学习:
HTML5
CSS3
Javascript
React.js
Node.js + Express.js
PostgreSQL
以及其它一些技术…
你可以通过阅读我的文章《 在2018年学习编码 》,或者查看 我的在线课程 ,带你从零经验到成为一名拥有必备开发技能的职业开发者(使用优惠券代码: MEDIUMNODE1723 ,只需要10.99美元)。
你觉得怎么样?
更新: 围绕技术的讨论应该有来自双方的意见。我建议你读一读评论。记住,总是存在权衡取舍,而你在工作中使用什么工具最终取决于你自己。我们所能做的就是了解我们的选择项,而不是盲目跟风。最后,愿意考虑与你自己不同的意见。
Andrei Neagoie 高级软件开发者。目前致力于打造教授开发技巧的终极课程。可以在twitter上 @andreineagoie ,和他交流。
查看英文原文: Want to be a Web Developer? Learn Node.js not PHP
感谢覃云对本文的审校。