Categories
程式開發

等幾年,再用新框架


在技​​術領域,尤其是前端領域,新框架出現的頻率令人咋舌。新框架問世之初,大多打著解決老的流行框架痛點的旗號,聲勢浩大,但隨著時間的推移,卻發現其自身出現了更多新的問題無法解決。技術浪潮面前,不要急著用新框架。新技術很酷,但選型要慎重。

在新框架發布之後,先不要急著學,等上幾年再說。不要害怕會錯過什麼,即使當下錯過了,來年總能學回來。這又不是飛向木星然後一去不復返的宇宙飛船。因為害怕錯過而做出的任何決定只會讓你原地踏步。既然向前跑,就應該產生價值,而不是停留在原地。所以,你不應該因為害怕錯過而做出任何決定。

新技術的發起者難免會過度炒作他們的作品。沒有人會說:“我們新推出的技術其實很平庸”。他們不會這麼說的,更不可能在正式的場合(比如蘋果開發者大會、StackOverflow或播客)上這麼說。即使是公司內部開發的工具或框架,他們也會傾向於說自己的東西好,因為他們的東西得到採用對他們的職業發展來說是有利的,同時也給他們帶來了成就感,而我們所有人都喜歡這種感覺!

框架作者並不是唯一炒作框架的人。年輕的開發者對什麼技術都感到新鮮,他們很容易就會成為某某框架的擁護者。但是,你不能因為框架的擁護者說了什麼就做出決定,因為他們肯定會為框架說好話。

新技術難免有缺陷,它們很少會像它們所承諾的那麼好。它們可能在某些方面會好一些,但在某些方面會差一些。在想好自己需要什麼之前不應該魯莽使用它們。它們通常沒有完善的文檔,框架本身也很粗糙。沒有成形的規範可以告訴我們如何有效地使用它們,或者在什麼情況下使用它們才是有意義的。如果你用了,團隊的其他成員為了看懂你的代碼,也要跟著學,這就給他們帶來了額外的負擔。所以,先等上幾年,等這些問題都解決了再說。

有些框架問題多多,比如iCloud Core Data Sync,它會丟失用戶數據!你不希望丟失用戶數據,但如果你總是迫不及待地採用新技術,發生這樣的事情就在所難免。如果你匆匆忙忙選擇了一個新框架,在花了很多時間研究它之後,你會發現它可能並不適合你,或者即使可以用,也可能在性能、向後兼容性等方面存在嚴重的問題,而這些是你無法預料的。採用新框架不是小事,不是“我們切換到Swift UI只需要三個禮拜就可以了”,如果真的那麼簡單,那就可以無所顧忌了。但問題是,在軟件開發領域,我們面對的通常是用未知的工作量換得未知的好處,所以我們不得不變得謹慎而保守。

如果新框架不如預期,你不得不切換回來,那就要付出雙倍的成本。即使不需要切換回來,很可能出現的情況是,有些變得更好了,有些變得更差了,那就等於付出的努力沒有為你帶來額外的好處。你只是做了一個改變,而不是改進。

新技術的出現並不會讓舊技術馬上過時。例如,Swift 1.0是在2014年發布的,但直到2016年才准備就緒。但這並不意味著你一定要在2016年開始使用它,你完全可以等到2018年。新的編程語言、工具或框架的出現並不會讓舊技術馬上過時,這中間通常會有好多年的過渡期。你可以在過渡期的任何時刻採用它們,沒有必要在剛推出時就迫不及待地上船。

英文原文

Learn New Frameworks after a Few Years, Not Immediately