自學程式,你無形中就犯了這些錯誤!

從新手到完成職業工程師的蛻變沒有捷徑,也正因為如此,所有自學的開發者都有自己不一樣的經歷和故事!
評論
評論

本篇來自合作媒體 36 kr,編譯自原文 「Lessons learned from my journey as a self-taught developer」

開發員之路充滿艱辛,也充滿了各種不確定性。從新手到完成職業工程師這蛻變沒有捷徑,也正因為如此,所有自學的開發人員都有自己不一樣的經歷和故事。在這篇文章裡,Victor Cassone 分享了他自學程式過程中的一些經歷以及由此收穫的經驗和教訓。希望看到這篇分享之後,有助於讓你反思自己的過去,並激勵你繼續前進。

專注於學習的過程

在我第一次開始學習程式時,我並沒有打算讓自己走上職業工程師的道路。當時,我只是想製作一款特別的應用程式。此想法最早是在我大四那年產生的,當時我剛剛讀完了理查·布蘭森(Richard Branson,維珍品牌創辦人)的《Losing my Virginity》這本書,可能也是由於我之前透過科技媒體平台接觸了大量的創業資訊,所以我覺得自己充滿了創業的鬥志。我看過許多關於大學生利用行動應用程式點子獲得高額投資的文章,我想我也可以成為這其中的一員。

一天,在課間的時候,我的腦海中突然出現了一個關於應用程式的想法。這款應用程式的細節並不重要,重要的地方在於這個想法是獨一無二的,並且具有很大的增長潛力(至少在我看來是這樣)。我確信自己發現了接下來應該會發生的一個大事件,我沉浸在自己的此想法中,上課之後完全聽不到講師在說些什麼。我為自己的想法而感到興奮,很快我就感覺必須要採取行動了。

但是這中間有個大問題,我想創造一款行動應用程式,但我並不認識什麼人可以幫我建造行動應用程式。於是我就想,管它呢,寫程式能有多難?我當時對我的專業並不怎麼感興趣,把很多時間都花在 Xbox 上玩遊戲。我想我可以利用一些空閒時間來自學建構此款行動應用程式。有時候,天真的想法有助於讓你採取那些本不會貿然嘗試的行動,正可謂初生之犢不畏虎。

當時的我就是一名沒有任何編碼、業務和設計經驗的大學生,正試著學習 Android 開發來建立一款複雜的應用程式。我買了幾本關於 Android 開發的書籍,花了很多時間自學,嘗試來開發出這款應用程式。我不在乎它之後的效果怎樣,我只想做出一款成品,如果是能透過從其他管道複製和貼上代碼來完成那就最好不過了。

我認為我可以投機取巧,用最少的編碼知識來完成這個目標。我一心只關注最終的結果,是隧道盡頭的那盞燈讓我不斷前進。時間一分一秒的流逝,這款應用程式變成了一大堆複製和貼上代碼的集合體,沒有很多的功能,勉強達到了運行起來不崩潰的程度。

後來,直到我偶然間接觸了電腦科學課程,我才意識到我應該更專注於學習過程。由於我自己在編碼方面的能力不足導致我放棄了最初的應用程式創意點子,我也意識到了我這樣根本做不成什麼大事,至少現在還不行。

幸運的是,隨著時間的推移,我改正了自己的行為,開始更加認真地學習。我開始喜歡上了寫程式,並最終走上了專業軟體開發人員的職業生涯之路。

收穫與所得

有一個好的點子是很棒的一件事,但要留意你的這個點子可能會產生吞噬性。這是一股很強大的力量,我就是在很長一段時間之內都被此力量所吞噬。它讓我把注意力放在了最終的結果上,而不是實現結果的過程之中。

重要的是記住一點,學習像寫程式這類複雜的知識需要一步一步的去積累。所以,要想讓自己有所學,唯一的方法就是專注當下每一步的學習過程並且掌握每一步所需要掌握的內容。

如果你過於關注最終結果,那你很有可能就會開始走捷徑。走捷徑可能會讓你短期之內取得不小的進展,但從長遠來看,對於基礎知識的缺乏遲早會成為你的絆腳石。學習一樣新知識就像蓋房子一樣,你要先建好地基,然後萬丈高樓方能平地起。如果地基不牢,整座建築遲早會坍塌。

有時要想搭建一個堅實的地基就需要你放慢速度。不要因為自己進展緩慢而感到羞恥,一次完全掌握基礎知識的人最終會領先於那些走捷徑、但必須回頭重新學習的人。我就是一個反面例子,外表看上去我可能像是一位程式天才,但其實我根本就無法建立起一款像樣的應用程式。

專注於每天的學習過程,最終你會為自己取得的進步而感到驚訝。

Stack Overflow 很棒(也很危險)

在我學習建立應用程序的過程中,Stack Overflow 成為了我最好的朋友。每當我遇到什麼困難卡住的時候,我都會到 Stack Overflow 社群提出問題,平均一週都會有好幾個問題。我不僅會在上面提出問題,而且也會將從上面所得到的答案視為救星。我會花費大量的時間進行搜尋,試圖找到可以解決我當下問題的那塊程式碼。一旦找到答案之後,我會將其複製並貼到我的程式庫中,嘗試讓其發揮作用。根本就沒有投入時間讓自己嘗試去理解這些程式,我只是粗暴的透過這種蠻力進行嘗試。

這種模式持續了有一段時間,直到最後,我醒悟過來,最終意識到了這種方法的缺陷所在。

收穫與所得

在學習編碼過程中,複製與貼上是最可怕的一種方式。Stack Overflow 可謂是一把雙面刃,它非常適合幫助你解決問題,但如果你不多加小心,它就會成為你總是想要依賴的那根拐杖。

有的時候,可能是由於 Stack Overflow 太擅長於幫助你解決問題,你也會因此產生一種不切實際的自信心,而這未來只會給你帶來更多的麻煩。

如果遇到問題你只是一味的想透過求助來尋求答案,那你學不到多少東西。在訪問 Google 之前,確保自己嘗試過解決此問題。如果你發現自己正在進行複製、貼上代碼,那也要確保自己至少投入了一些時間去理解這些程式碼。畢竟,在學習的過程中,沒有捷徑可走。

尋找過來人的幫助

在我決定自學程式之後,我做的第一件事就是買了兩本 Android 開發方面的書。一開始,我嚴格按照書中的練習去做,並完成了所有的範例。但很快我就感到厭倦或者說沮喪,不想再繼續跟著這本書學下去。我決定走自己的路,自己來搞定編碼。但正如我之前所說,這樣做的結果就是會慢慢的讓自己陷入災難之中。

我會自己一個人長時間的待在我的房間或咖啡店裡。我將自己與外界隔離,我感覺沒人可以幫助我,因為我認識的人都沒有任何 Android 開發的經驗。日子一天天過去,我卻沒有取得多大的進展。

有一次,我想到了一個好主意,那就是下載一個名為 FFMPEG 的大型 C 庫。我想要建立的應用程式需要對影片進行編輯,因此我認為如果能夠利用此 C 庫的強大功能那應該是一個不錯的主意。其實在當時,這並不是最明智的舉動,因為當時我的 Android 應用程式幾乎還無法正常運行。我浪費了很多的時間去閱讀 C 語言,試圖弄清楚該怎樣在我的應用程序中用到它。慢慢的,我又開始變得沮喪,最終放棄了這個主意。

幸運的一點是,大約在同一時間,我報名參加了物件導向語言(OOP)的一門課程,也不知道怎麼就被錄取了。在所有報名的學生當中,我是唯一來自非電腦科學專業的一位。我也不知道自己怎麼就被選中了,可能是報名軟體中有 bug 吧。

這門課程給出的第一項任務就是創造一個 Blackjack 程式。當時,我自學程式已經有 5-6 個月的時間了,因此我對自己可謂是信心滿滿。我很快完成了此任務,並自我感覺良好的樣子。但很快,這種感覺就消失了。我的整個程式是用一種很籠統的方式去寫成的,而班上的其他人都知道這個城市應該先分成幾個類別。這種感覺太差了!

收穫與所得

好在,老師給出的課堂作業和指導意見可以讓我先擱置我的 Android 應用程式,專注於反思自己的開發能力。我開始更加重視學習,並重新找回了自己最初的想法,那就是製作一款完整的應用程式。

如果我在早期階段就能有幸與那些經驗豐富的開發人員交流,那他們就會了解我在做些什麼,而給出重點建議,讓我可以更加理智的採取行動。當我走入沒有什麼出口的死胡同時(比如嘗試利用 FFMPEG),他們也會幫助我及時的調整路線。經驗豐富的開發人員就像是指南針,他們雖然無法直接帶你到達目的地,但他們會確保你所選擇的是正確的方向。他們的幫助往往會成為你扭轉敗局,走向成功的關鍵所在。

事後回想起來,其實當時我有很多種方法可以尋求他們的幫助。我可以嘗試在大學裡找一位擁有 Android 開發經驗的教授/學生,也可以嘗試尋找一個線上 Android 社群。但那時的我卻只是將自己隔離了起來,隔離是一把雙面刃。一方面,它可以讓你專注於手頭上的任務,另一方面,它會讓你遠離外界,無法獲得關鍵性回饋。

確保自己可以獲得過來人的經驗指導,這將為你節省不少的時間,並減少一些不必要的挫敗感。

尋找合適的環境

在我自學寫程式的過程之中,這可能是我唯一做的還算對的事情。在我整個學習生涯之中,無論是在家備戰考試還是做作業對我來說效果都很糟糕,好像總有很多的干擾因素。所以,我通常都會去圖書館或者咖啡館來尋得一方清靜。幸運的是,在我自學程式的時候,我也是這樣做的。

我成為了鎮上幾家當地咖啡館的常客。較之其它學習地點,我更喜歡咖啡館的原因在於咖啡館的選擇性更多一些,你可以選擇一家你不會碰到認識人的店面。如果我在家學習,那我必須要關上門,這樣我的室友才知道在一段時間之內不可以打擾我。其實無論在哪裡,我都會確保耳機裡的音樂聲音足夠大,這樣我就听不到周圍的任何聲音。那種沒有歌詞的歡快音樂類型最適合我。

收穫與所得

尋找合適的環境往往是學習過程中容易被忽視的一個環節,要知道在這個過程中你應該保證不會有其他的干擾因素,這樣你才能長時間的保持專注狀態。專注是保證記憶力和技能獲取效果的基礎組成部分,當你嘗試將新資訊輸入大腦中時,輸入效果的強度直接與你的專注程序相關。如果你的注意力不集中,那新資訊的記憶會降低,導致學習速度變慢,學習時間也會因而增加。

看看那些世界級的表演家平時是如何訓練的就知道了,他們會每五分鐘就看一次手機嗎?肯定不會吧。

要想提高專注力,最簡單的一個方法就是尋找一個對你來說乾擾力最低的環境,具體可以參考以下幾種方式:

  • 找一個沒人會打擾你的地方
  • 將手機設為飛航狀態
  • 利用某種定時網站阻擋器來管理社群媒體和新聞網站的瀏覽權限
  • 戴上耳機聽一些不會讓你分心的音樂(最好提前設置好歌單列表,這樣就不必經常切換歌曲)
  • 避開周圍有電視或者是其他會導致你分心因素存在的環境
  • 隨身攜帶一個筆記本,可以記下突然出現在腦海中的任何想法

只有你自己可以決定何處才是適合你的學習環境,並且正確的去選擇此類的環境。確保自己在環境選擇上費點精力,因為它值得你這麼做。

將所學付諸實踐,進入工作場合

我的第一份開發工作其實來的有些偶然。當時,我剛剛搬到內布拉斯加州的奧馬哈,距離我開始自學程式已經過去了一年的時間。我在奧馬哈幾乎沒什麼認識的人,於是我透過 Meetup.com 進行搜尋,試圖找到對同樣 Android 開發感興趣的人。幸運的是,當時我找到了一個相關的聚會活動,包括 iOS 和 Android 開發。於是,我鼓起勇氣,決定前去參加。

萬事開頭難,第一次去之前我在車裡猶豫了大約有十分鐘的時間,不知道是該進去還是直接開車走人。我怯場了,我對自己的程式技巧沒有信心,我知道在場的每個人都比我有經驗。最後,我把心一橫,管它呢,我就直接走了進去。我也很高興當時我做出了正確的決定。

之後,我開始定期參加此聚會。不久之後,在聚會上我認識了一位招聘人員,他正在尋找一名 Android 開發人員。我們就此事談了一會,之後我接到了面試通知。在參加面試前,我感到信心滿滿。但在面試過程中,我卻表現得有些不知所措。面試官介紹著此職位需要負責的專案,我發現這一切都超出了我的理解範圍。我試圖讓自己跟上節奏,但他們顯然能夠看出這超出了我的能力範圍。

面試結束之後,他們讓我先隨便逛逛,再和其他人談一談。我知道自己這次搞砸了,於是我在市中心逛了一會,讓自己冷靜下來。之後,我又參加了一次面試,不久之後,他們向我提供了一個實習崗位。因為當時公司的 CTO 自己負責所有的 Android 工作,他需要有人來替他分擔一下。

當時的我甚至不敢相信自己拿到了這個機會,在簽署了所有的相關文件之後,我又跑到 CEO 那裡,問他這是否是一份帶薪實習的工作。最後,我從實習轉為全職工作,我作為軟體開發人員的職業生涯也正式開始了。

收穫與所得

如果在某種技能方面你是自學成才,那應該不會有人資主動來找你。你需要走出去,主動尋找機會。那些畢業於四年制大學的人可以利用學校資源來找到工作,但對於自學人來說,這麼便利的條件並不存在。也就是說,對於我們這樣的人來說,要想找到一份工作,最好的辦法就是走出去,認識更多的人,你可以透過像 Meetup.com 這樣的網站去尋找那些每個月或每兩個月聚會一次的相關小組。

盡你所能鼓起勇氣去加入這些群體。保持友好的態度,和其他人分享你的經歷,確保他們了解你找工作的長期目標。讓自己進入可能帶來積極影響的環境之中,如果你不買彩券,那你永遠也中不了大獎。認真看待你所擁有的任何機會,即便它看上去像死路一條,但卻峰迴路轉也說不定呢。

關鍵是要讓自己眼光放長遠一些,實習或者兼職工作可能當下給不了你想要的薪資待遇,但他們能夠幫你打開走向未來的大門。


疫後科技趨勢大爆發 5G加速創新應用發展

經濟部次長曾文生去年表示,在新冠肺炎疫情肆虐之下,大眾經常無法面對面進行溝通,更顯出「通訊」這個題目對人類社會發展的重要。
評論
Photo Credit: Lenny Kuhne / Unsplash
評論

疫情改變了目前人類的行為,而且影響會持續到未來,人與人、人與機器之間互動的方式將有所改變;試著想像這個場景,你剛去巡視完公司的無人工廠,整間廠房,就只有機械手臂安靜的高速運轉,這間廠房的生產效率,是過去一間兩百人廠的 3 倍以上;確認一切無礙,你快速的用模擬人像的視訊會議,跟所有夥伴說明企業運作現況。

下班後,坐進你的自動駕駛電動車,系統告訴你,大約 25 分鐘後就會到家。你在位置上手機連線,開啟家裡的冷氣、把最心愛的模擬實境遊戲打開,準備一回家就要戴上眼鏡與手套進入遊戲環境裡捉對廝殺。

10 年前,這些事情聽起來像是科幻小說,但現在,會因為所有科技技術逐漸到位,讓小說場景成為尋常的現實生活。而要連結這些場景,使之成真的背後,最關鍵的技術,莫過於能夠橫跨視聽展演、遊戲、運動、智慧觀光、交通及製造領域的 5G 技術。

5G 為通訊與物聯網的基礎,在 2020 年疫情侵襲全球期間,經濟部次長曾文生更曾提及,因為疫情,以至於所有人與人的通訊、連結都由面對面轉為線上,這更凸顯了流暢的通訊技術,對人類社會發展的影響之遠大。而國際研究機構 IHS Market《5G經濟》報告預估,到了 2035 年,全球 5G 產業鏈投資額預計將達到約 4 兆美元,而由 5G 技術驅動的全球產業應用將創造超過 12 兆美元。其中又以製造、數位娛樂、交通等,影響最大。

Photo Credit : 一零四資訊科技公司
一零四資訊科技公司於 2020 年 3 月發布的《104 職務白皮書》。(Photo Credit : 一零四資訊科技公司)

正因為商機如此龐大,這些關鍵發展領域,延伸出來的產業與技術,更需要創新與創意人才的參與和培育,根據 2020 年 104 人力銀行的調查指出,未來搶手的 10 大熱門職業中,有 6 項職業,都直接與 5G 領域技術高度相關,顯見台灣對於這類人才的渴求與期盼。

瞄準世界發展 5G 領先產業,廣納台灣人才加入競賽

以此來看,5G 產業不僅是國際發展趨勢,更是台灣未來打造下一個兆元產業的重中之重。而為讓創意真正落地到可執行的情境中, 經濟部工業局也同步於辦理近 20 年的通訊大賽 MobileHero 之中,特於 2020 年增設「5G領航創新應用競賽」子競賽,吸納與挖掘更多 5G 應用相關人才,並透過賽事,激盪出更多 5G 應用創新想法與實踐性。

而今年度 5G 領航創新應用競賽串接人才與發展領域,更聚焦於數位娛樂、交通及製造領域,橫跨視聽展演、遊戲、運動、智慧觀光、交通、製造產業,衍伸技術從浮空投影、360 度全景沈浸式體驗、到自動駕駛、物流自動化、無人搬運車、影像辨識等等

本屆 5G 領航創新應用競賽總獎金超過 100萬,概念組更只要完成 6 題的提案企劃即可參賽,從製造、交通到數位娛樂,有 5G 應用創新構想的你現在馬上就上傳你的提案吧。 (Photo Credit : 資策會地方創生服務處)

為發展 5G 特定領域解決方案,以使用者場景出發,在這次的 5G 領航創新應用競賽裡,更鼓勵「跨域組隊」,透過不同領域的人才組合,也成為團隊相互激盪出有趣創意及能否多元思考的關鍵。

實作組概念組雙軌賽制,激發更多創新創意思維

舉例來說,假設今天參賽者是以「電動車」為概念發想,做出相關企劃提案,那從電動車裡的乘客,乃至於駕駛的體驗感受以及需求,都成為想像電動車應該會需要什麼功能與服務的重點,藉由這樣的場景描述,找出可以以 5G 技術滿足的痛點,便有可能可以提出一個極具商業化價值與創新創意的提案。

競賽本身即是為了挖掘與培育數位人才為出發點,更棒的是競賽以「實作」與「概念」兩種賽制雙軌並行,除了以往落地執行的實作組,「概念組」團隊僅需要提出「創新概念」的提案,試圖想像 5G 技術可能的應用情境,第一階段提出夠創新、夠獨特的 6 道提案企畫書,就符合參賽條件。更說明了經濟部工業局開放更大的空間,邀請更多不同領域的傑出人才,一起發想未來世界生活的理想樣貌。

同時,競賽更採贊助商即評審制,產業代表可以就第一線面對市場的經驗,直接回饋修正與優化的方向,讓概念化為實際商業產品或服務時,更有市場思維。

接軌世界與台灣發展趨勢,也考量到實作難度,5G 領航創新應用競賽提出雙軌賽制,更廣邀產業專家加入,不僅給予相關資源協助,更有貼近市場脈動的意見與經驗參考。與此同時,團隊還可使用經濟部工業局 digiBlock C 數位創新基地測試相關應用服務的可行性,讓所有參賽者無論最後有無得名,都能從中得到寶貴的經驗與機會。

競賽報名方式

  1. 參賽者不限國籍與年齡;新創團隊、公司行號、社會人士或學生皆可組隊參加。
  2. 每隊由 1 至 5 人自由組成,鼓勵成員跨領域組合,激發多元創意。
  3. 每隊可視需求設指導老師/專家最多 2 名。
  4. 概念組著重創新創意,僅需完成 6 道題目的概念企畫提案即可。

經濟部工業局 廣告