技術選擇困境



「吾生也有涯,而知也無涯。以有涯隨無涯,殆已」 
--莊子在《庖丁解牛》
在浩瀚的技術海中,如何選擇適合自己的技術?又有哪些問題需要注意呢?技術無限多,但生命時間有限,不可能所有技術都很了解,或是走個人浪漫路線,與其主流,不如風流?

門檻

在軟體領域中,一直有不同的新名詞與新技術產生,雖然大部分都不是完全新,很多都是以前的觀念或別的領域的做法拿來改良,但只要跟原本做事的方法或想法不同,在學習上這就會變成一個門檻,在導入團隊時,這個門檻甚至會被放大數倍。

推廣陷阱

為了克服門檻,開個專案導入技術實作,藉此發現從文件看不出來的細節地雷,必定得花費不少時間,既然成本已經投入了,分享者或者講師、佈道者,常常就可能會陷入付出成本的泥沼,時間都付出了有可能隨便就放棄手上的技術嗎?除非真的有顯而易見的大缺點?但如果有一開始就不會被選擇了吧?這邊並不是說講者問題,而是聽者問題,這就牽扯到你的使用情境跟講者是否一樣跟自己要有判斷的能力,不是人家說好就好!

進步

很多技術剛開始的時空環境不同,比如Spring Framework在Java EE很複雜的時代,因為簡化了開發而崛起,但因為需求愈來愈多,加了很多模組也漸漸提高學習門檻,眾多的xml設定也常常被人拿出來說是缺點,但隨著技術的進步、觀念的進步,框架也會跟隨著進步,現在Spring早就不需要一堆的xml設定,也有Spring Boot這種容易上手的架構,所以又有些技術可能一開始好,後來沒跟上世界的變化就沒落了,或是一開始雖然有些缺點,但隨著技術提升,缺點也就消失了。

使用情境

網路上有句名言是這麼說的『技術選型,不問場景是流氓行為』,舉個生活上的例子,機車vs汽車,從很多層面來說,汽車都勝過機車,但....你去家附近的便利商店會特地開車嗎?或去個離家5~10分鐘車程,但很難找汽車停車位的店家,會想開車嗎?有的時候A框架有很多缺點,但如果他能解決自己遇到問題的最大痛點,而他的缺點又不會影響,你會不會用呢?在被詢問技術架構時,對方自己對自己的使用情境不清楚,只是想找個顧問一兩句話就解決自己的問題,更是流氓中的流氓!

成本

網路上有句名言是這麼說的『小孩才談情懷和優劣,大人看中成本和結果』,在公司之中的技術選擇,成本就會成為很重要考量了!那成本有那些呢?選擇80%的人能掌握的技術,而不是20%
  • 團隊學習成本
  • 找人成本
  • 維護成本

團隊學習成本

在於框架的觀念清不清楚,好不好學,如果原本的團隊都不會,訓練大家學會的難易度。

找人成本

在就業市場上這門技術普不普及,用的人多不多,如果會的人少,不但難找人,找的人也會因為物以稀為貴。

維護成本

如果這門技術用的人多,出了問題大概別人也會遇到,那麼要找解決方案就會容易很多,如果用的人很少,遇到問題或地雷就只能自己想辦法解決了。

結論

就是因為技術選擇要考量的方方面面如此之多,在會造就選擇是件困難的事情,有時就算通通都考慮到了,結果業務發展的方向不如預期,或者技術出現意料之外的轉變,那當初完美的規劃,有可能就變成美麗的笑話了,這也難怪架構師都會偏愛一些進可攻退可守的框架或架構。

留言