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

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

本篇來自合作媒體 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 這樣的網站去尋找那些每個月或每兩個月聚會一次的相關小組。

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

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


黑五最優惠!選 Ivacy VPN 準沒錯,限時回饋 90% 優惠,每月不到 30 元

Ivacy VPN 超殺優惠,每個月花不到新台幣 30 元,上網更安心,也沒有網路流量或是頻寬限制,立即解鎖享受全球各地的影音資源。
評論
評論

全球最快的 Ivacy VPN 在黑色星期五推出超殺優惠,5 年只要美金 60 元,每個月花不到新台幣 30 元,就可立即解鎖享受全球各地的影音資源,或是在各個國家地區享受訂閱優惠。更棒的是, Ivacy VPN 的隱私政策不會記住瀏覽紀錄,上網更安心,也沒有網路流量或是頻寬限制。

VPN 兩大用途:保障上網隱私安全、跨區解鎖影音與線上購物

VPN 的原理是把你的電腦、手機、平板或其他能夠連網的裝置,先連接到某一個網際網路上的伺服器,透過這個伺服器去上網,所以伺服器座落在哪個國家或地區,就會顯示你是從哪個國家或地區上網的。

簡單來說,透過 VPN 上網後,每次上網會先連接到某一個網路網路上的伺服器再往外連線、瀏覽網頁,所以能夠確實保障連網安全,沒有人會知道你的真實網路 IP。

另外,透過 VPN 連網時,所連線或瀏覽的網站也會以為你是來自網際網路上伺服器的國家,就可依此來解鎖只有那個國家的使用者才能看的影音,甚至是享受僅限那個國家使用者才獨享的線上購物優惠。

Ivacy VPN 在黑色星期五推出限時 1 折優惠,換算下來每個月不到新台幣 30 元。

單一帳號支援 10 台裝置,解鎖全球影視資源

網路能夠讓人們打破地域的限制,但是在網路發達的現代,反而出現大型媒體壟斷的現象。身在台灣的 Netflix 訂閱用戶,可以發現其它國家如美國、加拿大、法國、英國、德國,甚至是離台灣比較近的日本、澳洲,Netflix 影片片庫數量比台灣多更多,我們每個月卻需要支付 390 元。

不少人透過 VPN 的方式,取得該國家的 Netflix 影片片源,但是 Netflix 也頻頻祭出反制措施,免費的 VPN 不穩定、頻寬也不足。

目前正推出 1 折限時優惠的 Ivacy VPN 服務,能夠解鎖美國、加拿大、法國、英國、德國、日本、澳洲等 7 國的 Netflix,瞬間享有 5000-6000 部影片資源,非常划算。

Ivacy VPN 支援多平台,下載相對應的應用程式並登入,即可享受網路世界的自由,以及不被窺視的隱私。
可以自由選擇各個國家地區的伺服器,甚至能夠選擇位於哪個城市的伺服器。
只要按下畫面中央的電源按鈕,等到電源按鈕變成綠燈時,就表示你已連上 Ivacy VPN 的伺服器。
加拿大限定的片單「侏羅紀世界:殞落國度」也能成功解鎖。
連上 Ivacy VPN 位於美國的伺服器之後,可以看到台灣沒有的「神盾局特工」和「NCIS」。
法國 Netflix 近期加入許多尚克勞德范達美的影片。
英國 Netflix 也沒問題,喜歡自然生態的朋友,能夠觀賞一些由 BBC 所推出的節目,或是觀賞英國冒險恐怖片「深入絕地」。

Amazon Prime 也是台灣使用者相當喜歡的影視資源,流量較高、畫質更為細緻,不過很可惜的是,同樣有著地區限制。透過 Ivacy VPN 連線至美國,可以解鎖更多的影片資料庫。

透過 Ivacy VPN 連線至美國 Amazon Prime,輕鬆解鎖更多影片資源。
Ivacy 電腦版連線程式 Streaming 頁面整理了全球各大線上影音平台,想看哪個頻道就連線到該國家,十分便利。

Ivacy VPN 限時優惠活動只要 1 折,每個月不到新台幣 30 元,1 組帳號還可以支援 10 台裝置登入,能夠滿足人手多機的需求,若是呼朋引伴一起訂閱,分攤下來的費用簡直是不可思議的划算。

Ivacy VPN 1 組帳號密碼支援 10 台裝置同時登入,本人擁有 1 台桌上型電腦、1 台筆電、1 台平板、1 台手機就相當方便使用,與親友分享費用更划算。
Android 智慧型手機連線至位於德國的伺服器之後,Netflix 就可以顯示當地內容。
澳洲 Netflix 上檔的哈利波特系列電影,是其它國家/地區沒有的。

最快的 VPN、超多伺服器都好用,跨區購買更划算!

根據 ProPrivacy 於 2019 年的調查,Ivacy VPN 獲得最高速 VPN 服務業者的殊榮,並於該年度同步獲得最佳整體獎項以及最高 CP 值。即便是這篇推薦文章撰寫的當下,Ivacy VPN 的傳輸速度也是相當的快,名列 VPN 服務業者前茅。

Ivacy VPN 於 2019 年度獲得最佳速度、最佳整體、最高 CP 值等各項殊榮。
2019 年的測試中,Ivacy VPN 傳輸速度相當地快速,超越其它業者許多。
2019 年的測試中,Ivacy VPN 傳輸速度相當地快速,超越其它業者許多。

國外的測試報告只是效能表現的其中一個面向,最重要的是「台灣」的使用者體驗到底好不好呢?透過 Ivacy VPN 分別連線到位於美國以及日本的伺服器,以 Speedtest 測試下載速度可以到 79.19Mbps 以及 87.96Mbps,由於 Netflix 服務主要注重下載速率,這個速度已經可以同步觀賞多個 4K 影片了。(測試環境為 HiNet 下載 100Mbps上傳 40Mbps)

從台灣透過 Ivacy VPN 連線至美國和日本,其下載速度足以同步觀賞多個 4K 線上串流節目。

Ivacy VPN 於全球超過 100 個國家/地區建置超過 3500 個伺服器,不僅提供高速網路環境,更不用怕某台伺服器突然壞掉無法連線。如果你只想要隱藏網路活動,不要被 ISP 業者、第三方窺視的話,Ivacy VPN 於台灣也建有伺服器,保障使用者的上網隱私。

Ivacy VPN 於台灣建有伺服器,以最快的速度服務台灣使用者,同時享有上網活動不被窺視的隱私。

解鎖全球其它地區的影視資源之外,同樣的一種商品,也可能在不同國家/地區出現不一樣的價格。以工作必需的 Microsoft 365(原名 Office 365)和生活必須的 YouTube Premium 為例,這 2 款商品在台灣的每月訂閱費用分別為新台幣 219 元以及 179 元,若是透過 Ivacy VPN 連線至印度伺服器,印度當地每月訂閱費用分別為 489 盧比以及 139 盧比,按照 0.38 匯率換算,相當於新台幣 186 元以及 53 元,買越多越划算。

台灣 Microsoft 365 每月訂閱費用為新台幣 219 元。
印度當地的 Microsoft 365 每月為 489 盧比,折合約新台幣 186 元,相當於打 85 折。
台灣 YouTube Premium 每月訂閱費用為新台幣 179 元。
印度 YouTube Premium 每月訂閱費用為 139 盧比,折合約新台幣 53 元,相當於打 3 折左右,而且 Ivacy VPN 支援連線加密功能。

隱私安全支援多平台、多功能提升消費滿意度

Ivacy VPN 能夠擁有這麼快的速度與穩定的連線品質,靠的是 10 年以上的 VPN 技術經驗,更難能可貴的是,Ivacy VPN 僅記錄連線至伺服器的資訊(帳號、密碼之類),而不會記錄你的上網活動(如造訪網站、DNS 查詢、E-Mail 電子郵件通訊等)。

你和 Ivacy VPN 伺服器之間的連線,最高經過 256 位元的加密,更能夠透過 Ivacy VPN 的超強技術,防範惡意軟體入侵設備,同步保障資料與設備安全。

安裝 Ivacy VPN 時,使用者條款明確地寫到,不會記錄上網活動(如造訪網站、DNS 查詢、E-Mail 電子郵件通訊等),使用上更安心。

若有透過 P2P下載檔案的需求,那就更不能錯過 Ivacy VPN 所提供的安全下載功能,針對 P2P 最佳化過後的 VPN 伺服器能夠大幅度增加下載速度,同時又能夠保障使用者的安全。

由於 P2P 需要大量消耗 VPN 伺服器的連線資源,因此 Ivacy VPN 特地為此項功能提供最佳化,能夠提升使用者 VPN 下載速度,而且不限流量。

深入 Ivacy VPN 電腦應用程式的設定頁面,可以發掘到更深層的防護功能,譬如 IP/DNS 保護、加密類型、連線埠(跳過網管的白名單防火牆)、VPN 斷線即中斷網際網路連線等。如果使用者同時有 VPN 連線以及一般網路連線的需求,可以把電腦內某個應用程式排除於 VPN 連線至外,就可以一邊去美國看影片,一邊和主管開會(喂)。

Ivacy VPN 電腦應用程式設定頁面還有許多好玩的東西,譬如 Internet Kill Switch 能夠在 VPN 不幸斷線的時候,立即切斷網際網路連線,進一步保護隱私與安全性。
Split Tunneling 能夠將名單之內的應用程式,排除於 VPN 連線之外,譬如畫面當中已經將 Chrome 網頁瀏覽器加入名單,Chrome 就可以使用本地的網路資源。

安全與多功能的 Ivacy VPN,支援眾多的裝置。電腦、手機的多種作業系統之外,還支援瀏覽器外掛、Xbox 家用電玩主機系列,還有 Android TV。

Ivacy VPN 支援多種作業系統、多種平台,無論是手機、電腦、應用程式、家用遊戲主機、電視、網路路由器都可以使用。
透過網頁瀏覽器外掛 Ivacy VPN,可以用 Firefox 觀看日本動漫,同時使用 Chrome 觀賞美國影集。

結合高速、安全、功能等眾多優勢於一身的 Ivacy VPN,於頗受盛讚的丹麥消費者評論網站 TrustPilot,於滿分 5 分當中獲得 4.7 分,可見消費者滿意度十分地高,並不只是老王賣瓜自賣自誇;加上 Ivacy VPN 限時優惠 5 年只要美金 60 元,相當於每個月不到新台幣 30 元,使用不滿意 30 天內可以全額退費。

Ivacy VPN 於丹麥消費者評論網站 TrustPilot,在滿分 5 分當中獲得 4.7 的高分。

本文章內容由「Ivacy VPN」提供,經關鍵評論網媒體集團廣編企劃編審。