Sunday, February 23, 2014

寫給大學生的程式技能 Cheatsheets

昨天去參加 HappyDeisgner Mini #5 聽到 Caesar Chi 在講他跑校園傳道 (提倡 OpenSource)的故事,Caesar Chi 說他會這麼做是受到 Jserv 南下傳道的啟發。
為什麼要深入校園傳道。我想其中最大的問題是:大家都已經深刻發現了「校園的資訊教育」與「現行職場」、甚至與「國際技術圈」上的巨大差距。已經大到一個相當難以扭轉的狀態。其實,任何技術,在寫下來製成紙本教材並且搬到課堂的那一刻,就過時了。只是現在速度更快到,當你今年寫下來準備開課,明年這套技藝就已經有可能過時了。真的很難期待,從傳統學校傳授知識的過程中去介入什麼。
所以唯有提倡學生儘量跳脫只能在學校學習的思考框架。在線上學習( Online School )。多多參與接觸開源社群。
But, How?
在線上學習( Online School )。多多參與接觸開源社群。 對我們已經在工作的職業程式設計師,這個概念再簡單不過。但是我發現這對初學者來說,是一個很空泛的概念。他們其實更需需要的是一份 Guideline,有一個具體的方向去「自學」去把目標具體化。
(這份 Guideline 也是我回想若當初我剛出社會時,希望有人能給我的一份清單)
=== 分隔線 ===

Source Control

  • 理解什麼是「版本控制」,為什麼我們要使用「版本控制」
  • 學習 Git : http://try.github.io
    • git commit
    • git push
    • git pull
    • git branch
    • git checkout
    • git merge
  • 註冊 Github 帳號
  • 把自己的作業推上 Github
  • Fork 同學的作業,幫他修錯字,然後拉 pull-request
  • 卡關就上 Google 找 Stackoverflow 的答案

Do a "real" project

讀書跟做事不一樣。你不應該去「讀完」Ruby 再去用「Ruby on Rails」寫一個網站。
  • 找一本可以教你作一個 project 的書(不知道去哪找可以上網問),從頭到尾貼 code 跟著作一遍搞懂架構以及學習 debug。
  • 扔開書後的第一次:作一個比書裡面的 demo 還小的 project,如果裡面 demo 一個論壇,那麼就做一個留言板。
  • 扔開書後的第二次:重新作一個簡單的論壇,不看書。
  • 扔開書後的第三次:重新作一個有你想要的功能的論壇,可以貼圖,可以分享到 FB。
  • 去找可以幫助你重新把程式技巧提煉的更好的書,重新補基本功(這時候你可以好好的看 Ruby 書了)。
  • 去 Meetup 找職業的前輩,問他們怎麼樣可以更好的翻修你的 project

學習協作

獨自開發一個小東西,和實際上與多人一起開發一個中型結構的專案是完全不一樣的世界。而學校幾乎不可能有這樣的環境。
  • 註冊 Trello 帳號(這是一個簡單協作、看板式的專案系統)
  • 試著與同學或同事「合作」。但用 Trello 管理所有待辦事項。
  • 重點是
    • 把一件龐大的目標拆分成數十個可以執行的小事項
    • 每一樣事項有各自的狀況。現在做到哪裡,還缺什麼,需要交付的材料,多久才會做完,遇到什麼困難
    • 不要用 Off-book (phone/email) 的管道溝通
    • 有問題就提出,不要藏在台面下。
    • 每一件事都應該要有一個可以指派的人

分享(程式碼以及文章)

不斷的貼 code 以及練習在網路上發表文章,可以強化你的表達能力與邏輯組織能力。知名軟體公司 37Signals 甚至表示,他們不太注重程式底子,只雇用「寫作能力」良好的人。因為寫作能力強大代表著:組織能力與邏輯能力強。
這不是什麼可以速成可以偽裝的東西。同時不斷發表東西,連帶的效應就是可以幫你建立 reputation,和讓別人發現你的存在
  • 把學到的東西發表到 Blog 上面。(不要怕害羞)
  • 即便是小小的程式片斷也貼到 Blog 上。
  • 不斷的貼 code 以及練習在網路上發表文章,
  • 把自己作品放到 Github 上

Learn English

這裡說的學習英文不是說去背單字,上補習班,考 TOEIC。而是:
  • 練習幫自己在 Github 的 Project 上寫 README
  • 有辦法在在 Github 上用英文 open issue / reply issue
  • 在 Stackoverflow 上用英文問問題
  • 訂閱社群電子報。(尤其讀社群電子報,如 Ruby Weekly,是個學習 Ruby 非常快的方式)
  • 聆聽社群 Podcast。(社群都會有一些 Podcast,短的 5 分鐘如 Ruby5,長的 30-45min,可以很快的讓你抓到這個禮拜世界上最新的重點是什麼)
  • 購買線上教材。(現在網上學習的教材都比大學教科書便宜非常多,有些甚至不要錢。不過他們都是「英文」影片以及作業)
=== 分隔線 ===

小結:

這是由我過去的實戰經驗總結出來的 CheatSheet。當然,這些事我並沒有說都是非常「輕鬆」做到的事。但我可以向你保證這些方向,如果練成都是「非常值錢非常具有競爭力」的技能。認真執行三個月,你「馬上」可以見到與台灣完全不一樣的那個世界。

Reference:
http://blog.xdite.net/posts/2013/11/22/opensource-cheatsheets

No comments: