讀後感-Dreaming in Code

"Software is hard." -- Donald Knuth

Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software 一書, 要探討的問題是"Why is good software so hard to make?".

作者Scott Rosenberg, 實際田野調查, 在Chandler研發期間, 親身跟Mitch Kapor的Open Source Application Foundation團隊在一起, 紀錄一個真實世界的軟體專案. 從2001.春OSAF成立與2002.10.20正式公佈Chandler以來, 到2005.11釋出0.6版, 大約四年的時間, 但是Chandler仍然無法釋出1.0正式版.

PS Chandler目前最新版0.7.a4在2006.11.30釋出, 現況可到官網查詢.

什麼是Chandler? 是一套個人資訊管理系統(PIM, Personal Information Management), 有各種功能email, calendar, 通訊錄, to-do list, 等等. 講單講就是Outlook的open source版.

誰是Mitch Kapor? 簡單講就是Lotus 1-2-3之父.

Joel Spolsky也有寫篇部落格The Big Picture.

以下是一些摘錄, 與我的經驗.

"Time really does seem to behave differently around the act of making software."
軟體專案開發, 其schedule是作好看的, 所以有人說schedule就是用來delay的.

"The realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs."
抓蟲(debug)實在令人又愛又恨, 抓到蟲有種暢快的感覺, 花了數天仍抓不到就#@$^$%; 更慘的是, 當有蟲抓不到, 而為了要趕上milestone or schedule, 於是就會用各種技巧去避開牠. 而結果就是在以後的日子裡, 不知何時牠會突然出現, 而那時候可能已經忘了牠, 或是程式已經換人維護了.

"Why then do so many programmers glance at existing code and declare authoritatively that they could do it themselves, faster, easier, and better?"
我知道, ㄜ, 應該說Joel知道: It's harder to read code than to write it.

"There's an old saying: I can make it for you fast, cheap, or good. Pick any two."
人心不足蛇吞象啊, 大家三個都要.

"Programming managers have struggled for decades to find a sensible way to gauge productivity in their field."
嗯, 嗯, 這應該寫成另外一篇部落格.

"The problem is that, with current software practices, the developers do not know where they stand any more than the managers do."
在schedule上的一條時間帶, 似乎受著莫名的力量影響著, 昨天你以為完成了60%, 到了今天發現只有50%, 但你能跟上面的boss說嗎? 回頭去修改進度報告?

"I would rather write programs to help me write programs than write programs."
哈哈, 所以在Sourceforge上有那麼多的yet another的軟體; 大家都自己寫自己的.

"but everyone there had some form of the design religion"
嘿, 沒錯, 當我寫spec時, 一堆人都有意見, 嗯, 正確的說是, 看過的人都有意見. (不過我也沒寫好啦XD)

"Communicating abstractions unambiguously -- from programmer to machine, from programmer to programmer, and from program to user -- is the single most challenging demand of software development."
人月神話說, 人力跟月份是可以互相轉換的, 不過條件是只有在工作與工作之間不需要溝通的狀況下. 我說: 人跟人根本不能溝通.

"When people ask for numbers that far out, the traditional thing that engineers do is make them up."
沒錯, 在這裡我要懺悔, 我寫的工作進度報告, 很多數字, 都是好看(造假)的.
PS 希望老闆沒在看.

"Boehm's Law, the later in the development process you fix a bug, the more it costs to do so."
我們常說, 現在先這樣這樣, 用暫時的方法解, 讓這禮拜的release可以過, 然後我們再那樣那樣, 用比較好的方法解. 不過, 這禮拜過後, 後來會怎樣, 大家應該都猜得到吧.

"The real goal of a methodology, he said, is to sell books, not to actually solve anybody's problem."
哇靠, 這說的真狠, 那看那些方法論的書的人, 不就都被耍了嗎?

"It's very difficult to have real engineering before you have physics, and there isn't anything even close to a physics for software."
哇, 看到physics我就眼睛一亮.

"Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law."
有recursion在裡面, 那...終止條件是什麼?

寫到這裡, 這好像不太像一篇讀後感. :P
我記得這本書一出來我就買來看了, 不知為何拖到現在才寫篇部落格.

No comments:

Post a Comment