这是一本介绍软件管理的小品文集。全书分为45章,内容十分丰富全面,小到项目负责人制订进度表,大到软件执行总裁提出富有竞争性的战略,都在本书的介绍之列。作者Joel Spolsky以个人经验和感悟,用幽默风趣的笔法深入介绍软件开发项目管理的细节,帮助读者改进软件开发中的误区,提高效率。《软件随想录 卷1》是Joel Spolsky的首部博客文集,涵盖了最重要的博文,以及独到的评述和洞见。从不同侧面满足了软件开发人员、设计人员、管理人员及从事软件相关工作的人员的学习与工作需要。
乔尔·斯波尔斯基(Joel Spolsky),是一名软件行业的资深人士,他的开设的个人博客“乔尔谈软件”深受程序员们的欢迎,被誉为“反呆伯特宣言”。斯波尔斯基设计和开发了许多广为使用的软件,参与过的软件产品包括微软Excel和朱诺邮件客户端的用户界面。他还创立了位于纽约市的Fog Creek软件公司。
第一部分 比特和字节:编程实践 1
01 选择编程语言 2
02 回归本原 4
03 乔尔测试 12
04 软件开发者不可不知的Unicode和字符集知识(别找借口!) 24
05 轻松撰写功能规格书 第一部分:为什么要写 34
06 轻松撰写功能规格书 第二部分:什么是规格书 40
07 轻松撰写功能规格书 第三部分:但是……怎么做 49
08 轻松撰写功能规格书 第四部分:写作技巧 53
09 轻松掌控软件开发进度 60
10 每日编译是你的朋友 70
11 完美主义者是如何修复bug的 75
12 五个世界 80
13 纸上原型设计 87
14 别被架构航天员忽悠了 89
15 干扰射击 93
16 软件开发是一门手艺活 96
17 计算机科学的三个错误观念 100
18 二元文化主义 105
19 自动从用户那里收集崩溃报告 111
第二部分 管理开发者 121
20 非正式面试指南 122
21 奖励有害论 134
22 不设专职测试人员的5条(错误)理由 137
23 任务切换有害论 143
24 永远不要做的事情(第一部分) 146
25 揭开冰山之谜 150
26 抽象必漏定律 156
27 帕默斯顿勋爵谈编程 161
28 评估机能失调 166
第三部分 乔尔语录:中心明确的胡思乱想 169
29 里克?查普曼在“寻找愚蠢” 170
30 这个国家的狗要做什么工作 174
31 普通程序员如何改善团队工作方式 179
32 两个故事 184
33 巨霸汉堡vs.“原味主厨” 188
34 凡事没有看上去的那么简单 193
35 为NIH综合症说两句 197
36 企业发展战略系列一:本杰瑞vs.亚马逊 200
37 企业发展战略系列二:先有鸡还是先有蛋 207
38 企业发展战略系列三:让我回到过去 214
39 企业发展战略系列四:膨件和二八法则 219
40 企业发展战略系列五:开源软件经济学 223
41 祸不单行的一周 231
42 微软是如何输掉API战争的 235
第四部分 关于.NET的闲言碎语 249
43 走火入魔的微软 250
44 我们向.NET迁移的策略 255
45 能给我一个链接器吗 258
第五部分 附录 261
“乔尔问答”精选 262
你从没想过要当一名开发经理。和我认识的大多数软件开发者一样,如果能一直坐在那里安静地写代码,你可能会比现在快乐得多。但你是最棒的开发者,自从团队之前的老大奈杰尔发生了那场不幸的事故(与蹦极绳和笔记本电脑有关),作为团队技术明星的你,被顺理成章地提拔为了开发经理。
现在,你有了自己独立的办公室(而不是和那些赖着不走的暑期实习生挤在一个小隔间里),不得不填写每年两次的绩效考核表(而不是每天盯着CRT显示器来自毁双目),还得经常想办法满足明星级程序员们的各种古怪要求,和过分亲热的销售人员称兄道弟,和异想天开的“用户界面设计师”们(天啊!他们是以图形设计师的身份被招进公司的)讨论设计稿——他们想让确定和取消按钮闪闪发亮并且带有倒影效果,天啊,“倒影效果”对应的RGB颜色值是多少?还要硬着头皮回答高级副总裁提出的各种愚蠢问题,他们对于软件的那点了解全部来自于旅途中翻阅达美航空公司提供的旅行杂志。“我们为什么不用Java来代替Oracle呢?听说它一致性更好。”
恭喜你荣升管理岗位!你猜怎么着?软件项目管理和编程其实一点关系都没有。如果这辈子除了写代码什么都没干过,你可能会突然发现,人类行为比最普通的Intel CPU还难以预测。
其实,之前的团队老大奈杰尔也不是非常称职。“我并不想变成一个整天泡在无聊会议里的经理,”他在发表这种宣言的时候总显得有些虚张声势,“我认为自己还是可以把85%的时间花在编程上,剩下的时间用来管理团队。”
奈杰尔其实想说的是:“我完全不懂如何管理项目,但愿只要像被委以重任之前一样老老实实地写代码,所有事情就都能顺利地完成。”这当然不可能。这种心态可能有助于解释,为什么奈杰尔会在命中注定的那一天,带着一台IBM ThinkPad去蹦极。
故事的细节不必多说,总之后来奈杰尔奇迹般地恢复了健康,与一起玩蹦极的朋友合开了一家小公司,出任CTO。这家公司叫“今夕何夕”(WhatTime- IsIt.com)。他只有六个月的时间,要从头编写一个新系统,而且这次再也不能靠事故来脱身了。
管理的艺术
软件项目管理是一门很少有人了解的艺术。没有人获得过软件项目管理的相关学位,这方面的图书也很少。只有极少数人带领软件开发项目取得了真正的成功,其中绝大多数都在发财后早早退休去钓鱼,没来得及把积攒的经验教训传给下一代项目经理。剩下的人燃烧尽了自己的青春,改行去做其他压力稍小一点的工作,比如帮市中心的小混混辅导英语。
这导致了许多软件开发项目都因为种种原因而中途夭折,有的失败得轰轰烈烈,有的则无声无息,原因是团队里没有人知道如何带领一个软件项目走向成功。有太多的开发团队无法交付像样的产品,或者拖了太久才交付,或者交付了一个谁都不想用的软件。但是最让我感到愤怒的,是那些在团队中闷闷不乐,痛恨每一分钟工作时间的人。人生苦短,怎么可以浪费时间去痛恨自己的工作。
几年前我在网站上发表了“乔尔测试”,这份清单包含优秀软件团队必须要做到的12件事,包括维护一个bug跟踪数据库,让面试候选人现场写代码,等等(不要着急,这本书会拿出大量的篇幅来介绍这些内容)。让我感到惊讶的是,很多人发来电子邮件,说自己所在的团队只能在满分为12分的测试中得到2~3分。
2~3分!
这太不可思议了!就好像一群木匠聚在一起做家具,结果谁都没听说过螺丝钉。他们只会用踢踏舞鞋把钉子敲进木头里,因为没人告诉他们世界上还有一种东西叫锤子。
要做好软件项目管理工作,需要一整套和写代码完全不同的工作技能和技术储备。项目管理和软件开发是两个完全不同、几乎没有交集的领域,二者之间的差别几乎相当于脑外科手术和烹饪椒盐卷饼之间的差别。一名脑外科手术医生完全想不到,自己会被传送到一个制作椒盐卷饼的工厂里,这很可能是时空裂隙造成的结果。即使是接受过哈佛医学院教育的外科医生,也完全对如何烹饪椒盐卷饼没有一点概念。但是人们通常认为,一位顶尖的开发者不经过任何岗前培训,就能自动胜任项目管理工作。
和刚刚提到的脑外科医生一样,你和奈杰尔都被安排到了一个新岗位——管理。这个岗位要求你和人类而不是编译器打交道。如果你觉得现在的Java编译器bug丛生、行为不可预料的话,说明你还没有作为开发经理和团队中的明星程序员打过交道。管理由人类组成的团队,难度要大大超出编写C++模板函数。
要实现成功的软件项目管理,也并非无迹可寻。这门艺术发展到今天,已经脱离了钉子和踢踏舞鞋的阶段。我们现在有锤子、螺丝刀和双斜面组合条锯。本书的目标就是介绍我知道的所有管理方法和技术,涉及各个层面,包括团队管理者需要预估时间和开发计划,软件公司CEO要筹划市场竞争战略,等等。你将学到:
如何聘用并激励最优秀的人才——这是软件项目取得成功的最关键因素;如何让开发时间预估和进度规划变得切实可行,以及为什么有必要这样做;如何设计软件的功能,写出能真正指导开发的规格说明书,而不是制造那种“一次编写、永不阅读”的无用文件,只能拿来把办公室隔间的隔板垒得更高;如何绕开软件开发中常见的陷阱,以及为何程序员编程的时候总喜欢犯“推倒重来”的错误;如何组织和激励团队,为什么程序员需要独立的工作空间和关闭的门;在哪些情况下必须从头开始写每一行代码,抵制从网上下载足够好用软件的诱惑;为什么软件项目总是在过了最初的几个月之后,看起来像是陷入了停滞状态;对于软件公司,发展战略意味着哪些思考和行动,为什么BeOS从一开始就注定了失败;除了以上几条之外,还有更多内容。
本书的观点带有强烈的主观色彩。为了行文简洁,我无法在每句话的开头加上“在我看来”这几个字,但实际上你要知道,这本书里的每句话都是我个人的观点。本书也许并不完善,然而是一个不错的开头。
啊,你是我网站的读者……
本书的很多内容都来自我个人网站上的专栏文章,这些文章统称为“乔尔谈软件”,记录了我在这几年中的很多思考。希望这本让你捧在手中的书,能比网站上松散的文章在形式上显得更为紧凑,这个词的另一个含义是,“可以在浴缸里阅读而不用担心遭到电击”。
我们把本书分为三大部分。第一部分从小处着眼,探讨了软件开发的方方面面:要想开发出不危害人间的软件,每一个开发团队都应该遵循哪些良好的开发习惯。第二部分包含了一系列关于如何管理程序员和编程团队的文章。第三部分的内容则更松散一些,但大致上围绕着“如何长久地在软件开发行业生存下去”这一主题。你将了解到为什么“膨件”(bloatware)大行其道,为什么本杰瑞公司(Ben & Jerry’s)和亚马逊公司如此不同,以及为什么软件开发方法论的出现标志着这个行业缺乏足够数量的优秀人才。
本书的内容当然远不止以上介绍的这些,所以闲言少叙,书归正传。
《软件随想录 卷1》这本书,读起来真是一种别样的体验。它不像那些市面上泛滥的技术手册,上来就告诉你“怎么做”,而是更侧重于“为什么这么做”的哲学层面的探讨。作者的写作风格非常独特,时而旁征博引,时而又充满哲思。我常常会被书中的一些观点深深吸引,然后忍不住停下来,反复琢磨。比如,关于“软件的演进”那一部分,作者并非简单地描述技术迭代,而是从更宏观的角度,探讨了软件之所以会发生变化背后的驱动力,以及这种变化对整个行业生态产生的深远影响。这种视角非常难得,让我从一个更具战略性的高度去审视软件开发。书中的很多论述,都蕴含着作者多年实践的经验和对行业趋势的敏锐洞察。我能感受到作者在撰写这本书时,投入了大量的心血和思考,字里行间都透露着他对软件事业的热爱和执着。即使是初学者,也能从中找到启发,而对于有经验的开发者来说,这本书更是提供了一个反思和升华的机会。它让我意识到,技术固然重要,但对软件本质的理解,对开发理念的坚持,才是构建优秀软件的基石。
评分《软件随想录 卷1》这本书,给我带来了前所未有的震撼。我一直认为自己对软件开发有着不错的理解,但这本书彻底颠覆了我之前的很多认知。作者的文笔非常老练,他能够用一种娓娓道来的方式,将一些深奥的道理讲得浅显易懂。我尤其欣赏作者在书中对“软件生命周期”的独到解读,他不仅仅描述了从需求分析到部署维护的各个阶段,更深入地探讨了每个阶段所面临的挑战以及如何应对。这让我意识到,软件开发并非孤立的环节,而是需要贯穿整个生命周期的系统性思考。书中还提到了很多关于“团队协作”和“项目管理”的内容,这些虽然不是纯粹的技术问题,但对软件项目的成功至关重要。作者通过分析实际案例,揭示了沟通不畅、目标不明确等问题对项目的影响,并提出了相应的解决方案。总而言之,这本书是一部充满智慧的著作,它不仅教会了我如何成为一个更好的开发者,更让我认识到成为一名优秀的软件工程师所需要具备的广阔视野和深邃思考。
评分我最近一口气读完了《软件随想录 卷1》,简直是意犹未尽!这本书的独特之处在于,它没有陷入技术细节的泥沼,而是从更高的维度,探讨了软件的本质、演变以及开发者应该具备的心态。作者的思维非常活跃,他的观点常常出人意料,但细细一想,又觉得非常有道理。我特别喜欢书中关于“软件的艺术性”的论述,作者将编程比作一种创造性的活动,强调了开发者在其中扮演的角色,以及他们如何通过代码来表达思想和解决问题。这让我觉得,编程不仅仅是一项技术工作,更是一种充满创造力的艺术表达。此外,书中还对“失败的软件项目”进行了深入的剖析,作者通过分析这些失败案例,总结出了宝贵的经验教训,让我能够从中吸取教训,避免重蹈覆辙。这本书的语言风格也很吸引人,既有学术的严谨,又不失文学的趣味,读起来一点都不枯燥。总的来说,这本书是一部值得反复阅读的经典之作,它不仅能够提升我的技术认知,更能启发我的思维,让我对软件开发这个领域有了更深刻的理解和更持久的热情。
评分我不得不说,《软件随想录 卷1》这本书,真的让我大开眼界。我之前一直觉得软件开发就是写代码,实现功能,但读了这本书之后,才发现自己之前的认知是多么的浅薄。作者的笔触非常细腻,他能够将那些抽象的概念,例如“软件的熵增”或者“技术债务”等,用非常生动形象的比喻来解释,让我一下子就理解了。我特别喜欢书中关于“软件架构”的讨论,作者没有局限于某种特定的架构模式,而是探讨了不同架构风格的优缺点,以及如何根据实际需求选择最合适的方案。这让我意识到,架构设计并非一成不变,而是需要根据项目的特点和发展阶段进行动态调整。此外,书中对“代码质量”的论述也让我受益匪浅。作者强调了代码的可读性、可维护性和可扩展性,并提供了一些实用的建议,指导我们如何写出高质量的代码。读完这本书,我感觉自己仿佛打开了一扇新世界的大门,对软件开发有了更深刻的理解,也更加明确了自己在未来学习和实践中的方向。
评分拿到《软件随想录 卷1》这本书,我内心是充满了好奇的。书名本身就带有一种探索未知的意味,仿佛邀请读者一同潜入软件世界的深邃海洋。翻开第一页,一股浓厚的学术氛围扑面而来,字里行间流露出作者深厚的理论功底和对软件工程领域独到的见解。我特别欣赏作者在描述一些核心概念时,那种抽丝剥茧般的清晰逻辑,让人觉得即使是复杂抽象的理论,也能被具象化,变得容易理解。那些看似平常的软件开发流程,在作者的笔下,却被赋予了新的生命和更深的意义。我尤其对其中关于“软件设计原则”的阐述印象深刻,作者没有仅仅停留在罗列原则本身,而是通过丰富的案例分析,展示了这些原则在实际项目开发中的应用价值,以及违背原则可能带来的潜在风险。这让我意识到,优秀的软件设计并非一日之功,而是需要长期积累和对细节的极致追求。整本书就像一个经验丰富的引路人,用其睿智的语言,引领我一步步走向软件工程的更广阔天地。那些我曾经模糊不清的观念,在阅读过程中逐渐变得清晰而坚定,让我对软件开发有了全新的认识和更深入的思考。
评分书籍内容我之前也大概有看过一些,还是实体书看起来更有感觉。
评分这是一本很好的书啊!
评分haoshu
评分好。。。。。。。。。。。。
评分有成套情结,一套两本一起买。书的内容很不错
评分大神推荐的,肯定没错!
评分作者写他对功能规格说明书,测试,重构等等的看法。值得参考
评分希望能为编程多点启示,努力学习中
评分书不错,很有用。。。。。。。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有