本篇文章是 2019 it 鐵人賽的 Day 22,我跟我的隊友們 ,會在30天內每人每天完成一篇 it 相關的文章。你現在看到的是 Hello, World! 線上課程學程式?你應該要知道的 30 件事 主題系列文章,歡迎訂閱。
如果題目是「什麼人適合線上學程式?」,那其實答案是雅俗共賞。線上突破了時間和空間的限制,理論上只要能夠上網,你都可以直接註冊一門免費或付費的線上課程開始學習。
但如果今天問這個問題的背後,是有預期具體的學習成果,例如能夠用 JavaScript 刻出一個臉書頁面,或更大的目標像是「轉職」,那麼「什麼人適合線上學程式」就需要好好被回答。
以前學生很常問,當工程師需要什麼特質、能力,因此我們寫了這篇你適合轉職軟體工程師嗎?先問自己這三個問題 ,希望能透過三個問題,幫助新手確認自己的特質。
這三個問題雖然是針對「想轉職軟體工程師」,但基於軟體開發的特質,也很適合想學習程式語言並學到一定成果的人來自我評估。
不過我還是從「學習」的角度,提出以下幾點我認為可以幫助新手們了解自已,也了解寫程式到底是怎麼一回事的特質:
看很多心靈雞湯,很多人會跟你說,做任何事情成功的秘訣是「有熱情」,只要有熱情,就可以克服一困難過關斬將,跟真愛無敵論差不多。但所謂熱情的具體體現到底是什麼?
我認為放在學習的脈絡裡,所謂有熱情的背後,多半是靠著有明確而強大的動機(或目標)在支撐。也就是說,你必須要知道是什麼在背後促使你做這件事。
只是空泛的「想轉職」可能還不夠明確,可以繼續深入,想轉職是因為非常想改變現狀?還是很嚮往軟體工程師的職涯?又或者只是軟體工程師薪水比較好而你真的很渴望?
這些都是動機,但每人的動機強烈不同。如果你動機夠強,會比較容易靠意志力和努力去克服一些挑戰和限制。例如忙了一天下班回家,你要躺在沙發上耍廢還是繼續打開電腦上課?如果你沒有足夠強烈的動機,你很有可能會選擇先休息,學習的話明天再做。但你我都知道,那個明天永遠不會發生。
你可能會想問,阿不就都已經有上課了,為什麼還要「自主」,然後所謂的「學習能力」到底又是什麼?
程式語言的世界變化非常快,同時也有大量的開源資源和學習資源讓大家查找。很多課程可能三個月前做好,三個月後的技術就又發行了小改版,更不用提在前端的世界裡,每年可能都有一個框架的大突破。你的CTO或帶你入門的老師可能技術只領先你十年,你說不定在未來的五年學全新的技術就可以超越他,但 google 和 stackoverflow 卻是是你一輩子的老師。
在程式語言的學習過程中,很需要學生主動的查找資料,多看不同的解法,去尋找解答。而且有些複雜的問題甚至沒有標準答案,只有在不同的情況下,可能有個比較好的選擇。而這些尋找與判斷答案的過程,除了課程能給出的知識基底之外,更多時候是仰賴學生的主動學習。
在快速變動是本質的領域裡,持續學習就是宿命。不然即使拿到的敲門磚跟入場卷,在技術的汰換之下,你還是很容易被淘汰。
回想傳統教育,為什麼同樣的課本同樣的老師,一個班級裡會有第一名和最後一名?撇除掉天份資質不談,他們多半在學習方法和學習行為上就有顯著的不同。有沒有主動查找資料、問問題、思考學習到的內容、甚至是對新內容的好奇心往往也都是重要的差異之一。
如果說快速變動和演化是程式語言的特質,那開發工具並解決問題就是程式語言的目的。
很多人迷上寫程式,是因為能親自動手打造工具和產品的成就感。這是程式語言的核心目的。如果你不喜歡「解決問題」,那你在學習或是工作過程中,可能就比較難以獲得相當的成就感。就必須要另外找其他的快樂與正向情緒的來源,才有可能長期支持你學習到一定的程度。學習程式語言的過程中,也需要透過大量的實作練習來「做中學」,如果解完一道題或是完成一個小 project 並不能帶給你正向的動力,那我也很難想像你在漫長的學習過程中,能夠一直練習題目,或是在未來的工作中解 issue, debug。
以上三點,其實是可以交互補償的。例如其實對解決問題沒有太大的熱情,但因為實在太嚮往軟體工程師的職涯或薪水,因此也願意付出大量的時間和努力投入學習,並且日後在職場上不停地幫別人解決問題。不過也要注意,這樣的補償機制同樣有可能失靈或是不平衡。最好的情況下,最好還是三者都能兼顧。
祝福大家都能找到最適合自己的路。