一口气读完了《软件随想录》(More Joel on Software)。我的总体评价是,Joel非常像和菜头,无论是从褒义的角度,还是从贬义的角度。
和菜头是国内最好的blogger之一,他的嬉笑怒骂的文风,受到了无数人的喜爱,包括我在内。很多时候,和菜头都能以我们没法想象的文字,说出我们早就想说的话来。拥趸众多,也就是自然而然事情了。
Joel Spolsky大概是全世界都非常著名的blogger,他的读者人数,估计可以排进全世界前100名。文章之优美,观点之火爆,真是几乎无出其右者,读他的书,实在是过瘾之极。
但是(各位应该也猜到了,总会有一个但是等在这里的。)我在读《软件随想录》的过程中,时不时的会有一些疙疙瘩瘩的感觉,细细想来,才发现,还是跟和菜头很像。
举几个例子吧:
1、在管理方法方面,joel一连写了三篇,分别讨论了《军事化管理法》、《经济利于驱动法》和《认同法》。写得非常好,但是也相当偏激。基本上,joel对于人的看法,是静态的,好人就是好人,聪明人就是聪明,最难的不过是招人,只要找对了人,聘进来以后,他自然就会好好干活。基本上,一个好的管理者,就是懂得如何不碍事的管理者。
joel说:采用经济利益驱动法,这样就是在鼓励程序员与制度博弈。但是,问题是一个公司一定会有制度,也一定得建立公平公开合理的制度。而且,员工与制度的博弈,也一定会存在。为了预防博弈的出现,而不订立奖惩制度,实在是偏激的过分的一种想法。
joel说:不能通过给员工发钱来训练他们。但是,这完全就是故意曲解,因为你完全可以训练他们,然后通过金钱来鼓励训练效果好的员工。
joel说:你应该避免用外部激励取代内部激励。但是,在我看来,仅仅只有内部激励,那也很虚伪。简直就是典型的“老板的虚伪”。
一个员工进入一家公司,并非到此为止,他们应该能够在公司的环境里得到成长。如何鼓励他们成长,如何帮助他们成长,是老板需要考虑的问题。另一方面,并非任何人进入一家公司,就万事大吉,他同样可能出现波动,有时候干劲冲天,有时候没精打采,如何调整他们的工作状态,如何鼓励他们持续的积极工作,也是老板需要考虑问题。
joel认为,软件开发,最缺的是天才。而我认为,最缺的是全才。什么“全”:全面、全局、全心全意、全力以赴。
2、在给程序员的建议方面,我又发现了一些自相矛盾的地方。
joel说:大学教java是一种退步,因为那东西太简单了,无法淘汰那些没兴趣编程或没能力编程的人。但是,在另一篇文章里,joel又说:那门动态逻辑课他只去听了一节,太难了,所以,他决定不上了。而且,他还得出了一个重要的结论:人生中重要的是,关注那些真正的问题(real problem),不要陷入那些细枝末节的问题(trivial problem)。就像苏格拉底说的,“认识你自己”。
这可真是了不起,他能够通过的课程,他就认为非常有用。而他不能够通过的课程,他就认为是细枝末节的问题。而且,他还把自己的经验,用来告诫那些同学们。。。
3、joel对于单元测试与TDD的看法,完全就是未经实践的偏见。
4、在《大构想的陷阱》中,joel评论了《梦断代码》一书,他花了不少时间,扯了一些眼睛的工作原理之类的淡,真正有价值的评论,其实并不多。在我看来,有价值的只有一个观点:过于创新性的软件,很难从开源志愿者那里得到帮助。
5、在《用软件搭建社区》一节,我读着读着,就笑了。joel的那个社区,比起国内顶尖社区,还是差距很大啊。
6、在讨论Office文件格式为什么那么复杂的时候,joel说到:一个能与Office竞争的,能够完美读写Office文件的软件,足足要有几千年的工作量等待着你去完成。我又笑了。。。也许,他从来没听说过OpenOffice,WPS,永中Office。。。
7、说了那么多批评,其实,我还是非常喜欢joel的这本书的。尤其是在看到了《关于战略问题的通信之六》这一章,joel说到:在Google洋洋得意的时候,也许会有一家公司,开发出新的、革命性的Ajax类库,然后,有一家公司,发明了一个革命性的浏览器,使得原本非常复杂的Ajax类库,变得运行速度飞快。。。
这篇写于2007年9月18日,2008年9月8日,Google Chrome 0.2版发布。现在,Chrome大概是运行JavaScript最快的浏览器。
也许,就是受了joel的启发吧。
8、《让错误的代码显而易见》,我也非常赞同,这是一种非常非常有价值的,给自己的代码命名的原则。
9、《揉一揉,搓一搓》,其实就是一次大型系统重构的过程,当然,在我看来,仅仅凭借开发者的经验,确保没有改坏代码,是不够的,如果joel当初能够写足够多的UnitTest,重构起来会更加轻松一些。
总的来说,joel是一个追求语不惊人死不休的blogger,但是他的绝大多数文章,都非常有价值,也非常有阅读快感,因此,强烈建议找一本来读一读。
相关推荐
Docker —— 从入门到实践
除了上面这些,一种上传软件可以锁定一个本地文件夹到活动远程窗格中,索引配置文件夹(目录)选项,配置缓存文件夹,自动刷新文件夹转移和导航事件后,设置公差服务器设置问题,递归删除整个文件夹,删除到回收站,等等。...
它可以在美国 41 个州和地区的统一律师资格考试 (UBE) 中获得前 10% 左右的成绩。还可以在 SAT 考试中获得 1300 分 (满分 1600 分),在高中生参加的大学生物、微积分、宏观经济学、心理学、统计学和历史先修课程考试...
QT中的TCP通信是基于C++库Qt Network模块的,它提供了方便的类和接口用于实现TCP(传输控制协议)的网络通信。QTcpServer和QTcpSocket是两个核心类,分别用于服务器端和客户端的通信。 在服务器端,首先创建...
在数字阅读领域,ePUB格式因其良好的可读性和设备适应性而被广泛采用。然而,许多原始文本资源,如小说、文章或电子书,往往是以纯文本的TXT格式存储的。在这种情况下,将TXT文件转换为ePUB格式就显得尤为重要。"Txt...
菜头云菜头云 () 是一个简单的帮助开发者快速迭代和部署前端静态网站的服务一个命令上线网站多版本线上预览, 支持 git 集成自定义域名和自动配置 HTTPS 证书中国大陆和海外两个节点同时部署目录集成环境Github ...
在实践中,夏浩浩和他的家人分别负责不同的任务,如砍菜头、割菜叶、搬运和装袋。这种分工合作的模式有助于提高团队协作能力,同时也让夏浩浩亲身体验到劳动的艰辛。 活动结束后,夏浩浩分享了他的反馈和感想。他...
知名「网红」和菜头在一篇关于 Dyson 的文章里面,将 Dyson 吹风机大卸八块,把主要部件一一展示,并且和 100 元吹风机的拆卸图做了对比。虽然一个个体
Foxtable将Excel、Access、Foxpro以及易表的优势融合在一起,无论是数据录入、查询、统计,还是...此外FoxTable同时具备B/S和C/S架构的优势,可以像B/S软件一样易于部署,同时又具备C/S软件良好的用户体验和交互性。
综上所述,无论是帐管还是人力资源经理,他们的工作都强调了专业性、责任感和持续改进,这在IT行业中是非常重要的。在述职报告中,他们通过回顾过去,分析现状,展望未来,展现了对岗位职责的深刻理解和对工作效率的...
活动准备包括各种切好的蔬菜横截面(如芹菜头、青椒、苦瓜、藕等),一个花瓶和一束多样的花,以及梵高名作《向日葵》的图片,颜料、抹布和预先贴好花瓶形状的底板纸。 活动流程分为四个部分: 1. 通过展示一瓶花...
2. **业务架构的核心组件**:详细讲解了业务架构的四个主要组成部分——业务模型、组织结构、信息系统和技术基础设施。每个部分都提供了详细的定义、构建方法和最佳实践案例。 3. **业务架构方法论**:这部分是整个...
例如,用户可能会遇到重复推荐的问题——即便他们已经明确表示不感兴趣的商品依然会被推荐。 ##### 深度树匹配的优势 为克服传统方法的局限性,深度树匹配技术引入了一种全新的解决方案。该技术的核心在于利用树...
- 主要指日常生活中产生的非有害废弃物,如果皮、菜头、厨余等,这些通常需要经过处理才能进行无害化处置。 4. 有害垃圾: - 包括废电池、废荧光管、过期药品等,这些物品含有有毒有害物质,需要特殊处理,避免对...
周四的菜单以滑炒肉丝、五香肉片、溜肝尖为主,菜头炖虾、蘑菇炖鸡则提供海鲜和菌菇的营养。西红柿炒鸡蛋是常见的家常菜,海米烧豆腐和瓜条炒鱿鱼则丰富了蛋白质的来源。虾皮萝卜丝和琉璃苹果等为孩子们提供了蔬果的...
这对于那些在Windows环境下工作的开发者来说非常有用,因为他们可以在熟悉的环境中开发和测试,然后生成可以在其他平台上运行的软件。 在Rygwin的安装过程中,"setup-x86.exe"文件很可能是Rygwin的安装程序,用于在...
PC程序跟RS232串口进行通信算是比较老的题目了,不过老归老,只要用这个接口的硬件还在,就难免要去折腾它。而这个时候就会发现老的坏处在于资料都是...并将一般调试串口程序都会用到的两个软件拿出来和大家分享。
19. 何涛被捉后,阮小七割下他的耳朵后放他离开,展示了梁山好汉的严惩不贷。 20. 晁盖派朱贵带一百两黄金感谢宋江等人,彰显了梁山内部的互助与情谊。 以上题目涵盖了《水浒传》的主要人物、事件和主题,通过解答...
例如,瓜果皮核和菜根菜头属于厨余垃圾,而非其他垃圾;纸尿裤应投入灰色垃圾桶。被油污污染的报纸和被污染的塑料袋不再属于可回收物。同时,可回收物应交售给回收站点或投放到对应的收集容器,如报纸和纸皮。废弃的...
变速齿轮是一种软件技术,用于改变计算机程序的执行速度,它在游戏优化、调试和其他特定场景中非常有用。本文将深入探讨变速齿轮相关的源码,包括`SetTimer`、`GetTickCount`函数的使用以及钩子(Hook)技术。 首先...