《程序員》:設計軟件系統時,你會採用哪些步驟?html
Nathan :我認爲,設計軟件系統徹底就是學習如何在行進中開發。我應用一種被我稱之爲「面向痛苦編程」(Suffering-Oriented Programming)的原則,使學習最大化,浪費最小化。關於這種方式的詳細介紹我已寫在博客上(http://nathanmarz.com/blog/suffering-oriented-programming.html )。其核心思想是,避免作出「通用」和「可擴展」的設計,除非你已透徹理解了問題域(Problem Domain)。程序員
相反,你應該直截了當地儘快打造出可用原型,繼而經過迭代和改進學習問題域,當你對問題域的盤根錯節有了清晰的理解後,再回過頭來從新設計系統,使之具有通用和可擴展等特性。到最後一步纔開始收緊代碼,優化性能。概括爲三個步驟,就是「先使之可能,再使之漂亮,後使之快速。」編程