其實自己來講這一個點還滿奇怪的,畢竟我的實際資歷好像也只有五年。
不過我覺得這五年對我來說,或是對自己所使用的技術來說算是風起雲湧的五年,也因為換了不少公司,看到很多不同做法。
但是特別是對微軟體系來講,這幾年挺特別的。五年前,大數據正當紅,雲的概念大家都才剛在推,IOT,ML,各種buzz word。
剛進入職場的時候WEB算是當紅,mobile是顯學,.NET的WEB端技術,那時候是MVC四到五的年代。
WPF的推廣,當然後來又整了一個xamarin,然後又過幾年,core 開始跨平台開源,還好之前就有再用DI的玩法,不然滿不習慣的。
另外DB的介接,從初學ado.net 到使用Linq 操作 EF,dapper ,ef core,這些都還是在單一語言的框架跟工具上,其他的一些GIT的使用方法。
各種套件組件的熟悉度跟使用調整,像是redis ,mongo,各種小功能套件,爬蟲的,排程,後端服務監控的,備源機制的,CICD的 。
還有雲端服務的...等等。 也不用提前端部分御三家,Angular 噴火龍,React 傑尼龜,還有Vue 妙蛙種子。
當然還有 vanilla js 的 黃色皮卡丘啊。 最近core 3.0推出blazor 普遍看見logo 就是紫白色 這不就是超夢(也是佛力沙大王)的配色嗎?
在這樣快速的更新用法,跟結構架構的時代,究竟要怎麼樣學習才是有效率的呢? 怎麼樣分辨這個東西要不要追呢?
我想這是一個值得關注的問題。畢竟我們的時間有限,技術是無限的,窮有限去逼近無限,這種死嗑精神我很佩服,但是不太鼓勵,除非你是魔人或是到修羅等級。
不追上,會覺得自己很難受,或是有偶包,還是有其他等等的因素,那自然照你自己的路線走就好。不然我的話會建議,先學對你工作上有幫助的,可以讓你準時下班的技術。
或著說先學工作上會碰到的技術,畢竟技術第一步是為了要使用他,或是解決問題才誕生的,工作也都需要有產出,當然不是不建議練內功。
OOP,還有很多程是式上開發的準則跟概念也是要同步進行學習的,有時候感覺上推人學框架好像是魔道一樣,但是框架跟模式真的有這麼不好嗎? 其實也不然,框架跟模式可以讓人軟性的統一開發流程跟規則。不太會發生那種你寫你的我寫我的這樣。
我們也都知道不同框架跟模式,是前人用時間跟實測整理出來用來處理各種不同問題的解決方法,實際上也是看情況搭配服用。就好像令狐沖學獨孤九劍,縱然有心法口訣但是也沒有什麼實招都是臨場應用。
所以在學習上面,我覺得各種混搭,去解決問題也是蠻不錯的,至於學習的過程跟方法,就是各人有各人的模式跟巧妙。
不過我們是寫程式的嘛,從做中學,開一個專案實際去應用最快,而且現在的程式跟套件很多基本上跟OO脫離不了關係,各語言跟框架版本的SDK(軟體開發組件也很多)
通常我自己學習一個新技術,就是先去看他的GITHUB,很多都有詳盡描述,再來就是工程師的好朋友,stackoverflow,code project 由於我是學習.NET自然會去的就是MSDN
論壇跟技術文庫,還有一些國外的相關論壇跟雜誌,很多技術同好會分享跟介紹。 有些還會有附上一個demo專案,寫程式就是一種創作,每個人的解法都不太一樣。
我很喜歡看不同解法跟用法,多吸收別人的思考跟理解是一件很好玩的事情,還有可以學到很多命名HAHA。
然後,怎樣評斷這個技術該不該使用在自己開發的專案上呢? 除了看需求外,另外一個重點是要考量到維護,跟監控的機制。
雖然現在CICD很方便,甚至加上docker可以做到某種意義上的熱拔插,或是ABTEST這樣的做法,但是還是覺得不怕一萬,只怕萬一。
新技術出來,先快速的了解一下,使用在哪,通常新技術都會強調他解決了多少多少橫貫古今的技術難題,那就針對這些難題看看有沒有自己的工作上發生。
有的話,可以參考目前有哪些解法,要做那些犧牲,最好的方法就是之前說的模擬專案囉,接著就是你的評估了。通常一個新技術如果可以幫我省下三成以上的開發時間。
寫起來又很快樂,還很好維護,就好像剛開始用Linq lambda 那時候,或是開始練習對介面寫程式,在使用注入的時候。我通常就會先學,然後有機會就在專案裡面使用看看。
另外還有一個事情就是翻修自己的old side project ,這也是一種很好的學習跟練習新技術的方法,畢竟這是你自己的專案,很熟悉,有多少差異馬上就可以比較出來。
然後我自己會整理一個新學的技術小筆記,大概盤點一下,用處,用法,優點,缺點,維護,跟省下的時間。現在有docker 建環境也滿方便的,或是可以直接上雲,擔心雲端收費太過。
就自己建吧,最後把你所學到的根所理解的思考的整理成文章,試著解釋給他人聽,這就是有名的費曼學習法,然後有個小技巧就是可以搭配費氏數列去複習他,很快就會熟喔。
當然還有一種學習是,先把九陽神功練好,學什麼武功都快,這就是那資工御三科,演算法,資料結構,作業系統。正所謂萬變不離其宗,這三樣學好,能不能發大財我是不知道。
但是起碼coding 走跳的話,對事情的理解上也好,還是實作的速度上也好幾乎都會有所提升,如果是學不動的人,我也是滿推薦走這個方法的,這樣你可以往深處去研究跟鑽研。
不是追求汎用性,而是追求極度優化的路線走,雖然在商業管理價值上,可以在時間內快速用套件跟模式打造出產品或是系統的人會很值錢也很吃香。
但是,專心鑽研,可以自己寫出套件的也不會吃虧到哪裡去喔,只是彼此鑽研的不同就是了。我不知道大家怎麼看待技術迭代很快這件事情,我是認為其實他核心還是沒有什麼改變。
只是學習新的做法這樣,不要排斥新東西,也不要丟棄舊東西,而是看什麼後該學該用什麼東西。以上是今天跟大家的分享
多謝 大家 晚安周末愉快喔~~~~
明天,來講些職場發生過有趣的事情好了。