uncategorized

企業內開發人員該如何選用技術或框架?

常常被人問到你團隊有用甚麼新技術或是框架去開發?或是,我們因該要用什麼新技術和選哪一個框架去開發,這系統比較好?用AngualrJS好像不錯。現在很熱門,採用SPA開發網頁好像可以節省頻寬,使得整體反應相當快速…等。突然覺得在這技術爆炸年代,讓開發變得很不單純,又當微軟宣布.NET走向開源之後,不管在前端(前端Framework更是雨後春筍般出現)或後端的技術開發,或是新的框架的誕生,真是多到不知道該怎樣去選擇才好?

有些時候,感覺不去”使用”這些新的語言或是新的開發方式去開發系統,就好像是落伍或是跟不上時代,又或是外界媒體不段在洗腦或是傳達某些技術,感覺使用這個才是王道。(注意,這邊我是用”使用”一詞。因為,學習跟使用 這兩者是不同),確實,當時代不斷改變,人是必須不斷去學習各種程式和新技術所帶來的衝擊,至少當你是走在資訊這個產業時,必須要有的領悟。

回到該用那種技術或框架開發系統這一個問題,我個人覺得如果你本身不是公司老闆或是在公司的政策強迫下,在使用新技術去開發可以從下面三個層面去思考,

解決問題


這一層面主要是從商業或是業務需求面去看。

我認為不管那一種的新技術或是新框架的誕生,都是為了解決當時的一些需求或是某開發上的問題所衍生出來的。因此,當我們去開發一套系統時候,不該一昧認為最新的技術就是最好用的,而是,必須先做事前的分析,了解目前的業務需求舉例來說,如果你的系統,未來只會去服務十個使用者,而它的目的只是讓使用者加速他日常工作或是簡化一些流程(別笑,很多in House系統就是這樣),單純用自己拿手的WebForm開發就可以解決使用者問題?是否有必要採用SPA方式去開發?

又或是,當大家都在談論開發要搭配AngularJS,但,整體需求面看不到,導入AngularJS會解決業務或是架構問題時,是否單純搭配Javascrip或Jquery就可以呢?不過,如果今天你的系統必須要高效能高可擴充性且需要降低網頁傳輸量,那請使用SPA,甚至ReactJS去開發,或是,一些可以解決這方面的技術,即使困難度很高,還是有其導入必要性。一切都必須從需求和解決問題去思考該用哪一種技術。

ROI


這一層面主要是從系統開發過程的投資報酬率去看開發系統的ROI評估,這一點很重要,一套不熟悉的框架或是技術的導入,對一般人來說都是一個高成本的投入,像是在新創團隊中,能快速將自己的發想或是解決問題的方法變成產品,並趕緊丟到市場驗證,驗證回來後再持續快速修正,這才是最有效益的,投入一個你都不熟悉的技術或是框架,等你摸完再開發出來,此時,你的投資回報率已經不見了,因為,你的可能主意已經被別人捷足先登了。而在一般企業中,MIS往往都被時程壓著打,甚至,從分析到開發測試,往往只有一兩個月就要完成,且通常還會被用系統產出率決定MIS的績效,與其導入一個比完成需求還複雜的技術或是框架時,還不如採用合宜的目前需求的框架去開發,那樣怎樣才知道要用那些技術或是框架才合宜呢?這就是開發人員還是要持續的原因,有時候學習的廣會比學習的深還有幫助

維護成本


這一層面則是從團隊文化去看

對於開發In House系統來說這是很重要的考量,且往往又是很不好拿捏,就拿內部系統開發來說好了,內部系統大都是像是肝一樣,辛苦但往往會被忽視。而且,內部系統不是說時間到就可以升級版本,或是,舊版本就不去維護。也因此,久而久之,可以發現MIS要了解的語言從 VB6到.NET 5都有,還不包括一些林林種種的分支技術。再者,加上公司人員來來去去,系統的Owner不斷改變,需求不斷增加(新需求往往會被建築在多年前的系統上)維護成本就越來越高了。

從維護成本思考下,就必須了解整個團隊對於該技術與框架的熟悉度。若只是,團隊中只有一兩個人對此框架熟悉,大部分都不熟悉時候,就要強行導入,後續可能就會墊加系統的維護成本了,畢竟,當系統上線有異常時候,團隊有辦法去維護嗎?可被允許的down time是多少?又或是當商業需求改變,要立即增加或是修改系統功能時,所要付出的成本是多少。從以上角度思考,是否要此刻運用此技術或是框架到團隊中就是需要評估的,又或是該逐步提升團隊技能或是熟悉度再做考量呢?

技術 這東西有如兩面刃,它可以帶來很大效益,同時,也會伴隨許多風險,唯有不斷學習和改善才可以去降低使用風險,而無論是架構設計或是技術框架的導入,還是必須依附在商業與業務需求,過多或是不及架構或是一昧聽從潮流而去使用的技術,對於產品和系統的幫助都不大。

從團隊角度來看,若是成員技術差異很大時候,與其採用一些新技術,還不如先提升成員的技術力,讓大家彼此的能力差距縮小,縱使使用一些舊有技術又何妨呢?現在已經是不缺選擇使用框架與技術的世代,而是要怎樣選擇的才是有助於整體開發的思維了。