大概去年的這個時候買下了這本書,最近花了一周左右的時間來讀。
首先想說的是:這確實是一本很不錯的書,不論是對於學生,還是開發人員,抑或是創業者,看完之後都會有一些啟發。
書的內容就是整理了Joel(一位卓越的程式員,沒錯和我們乾的是同一件事)的一些部落格或者演講,裡面談到了對cs課程的學習,怎樣去賺錢,代碼的規範,軟體發布定價......
裡面的觀點都很不錯.
帶一句,阮一峰翻譯得也很不錯。
下面是一些摘抄的內容。
之所以選擇程式,是因為他們寧願將自己的事件花在一個公平有序的地方,一個嚴格的能者上庸者下的地方,一個只要你是對的就能贏得任何爭議的地方。
你之所有有好運氣,那是因為你寸土必爭。
當你改正一個又一個小細節後,當你磨光,定型,擦亮,修飾你的產品的每一個小邊角後,就會有神奇的事情發生。厘米變成分米,分米變成米.米變成千米,你最後拿出來的是件真正優秀的產品,他的第一眼就讓人覺得震撼,出類拔萃,工作起來完全符合直覺。
程式員受到一種願望的驅使,渴望方方面面都照顧到。讓每個人都感到滿意,但是,更多的選擇,並不會讓使用者感到幸福。
如果一個軟體部署社會化介面時,不考慮文化人類學,那麼這個軟體就很難使用,令使用者惱火,不會發揮作用。
公用的悲劇(The tragedy of the commons):每個當事人都知道資源將由於過度使用而枯竭,但每個人對組織事態的繼續惡化都感到無能為力,而且都抱著“及時撈一把“的心態加劇事態的惡化。
避開攻擊最好的方法之一是讓他看上去好像獲得了成功。
良好的社會化介面設計會為我們創造更多的價值。
軟體實現上的小細節會導致線上社區發展,運作,使用者體驗上的大差異。
魯棒性原則:對於己方的行為要保守,對於他方的行為要寬容。
優秀的設計似乎是最容易複製的東西,但做起來卻又不是那麼容易。
每當你新解決了一件麻煩事,你的業務和市場都會有巨大的增長。優秀的推廣,優秀的設計,優秀的推銷人員,優秀的服務,再加上你為客戶解決了許多“麻煩事”,這些因素加在一起會創造出一種相互放大的結果。
代碼規範:
最高境界:你精心構造代碼,發揮洞察力,將他們寫得清晰易懂,不容易出錯。
所有使用者輸入的字串都是不安全的,字串必須經過編碼才能輸出。
制定代碼規範,最起碼會讓錯誤的代碼更容易被發現。
規範建議:
1.進狼將函數寫得簡短;
2.變數聲明的位置離使用的位置越近越好;
3.不要使用宏去創造自己的程式設計語言;
4.不要使用goto;
5.不要讓右括弧對應的左括弧距離超過一個顯示屏。
“應用型匈牙利命名法”仍然及其有價值,它加強了代碼之間的連接,使得代碼更容易閱讀,書寫,除錯和維護,最重要的是它讓錯誤的代碼容易現形。
如果推出新版本,其中包括新功能,我們就會看到公司出現迅猛的確鑿的,重大的,持久性的增長。
重構原則:
1.不添加任何新功能;
2.不論何時向源碼庫提交代碼。都保證程式能夠完美運行;
3.做的只是合乎邏輯的交換,且能夠立刻確定不會改變程式碼為。
客戶遇到問題。你幫他解決了,客戶實際上變得比沒有問題時還要滿意。
要是客戶打來電話,要把這當作一個千載難逢的機會,一個可以培養的死心塌地的忠實客戶的機會,如果你做的好,客戶逢人就會嘮叨你的服務多麼出色。
關於發布軟體
如果你的顧客人數較少,那麼你最好經常性地發布小幅修改的新版本。
如果你已經有了(或者將要有)大量付費使用者,那麼最好不要太頻繁地發布新版本。
對於有幾百萬使用者的軟體系統,最好偶爾才發布新產品。
確定優先順序
最好盡一切可能堅持製作面向整個市場銷售的上架軟體。
如果想把事情做完,無論何時,一定要想清楚什麼是眼下最重要的,必須馬上做好的事,如果不是這麼做,就不能以最快的速度取得進展。