基本信息
- 作者: (美)Joel Spolsky
- 译者: 杨帆
- 出版社:人民邮电出版社
- ISBN:9787115384058
- 上架时间:2015-4-14
- 出版日期:2015 年4月
- 开本:16开
- 页码:273
- 版次:1-1
- 所属分类:计算机 > 软件工程及软件方法学 > 综合
编辑推荐
许多软件项目中途夭折;有些团队交付产品的时间过长;有些已交付的产品无法满足人们的需求。代码编写者会厌倦开发的过程,而开发团队并不真正懂得如何构建软件。这些情况并不鲜见,所需要的是一个能抓住症结、快刀斩乱麻的人。
有人说过,图书作者的任务是“让熟悉的事物变得新鲜,让新鲜的事物变得熟悉”。Joel Spolsky就是这样的一个人。多年来,他在自己网站的博文中践行着这两句话。他幽默的文字让人们受到启发,促使他们思考:我们坐在空白电脑屏幕前的时候究竟在做什么?
本书是Joel Spolsky的首部博客文集,涵盖了最重要的博文,以及独到的评述和洞见。
内容简介
作译者
是一名软件行业的资深人士,他的开设的个人博客“乔尔谈软件”(www.joelonsoftware.com)深受程序员们的欢迎,被誉为“反呆伯特宣言”。斯波尔斯基设计和开发了许多广为使用的软件,参与过的软件产品包括微软Excel和朱诺邮件客户端的用户界面。他还创立了位于纽约市的Fog Creek软件公司。
目录
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
前言
现在,你有了自己独立的办公室(而不是和那些赖着不走的暑期实习生挤在一个小隔间里),不得不填写每年两次的绩效考核表(而不是每天盯着CRT显示器来自毁双目),还得经常想办法满足明星级程序员们的各种古怪要求,和过分亲热的销售人员称兄道弟,和异想天开的“用户界面设计师”们(天啊!他们是以图形设计师的身份被招进公司的)讨论设计稿——他们想让确定和取消按钮闪闪发亮并且带有倒影效果,天啊,“倒影效果”对应的RGB颜色值是多少?还要硬着头皮回答高级副总裁提出的各种愚蠢问题,他们对于软件的那点了解全部来自于旅途中翻阅达美航空公司提供的旅行杂志。“我们为什么不用Java来代替Oracle呢?听说它一致性更好。”
恭喜你荣升管理岗位!你猜怎么着?软件项目管理和编程其实一点关系都没有。如果这辈子除了写代码什么都没干过,你可能会突然发现,人类行为比最普通的Intel CPU还难以预测。
其实,之前的团队老大奈杰尔也不是非常称职。“我并不想变成一个整天泡在无聊会议里的经理,”他在发表这种宣言的时候总显得有些虚张声势,“我认为自己还是可以把85%的时间花在编程上,剩下的时间用来管理团队。”
奈杰尔其实想说的是:“我完全不懂如何管理项目,但愿只要像被委以重任之前一样老老实实地写代码,所有事情就都能顺利地完成。”这当然不可能。这种心态可能有助于解释,为什么奈杰尔会在命中注定的那一天,带着一台IBM ThinkPad去蹦极。
故事的细节不必多说,总之后来奈杰尔奇迹般地恢复了健康,与一起玩蹦极的朋友合开了一家小公司,出任CTO。这家公司叫“今夕何夕”(WhatTime- IsIt.com)。他只有六个月的时间,要从头编写一个新系统,而且这次再也不能靠事故来脱身了。
管理的艺术
软件项目管理是一门很少有人了解的艺术。没有人获得过软件项目管理的相关学位,这方面的图书也很少。只有极少数人带领软件开发项目取得了真正的成功,其中绝大多数都在发财后早早退休去钓鱼,没来得及把积攒的经验教训传给下一代项目经理。剩下的人燃烧尽了自己的青春,改行去做其他压力稍小一点的工作,比如帮市中心的小混混辅导英语。
这导致了许多软件开发项目都因为种种原因而中途夭折,有的失败得轰轰烈烈,有的则无声无息,原因是团队里没有人知道如何带领一个软件项目走向成功。有太多的开发团队无法交付像样的产品,或者拖了太久才交付,或者交付了一个谁都不想用的软件。但是最让我感到愤怒的,是那些在团队中闷闷不乐,痛恨每一分钟工作时间的人。人生苦短,怎么可以浪费时间去痛恨自己的工作。
几年前我在网站上发表了“乔尔测试”,这份清单包含优秀软件团队必须要做到的12件事,包括维护一个bug跟踪数据库,让面试候选人现场写代码,等等(不要着急,这本书会拿出大量的篇幅来介绍这些内容)。让我感到惊讶的是,很多人发来电子邮件,说自己所在的团队只能在满分为12分的测试中得到2~3分。
2~3分!
这太不可思议了!就好像一群木匠聚在一起做家具,结果谁都没听说过螺丝钉。他们只会用踢踏舞鞋把钉子敲进木头里,因为没人告诉他们世界上还有一种东西叫锤子。
要做好软件项目管理工作,需要一整套和写代码完全不同的工作技能和技术储备。项目管理和软件开发是两个完全不同、几乎没有交集的领域,二者之间的差别几乎相当于脑外科手术和烹饪椒盐卷饼之间的差别。一名脑外科手术医生完全想不到,自己会被传送到一个制作椒盐卷饼的工厂里,这很可能是时空裂隙造成的结果。即使是接受过哈佛医学院教育的外科医生,也完全对如何烹饪椒盐卷饼没有一点概念。但是人们通常认为,一位顶尖的开发者不经过任何岗前培训,就能自动胜任项目管理工作。
和刚刚提到的脑外科医生一样,你和奈杰尔都被安排到了一个新岗位——管理。这个岗位要求你和人类而不是编译器打交道。如果你觉得现在的Java编译器bug丛生、行为不可预料的话,说明你还没有作为开发经理和团队中的明星程序员打过交道。管理由人类组成的团队,难度要大大超出编写C++模板函数。
要实现成功的软件项目管理,也并非无迹可寻。这门艺术发展到今天,已经脱离了钉子和踢踏舞鞋的阶段。我们现在有锤子、螺丝刀和双斜面组合条锯。本书的目标就是介绍我知道的所有管理方法和技术,涉及各个层面,包括团队管理者需要预估时间和开发计划,软件公司CEO要筹划市场竞争战略,等等。你将学到:
如何聘用并激励最优秀的人才——这是软件项目取得成功的最关键因素;
如何让开发时间预估和进度规划变得切实可行,以及为什么有必要这样做;
如何设计软件的功能,写出能真正指导开发的规格说明书,而不是制造那种“一次编写、永不阅读”的无用文件,只能拿来把办公室隔间的隔板垒得更高;
如何绕开软件开发中常见的陷阱,以及为何程序员编程的时候总喜欢犯“推倒重来”的错误;
如何组织和激励团队,为什么程序员需要独立的工作空间和关闭的门;
媒体评论
——Keith Hodo,Avanade高级软件工程师
“这本书风趣幽默,通俗易懂,全是干货,切中肯綮。书中的很多内容虽是常识,但是许多软件团队在现实中所做的却恰恰相反。具有软件开发或管理经验的人可能会在其中发现自己犯过的错误,如从头开始重写软件或是构建过于复杂的架构。我愿意把这本书送给我的工程师和经理,这挺难得的,因为像《人月神话》这么经典的书毕竟不多。”
——Jonathan Abrams,创业家,曾创办Nuzzel、Socializr、Friendster和HotLinks并担任CEO,Founders Den联合创始人
“在这个产品生命期只有六个月的领域,这本书经受住了时间的考验。Joel在这本关于软件开发的书中分享了自己作为程序员、项目经理和软件公司CEO的经验。许多关于编程和项目管理的策略在今天仍然适用。即使不完全同意Joel的观点,大部分程序员、项目经理和软件公司高管也都有必要读读这本书。”
——Amazon.com读者评论
“Joel把软件工程教科书里的内容变得容易理解,用幽默的文风把枯燥的知识变得引人入胜。如果你觉得读写功能规范书让人头疼,或者想在轻松的周末充实自己,那就翻开这本书吧。”
——Amazon.com读者评论