為什么越簡單的技術對于開發人員越難

英文原文:Why Even "Simple" Technology Can Be HardFor Developers
簡單 != 容易
從 Amazon Web 服務到 AngularJS 之類的 web 框架,便利性驅動著世界上最好的技術。但是,更加快速地、變得有效率的“便利性”,經常伴隨著一個隱藏的價格標簽:為了變得真正有效率,你將不得不花些功夫。
偉大的技術經常貌似簡單,新手們直覺上不需要太多努力就可以“學習”。當人們認為他們已經掌握了這門技術、而他們真正做的所有工作相當于是一個“hello world”程序的等價物時,問題就出現了。在你歸咎于這個工具之前,你往往需要投入時間以正確地使用它。
關于 AngularJS 的“復雜感受”
讓我們用 AngularJS 做例子。AngularJS 是一個 web 應用程序框架——JavaScript 代碼類庫、模板和其它軟件的集合,目的是讓開發人員更加容易地開發動態網頁或 web app。
正如 Anand Mani Sankar 建議的,問題在于 AngularJS 入門容易,簡單掩蓋了框架的力量:
[AngularJS]通過抽象了很多內部的復雜度,而只暴露程序開發人員關心的東東,大大簡化了應用程序的開發過程。
聽起來這是一項偉大的工作,它也讓新手們在完成第一個“hello world”應用程序后,就覺得掌握了這套系統:
AngularJS 旅程會產生復雜的感受。學習曲線與其它 JS 框架有著很大的不同。進入的門檻非常低。但是,當你開始深入的時候,學習曲線突然變得陡升了。
Sankar 然后引用了 Ben Nadel 關于 AngularJS 旅程的幽默描述:

當然,一些人被卡在了谷底。比如,George Butiri 從 Google 搜索到了很多關于“The reason Angular JS will fail”的文章。Butiri 解釋道,AngularJS 實際上相當難,沒有給出太多專門的例子來解釋為什么是這樣子,至少超過了“因為我更喜歡 jQuery。”
太容易失敗了
很多最好的技術都是這樣。它剛開始時簡單,不過如果你想真正掌握它,你將不得不投入大量時間。一些人開始勢頭很好,發現了復雜,然后抱怨這門技術沒有永遠地保持出乎意料的好。
對不起,真正的技術不是那樣運轉的。它總是需要努力,如果不能以正確的方式運行,就會失敗。
看看 NoSQL 數據庫,我在這個世界花了太多的時間。
NoSQL 對于新手而言,無論是 MongoDB、HBase 還是 Cassandra,喜歡兜售它的無模式特性(schema-less)。關系型數據庫的舊世界需要僵硬的模式而且狂熱!在 NoSQL 的新世界,定義數據結構的模式消失了,DBA 們消失了,規則消失了!真簡單!!
當然,這完全是胡扯。正如我的同事 Asya Kamsky 喜歡說的,“NoSQL != NoDBA.”(NoSQL 與“沒有數據庫管理員”不是一回事兒。)
NoSQL 不代表“沒有 DBA”。如果有人試圖這樣說服你,他們很可能要向你推銷什么。這不意味著你有一個具有“DBA”頭銜的團隊或人員——然而,如果你有一個數據庫,無論它 是關系型,還是非關系型,那么一定有人擔任“DBA”角色——如果他們不知道他們做的事情,那么在問題出現之前,一大堆工作將不會完成或被考慮到。
瀏覽關于 NoSQL 數據庫、AngularJS 或大部分你喜歡的技術方面的文章,我保證,如果不是大部分,也有很多是由那些感覺受欺騙的人寫的,技術沒有按照這種用戶想要的方式運行,因為他們沒有真正 的投入。的確,有時候是技術失敗了。多數情況則是令人觸目驚心的。
但是,當技術沒有神奇地減掉我們需要的工作時,我們常常在抱怨。
杠桿越少,幸福越多?
從這兩者得到好處的一種方式就是通過可管理的服務,比如 Amazon web 服務的 Redshift。Redshift 是一個運行在云端的、完全管理的數據倉庫。“完全管理”意味著它更容易使用,但是它也意味著用戶失去了他們可能在 Teradata 或另一種企業數據倉庫中的一些把手和杠桿(the knobs and levers)。
然而,這恰恰就是問題的關鍵。
正如 AWS 數據科學的總經理 Matt Wood 最近告訴我的,Redshift 和其它 AWS 服務致力于通過移除復雜讓用戶易于使用。給用戶更少的“杠桿”意味著 AWS 也給他們更少的失敗方式。當然,技巧是在產品簡單與用戶控制之間找到平衡。
例如,Airbnb 對 Redshift 剛開始是如何容易感到洋洋得意,但是隨后就需要一些折衷(和投入):
我們面臨的第一個挑戰就是模式遷移。即使 Redshift 是基于 Postgres 8.0 的,“微妙的”不同仍然足夠大,強迫你用 Redshift 的方式工作。我們盡量自動化模式遷移,但是問題比我們最初期望的更大,我們認為它超出了試驗的范圍。在 Redshift 里,索引,時間戳類型,數組,不被支持,這樣你需要在你的模式里排除它們,或找到變通方案。
無論如何,Airbnb 投入了努力,看到了至少五倍的性能提升和巨大的成本節約。起步容易,但是也值得繼續投入。
也有很多偉大的軟件,它們看起來使用簡單。為了走出對于任何偉大技術的新手狀態,你將不得不有目的地使用,你將不得不投入時間和努力來掌握它。
可以有免費的軟件,但沒有免費的午餐。
<span id="shareA4" class="fl">
</span>
</div>