文章目錄
  1. 前言
  2. 是一個專業嗎?
  3. 有哪些出路
    1. 生活上的便利
    2. 網頁(前端)/網站(後端)工程師
    3. app工程師
    4. 大數據
    5. 硬體工程師
  4. 我會不會太(老小笨嫩……)?
    1. 太老?
    2. 太小?
    3. 太笨?
    4. 太嫩?
  5. 會很難嗎?
    1. 痛苦嗎?
    2. 不放棄的禮物
    3. 過程和結果很快樂

TL;DR: 變更聰明,更加方便,機會更多,賺更多錢,更多朋友

前言

Jobs說過:「每個人都必須學程式設計,它可以幫助你思考」。大多數人覺得程式設計(Programming)是程式設計師的專業,這個觀念是完全錯誤的,8成以上的程式設計師在大學不是學程式設計的,4成以上的程式設計師大學讀的根本不是理工。那麼程式設計到底有什麼用?難不難?怎麼學?學哪一種?怎麼開始?這些看起來很麻煩的議題,其實一點也不難,你只要找到入口點,接下來就很容易了。

是一個專業嗎?

程式設計就像修車、木工、拉小提琴一樣,它可以是一個興趣,也可以是一個專業,從而讓你獲得快樂,賺些零用錢或發大財,視你下的功夫有多深而定。但程式設計和修車、木工、拉小提琴不同的是,其上手容易,學習簡單,而且前面的路非常寬廣。

你可以自己設計一個資料庫來管理硬碟中下載的電影(興趣),也可以設計網頁讓自己一個月多個兩三萬的零用錢(兼差),也可成為專業的Freelancer開發人員,這個收入絕對比22K多上好幾倍,前題是你要接得到案子(收入);當然如果你功力夠,英文又好,你可以到矽谷找工作,年收入十幾萬美金起跳是常有的事(職業)。當然你如果心中有很棒的創業點子,你也不需要到處找人幫你設計網站或APP,你自己就可以設計出一個原型去找投資人,當然完整的產品可能需要一個團隊(發財)。

數位時代造就了許多富翁,耳熟能詳的微軟Bill Gates、臉書Mark Zuckerberg、Google的Larry Page和Sergie Brin、亞馬遜的Jeff Bezos、甲骨文的Larry Ellison都是程式設計師出身,除了軟體業,真實版鋼鐵人Elon Musk也是程式設計師出身,如果你志比天高,你也可以和他們一樣,他們這輩子的第一個產品,絕對不是外包出去,而是自己一行一行開發出來的,更不要說上述的名人大部分從高中開始就在寫程式賺零用錢了。

有哪些出路

生活上的便利

就像前面說的,如果你只是興趣,你可以解決很多生活上的不便利。當別人還守在電腦前準備搶購最新的iPhone時,你早就寫好程式在睡大頭覺,用電腦幫你搶了;當別人還在用複製/貼上去交友網站留言時,你早就用程式把全交友網站所有介於18-24歲,身高150-170的女生全部都發了一封信。你用程式可以免人工做到很多重複性高、需要消耗大量輸入及計算的事情,何樂而不為?省時方便又快樂。

網頁(前端)/網站(後端)工程師

如果你想賺點小錢,你可以設計網頁前端,只要熟悉HTML,CSS3、Javascript就行(除了Javascript外這些都是非常入門的語言)。

如果你想設計整個網站架構,學習Rails、Node.js,Python以及對應的Framework,再加上MySQL資料庫等,就連後端也沒問題了。

如你想自己架設主機,那就多學一個Amazon EC2、Google Cloud Engine、阿里雲。

會了上面全部,你就成為一個全端工程師,只要和網頁、網站有關的東西你都不會有問題(當然還不會是高手)。

app工程師

當然你也可以學習Java和Swift來開發Android和蘋果的手機/平板軟體,你就成為一個App的開發工程師。

大數據

大數據?沒問題,學習Python、Spark、Hadoop,再加上一些工具及演算法,你立即晉昇為新時代的大數據工程師/架構師。

硬體工程師

如果你對機器人,無人機、物聯網等設計有興趣,學習C/C++,JAVA,你可以幫設計IC、或是撰寫硬體的驅動程式或控制程式。

上面所有的出路,目前全世界都極缺人,你真的就算做的只有中上水平,都能找到不錯的工作,更棒的是,如果你願意花功夫更上一層樓(和智商無關),你的薪水當然就隨著努力增加(可能是倍增),這種花時間學東西,就能越賺越多,為什麼不做?

我會不會太(老小笨嫩……)?

太老?

我公司一個45歲大叔,年輕時開發過DOS及Windows應用程式,後來轉行房地產賣車什麼都做過。近年來到公司當業務,在最前線接觸客戶,深刻了解客戶的需求,發現和公司內部宅男工程師的想法天差地別,他就想說自己幹吧!從前年開始自學Rails以及前端設計,兩年來,已經幫公司完成大約20個大大小小的案子,現在自己創業去了。

我爸爸八十幾歲,我大約半年前開始教他寫程式,太難的不說,至少搜尋出他自己硬碟上的資料,檢查下載的東西是否存在,設計一個網頁表單給朋友填寫是否要參加聚會,這種簡單的他都沒問題。

太小?

你應該知道歐巴馬總統早就在推行從小開始學程式;很多美國的幼稚園已經開始用玩樂的方式教導(四歲),大部分的高等小學在一年級(七歲)已經開始教迴圈及條件判斷了。

目前全世界在推STEAM(Science, Technology, Engineering, Agriculture, Mathematics,但台灣把Agriculture拿掉,改成STEM),而要完成STEAM教學,第一件事就是程式設計。和學習自然語言一樣,學習程式語言的年紀越小越好,讓小朋友從小就有邏輯觀念,養成思考的好習慣,頭腦內部活動越頻繁的小孩一定比較聰明,這已經經過科學證實了。

太笨?

行天宮有一個很有名的算命攤的命相師是小學畢業程度,他使用自己開發紫微斗數的命盤解盤程式,我有一個修車朋友,是一個國中畢業的修車師傅搞通了整個BMW的E-SYS幫別人修改行車電腦,甚至這位修車師傅目前在台灣有很多家分店,他常常用TeamViewer連線到BMW原廠客戶的車輛上,幫原廠工程師解決他們都無法搞定的問題。

從主觀的教育體制來說,他們是被歸類為「笨」的,但他們的成就,不會比名校資工系畢業差太多。

很多人說學程式設計要天份,這句話也對也錯。程式設計是一門非常成熟的學科,你只要要按部就班一步一步來,就會達到一定的成就,聰明與否,只是到達這個成就時間的快慢而已,並不會永遠到不了。更棒的是,現在的程式語言都很直覺,你再聰明或再笨,到達這個時成就的時間都不會差太多,有什麼好怕的?全世界籃球天份最高的的人不出Michael Jordan、Kobe Bryant或是現役的LeBron James吧!告訴大家,這三個人的練球時間比NBA球員的平均練球間多一倍!聰明與否不重要,有沒有下功夫才是重點。

太嫩?

完全沒有基礎怎麼辦?誰一開始就有基礎的?但只要你願意花時間,下功夫,不怕難,不怕卡關,卡關一定要破關的決心,上手之後就快了。

我之前在當Team Leader時,來了兩個新手,一個是北京理工學院的Benson,一個是生物系畢業的Yale。Benson基礎好,上手快,一下子就變成公司的主力,最後也昇到Team Leader。Yale只會簡單的C#,什麼都從頭來,動作也比較慢,但他也很用功,最後雖然沒有成為Team Leader,但他一直不斷自學,也自己花錢去上課,最後聽到他的消息是在微軟當工程師,現在移民到日本也是做程式設計師。反而是Benson一直用他當時的技術在做事,反而就陷在一些很瑣碎的程式設計細節上,浪費太多時間。

程式設計這行業最棒的地方,就是你可以零基礎起步。前面提到的幾個名人,很多不是程式設計師科班出身,只要你識字,有一點英文及數學基礎,加上一台能上網的電腦就可以開始了。

現在要學程式設計連課都不用上,甚至連書都不用買,有許多免費的課程,甚至是大學都有MOOC(免費線上課程)可上,只要你想開始,隨時都可以開始。

會很難嗎?

當然難,除了吃飯睡覺什麼不難?當木匠難嗎?拍電影難嗎?玩電動難嗎?學修車難嗎?但學程式設計你唯一要做的,就是坐在電腦前面把很多事情的脈略找出來,你不需要上街,不需要用力,你唯一要用的就是腦和手,和很多同酬的事情比較起來,程式設計反而相對簡單。

痛苦嗎?

程設計就像從河的這岸架橋到另一岸上。你知道目標是什麼,達成目標的方法也有很多種,但是你需要知道河中哪裏可以打椿,打好椿之後怎麼樣開始架龍骨,龍骨架好後怎麼鋪路,一點一點開始,一點一點進步,一點一點完成,失敗就退回上一次成功的地方,成功就繼續向下走,中間百分之一萬會出問題,出問題是常態,解決問題才是整個過程的重點。

一開始寸步難行,什麼都做不出來。照著書上或網上的做,噴出一大堆錯誤訊息,旁邊的人一下就出來的東西,你就是做不出來。是網上的寫錯了還是我做錯了?為什麼我的環境就是不行?你會氣自己,氣網站,甚至砸東西(我砸過鍵盤),然後氣的發誓再也不學了。

不放棄的禮物

小心小心!這就是99%的人放棄的點。你在這邊放棄,就永遠放棄了。程式設計當然難,不難的話誰都會,撐過去的就是你的,這一個坎過了就是過了。沒有過不了的關,沒有解決不了的問題,有時得退回原點重新設計,但最終,只要你一心一意要完成,一定會完成的。當你過了一關,就是輕鬆的下坡了(當然馬上就會遇到另一個上坡)。

你會常常卡關想放棄,但有時靈機一動又破關繼續向前走。你會利用腦中現存的知識來做出你沒做過的事,當你發現新知識時,你腦中的工具又多了一樣。發現新知識的方法很多,你只有不斷讓自己一直學新東西,你手上的武器才會越來越多,當你手上的武器夠多時,很多簡單的問題用一樣武器就攻克,而不需要多樣武器,你會覺得速度越來越快,東西越做越好,很多原來很難的地方都迎刃而解,學一個新技術就兩三小時,學一個新的語言就兩三週,這時你還是會重複一樣的步驟,卡關,破關,不斷前進,不斷進步,最後發現大家都來找你問問題,都來找你幫他做事,儘管你還是覺得自己很爛。

過程和結果很快樂

你永遠不會覺得自己很厲害,永遠都覺得什麼都不懂,這時你才發現Jobs說的「Stay hungry, stay foolish」不是刻意保持低調,而是一種真實的感受。但是當你發現自己愚笨的頭腦竟然也做出了漂亮的結果時,不經意的拍手叫好,歡呼震天是常有的事。

所以難才好玩,不難有什麼意思?越難越好玩,我每次學一個新東西,就希望他越難越好,難表示世界上會的人少,我的機會才多;難表示挑戰大,成就感才大;難表示門檻高,要進來和我競爭的人不會多,我才顯得更有價值。所以程式設計當然很難,但當你了解箇中奧秒時,你會發現難才是好事。

再難再苦,你再沒興趣,卡關再想殺人,但是……

  • 當大家在求職網站上拼命找個22K的工作時,是工作拼命找上你
  • 當你每個月比同時畢業的同學多賺好幾倍
  • 當大家開Toyota時你開BMW
  • 當大家在東南亞跟團跑行程時你在歐美自駕遊
  • 當大家每天打卡上班時你才準備起床去健身房
  • 當大家在辦公室勾心鬥角時你在海邊的星巴克用Mac工作
  • 當大家到處求人幫忙開發創意時,你已經做出原型在和投資人談股份分配

這時候,再難再苦再累,一切都值得了,而且,你會很快樂。

文章目錄
  1. 前言
  2. 是一個專業嗎?
  3. 有哪些出路
    1. 生活上的便利
    2. 網頁(前端)/網站(後端)工程師
    3. app工程師
    4. 大數據
    5. 硬體工程師
  4. 我會不會太(老小笨嫩……)?
    1. 太老?
    2. 太小?
    3. 太笨?
    4. 太嫩?
  5. 會很難嗎?
    1. 痛苦嗎?
    2. 不放棄的禮物
    3. 過程和結果很快樂