分享

更多

   

如何自學寫程式? — 心法是成功關鍵 by tinaaaaaleee

2019-05-24  洪育总图...

一個少女從自學寫程式到創立區塊鏈公司和進入UC Berkeley區塊鏈研究院的故事

動機

寫這篇文章是想分享給想自學卻不知道如何開始的朋友 — 就像給過去的自己的一封信。希望幫助到嚮往快速學習新事物的大家,一起加入自學這個大家庭:)

ps. 這篇文章雖然是從自學寫程式的觀點出發,但同理可應用到其他領域

我為什麼對寫程式有興趣?寫程式有什麼好?

對我來說,寫程式有三大好處是我特別喜歡的

  1. 工具只需一台電腦:這點是讓我『開始』寫程式的原因。相較於硬體、生物科技、化學工業,寫程式可以說是工具成本最低的一個職業了,不用特別到實驗室或向他人借器材,只要電腦在手,隨時可以開工。

  2. 工作地點和時間非常彈性:這點是讓我『持續』寫程式的原因。一個最有趣的例子,就是我前年暑假在香港一家區塊鏈新創公司實習的那三個月,都是早上10點出門外拍到約晚上6點,晚上7點到12點遠端在台灣的家工作 XD 如果不是寫程式的時間彈性,我也不可能有那麼多白天的時間去做我最喜歡的事。這個優點真的給了我非常多的自由,至今我都覺得寫程式是世界上最美好的職業:)

這三張都是那時候拍的 😝 (https://www.instagram.com/tinaaaaalee/)這三張都是那時候拍的 😝 (https://www.instagram.com/tinaaaaalee/)

  1. 只要會搜尋,沒有解決不了的問題:這點是讓我『克服困難』的秘訣。可能對學其他科目的人來說,要單純靠上網搜尋答案是非常困難的,很多問題也沒有標準答案,更別提如何驗證解答的正確性。但對寫程式來說,能編譯過的,能快速達成目標的就是解答,複製貼上一試就知道,還會有錯誤訊息提示你解答的方向(通常直接搜尋錯誤訊息就可找到解答)。而且,相信是工程師的人都知道,在Github上搜尋自己要做的專案的關鍵字,常常可以找到類似的程式碼,或是工具庫(如NPM Modules),讓寫程式更快更容易。網路上更是有非常多程式教學,如我自學寫網頁的起點W3SchoolPluralsight 等,還有無數個部落格和Medium。

如何入門?我是怎麼開始寫程式?

我是高二時加入北一女中的資訊研究社開始學C++的。那時因為有學姊和資訊老師認真的教學,很快就上手,並開始在高中生程式解題系統 ZeroJudge 解有趣的程式題(有點像機智問答,大部分題目乍看很難,想通了就有非常簡單的解法 XD),並開始往資訊競賽方向前進,因為當時視野狹隘,以為寫程式只有這條路可以走 qwq。

就這樣一路堅持到大一,最好的成績只有在全國的成大資訊競賽中拿到第五名,沒有特別出色的表現,也發現我讀的香港科技大學,程式競賽的風氣不如高中,幾乎全校只有不到20個人對這個有興趣。

於是,在大一下看到黑客松活動的傳單之後,我決定一試,那是我第一次寫C++以外的語言。

我花了兩天,把 W3School 上 html, css 教學都讀了一遍,跟著網站上的線上編譯器試著改每一段code再編譯,直到能熟悉並背出大部分語法為止。

W3School線上編譯器:https://www.w3schools.com/html/tryit.asp?filename=tryhtml_defaultW3School線上編譯器:https://www.w3schools.com/html/tryit.asp?filename=tryhtml_default

接著,我開始學後端語言NodeJS,一開始查了超多教學都沒有看懂(不像html css 那樣直覺),直到讀了這篇 Node入門 並照著裡面的範例程式跑才開竅。 開竅的定義是:能從一個空白的檔案,生出一整個有後端有前端的網頁,並自由加新功能,可以查網路找解答,但絕對不能複製現成網站。

接下來,我開始找一些實作應用的教學,例如[如何用NodeJS、Express、MongoDB 和 SocketIO 做一個聊天機器人](http://How to build a real time chat application in Node.js using Express, Mongoose and Socket.io)。每個名詞只要看不懂就丟進Google搜尋,不要跳過,那時我的心法是:

“每個不懂的名詞我只要認真查一次,下一次再看類似的教學,就會越來越輕鬆。”

這個心法讓我奠定了良好的基礎,不像很多人學寫程式,為求速成而直接複製現成的網站,到後來因覺得架構太難太複雜,無法掌握而放棄。永遠都要從最簡單的架構開始,習慣了再慢慢套用更複雜的框架,這樣才能有自己靈活運用程式碼的能力,而不是不斷的在修復錯誤訊息中,讓程式碼越來越複雜。

入門之後如何進步?怎麼同時應付課業壓力?

學會了網頁前後端之後,我就開始積極參加黑客松練功,至今已有近20場比賽經驗,也贏了幾場國際黑客松,其中包含以太坊全球黑客松舊金山站(Medium 心得文)。黑客松真的是每個工程師必去的練功活動,在時間的壓力下,跟第一次認識的隊員合作,從零寫出一個專案,並呈現給不同背景的評審,這也是我覺得創業非常重要的技能之一。

除了參加黑客松外,我也開始探索資訊工程的不同領域,例如AI, Robotics, CyberSecurity 和 Blockchain。大一時我入選香港科技大學每年從200多位申請者中選出的20位新機器人隊隊員之一。加入的初衷是因為機器人隊是我們學校最難進的社團之一,要花近一年的培訓與最終決賽,贏的隊伍才有可能加入。對,就是因為『虛榮心』而加入,非真正有興趣。

於是,惡夢開始了。我花了半年時間,每個禮拜進實驗室10到20小時做無人車 smart car 機器人,除了寫能用車身前置鏡頭判斷左轉右轉之外,從焊 mainboard 到畫車身設計圖,甚至鉅板子都做過。 時間不夠的壓力讓我養成了在上課當下就學會,不回家複習這個習慣,還有用最少能應付考試的力氣上課,極端一點例如翹掉所有課,期末考前再一次性把上課影片看完 XD 這些快速、長時間專注學習的習慣也讓我至今受用無窮。人在沒有其他退路的時候有無限潛能,這時我的心法是:

“同時做很多事,能讓你做每件事更有效率。”

有專研的資訊領域很重要?為什麼是區塊鏈?

自學網頁發開一段時間後,我又發現一件事:『網頁開發只是寫程式賺錢中的最基礎入門版』,還要加上其他應用(如人工智能、區塊鏈)才會更有價值,否則在產業裡非常沒有競爭力(只能削價競爭 !?)

故事是這樣的,我在成為網頁開發工程師後,第一份工作就被一家香港小公司剝削,以小時計費,時薪是50港幣一小時(約200台幣),低於學校活動 student helper 時薪53港幣。那時我沒多想就接受了這個 offer,因為畢竟自學這些都是免費的,沒有理由跟人家收費很高。

結果,悲劇的是那位香港老闆要求我幾乎無時無刻都要在線上,處理他臨時想加的網頁新功能,老闆還會一直催進度,我只好傻傻的照要求做,並老實按小時計費,最後一個多月邊上學邊兼職的薪水只有3000多港幣,老闆還會一副你做得不夠快不夠好我就換人的樣子。這次經驗中,唯一的好處就是讓我養成了能快速開發任何功能的能力,和讓我瞭解到:

“只會網頁開發,沒有理由議價,因為自學網頁的成本太低,到處都是,為什麼要找你呢?”

於是,我開始在教學影片平台(如Coursera, Udemy, YouTube)上,同時學人工智能與區塊鏈,看哪一個領域更有趣,我能堅持得比較久。後來當然是覺得區塊鏈更神秘、更有趣,所以更喜歡他。

而當時我選擇區塊鏈而非人工智能的另一個原因是,對剛入門的我來說,選擇的心法是:

“會人工智能的人到處都是,為什麼人家要找你一個新手?而會區塊鏈的人沒聽過幾個,這樣你跟其他人的起跑點就是一樣的。”

結果很幸運的,我的大學開了一個名為 Blockchain Application 的研究專題,我也報名上了,因此我學區塊鏈就更有目的了,也在博士生的指導下在 ACM CryBlock 發了第一篇區塊鏈的論文。

寫程式還能做什麼?為什麼走向創業?

跟很多人一樣,我以前的夢想也是進大公司過好日子。

去年暑假,靠許多黑客松與比賽的得獎經歷,和在區塊鏈界的小成就(面試官覺得發Medium區塊鏈教學文章太有意思,特別喜歡我),我以大二的身份成功錄取了香港微軟人工智能部門與匯豐銀行合辦的一年實習計畫。原本是給即將畢業的學生申請的,並有機會畢業後直接進入微軟工作。

Microsoft Hong Kong Office — Data & AI TeamMicrosoft Hong Kong Office — Data & AI Team

但在大公司工作後我才發現,雖然工作內容比新創公司輕鬆很多(通常新創公司因為缺人手,會把一個人當十個人用),卻沒有像新創公司那樣,讓我覺得我的角色非常重要,會影響整家公司,並跟著公司一起前進的感覺。每天的工作也重複性較高,不像新創公司,每天都有很酷的新工作出現。工作中的挑戰也不像新創公司,在大公司裡分配到的任務幾乎都是前輩們已經有能力做到的,只是給我這個實習生練習,而以前在香港的新創公司裡,很多任務是從前沒有人做過,我是第一個做出來的。我決定退出微軟,休學一年在台灣發展的心法是:

“我受不了自己不那麼被需要,受不了自己只是那好幾千萬個員工中的其中一個,於是我創業。”

Turing Chain 圖靈鏈科技: https://turingchain.techTuring Chain 圖靈鏈科技: https://turingchain.tech

((感覺是個超不乖的學生 XD

去國外發展必要嗎?怎麼能去Berkeley的?

就這樣,我從去年10月退出微軟後,在台灣發展了約半年,並在今年3月正式來到 Berkeley 區塊鏈研究院

得到這個去 Berkeley 的機會也是一個很有趣的故事。我在2018年10月退出後,飛到舊金山去參加了全球以太坊黑客松,並在那裡認識了 Berkeley 區塊鏈研究院和加速器的主辦人。她也因為我們團隊贏了一個小獎而對我們印象深刻,並提出這個來 Berkeley 當短期學者的 offer。

所以,其實收到這個 offer 是11月的事,為什麼拖到隔年 3 月才去就是因為我一直不確定『去國外發展的必要性』。

在台灣一切都看似很美好,我有一小群喜歡我的區塊鏈教學的粉絲,有許多幣圈鏈圈的好友,也常常被邀請去公司內部或公開活動演講與教課。公司業務方面也在超厲害的共同創辦人兼執行長 Jeff Hu 的幫助下,有一些穩定的客戶。但我後來意識到:

“我如果用最容易去美國的學生身份,選擇放棄去國外的機會,很可能因政策關係永遠只能留在台灣,沒有國際視野也會漸漸因自滿而停止前進。”

於是我現在在 Berkeley 的校園裡寫下這篇文章,在這裡認識了很多區塊鏈公司的創辦人,和對區塊鏈和創業有興趣的朋友,也成功在拉斯維加斯大學和最大化學工廠 BSAF 演講,很慶幸自己又做出了正確的選擇。

自學的下一步? — 回饋給過去的自己

總結了自己自學的歷程,我覺得對初學者最好上手的還是『課程觀念加實作影片』,我學區塊鏈時發現網路上知識非常零散破碎,而且多為英文,不像學網頁開發那樣容易,一直想著『如果區塊鏈也能有很清楚的影片入門教學就好了』,我就不用到處拼湊知識,能夠更快地上手。

這就是我開始在 Hahow 這個中文自學平台上開區塊鏈入門課的動機。

從自學區塊鏈到專家!https://hahow.in/cr/berkeley從自學區塊鏈到專家!https://hahow.in/cr/berkeley

希望能透過這堂課,讓更多像我一樣對區塊鏈有興趣的學生,不用走冤枉路,並且能直接上手寫程式應用。而這門課也是讓你試學,『決定區塊鏈是不是你要繼續專研的領域』一個很輕量的起點。

網路課程還有一個很大的優點就是可以隨時播放或暫停,自己控制學習的進度,又比學校直接修課,萬一不喜歡還要痛苦的考試還要自由

“於是我的第一門線上課程,就因為這些原因誕生了:)”

感謝大家!歡迎任何對文章的建議,如果喜歡也可以幫我拍手鼓勵或分享!

Thanks for your time reading!!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    类似文章 更多
    喜欢该文的人也喜欢 更多