- React進階之路
- 徐超
- 1800字
- 2019-12-06 16:33:29
推薦序
小時候,老師問大家長大的理想是什么。我記得曾自豪地說——工程師。后來,真的走進了計算機領域,成為一名軟件工程師。在學校里學的都是基礎課,記憶猶新的有計算機原理、操作系統、編譯原理、數據結構和算法等,感覺是終身受益,就像練武功,都要練好弓、馬、仆、虛、歇5種基本步型一樣。
那時并沒有前端的說法。人機界面開始主要以程序員使用為主,通過黑洞洞的Terminal來編程,程序員還樂此不疲。后來出現了第一波突破——各種圖形界面,PC變得親民。而以iPhone帶領的移動終端的第二波革新讓用戶能夠通過觸摸、視覺和聲音真正自然地與設備交互。將來必然擁有超越觸摸、視覺和聲音識別的技術,屬于傳感器和物聯網的時代。這種技術使用傳感器和人工智能識別身體運動、溫度變化和其他環境要素,并據此做出回應,使得設備看起來可以讀懂內心的想法一樣。在不久的將來,一個傳感器陣列能夠提供高度的情境感知,并且協同工作,收集和處理關于周邊環境的信息,通過人工智能預測需求并做出完全個性化的安排。前端工程師的使命也隨著人機交互的顯著進步而不斷拓展。
時光回到剛工作時的2000年,正值互聯網的發展初期,作為一名軟件工程師,解決問題就是關鍵,對于前后端編程都需要熟悉。當時,前端編程的核心技能有HTML、CSS、JavaScript,對于習慣邏輯思維的工程師,學起來并不算難。隨著互聯網的發展,特別是2010年后,移動設備成為主流,前端工程師角色被行業認可,并且越來越重要,涵蓋多終端的視覺和交互的實現,面對的是軟件工程的一個持久的挑戰——人機交互。首先,人機交互是軟件產品里變化最頻繁的部分,同時是非常關鍵的一環。其次,兼容各種瀏覽器、Web的標準,以及適配多種終端,都是很大的挑戰。另外,前端領域的技術發展也越來越快,各種新的思想、設計模式、工具和平臺不斷出現,怎樣快速學習、在不同場景下做出恰當的選擇是成為一位優秀前端工程師必備的素質。許多人機交互問題有非常巧妙的思路和精彩的解決辦法。不得不說,前端工程師在工程師群體里屬于非常有創造力、想象力的一群人。
前端領域各種新技術、新思想不斷涌現,AngularJS、React、Vue.js、Node.js、ES 6、ES 7、CoffeeScript、TypeScript,令人眼花繚亂。對于許多開發者,估計還沒學明白一樣技術,就發現其已被另一些新的技術取代而“過時”了。但是,如果退一步來看,前端的基本功仍然是HTML、CSS、JavaScript,還有算法、數據結構、編譯原理。這一點,有點像《笑傲江湖》里,令狐沖一旦領悟了獨孤九劍,永遠能夠無招勝有招。
除了具備扎實的基本功之外,一個優秀的前端工程師必須要有自己擅長的領域,并且鉆研得足夠深入,只有花時間學習成體系的知識才能從中總結出規律并形成方法論,從而最大化學習的價值。同時要有廣泛的視野,不能局限于前端本身,因為有很多東西只有站在前端之外才能看得更清晰、更透徹。例如,React集成了許多后端的優秀理念,包括采用聲明范式輕松描述應用、通過抽象DOM來達到高效的編程。圍繞React還出現了許多工具和框架,形成了React生態。React逐漸從最早的UI引擎變成了前后通吃的Web App解決方案,衍生出來的React Native又實現了用Web App的方式去寫Native App。這樣,同一組人寫一次UI就能運行在瀏覽器、移動終端和服務器上。
作為智能物聯網先鋒的遠景智能,一直崇尚工程師文化和工匠精神,非常強調基本功、專業深度以及跨界創新。前端團隊徐超寫的《React進階之路》,內容由淺入深,再結合實戰,很像我讀大一時的Java 101課程的教材,對于需要學習React的讀者是一部非常好的參考書。讀這本書,最好的方法是領悟其精髓,掌握軟件設計之路,靈活使用以解決問題。工程師不能因為太細的學科限制了自己的思維,也不能像大公司一個工作一個螺絲釘,在很窄的領域里重復勞動。工程師天生是發現問題、解決問題、優化問題的。達·芬奇、特斯拉之所以是完美的工程師,因為他們會掌握各種學科,融合并創新,在解決問題的同時開創先河。未來的信息化世界就是要不斷地聰明學習,融合各種學科,通過實踐解決問題,奇思妙想地創造技術的進步。
計算機的不同語言、不同技術和算法就好比一堆便宜或者昂貴的工具(如錐子和刨子),其實這些都不重要,因為大家都忽略了,做出漂亮器具的是那個工匠,而不是工具。腦子里的經驗積累、天賦、執著與認真的態度、不停嘗試、追求完美的態度,加起來才能創造好的作品與產品。計算機語言就像賽車場上的跑車,換了車隊和跑車,舒馬赫還是F1車神,觀眾還是會為其歡呼雀躍,正因為車神掌握了與跑車和賽道的溝通之道!
遠景智能技術副總裁、前阿里巴巴集團淘寶CTO
余海峰