程式設計師升級必練內功:TDD Kata

(本文 crossposting 於 ALPHACamp Blog)

測試驅動開發(Test-Driven Development,簡稱 TDD)是一種程式開發的技巧,簡單來說就是先寫測試程式,然後才實作功能。具體的流程則是透過 Red–Green–Refactor cycle 的循環:

  1. Red – 先寫測試程式,此時因為還沒有實作功能,所以這個測試是會失敗
  2. Green – 快速實作出功能,讓上述的測試通過
  3. Refactor – 重構程式碼,去除多餘重複的代碼,提高程式碼品質,同時維持測試通過

閱讀全文〈程式設計師升級必練內功:TDD Kata〉

PostgreSQL 備份還原指令

PostgreSQL 已經成為我開新專案的首選資料庫,備份還原指令跟以前熟悉的 mysql 不一樣,紀錄一下。

備份匯出

使用 pg_dump 指令。

pg_dump -W -U postgres -h localhost your_db_name > 20150304.sql

其中 -U postgres 是資料庫使用者名稱。

匯入還原

使用 psql 指令。

sudo service nginx stop

dropdb  -W -U postgres -h localhost your_db_name 
createdb -W -U postgres -h localhost your_db_name
psql  -W -U postgres -h localhost your_db_name < 20150304.sql

sudo service nginx start

如果要砍掉重現現有的資料庫,用 dropdb 和 createdb 指令,並且需要關閉正在連線的應用,例如 nginx 網站伺服器。

三個使用版本控制系統的建議

(本文 crossposting 於 ALPHACamp Blog)

如果說有什麼是開發軟體專案一定要使用的基礎工具,使用「版本控制系統」應該可以記上一筆。無論是個人或是團隊開發,都可以透過版本控制系統獲得巨大的好處。

沒有版本控制系統的話,檔案可能被別人或自己不小心覆蓋或遺失、也不知道是誰因為什麼原因改了這段程式碼、也沒辦法可以復原回前幾天的修改。有了版本控制系統,開發人員只要將每次程式碼的變更都紀錄(Commit)起來,並且透過版本控制系統中進行更新。

有了版本控制系統,我們可以瀏覽所有開發的歷史紀錄,掌握團隊的開發進度,而且作任何修改都不再害怕,因為你可以輕易的復原回之前正常的版本。我們也可以透過分支(Branching)和標籤(Tagging)的功能來進行軟體發行的不同版本,例如穩定版本、維護版本和開發中版本。

已經沒有什麼可以阻礙你使用版本控制系統,Git 或 Mercurial 是免費開源的版本系統系統、隨處可用的網路、便宜的雲端伺服器,甚至有現成的第三方服務 Github 或 Bitbucket。

如果你還沒有使用的話,建議馬上為你的軟體專案建立版本控制。接下來是幾點使用版本控制系統的建議:

閱讀全文〈三個使用版本控制系統的建議〉

如何做一位與工程團隊合作良好的產品經理

(本文 crossposting 於 ALPHACamp Blog)

產品經理(Product Manager)是任何新創產品的關鍵角色,他定義了產品的需求規格,找出產品的價值所在。而一個成功的產品代表結合了好的產品需求規格,以及能夠依據這個需求規格實作出來的工程團隊。我們說產品經理負責 Building The Right Product,而工程團隊負責 Building The Product Right,兩者缺一不可。由此可知產品經理與工程團隊之間的關係有多麼重要。

以下是幾點是我認為可以幫助產品經理與工程團隊的合作,一起打造更好的產品:

閱讀全文〈如何做一位與工程團隊合作良好的產品經理〉

講個秘訣:技術簡報的好用工具

過去幾年經常作一些技術演講,尤其最近加入 ALPHACamp 擔任起全職的技術講師,上課和 Live demo/coding 變成家常便飯,自然得跟投影機和簡報軟體做好朋友。

要不要做 Live demo/coding 很大一部分決定了簡報的手法。如果不需要的話,那麼建議螢幕使用 Extended Mode,因為 Apple Keynote 會有 Presenter mode (設定在 Keynote -> Preferenses -> Slideshow -> Enable Presenter Display) 在你的筆電畫面上。在這個 Presenter 畫面有很多不錯的功能:

閱讀全文〈講個秘訣:技術簡報的好用工具〉