读《软件随想录》(Joel on Software)

在豆瓣上找书时偶然间发现的,评论说这本书言辞幽默、有趣、观点独特,最重要的是非程序员读起来也比较轻松。花了几个晚上,基本上看完了,有那么几篇文章,印象比较深刻吧。

1.“我的第一次BillG审查”

作者(Joel)曾在90年代初期供职于微软,BillG审查就是Bill Gates会审查软件的重大功能。刚好Joel(作者)负责Excel Basic,然后被通知要把规格说明书送到盖茨的办公室,规格说明书长度500页。第二天BillG审查会上,盖茨竟然读完了那份长度为500页的说明书,而且每一页还都留下了评语。会上提问的问题也越来越难,越来越细致。总之,比尔盖茨确实是个工作狂。

2. “学校只教Java的危险性”

以后我学编程了,我想这篇文章可能有帮助。就是编程中有几个难点:指针、递归、不动点函数、函数式编程。如果只学Java,恐怕很难搞懂这些是怎么个回事。当然,即是不会这些,也照样能写出软件,只不过很难成为优秀的程序员。而且函数式编程是MapReduce的基础,MapReduce正是Google引入的,支持计算机集群环境海量数据(PB级别)并行计算的。

摘抄作者的一个观点:

“我从来没有见过哪个能用Scheme语言、Haskell语言和C语言中的指针编程的人,竟然不能在两天里学会Java语言,并且写出的Java程序的质量竟然不能胜过那些有5年的Java编程经验的人士。不过,是无法指望人力资源部里那些平庸的懒汉听进去这些话了。”

不过,Joel你这观点让学Java的情何以堪啊!

这就算了,你把OOP(面向对象编程)里的封装、继承、多态、重载都比做历史课上的日期和人名一样简单了。还有一些语言当中(比如JavaScript)的闭包也是小儿科。

暂时记住文章的观点。

3. “仿生学办公室”

简而言之,就是以优秀程序员为中心的办公室设计。

(1) 办公室要足够大,有随时可以关闭的门。优秀的程序员是不需要眼睛盯着监督的。

(2) 什么电源插座、电脑、显示器、办公桌椅之类的,不仅要有,还要足够好。

(3) 办公室采光、电力供应(UPS)、噪音隔离等也得考虑。

当然,还有很多方面都要完善,比如饭菜得好、协定上班时间。

感觉,不仅办公室可以这样,家里也可以这样,尤其是每年要在家里住很长时间时。反正购买软硬件的底线是顶级品牌,不求最好,但求最贵,哈哈~

当然书中还有很多文章值得一看再看:

“寻找优秀的程序员之实战指南”

“三种管理方法”

“给计算机系学生的建议”

“字体平滑、反锯齿和次像素渲染”

“让错误的代码显而易见”

“建立优质客户服务的七个步骤”

“软件定价”

等等。。。

 

再补充一句:作者提到匈牙利命名法容易检查错误的代码,其他著名命名法还有Camel标记法、Pascal标记法。