读《Joel On Software》有感
来源:互联网 发布:查淘宝信誉等级 编辑:程序博客网 时间:2024/05/16 08:16
前言:这个寒假,在回家之前,我无意中在铁道图书馆发现了这本书,看了一眼,感觉还不错,于是就把它带回了家中。以下是我在寒假里读这本书的所以感受和心得体会。
首先,我强烈向大家推荐这本书,不仅是因为这本书的作者(Joel曾服务于Microsoft,主持过非常著名的Excel项目),更是本书中的知识值得每一个学软件的人好好看看。我第一次认识Joel是在他的门户网站上,www.joelonsoftware.com,他提出的Joel测试,用来评测团队是否优秀。他提出了12条测试方法,其中包括:你使用源控制机制了吗?你有一个跟踪故障的数据库吗?你每天都做一次连编吗?你在编写新代码前修复所有的故障信息吗?等等。关于这些问题,Joel都提出了很好的解决方案,同时也给出了为什么要这样做,以及不这样做的后果等等。他在他的网站上做过调查,如果符合他提出的要求就得一分,否则不得分,结果绝大多数的团队都只得一两分,这让我们确实难以相信。而Joel告诉我们,微软公司可以全天都运行在12分,满分!我想,这或许是为什么Windows都够如此“称霸”,Word,Excel能如此好用,以至于我们每个人都离不开它们了。
这本书分为四个部分,第一部分面向的是开发人员,他强调开发人员一定要打好基础,要用机器思考问题的方式来思考问题,而不能只会用调用一些很高级的库函数,而不去管这些东西的性能。他举了一个很好的例子,字符串连接函数strcat。如果让你写这个函数,你会怎么写呢?相信大家都会这样写:
Char * strcat(char* dst,char* src)
{
While(*dst++);
While(*dst++=*src++);
*dst=’/0’;
Return dst;
}
很好,这样写可以,而且也很简洁。但是如果你接下来要写一些这样的代码:
char bigString[1000];
Strcat(bigStirng,”I”);
Strcat(bigString,”am”);
Strcat(bigString,”student”);
……………………(还要更多的字符串要追加)
你想过这样的问题没有,随着你调用strcat次数的增多,每次调用strcat,你都要遍历一次原来的字符串,这不得不说是一个很严重的性能障碍,对于性能要求较高的场合更是不能容忍的。但是,你可能会想,我们平常就是这样写的啊,大家都这样写,没有什么不对的,但是,事实并非如此。其实你只要稍微改进一下,以字节的方式思考问题,你就可以轻松地得到如下高效的实现。
Char * strcat(char* dst,char* src)
{
While(*dst++=*src++);
*dst=’/0’;
Return dst-1; //让return返回字符串的尾部指针。
}
/
char bigString[1000];
char* p=bigString;
char* p=Strcat(p,”I”);
p=Strcat(p,”am”);
p=Strcat(p,”student”);
呵呵,是不是代码改了一点点,性能马上改进了很多啊!
本书的第二部分,面向的是对开发人员的管理。他提出的很多观点跟《人件》,《人月神话》都有异曲同工之妙。一定要给开发人员营造一个安静的工作环境,项目中人员超编的时候,往往会比人员少时更难按时完成。他还强调了开发过程中必须要做的有:制定进度表和规格说明书,还向我们介绍了如何建立BUG数据库,只要用Excel就行了。同时他还解释了为什么每天都要做连编工作,当面对难于管理的开发人员时只管去做就行了。第三部分讲的是Joel对常态问题的瑕想。讨论了网景公司的netscape浏览器的市场份额为什么会从90%下降到不到20%的原因。它犯了一个所有的大公司都有可能犯的最致使的错误――抛弃所有旧代码,从头重新实现所有浏览器的代码,三年的时间网景公司都没有任何新的代码分发给客户,这不得不说是一个悲哀。还有为什么公开源代码事业为什么会这么强大?对于那些有很强网络效应的的地方,比如即时消息通讯服务,当一些大公司站住脚后(如腾讯),其他公司想要再来分一点甜饼是那么得难啊。。。还有诸如Amazon等话题。第四部分是Joel对.net稍多的一点评书。讲了微软是如何败北API之战的,以及为什么C#没有取得想要的成功等等。
总之,这本书是Joel多年来从事软件行业的经验所得,其中不乏他的职业生涯过程中的教训,读来让人畅快不已。
首先,我强烈向大家推荐这本书,不仅是因为这本书的作者(Joel曾服务于Microsoft,主持过非常著名的Excel项目),更是本书中的知识值得每一个学软件的人好好看看。我第一次认识Joel是在他的门户网站上,www.joelonsoftware.com,他提出的Joel测试,用来评测团队是否优秀。他提出了12条测试方法,其中包括:你使用源控制机制了吗?你有一个跟踪故障的数据库吗?你每天都做一次连编吗?你在编写新代码前修复所有的故障信息吗?等等。关于这些问题,Joel都提出了很好的解决方案,同时也给出了为什么要这样做,以及不这样做的后果等等。他在他的网站上做过调查,如果符合他提出的要求就得一分,否则不得分,结果绝大多数的团队都只得一两分,这让我们确实难以相信。而Joel告诉我们,微软公司可以全天都运行在12分,满分!我想,这或许是为什么Windows都够如此“称霸”,Word,Excel能如此好用,以至于我们每个人都离不开它们了。
这本书分为四个部分,第一部分面向的是开发人员,他强调开发人员一定要打好基础,要用机器思考问题的方式来思考问题,而不能只会用调用一些很高级的库函数,而不去管这些东西的性能。他举了一个很好的例子,字符串连接函数strcat。如果让你写这个函数,你会怎么写呢?相信大家都会这样写:
Char * strcat(char* dst,char* src)
{
While(*dst++);
While(*dst++=*src++);
*dst=’/0’;
Return dst;
}
很好,这样写可以,而且也很简洁。但是如果你接下来要写一些这样的代码:
char bigString[1000];
Strcat(bigStirng,”I”);
Strcat(bigString,”am”);
Strcat(bigString,”student”);
……………………(还要更多的字符串要追加)
你想过这样的问题没有,随着你调用strcat次数的增多,每次调用strcat,你都要遍历一次原来的字符串,这不得不说是一个很严重的性能障碍,对于性能要求较高的场合更是不能容忍的。但是,你可能会想,我们平常就是这样写的啊,大家都这样写,没有什么不对的,但是,事实并非如此。其实你只要稍微改进一下,以字节的方式思考问题,你就可以轻松地得到如下高效的实现。
Char * strcat(char* dst,char* src)
{
While(*dst++=*src++);
*dst=’/0’;
Return dst-1; //让return返回字符串的尾部指针。
}
/
char bigString[1000];
char* p=bigString;
char* p=Strcat(p,”I”);
p=Strcat(p,”am”);
p=Strcat(p,”student”);
呵呵,是不是代码改了一点点,性能马上改进了很多啊!
本书的第二部分,面向的是对开发人员的管理。他提出的很多观点跟《人件》,《人月神话》都有异曲同工之妙。一定要给开发人员营造一个安静的工作环境,项目中人员超编的时候,往往会比人员少时更难按时完成。他还强调了开发过程中必须要做的有:制定进度表和规格说明书,还向我们介绍了如何建立BUG数据库,只要用Excel就行了。同时他还解释了为什么每天都要做连编工作,当面对难于管理的开发人员时只管去做就行了。第三部分讲的是Joel对常态问题的瑕想。讨论了网景公司的netscape浏览器的市场份额为什么会从90%下降到不到20%的原因。它犯了一个所有的大公司都有可能犯的最致使的错误――抛弃所有旧代码,从头重新实现所有浏览器的代码,三年的时间网景公司都没有任何新的代码分发给客户,这不得不说是一个悲哀。还有为什么公开源代码事业为什么会这么强大?对于那些有很强网络效应的的地方,比如即时消息通讯服务,当一些大公司站住脚后(如腾讯),其他公司想要再来分一点甜饼是那么得难啊。。。还有诸如Amazon等话题。第四部分是Joel对.net稍多的一点评书。讲了微软是如何败北API之战的,以及为什么C#没有取得想要的成功等等。
总之,这本书是Joel多年来从事软件行业的经验所得,其中不乏他的职业生涯过程中的教训,读来让人畅快不已。
- 读《Joel On Software》有感
- 《Joel On Software》读后
- Joel on Software
- 关注Joel on Software
- Joel on software
- task list -《joel on software》
- "More Joel on software" 读后感
- More Joel on Software 读书笔记
- 重看joel on software
- Joel on Software 英文电子版共享
- Joel on Software 周思博趣谈软件
- [翻译Joel On Software]Unicode/Unicode
- 《软件随想录-Joel on Software》书摘
- 《软件随想录-Joel on Software》书摘
- Joel on Software 祖尔谈软件:行进中开火
- More Joel On Software中文版小编随想之一
- More Joel On Software中文版小编随想之二
- [翻译Joel On Software]回归基础/Back to Basics
- 转:公司技术管理角度看C++游戏程序员发展
- 搭建Hadoop环境(在winodws环境下用虚拟机虚拟两个ubuntu系统进行搭建)
- 【转载】flex在html中一启动,控件获得焦点
- VS2010项目转换到VS2008下方法VB.NET
- 在CSDN开通云计算博客了,www.cloudwhy.com
- 读《Joel On Software》有感
- 导出excel
- 关于派生MFC通用控件的方法
- 测试js解释定时的耗时(16ms)和拳套调用的最大次数
- 关于编写模拟现实中设备的仿真软件如何编写?
- windows下安装nutch
- 读《软件架构师必须知道的97件事》
- 缩放图片 java
- 鸟哥Linux私房菜