一、首先,我们先来谈些D(大)S(势)S(所)Q(趋)
1. Progressive Web Apps(渐进式Web应用 PWA)
也许你还不知道,2016年一种叫做PWA的概念已经悄然兴起,现在我们就来深♂入了解一下它的内♂涵。
在生活中你有没有在没有网或者几乎没有网的情况下打开过淘宝知乎或者B站,那些本应该是商品文章视频的地方可能没有图片,但是也能完成一点简单的功能,比如显示商品名文章名视频名。这时你被某个商品吸引,发现自己没开网,打开网后就可以进到商品购买页了。但是没有网,哪里来的数据呢?这一点就很好地体现了PWA的外壳型和离线性,先渲染一些类似于边框的东西,并且由于其服务器架构,用户即使没有网或者弱网也可以秒开一些东西我们认为,在2018年,PWA将变得更加重要,值得调查。
2. 人工智能+机器人,炒作还是未来?
现在每个人都在谈论机器人。从运行它们的平台到构建它们的框架,整个互联网社会都在尝试制造自己的机器人。 机器人可以称得上是下一个犹如今日手机APP一样重量级的的开发项目,如果你加快脚步,你也许可以赶上潮流。但这也不是没有风险的,一旦人们厌倦了它,机器人可能会被降级到一些无聊的角色,如自动客户支持。但是,我们可以梦想!
人工智能是2016年的流行语。语音识别和图像分类只是该技术的两种面向用户的应用,其机器达到甚至超过人类的性能。有很多创业公司将AI和机器学习应用到新领域。许多开源项目被发布,比如谷歌的Tensor Flow和微软的认知工具包。
3. 前端框架合并
在JavaScript社区,看到一个有趣的现象几乎每周都会有新的工具出现,但是在2016年,这些新工具并没有在应用上取代那些旧的。相反,我们看到流行的框架交换想法和纳入新手提出的创新。 所以在2017年,你选择的主要JS框架无关紧要,它们的功能大多是相似的。
4. 云
各地的公司和开发商都在将自己抛向“云”端。 这种虚拟化的计算机基础架构,可根据需要提供,并可从控制面板完全配置。 三大云提供商是AWS,Google Cloud和Azure。由于他们持续的竞争价格一直在下降,这吸引了更多的小公司和个人开发商涌入。因此,无论你工作在BAT还是创企,熟悉云工作流程将是2018年的一笔不错的投资。
5. 机器学习
机器学习在过去的十二个月中已经爆炸式增长。 AlphaGo对决李世乭比赛在3月将机器学习推进大众的视野。 从原始数据中学习的智能计算机系统正在改变我们与移动设备交互的方式。表面看来,机器学习将是2017年更大赢家。
6. VR&AR
虚拟现实(VR)和增强现实(AR)已经存在了一段时间,但最终该技术已经成熟,足以提供引人注目的体验。比如前一阵子淘宝试水的VR购物,或者网上热卖的LeapMotion和kinect等游戏设备,都标志着VR/AR设备的远大前景。 Facebook(Oculus Rift),Google(Daydream)和Microsoft(Windows Holographic)都有虚拟现实平台,各大公司对于第三方开发者打出了欢迎的态度。
学习其中之一:
云部署,机器学习库,VR开发。
二、编程语言——安身立命之本
1. JavaScript
继续其令人难以置信的创新步伐。为了配合Web浏览器的快速发布计划,JS标准每年就会更新一次。下一个版本,ES2017,预计将于2017年中期完成。它将带来许多JS开发人员的梦想特征——异步/等待,用于处理异步函数。什么,新功能学不懂?那么也许你可以从基本的JS类库学起。
2. TypeScript
TypeScript 2.1于2016年年底发布,为旧浏览器带来了异步/等待,并改进了类型推断。 TypeScript是一种编译为JavaScript的静态类型语言。它增加了强大的功能,如经典的OOP模型和可选的静态类型,使大代码库更容易维护。它是编写Angular 2应用程序的首选语言,我们建议你尝试。
3. C#
C#7.0预计在2017年推出。当他们推出开源Visual Studio代码编辑器和.Net Core时,微软让每个人惊讶不已,读到这里你可能就会问了,一个新版本更新了一个框架和一个编辑器而已,何谈惊讶不已呢?抛下“秒天秒地秒空气”的VS不说(2016年微软发布了Mac版VS),单单谈.Net Core这个大家不太熟悉的框架就可以知道这一代的C#有多厉害了。
众所周知,Java几乎可以算是目前应用最广泛的编程语言,它之所以应用广泛,能被安卓选为设计语言就是因为其跨平台性。而.Net Core就是将C#原来的架构.Net Framework和表现优秀的编辑器Mono(个人体验而言Mono代码提示和报错都是相当优秀的),整合到跨平台上实现,并且在GitHub上尝试开源。这一点直接触动了Java的核心竞争力,因此才能算是令人瞠目结舌。现在的C#不仅在Windows上运行,还可以跑在Linux、Unix、MacOS甚至BSD上,我们相信,2017年对于所有C#程序员来说将是令人兴奋的一年。
4. Python
Python 3.6于12月发布。它正在巩固其作为开发人员,IT专业人员和科学家的脚本语言的首选地位。它适用于自动化,Web开发,机器学习和科学计算。当你想写一个简单的爬虫程序来获取信息时,现在Python理应是你的第一选择。至于Python 2/3版本的问题已经争论多年,在社区的努力下,但是现在你可以轻松地选择3并享受完整的库支持。对于那些需要额外的性能,他们可以看看PyPy,并可以选用JIT启用Python运行时。
5. Ruby
Ruby 2.3今年早些时候发布了一些性能改进。 Ruby也是一个通用脚本语言的好选择,但是当与Rails配对时可能会更加大放异彩。 Ruby 3×3的倡议被宣布,这将试图使即将推出的Ruby 3版本比当前版本快3倍,为在更多的上下文中使用Ruby提供了基础。
6. PHP
PHP 7.1是在12月发布的,并对该语言进行了小小的增强。这基于去年版本7.0中的主要性能改进,将PHP转变为构建Web应用程序的快速平台。我们认为当你需要开发一个Web应用的时候,PHP将是一个不错的选择。
7. Java
Java 9预计在2017年,并将带来欢迎的新功能,如评估代码,HTTP 2.0支持和新的API的repl。对于有才能的Java开发人员和使用该语言的广泛的令人兴奋的项目有强烈的需求。如果Java不是你的菜,有一些基于JVM的语言,如Kotlin和Scala,你可以试试。
8. Swift
Swift 3今年早些时候发布。这是苹果对现代编程语言的愿景(乔布斯尸骨未寒。。。),它简化了iOS和macOS上的应用程序开发。 Swift是开源的,吸引了大量的社区参与维护开发。版本4计划于2017年,将改进语言和介绍服务器API,使其成为编写网络应用程序和后端的一个不错的选择。
如果你正在寻找更令人兴奋的东西,你可以尝试Crystal and Elixir,它们结合了一个友好的类似ruby的语言平台。或者你可以看看一个功能语言如Haskell或Clojure。另外两种可以选择的快速语言应该是Rust和Go。
2018年语言方向建议:
学习一个或多个:JS(ES2017),TypeScript,C#,Python,Ruby,PHP7,Java / Kotlin / Scala。
三、前端(9K)到全栈(10k+)
1. Web
Web平台最近取得了两个重大进展——Web Assembly 和 Service Workers,他们打开快速和高效的Web应用程序的门,弥合与本地编译应用程序的差距。Service Workers尤其是渐进式Web应用程序(上文中提到的PWA)的启用技术,并为Web平台的通知提供支持,将来还会有更多的API。
2. Angular.js 2
Angular.js 2今年发布。该框架由Google支持,非常受企业和大公(Gu)司(Ge)的欢迎。它具有大量的功能,使从网络到桌面和移动应用程序的写作成为可能。框架是用TypeScript编写的,这也是编写应用程序的推荐语言。有很多要学习的内容,但我们认为在2017年学习Angular 2将是一笔不错的投资。
3. Vue.js
Vue.js也看到了今年的2.0版本。它借鉴了Angular,React和Ember的好主意,并将它们放入一个易于使用的包中。它也比前两个更轻量级并且更快。我们建议你今年试试,从我们的一个Vue.js教程开始。http://igeekbar.com/igeekbar/post/109.htm
4. Ember
Ember是JavaScript框架的另一个选择。它支持数据绑定,自动更新模板,组件和服务器端呈现。与其竞争对手相比,它的一个好处是它更成熟和稳定。打破变化的频率要低得多,社区也会降低兼容性。这使得框架成为长期应用程序的不错选择。
另外两个值得一看的框架是Aurelia和React。去年,React的生态系统变得越来越复杂,因此很难为初学者推荐。但经验丰富的开发者可以将库与GraphQL,Relay,Flux和Immutable.js组合成一个全面的完整堆栈解决方案。
没有前端编译可以绕开Bootstrap,Bootstrap4目前处于Alpha版本,预计在2017年发布。值得注意的变化是新的通用卡组件和flexbox网格,这个现代化的框架,使工作环境更加简单快乐。
5. SASS和LESS
SASS和LESS仍然是当今最流行的两种CSS预处理器。虽然vanilla CSS最终得到了对变量的支持,SASS和LESS仍然优于对mixins,函数和代码组织的支持。如果你还没有,请查看我们的SASS和LESS快速入门指南。
2018年前端框架方向建议:
学习以下一个或多个:Angular 2,Vue.js,Ember,Bootstrap,LESS / SASS。
四、后端
后端有很多选择,所有这一切都取决于你对编程语言或特定性能需求的偏好。Web开发中的持续趋势是远离后端,将该层转换为由前端和移动应用程序使用的API。但是,一个完整的堆栈框架通常更简单,更快地开发,并且仍然是许多web应用程序的有效选择。
1. Node.js
Node.js是在浏览器外运行JS的主要方式。它看到了今年的许多新版本,增加了性能和增加覆盖整个ES6标准。Node具有构建快速API,服务器,桌面应用程序甚至机器人的框架,以及创建可以想象的各种模块的庞大社区。在Node.js的框架中你可能想研究:Express,Koa,Next,Nodal。
2. PHP
什么?PHP,我没逗你。PHP首先是一种Web语言,并且有大量的Web框架可供选择。由于其出色的文档和未来,Laravel已经形成了一个活跃的社区。 Zend Framework发布了第3版,这标志着这种面向业务的框架的极大升级。 Symfony在今年也看到了很多新的版本,使它成为一个完整的堆栈解决方案,一个更好的选择。
3. Ruby
对于Ruby,Rails框架是首选。版本5.0于2016年发布,为Web套接字,API模式提供支持。 Sinatra也是小应用程序的不错选择,版本2.0预计2017年有时。
4. Python
Python以Django和Flask的形式有了自己的全栈/最小框架组合。 Django 1.10在8月发布,引入全文搜索Postgres和一个大修的中间件层。
5. Java
Java生态系统还有流行的Web框架可供选择。 Play和Spark是两个固定的选择,,他们也可以与Scala一起使用。
6. Phoenix
对于爱好者来说,Phoenix也是一种后端可选项,这是用Elixir编写的,并试图成为一个功能完整、性能卓越的Rails替代品。如果Elixir是你想在2017年学习的语言之一,试试Phoenix吧。
2018年后端方向建议:
学习其中之一:全栈后端框架,一个微框架。
五、数据库
1. MySQL
MySQL 8.0将是数据库的下一个主要版本。预计2017年某个时候,它将给系统带来很多改进。 MySQL仍然是最受(mian)欢迎(fei)的数据库管理系统,整个行业都受益于这些新版本。
2. PostgreSQL
PostgreSQL 9.6于9月发布。它带来更好的全文搜索,加快了数据库系统的并行查询和更高效的复制,聚合,索引和排序。 Postgres用于大规模,太字节规模的数据集,以及繁忙的网络应用程序,这些优化在大数据和海量数据时代都是是受欢迎的。
3. NoSQL
对于NoSQL粉丝,我们可以推荐CouchDB。它是一个快速和可扩展的JSON存储系统,它公开了一个REST-ful HTTP API。数据库易于使用,性能卓越。 PouchDB是一个精神对应的CouchDB,完全在浏览器中工作,可以与Couch同步。这允许你在离线准备的网络应用程序中使用Pouch,并在互联网连接可用后自动同步。
4. Redis
Redis是我们最喜欢的键值存储,它具有轻量级,快速的特点,并且功能繁多。你可以将其用作智能内存替代方法,作为NoSQL数据存储或进程消息传递和同步通道。它提供了大量的数据结构可供选择,并且即将到来的4.0版本将有一个模块系统和改进的复制。
2018年数据库方向建议:
学习其中之一:MySQL,Postgres,CouchDB,Redis。
六、开发工具
1. Yarn
Yarn是由Facebook开发的Node.js的替代包管理器。它是对npm命令行工具的升级,提供更快捷的安装,更好的安全性和稳定的项目构建。它仍然使用npm包注册表作为其后端,因此你可以访问优秀的JavaScript模块。 Yarn与npm使用的package.json格式兼容,而且相较于npm,二者最大的差别可能就是快速安装了吧。
2. Visual Studio Code和Atom
两个最受欢迎的开源代码编辑器 - Visual Studio Code和Atom在过去12个月中为我们呈现到了不可思议的创新成果。首先是网络构建项目,如果你还是一个“单打独斗”的程序员也许你并不需要网络项目,但如果你不能提前养成一个好的版本控制习惯,当你进入大型项目组时,你可能会成为需要在回家的路上半路跑回公司次数最多的那个人。语法检查可以帮助你提前减少BUG。编辑器有可用的语言检查,linting和重构工具的大量语言的插件。
3. Git
Git是最流行的源代码版本控制系统。它是无服务器的,你可以将计算机上的任何文件夹转换为存储库。如果你想共享代码,你有很多选择,如GitLab,
4. Bitbucket和Github
Bitbucket和Github,仅举几例。对于2017年,我们建议你熟悉git命令行,因为它会比你想象的更方便。
桌面应用程序还没有死。即使网络应用程序变得越来越有能力,有时你需要强大的功能和API,这是网络平台根本不可用。使用诸如Electron和NW.js之类的工具,你可以使用Web技术编写桌面应用程序。借此,你可以如鱼得水地在操作系统中尽量发挥npm的各个模块的功能。
5. DevOps
软件团队组织的最新趋势是让开发人员负责自己的软件部署。也称为DevOps,这导致更快的发布和更快地修复生产中的问题。现在公司也越来越看重那种即会运营又会写代码的程序员(或者说有可能在35岁之后能和公司一起走下去的员工),因此熟悉能够实现这一目标的技术将是一个巨大的进步。我们推荐的一些工具是Ansible和Docker。拥有Linux命令行和基本系统管理技能的经验也将使你看起来更优秀。
2018年发发工具方向建议:
尝试一个或多个这些:Yarn,Git,Visual Studio,Electron,Ansible,Docker。