軟件開發行業繼續向前邁進。 在2017年,咱們看到了新版本的流行語言,框架和工具,這給了咱們更多的力量,而且改變着咱們的工做方式。 跟上一切潮流很難,所以在每一年年末,讓咱們來談一談將來的十二個月什麼纔多是最重要最值得學習的。
前端
Progressive Web Apps(漸進式Web應用PWA)程序員
也許你還不知道,2016年一種叫作PWA的概念已經悄然興起,如今咱們就來深♂入瞭解一下它的內♂涵。web
在生活中你有沒有在沒有網或者幾乎沒有網的狀況下打開過淘寶知乎或者B站,那些本應該是商品文章視頻的地方可能沒有圖片,可是也能完成一點簡單的功能,好比顯示商品名文章名視頻名。這時你被某個商品吸引,發現本身沒開網,打開網後就能夠進到商品購買頁了。可是沒有網,哪裏來的數據呢?這一點就很好地體現了PWA的外殼型和離線性,先渲染一些相似於邊框的東西,而且因爲其服務器架構,用戶即便沒有網或者弱網也能夠秒開一些東西咱們認爲,在2018年,PWA將變得更加劇要,值得調查。數據庫
人工智能機器人,炒做仍是將來?npm
如今每一個人都在談論機器人。從運行它們的平臺到構建它們的框架,整個互聯網社會都在嘗試製造本身的機器人。機器人能夠稱得上是下一個猶現在日手機APP同樣重量級的的開發項目,若是你加快腳步,你也許能夠遇上潮流。但這也不是沒有風險的,一旦人們厭倦了它,機器人可能會被降級到一些無聊的角色,如自動客戶支持。可是,咱們能夠夢想!編程
人工智能是2016年的流行語。語音識別和圖像分類只是該技術的兩種面向用戶的應用,其機器達到甚至超過人類的性能。有不少創業公司將AI和機器學習應用到新領域。許多開源項目被髮布,好比谷歌的Tensor Flow和微軟的認知工具包。json
前端框架合併windows
在JavaScript社區,看到一個有趣的現象幾乎每週都會有新的工具出現,可是在2016年,這些新工具並無在應用上取代那些舊的。相反,咱們看到流行的框架交換想法和歸入新手提出的創新。因此在2017年,你選擇的主要JS框架可有可無,它們的功能大可能是類似的。後端
雲
各地的公司和開發商都在將本身拋向「雲」端。這種虛擬化的計算機基礎架構,可根據須要提供,並可從控制面板徹底配置。三大雲提供商是AWS,Google Cloud和Azure。因爲他們持續的競爭價格一直在降低,這吸引了更多的小公司和我的開發商涌入。所以,不管你工做在BAT仍是創企,熟悉雲工做流程將是2018年的一筆不錯的投資。
機器學習
機器學習在過去的十二個月中已經爆炸式增加。AlphaGo對決李世乭比賽在3月將機器學習推動大衆的視野。從原始數據中學習的智能計算機系統正在改變咱們與移動設備交互的方式。表面看來,機器學習將是2017年更大贏家。
VR&AR
虛擬現實(VR)和加強現實(AR)已經存在了一段時間,但最終該技術已經成熟,足以提供引人注目的體驗。好比前一陣子淘寶試水的VR購物,或者網上熱賣的LeapMotion和kinect等遊戲設備,都標誌着VR/AR設備的遠大前景。Facebook(Oculus Rift),Google(Daydream)和Microsoft(Windows Holographic)都有虛擬現實平臺,各大公司對於第三方開發者打出了歡迎的態度。
學習其中之一:雲部署,機器學習庫,VR開發。
編程語言——安身立命之本
JavaScript
繼續其使人難以置信的創新步伐。爲了配合Web瀏覽器的快速發佈計劃,JS標準每一年就會更新一次。下一個版本,ES2017,預計將於2017年中期完成。它將帶來許多JS開發人員的夢想特徵——異步/等待,用於處理異步函數。什麼,新功能學不懂?那麼也許你能夠從基本的JS類庫學起http://igeekbar.com/igeekbar/post/20.htm
TypeScript
TypeScript 2.1於2016年年末發佈,爲舊瀏覽器帶來了異步/等待,並改進了類型推斷。TypeScript是一種編譯爲JavaScript的靜態類型語言。它增長了強大的功能,如經典的OOP模型和可選的靜態類型,使大代碼庫更容易維護。它是編寫Angular 2應用程序的首選語言,咱們建議你嘗試。
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#程序員來講將是使人興奮的一年。
Python
Python 3.6於12月發佈。它正在鞏固其做爲開發人員,IT專業人員和科學家的腳本語言的首選地位。它適用於自動化,Web開發,機器學習和科學計算。當你想寫一個簡單的爬蟲程序來獲取信息時,如今Python理應是你的第一選擇。至於Python 2/3版本的問題已經爭論多年,在社區的努力下,可是如今你能夠輕鬆地選擇3並享受完整的庫支持。對於那些須要額外的性能,他們能夠看看PyPy,並能夠選用JIT啓用Python運行時。
Ruby
Ruby 2.3今年早些時候發佈了一些性能改進。Ruby也是一個通用腳本語言的好選擇,可是當與Rails配對時可能會更加大放異彩。Ruby 3×3的倡議被宣佈,這將試圖使即將推出的Ruby 3版本比當前版本快3倍,爲在更多的上下文中使用Ruby提供了基礎。
PHP
PHP 7.1是在12月發佈的,並對該語言進行了小小的加強。這基於去年版本7.0中的主要性能改進,將PHP轉變爲構建Web應用程序的快速平臺。咱們認爲當你須要開發一個Web應用的時候,PHP將是一個不錯的選擇。
Java
Java 9預計在2017年,並將帶來歡迎的新功能,如評估代碼,HTTP 2.0支持和新的API的repl。對於有才能的Java開發人員和使用該語言的普遍的使人興奮的項目有強烈的需求。若是Java不是你的菜,有一些基於JVM的語言,如Kotlin和Scala,你能夠試試。
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 )
Web
Web平臺最近取得了兩個重大進展——Web Assembly和Service Workers,他們打開快速和高效的Web應用程序的門,彌合與本地編譯應用程序的差距。Service Workers尤爲是漸進式Web應用程序(上文中提到的PWA)的啓用技術,併爲Web平臺的通知提供支持,未來還會有更多的API。
Angular.js 2
Angular.js 2今年發佈。該框架由Google支持,很是受企業和大公(Gu)司(Ge)的歡迎。它具備大量的功能,使從網絡到桌面和移動應用程序的寫做成爲可能。框架是用TypeScript編寫的,這也是編寫應用程序的推薦語言。有不少要學習的內容,但咱們認爲在2017年學習Angular 2將是一筆不錯的投資。
Vue.js
Vue.js也看到了今年的2.0版本。它借鑑了Angular,React和Ember的好主意,並將它們放入一個易於使用的包中。它也比前兩個更輕量級而且更快。咱們建議你今年試試,從咱們的一個Vue.js教程開始。http://igeekbar.com/igeekbar/post/109.htm
Ember
Ember是JavaScript框架的另外一個選擇。它支持數據綁定,自動更新模板,組件和服務器端呈現。與其競爭對手相比,它的一個好處是它更成熟和穩定。打破變化的頻率要低得多,社區也會下降兼容性。這使得框架成爲長期應用程序的不錯選擇。
另外兩個值得一看的框架是Aurelia和React。去年,React的生態系統變得愈來愈複雜,所以很難爲初學者推薦。但經驗豐富的開發者能夠將庫與GraphQL,Relay,Flux和Immutable.js組合成一個全面的完整堆棧解決方案。
沒有前端編譯能夠繞開Bootstrap,Bootstrap4目前處於Alpha版本,預計在2017年發佈。值得注意的變化是新的通用卡組件和flexbox網格,這個現代化的框架,使工做環境更加簡單快樂。
SASS和LESS
SASS和LESS仍然是當今最流行的兩種CSS預處理器。雖然vanilla CSS最終獲得了對變量的支持,SASS和LESS仍然優於對mixins,函數和代碼組織的支持。若是你尚未,請查看咱們的SASS和LESS快速入門指南。
2018年前端框架方向建議:學習如下一個或多個:Angular 2,Vue.js,Ember,Bootstrap,LESS / SASS。
後端
後端有不少選擇,全部這一切都取決於你對編程語言或特定性能需求的偏好。Web開發中的持續趨勢是遠離後端,將該層轉換爲由前端和移動應用程序使用的API。可是,一個完整的堆棧框架一般更簡單,更快地開發,而且仍然是許多web應用程序的有效選擇。
Node.js
Node.js是在瀏覽器外運行JS的主要方式。它看到了今年的許多新版本,增長了性能和增長覆蓋整個ES6標準。Node具備構建快速API,服務器,桌面應用程序甚至機器人的框架,以及建立能夠想象的各類模塊的龐大社區。在Node.js的框架中你可能想研究:Express,Koa,Next,Nodal。
PHP
什麼?PHP,我沒逗你。PHP首先是一種Web語言,而且有大量的Web框架可供選擇。因爲其出色的文檔和將來,Laravel已經造成了一個活躍的社區。Zend Framework發佈了第3版,這標誌着這種面向業務的框架的極大升級。Symfony在今年也看到了不少新的版本,使它成爲一個完整的堆棧解決方案,一個更好的選擇。
Ruby
對於Ruby,Rails框架是首選。版本5.0於2016年發佈,爲Web套接字,API模式提供支持。Sinatra也是小應用程序的不錯選擇,版本2.0預計2017年有時。
Python
Python以Django和Flask的形式有了本身的全棧/最小框架組合。Django 1.10在8月發佈,引入全文搜索Postgres和一個大修的中間件層。
Java
Java生態系統還有流行的Web框架可供選擇。Play和Spark是兩個固定的選擇,,他們也能夠與Scala一塊兒使用。
Phoenix
對於愛好者來講,Phoenix也是一種後端可選項,這是用Elixir編寫的,並試圖成爲一個功能完整、性能卓越的Rails替代品。若是Elixir是你想在2017年學習的語言之一,試試Phoenix吧。
2018年後端方向建議:
學習其中之一:全棧後端框架,一個微框架。
數據庫
MySQL
MySQL 8.0將是數據庫的下一個主要版本。預計2017年某個時候,它將給系統帶來不少改進。MySQL仍然是最受(mian)歡迎(fei)的數據庫管理系統,整個行業都受益於這些新版本。
PostgreSQL
PostgreSQL 9.6於9月發佈。它帶來更好的全文搜索,加快了數據庫系統的並行查詢和更高效的複製,聚合,索引和排序。Postgres用於大規模,太字節規模的數據集,以及繁忙的網絡應用程序,這些優化在大數據和海量數據時代都是是受歡迎的。
NoSQL
對於NoSQL粉絲,咱們能夠推薦CouchDB。它是一個快速和可擴展的JSON存儲系統,它公開了一個REST-ful HTTP API。數據庫易於使用,性能卓越。PouchDB是一個精神對應的CouchDB,徹底在瀏覽器中工做,能夠與Couch同步。這容許你在離線準備的網絡應用程序中使用Pouch,並在互聯網鏈接可用後自動同步。
Redis
Redis是咱們最喜歡的鍵值存儲,它具備輕量級,快速的特色,而且功能繁多。你能夠將其用做智能內存替代方法,做爲NoSQL數據存儲或進程消息傳遞和同步通道。它提供了大量的數據結構可供選擇,而且即將到來的4.0版本將有一個模塊系統和改進的複製。
2018年數據庫方向建議:
學習其中之一:MySQL,Postgres,CouchDB,Redis。
開發工具
Yarn
Yarn是由Facebook開發的Node.js的替代包管理器。它是對npm命令行工具的升級,提供更快捷的安裝,更好的安全性和穩定的項目構建。它仍然使用npm包註冊表做爲其後端,所以你能夠訪問優秀的JavaScript模塊。Yarn與npm使用的package.json格式兼容,並且相較於npm,兩者最大的差異可能就是快速安裝了吧。
Visual Studio Code和Atom
兩個最受歡迎的開源代碼編輯器- Visual Studio Code和Atom在過去12個月中爲咱們呈現到了難以想象的創新成果。首先是網絡構建項目,若是你仍是一個「單打獨鬥」的程序員也許你並不須要網絡項目,但若是你不能提早養成一個好的版本控制習慣,當你進入大型項目組時,你可能會成爲須要在回家的路上半路跑回公司次數最多的那我的。語法檢查能夠幫助你提早減小BUG。編輯器有可用的語言檢查,linting和重構工具的大量語言的插件。
Git
Git是最流行的源代碼版本控制系統。它是無服務器的,你能夠將計算機上的任何文件夾轉換爲存儲庫。若是你想共享代碼,你有不少選擇,如GitLab,
Bitbucket和Github
Bitbucket和Github,僅舉幾例。對於2017年,咱們建議你熟悉git命令行,由於它會比你想象的更方便。
桌面應用程序尚未死。即便網絡應用程序變得愈來愈有能力,有時你須要強大的功能和API,這是網絡平臺根本不可用。使用諸如Electron和NW.js之類的工具,你可使用Web技術編寫桌面應用程序。藉此,你能夠如魚得水地在操做系統中儘可能發揮npm的各個模塊的功能。
DevOps
軟件團隊組織的最新趨勢是讓開發人員負責本身的軟件部署。也稱爲DevOps,這致使更快的發佈和更快地修復生產中的問題。如今公司也愈來愈看重那種即會運營又會寫代碼的程序員(或者說有可能在35歲以後能和公司一塊兒走下去的員工),所以熟悉可以實現這一目標的技術將是一個巨大的進步。咱們推薦的一些工具是Ansible和Docker。擁有Linux命令行和基本系統管理技能的經驗也將使你看起來更優秀。
2018年發發工具方向建議:
嘗試一個或多個這些:Yarn,Git,Visual Studio,Electron,Ansible,Docker。
相關學習資料移步: