大概去年的这个时候买下了这本书,最近花了一周左右的时间来读。

       首先想说的是:这确实是一本很不错的书,不论是对于学生,还是开发者,抑或是创业者,看完之后都会有一些启发。

        书的内容就是整理了Joel(一位卓越的程序员,没错和我们干的是同一件事)的一些博客或者演讲,里面谈到了对cs课程的学习,怎样去赚钱,代码的规范,软件发布定价......

里面的观点都很不错.

       带一句,阮一峰翻译得也很不错。

        下面是一些摘抄的内容。

之所以选择程序,是因为他们宁愿将自己的事件花在一个公平有序的地方,一个严格的能者上庸者下的地方,一个只要你是对的就能赢得任何争议的地方。

        

 你之所有有好运气,那是因为你寸土必争。

当你改正一个又一个小细节后,当你磨光,定型,擦亮,修饰你的产品的每一个小边角后,就会有神奇的事情发生。厘米变成分米,分米变成米.米变成千米,你最后拿出来的是件真正优秀的产品,他的第一眼就让人觉得震撼,出类拔萃,工作起来完全符合直觉。


程序员受到一种愿望的驱使,渴望方方面面都照顾到。让每个人都感到满意,但是,更多的选择,并不会让用户感到幸福。


如果一个软件部署社会化界面时,不考虑文化人类学,那么这个软件就很难使用,令用户恼火,不会发挥作用。


公共的悲剧(The tragedy of the commons):每个当事人都知道资源将由于过度使用而枯竭,但每个人对组织事态的继续恶化都感到无能为力,而且都抱着“及时捞一把“的心态加剧事态的恶化。


避开***最好的方法之一是让他看上去好像获得了成功。


良好的社会化界面设计会为我们创造更多的价值。


软件实现上的小细节会导致在线社区发展,运作,用户体验上的大差异。


鲁棒性原则:对于己方的行为要保守,对于他方的行为要宽容。


优秀的设计似乎是最容易复制的东西,但做起来却又不是那么容易。


每当你新解决了一件麻烦事,你的业务和市场都会有巨大的增长。优秀的推广,优秀的设计,优秀的推销人员,优秀的服务,再加上你为客户解决了许多“麻烦事”,这些因素加在一起会创造出一种相互放大的结果。


代码规范:

最高境界:你精心构造代码,发挥洞察力,将他们写得清晰易懂,不容易出错。


所有用户输入的字符串都是不安全的,字符串必须经过编码才能输出。


制定代码规范,最起码会让错误的代码更容易被发现。


规范建议:

1.尽量将函数写得简短;

2.变量声明的位置离使用的位置越近越好;

3.不要使用宏去创造自己的编程语言;

4.不要使用goto;

5.不要让右括号对应的左括号距离超过一个显示屏。


“应用型匈牙利命名法”仍然极其有价值,它加强了代码之间的联结,使得代码更容易阅读,书写,除错和维护,最重要的是它让错误的代码容易现形。


如果推出新版本,其中包括新功能,我们就会看到公司出现迅猛的确凿的,重大的,持续性的增长。


重构原则:

1.不添加任何新功能;

2.不论何时向源码库提交代码。都保证程序能够完美运行;

3.做的只是合乎逻辑的交换,且能够立刻确定不会改变代码行为。


客户遇到问题。你帮他解决了,客户实际上变得比没有问题时还要满意。


要是客户打来电话,要把这当作一个千载难逢的机会,一个可以培养的死心塌地的忠实客户的机会,如果你做的好,客户逢人就会唠叨你的服务多么出色。


关于发布软件

如果你的顾客人数较少,那么你最好经常性地发布小幅修改的新版本。


如果你已经有了(或者将要有)大量付费用户,那么最好不要太频繁地发布新版本。


对于有几百万用户的软件系统,最好偶尔才发布新产品。


确定优先顺序

最好尽一切可能坚持制作面向整个市场销售的上架软件。

如果想把事情做完,无论何时,一定要想清楚什么是眼下最重要的,必须马上做好的事,如果不是这么做,就不能以最快的速度取得进展。