想當矽谷新貴,程式速成班夢一場
「而失敗的學員,付了學費以及上速成班期間的生活開銷以後,背了一屁股債,卻四處碰壁,找不到程式工作,或是花了十幾個月的時間到處遞履歷吃閉門羹,才終於找到工作機會,卻還需要在企業中先重新實習。事實上,他們之中許多人也的確不具備程式工作的基本能力,少數願意面試程式速成班學員的公司常發現,他們甚至連許多最普遍的程式語言皮毛都不懂。」
今天看到這篇文章,跟我目前學習coding過程中的反思簡直不謀而合。當初很多人滿懷熱情的投入去做某些事情,對於未來的美好想像充斥著整個腦海,接著就是不顧一切的投入一個新領域當中開始學習,但是當晃了一圈打算開始找份工作時,卻發現無法解決問題,所學到的只是一些詞彙還有基本的能力,自然沒有辦法找到一份工作。
我並不是在說熱情不重要,而是不過我們對什麼事情有熱情、或是沒有熱情,社會、公司、組織、團體等等,很多時候仰賴的都是我們解決問題的能力,而並不是單純我們多麽熱愛一件事。熱情這個特質顯然是能夠作為成功的放大器,但這必須建立在你有培養出有效的解決問題、或是創造價值的能力,否則所有的努力都可以說是白費。
所以現在看到很多教材花了很多篇幅在解釋、鞏固觀念之後,才開始教授如何實用,甚至實際的練習機會甚至沒有太多時,我都會哀嘆這些教材的撰寫者雖然立意良好,但顯然這種方法沒有這麼有效率。我認為更好的作法應該是直接把整個大概念拆分成許多小概念,然後直接練習各個小項目並把觀念搞熟,等有了足夠的認知之後就可以開始上路解更大的題目了。而在這個練習的過程中務必把每個題目都練熟,並且知道邏輯是什麼。這個做法並不難,只要你記得在學完之後的連續幾天都有複習,然後定期複習就有很好的效果了。
而接下來我想分享,如何開始培養自己解決問題的能力
- 不要怕從零開始直接學習
- 儘早開始培養技能
- 一定要有耐心
不要怕從零開始直接學習
舉例來說如果你現在完全不懂Ruby,我丟了一段Code給你,你要怎麼解?
題目:
Write a method that takes one argument in the form of an integer or a float; this argument may be either positive or negative. This method should check if a number is odd, returning true if its absolute value is odd. You may assume that only integers are passed in as arguments.
解答:
也許看起來很可怕,但是不用慌。在這邊我們可以看到幾個關鍵字:method、def、return true、%、==。接下來你要做的就是到Google搜尋 “what is def in ruby?” “what is method?” “what is double equal sign ruby”等等。大概半小時左右的時間你就可以知道如何建立Method、%和==代表什麼、argument又是什麼,而不用從頭看一大堆的文檔再開始練習。
而還有一件很重要的問題值得詢問:「為什麼很多從學校、補習班、職業訓練所出來的人,依舊沒辦法找到一個工作?這些地方的功能(之一)不就是為了達到這個目標嗎?」。這的確是一個很耐人尋味的問題,這就像是在問一個從小到大十幾年考英文都考高分卻說不出幾句話,跟到了國外用英文生活了一年的人比起來,還是只能不斷被啪啪啪打臉的份一樣。因為很多時候我們都自以為自己在解決問題,但是顯然並非像我們想像的這麼美好。
儘早開始培養技能
「想回到過去,試著抱妳在懷裡……」雖然回到過去顯然是不可能的事情,但我更想從這個角度給尚未畢業的年輕學或是朋友們一點建議。對於20歲左右的學生來說,在生活中顯然有很多的樂子要追隨,還有很多的事情去嘗試,但是往往在這個過程中寶貴的時間也會因此一點一點的流逝。我想要給學生們的建議是,如果你尚未找到願意長期投入的事物,建議各位可以花些時間在幾個複利效應比較大的領域,像是Coding、英文、寫作等等。
而即使你已經找到了自己願意長期投入的領域了,我仍舊建議多花點時間在複利效應明顯的技能上。畢竟知識和技能會越學會越有用,而即使是知識和技能,顯然也有效益和價值之分。就像是幾十年前打字員是不可或缺的存在,甚至需要專門的培訓,這的確是一樣技能,但是現在這個社會每個人都是打字員、每個人的打字速度都不會慢到哪去,現在專心成為一個打字員的好處,顯然沒有那麼大。
又或者你興趣多元,有很多領域都想專研,我也會建議你走複利效應大的,畢竟我們最終追求的不都是能盡可能地讓自己變得更好、讓社會變得更好、讓世界變得更好嗎?既然有一個東西能夠放大你的成果,那為什麼不去做呢?
一定要有耐心
耐心可以說是這個世界上人人都擁有,但卻只有少數人精通的技能。之所以說僅有少數人擁有極佳的耐心,那是因為大多數的人們都傾向於速成,只要能越快達到目標越符合他們的期望。雖然從宏觀的角度來看,一個人能越快速得學會一件事情,表示他能夠有機會做更多事、創造更多價值。但是也正是因為快速上手一件事是如此美好,人們開始過度追求「表面上的快」,而並非「實際上的快」。
就像是很多人會選擇速成班、找一些速成的方法,希望自己可以快速讓自己上手,讓所有的問題可以一勞永逸,而不用再煩惱。我並不是要質疑這些人或著這些教材的效果如何,我想特別提出來的一件事就是,當人們有某種傾向時,市面上就會自然地出現某些產品,藉以從中取得最大化的利益,而這些產品很多的最終目的往往不是服務使用者,而是搜刮。所以在挑選這種產品時務必要小心、有耐心。
而在「速成」這個議題上,我的建議是應該放長遠一點來看。因為我們要比的不是一個月、三個月或是一年後,我們要比的是三年、五年甚至是十年後,因為往往走到最後的人才是真的贏家。你一開始營然後後面陣亡的別人走一點意義都沒有啊,不是嗎?所以一定要有耐心,相信自己絕對是慢慢在進步,也確實朝著這個方向努力。
結論
對於面對如何培養解決問題這件事來說,在coding上我是這樣想的:一定要盡可能早的開始練習市場上需要的技能。如果不知道哪些技能要是先培養,我們可以到招募的文章上看看一般公司都要求什麼,然後從這些地方著手。就拿我現在很像應徵的英語流利說這間公司來說,他們對於Ruby工程師的要求是:
所以對我來說為了有機會能夠面試這間公司,我必須要熟悉如何測試輔助開發(如Rspec)、熟悉如何開發RESTful API、熟悉系列行數據庫(如MySQL)、熟悉如何自動化部屬Ruby/Rails、熟悉使用Git。而當我足夠熟悉這些技能時,對流利說這間公司來說,我就是那個有可能替他們解決這些問題的人。
所以接下來我要做的就是在這幾個技能上琢磨,盡快的讓自己集中升級這幾個能力,因為唯有真的為他人解決問題,才算真正創造了價值。
而我認為有機會這個社會創造價值,就是對這個社會、還有每個個體來說最大的鼓勵。