2024年3月6日

為什麼老闆不讓你用新技術開發?導入新技術沒那麼簡單

我自己屬於不是那麼追求新技術的人,偶爾滑到新資訊的話會看一下,或是別人在討論的時候也會參與,但是比較不會主動去追求,除非工作上有實際的需要。

不過以前有些同事,他們對於新技術非常有熱情,會主動去參與社團,或研討會等,學習新知訊,每次跟他們聊天,都在談論新的技術話題,根本跟不上XD。

他們通常學到新東西,就會迫不及待的想要導入開發團隊,讓團隊成員一起使用。

我覺得這樣很好,總要有些人要帶著大家往前走,讓整個團隊可以跟上時代,繼續往前走,不會一直用很舊的做法。

就像金融業,核心系統,據說到現在還在用 Cobal,永遠無法改成現代的程式語言。

壞處是,很難找到新人來維護;好處是,懂 Cobal 永遠不用怕失業。

導入新技術沒那麼簡單

導入新的技術跟做法固然有它的好處跟需要,但有時候還是會遇到一些小摩擦。

導入新東西,代表要改變舊有做法。其實大家最討厭的就是改變了,很多事情大家都已經習慣了,要改變真的很難。

如果說導入就導入,那銀行的 Cobal 早就被幹掉了,對吧。

光是升版就要人命

具體上會遇到什麼問題呢?我可以來分享幾年前,團隊要導入 Laravel 遇到的狀況。

什麼?你說 Laravel 不算新技術?呃,畢竟該團隊之前可是完全沒使用框架的呢,原生 PHP 寫好寫滿,超猛的。

好吧,回歸正題,導入 Laravel 首先要做的事情是什麼?

先確認 PHP 版本。

我其實有點忘記了,但沒記錯的話,當時新版的 Laravel 應該是限制必須要 PHP 7 以上。

而但是當時我們使用的應該還是 PHP 5 吧,可能是 5.3。

過去有一堆奇怪的做法跟套件,可能沒辦法直接升級到 PHP 7 使用,所以花了很多時間盤點程式,確認這些程式都能在 PHP 7 運行。

喔?你說,有做單元測試就會比較容易啊。...恩,你怎麼會覺得早期大家有寫單元測試的習慣呢。 

對,連語言都還沒換,光是要升級版本就頭大了。

總之,光是盤點跟處理版本相容性的問題,3、4個月就過去了。

3、4 個月足夠讓迫切想要使用新技術的工程師受不了而離職了!

拖著飛機走

另外一個團隊,工程師們受夠了部屬版本的流程,覺得太慢又太容易出錯,因此想要導入 Jenkins,做自動部屬。

但是為了使用 Jenkins,必須在內部找一台機器來裝。

為了找一台機器,畢竟可能會有衍伸的費用,必須要說服各種主管同意,RD主管、MIS主管。

OK 好不容易搞到了一台機器了。終於可以開始安裝東西必要的東西了,開心的下了指令後,只看到大大的:

Permission Denied 。

沒錯,沒有設定機器的權限給工程師,工程師還要去找網管幫忙搞定這些事情。

OK,終於,來來回回過了將近一個月,該拿的權限拿了,該裝的東西也裝了,也測試得差不多了,是時候請其他團隊成員遵守了吧。

團隊 A 主管:「你們這個東西我們沒用過,看不懂,可以請你們教學嗎?」

團隊 B 主管:「這件事情我們沒有被告知,有確定要採用新的方式嗎?是不是要找 RD 主管來開會確認?」

團隊 C 主管:「我們自己也有一套流程,是不是可以來整合一下?」

「OK,對不起,我錯了,我辭職!」

導入的兩大問題

導入新技術最麻煩的兩個問題,第一個是相容性,第二個是人的問題。

相容性沒處理好,用了新技術反而會讓舊有的服務爛掉,那就不對了,但要處理這些相容性,實在令人頭痛,要一邊開發新功能,又要 refactor 根本沒空處理,最後就放棄更新了。

而人的問題也是很麻煩,沒有處理好的話,彼此之間沒有取得共識,很容易吵架,或不願意配合,最後整件事情也是不了了之。

另外一些實際面的問題

除了這兩大問題,還有一些比較實際的問題要面對。

例如,你決定採取的新方法是否穩定?是否成熟?

如果不穩定或不成熟,到時候實際上線一直出錯,害系統沒辦法正常運作,是不是反而會造成後續維護的麻煩?

一個工具或框架,沒有繼續被維護,沒有形成生態系,是不是不久之後,又要把這個工具換掉,因為沒辦法滿足未來的需求?

所以一般來說,在大公司裡面,比較成熟穩定的專案,採用新技術,要選擇在市面上已經穩定運作過一陣子的,比較保險。

否則很容易造成一個專案裡面,各種已經斷頭的技術,後續反而沒辦法維護。

結論

有時候真的不是不讓你使用新技術,只是現實情況考量呀。大家也別太沮喪,真的想玩新技術,建議還是換一個團隊或公司比較實在喔XD 要導入真的太辛苦了。