為什么越簡單的技術對于開發人員越難
簡單 != 容易
從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投入了努力,看到了至少五倍的性能提升和巨大的成本節約。起步容易,但是也值得繼續投入。
也有很多偉大的軟件,它們看起來使用簡單。為了走出對于任何偉大技術的新手狀態,你將不得不有目的地使用,你將不得不投入時間和努力來掌握它。
可以有免費的軟件,但沒有免費的午餐。
英文原文:http://readwrite.com/2014/09/08/simple-technology-hard-not-easy-angularjs-nosql
譯文地址:http://www.itjhwd.com/simple-technology-hard-not-easy-angularjs-nosql/