代码之道

出版时间:2009-1  出版社:机械工业出版社  作者:Eric Brechner  页数:192  译者:陆其明  
Tag标签:无  

前言

长期以来,我一直在阅读Eric Brechner以I. M. Wright为笔名撰写的栏目。当我第一次见到作者本人的时候,我费了好大的劲才让自己相信,我是在跟同一个人说话。Wright先生非常地自以为是,然而站在我面前说话的人却那么谦虚、彬彬有礼、非常友好,他看起来更像Clark Kent。(译者注:Clark Kent是“超人”的名字,他具有超强的本领,是一个虚构的超级英雄,美国漫画中的经典人物。)我很关注微软内部团队在软件开发的过程中,他们是如何去处理技术与人际交流之间的关系的;这类栏目总是我的最爱。看到大量的公司内幕被写了出来,我常常会感到吃惊——我不知道还有多少不为人知的故事没有说出来。大型项目中的软件工程管理者面临着3个基本的问题。第一个是,程序代码太容易被改变了。跟机械或土木工程不一样,它们在现有系统上做一次改变总是要付出实实在在地拆毁某些东西的代价,而软件程序的改变只需要敲敲键盘就行了。如果对一座桥的桥墩或一架飞机的引擎做一个错误的结构性更改,由此产生的后果,即使不是专家也很容易就能看出来。然而,如果在一个现有程序上做修改,对于其风险,即使经验丰富的软件开发者进行了充分的讨论,其结果常常还是错的。建筑隐喻实际上可以很好地适用于软件。基于程序代码在系统中所处的层次,它们可以被比作为“基础、框架和装饰”。“基础”代码具有高度的杠杆作用,它们的改动常常会引起严重的连锁反应。“装饰”代码比较容易改动,而且也需要被经常改动。问题是,累积了几年的改变之后,复杂的程序就跟历经过几次装修的房子差不多了——电源插座躲到了橱柜的后面,浴室风扇的出风口通向了厨房。再做任何改变的话,其副作用或最终的代价都是很难预知的。第二个基本问题是,软件行业还太年轻,关于可复用组件的正确标准实际上还没有被发现或建立起来。大头钉是否应该放在离开16英寸的地方,以同时适应水平或垂直的4x8英尺的干垒墙或夹板?我们不仅在这类问题上还没有取得一致意见,甚至我们还没有决定,是否像大头钉、干垒墙和夹板这样的组合更可取,还是我们要去发明像泥浆、稻草、石头、钢铁和碳化纤维这样的组合。最后一个问题实际上是第二个问题的另一种表现形式。每个项目中重复发明的软件组件,它们也被重复命名了。软件行业里对现有的概念发明新的名字是很常见的,即使用的名字相同,这些名字也以新的方式被重用。行业里有一个心照不宣的秘密:关于软件开发最佳方法的相当多的讨论,参与的实际上都是同一群人,只不过他们用了不同的名字,他们甚至对彼此正在说的东西都没有一个哪怕是很朦胧的想法。表面上看来,这些都是很简单的问题。建立一些标准,然后强制实行它们。在快速进步的大容量、高价值、低成本的软件世界里,这可是一个让你的业务落败的捷径。实际情况是,软件最大的工程障碍,同时也是它最大的优势。无处不在的软件(运行在低成本的个人电脑和互联网上),已经使得以惊人的步伐去创新成为可能。随着微软的成长,公司已经不再能在最佳工程实践的研究方面大量地投入,然后经过深思熟虑,挑选出其中具有最好质量的方法。个人电脑和Windows的成功,已经把公司从按传统方式做些小项目的形态转变出来,转而要去谱写开发有史以来最庞大、最复杂软件的新篇章。为了能够创建出平衡风险与效率、创新的最佳系统,微软面临着持续不断的挣扎。考虑到我们的一些项目有着极度的复杂性,这些努力甚至可以称得上“英勇无畏”。在过去的一段时间以来,我们已经设置了专员、建立了专门的组织,他们都一心一意、致力于这个行业里最困难的事情——“软件发布”。我们已经学会了很多的民间传说、风俗、文化、工具、过程和大拇指规则(译者注:Rules of Thumb,是指没有经过科学实验、直接从实践中总结出来的方法和规则;它们在很多情况下都有用,但并不是放之四海皆准),那些都有助于我们建造和发布这个世界上最复杂的软件。但与此同时,每天都处理这些问题难免也让人心惊胆战、士气受挫。Eric的栏目正是大家跟我们一起分享和学习的极好方式。

内容概要

本书以一位微软内部人士的视角,揭示了关于软件编码、软件测试和项目管理中的方方面面问题。作者文笔犀利,见解独到,对软件行业内的很多常见问题提出了解决方案,并提供了最佳实践。本书详细介绍怎样提高软件的质量和价值;切合实际地管理项目的时间表、风险和规范书;为常见的低效率开发瘦身;应用过程改进方法,避免固执盲从;规划一个成功的、令人满意的职业生涯;发展并管理一个欣欣向荣的团队等。  本书是作者对过去在软件行业6个不同的公司、28年的工作经验的一次总结。  本书不仅是微软内部员工的必读之书,也同样适合于软件行业内其他所有工程师和管理者阅读。

作者简介

Eric Brechner,微软公司“卓越开发”部门的总监,在软件行业已经积累了20多年的经验。他从2001年开始写“Hard Code”栏目,作为一种资源提供给微软的员工。自那以后,其观点栏目在微软内部成千上万的软件开发者之间,激起了无休无止的关于最佳实践的讨论——如今,这些观点

书籍目录

序简介第1章 项目的不当管理 2001年6月1日:“开发时间表、飞猪和其他幻想”  里氏震级估计  风险管理  客户赢了 2001年10月1日:“竭尽所能:再论开发时间表”  软件工程绝对是含糊的  相信一半你看到的,别信你听到的  激励:不能光靠比萨和啤酒  在日期上沉沦 2002年5月1日:“我们还开心吗?分诊的乐趣”  战争是地狱  这不是个人的事情  分诊的5条黄金法则  魔鬼藏在细节里面  很难进行下去,不是吗?  谨小慎微 2004年12月1日:“向死亡进军”  暗箭伤人  对失败的连祷  转折点  很少有人走过的路 2005年10月1日:“揭露真相”  遭受错觉之苦  拿把叉子扎进我的身体  给我个坦率的回答  给猪抹口红  看看所有这些传言  我想知道真相第2章 过程改进,没有魔法 2002年9月2日:“六西格玛?饶了我吧!”  啊!这是什么巫术?!  召集骑兵  在混沌之外建立秩序 2004年10月1日:“精益:比帕斯雀牛肉还好”  任何事情都要适中  俭则不匮  过量生产  走向深处  运输  多余动作  等待  过程不当  库存  缺陷  合作共生 2005年4月1日:“客户不满”  但愿不知道  太过分,太迟了  敏捷错觉  回退你的步伐  更多用武之地  使用正确的工具  布基胶带和打包钢丝  客户满意 2006年3月1日:“敏捷子弹”  真理的敌人  拨乱反正  准备改变了吗?  让他说话  你完善我  有点极端  准备玩橄榄球!  最后你要知道的第3章 根除低下的效率 2001年7月1日:“迟到的规范书:生活现实或先天不足”  对于每次变更,搅动,搅动,搅动  走廊会议  委员会议  规范书变更请求  预防是最好的治疗 2002年6月1日:“闲置人手”  宝宝做了件极坏的事情  告诉我该做什么  俭则不匮 2004年6月1日:“我们开会的时候”  为什么我们会在这里?  我们正在试图做什么?  为什么他们会在这里?  为什么我现在才听到这个?  接下去要做什么? 2006年7月1日:“停止写规范书,跟功能小组呆在一起”  你失去理智了吗?  在那里进退两难  特殊要求  我不记得了  坚持做一件事情  你准备好了吗? 2007年2月1日:“糟糕的规范书:该指责谁?”  树立靶子  沟通分解  保持简单容易  变得稳健  获取反馈  集成质量检查  差别在哪?第4章 跨越工种 2002年4月1日:“现代临时夫妇?开发与测试”  我怎么爱你?让我来数一下有多少种方式  必要的邪恶或珍贵的伙伴?  每个人都要知道自己的弱点  你完善我 2004年7月1日:“感觉性急——测试者的角色”  高级保护  改变一下对你有好处  黎明时分  充分利用数据  非常酷——我保证你 2005年5月1日:“模糊逻辑——君子之道”  包罗万象  他们跟我们不一样  通过安检  着手去改变  更好地在一起 2005年11月1日:“废除工种——有什么理由搞专业化?”  历经未来的日子  考察它的极限  足球是门科学  两者之间的距离  你深陷其中第5章 软件质量不是梦 2002年3月1日:“你对你的安全放心吗?”  小心晃动的钟摆  做正确的事  安全受制于最薄弱环节  领导、跟随或者离开 2002年11月1日:“牛肉在哪里?为什么我们要质量”  情况变了  足够好还不行  艰难的选择  终于有足够的时间了  再检查一遍  医生,治好你自己的病  步步为营  太多疑问? 2004年4月1日:“软件发展之路——从手工艺到工程”  工艺制桌子,工程造汽车  其实你知道  真实面对自己  数字的含义  各人有各人的习性  大处着想,小处着手  从优秀到卓越 2005年7月1日:“复审一下这个——审查”  糟糕的混合  完美风暴  谁来负责?  你有什么想法?  正是这个形式  孩子,准备好了吗?  再检查一遍  神奇的汇总会议  审查的诀窍  走上正道 2006年10月1日:“对质量的大胆预测”  谜?我不这么认为  邪恶双煞  嫌疑惯犯  你会喜欢它的  停止卖弄愚蠢  质量就是没有意外第6章 有时间就做软件设计 2001年9月1日:“错误处理的灾难”  恐怖,恐怖  使用异常  别丢弃,用上它! 2002年2月1日:“厨师太多烧不好菜——惟一权威”  一幅图片抵得上一千个字  有人确切知道现在几点了吗?  只能有一个  万物皆有联系 2004年5月1日:“通过设计解决”  如何才算足够好?  设计完成  细节,细节  让我看看你是由什么组成的  当心缺口  成功处方 2006年2月1日:“质量的另一面——设计师和架构师”  你必须比那做得更好  改变一下对你有好处  他这么做不对  正确的做法  下一次,试试雕塑  关键要有正确的工具  打破这些壁垒 2006年8月1日:“美妙隔离——更好的设计”  分解难做  正确的做法  团队不需要“我”  循序渐进  猫狗不分家第7章 职业生涯历险 2001年12月1日:“当熟练就是目标”  每个人都要知道自己的弱点  享其成但不坐等  我希望他们尊重我  我们都牵连其中  2002年10月1日:“生活是不公平的——考核曲线”  我不想再逆来顺受了  知识就是力量  关注业务  前进,让我快乐  伸出手去接触某人  有了柠檬?制作柠檬水  改变你的主意  方向盘后面的人 2006年11月1日:“职业阶段中的角色”  一个人同时扮演很多角色  搞清楚职业阶段  我是有抱负的  资历过高  我是特殊的  只能选一个  你想成为什么? 2007年5月1日:“让你自己与世界相连”  你认识的人  我利用习惯  难道你不好奇?  你得到了我们的感谢  我回头再找你  欢迎来到这个世界第8章 自我完善 2002年12月1日:“要么听我的,要么走人——协商”  一个你无法拒绝的方式  逐渐长大  我脑子里闪过的阴影和凶兆  不要伤害Messenger  皆大欢喜 2005年2月1日:“最好学会平衡生活”  平衡是关键  光说不练  我甚至不能平衡我的支票簿  平衡好,一切都好 2005年6月1日:“时间够用了”  直接告诉我  免受打扰之苦  找到你的乐园  我们谁也不笨  我们必须共同承担  告诉我必须做什么  他还是个孩子  你应该休息一下  这里秩序井然  坦诚相待  大有可为 2005年8月1日:“有理有节地控制你的上司”  我没辙了  知彼知己  他们能自我适应  把水卖给鱼  势利的眼睛  付诸行动  敢于做梦 2006年4月1日:“你在跟我说话吗?基本沟通”  为我着想一下  告诉我你想要什么  你什么时候想要?  缩小注意力跨度  就这样完了? 2007年3月1日:“不只是开放和诚实”  那不是理由  我会对你诚实  那不容易  他们似乎有个开放政策  无处隐藏  跟我想的不一样  走上正道第9章 成为管理者,而不是邪恶的化身 2003年2月1日:“不只是数字——生产力”  小心你希望得到的东西  扮演一个角色  卓越开发者的素质  你要做法官 2004年9月1日:“面试流程之外”  抱怨得不到帮助  90%是准备  那就是问题  白板编译器  帮招聘专员准备  再次帮面试官准备  友情提醒  最后的难题 2004年11月1日:“最难做的工作——绩效不佳者”  你期望什么?  知难而进  寻求专业援助  没人想失败  目标是成功  无所求,则无所获  你不会总能如愿 2005年9月1日:“随波逐流——人才的保持和流动”  我只是想环球旅行  不错的水坝?  像河水一样流动  新鲜血液  分享就是关爱  成长空间  我必须要旅行  放任自流 2005年12月1日:“我能够管理”  持续送出的赠品  优秀就够了  草率行事  我想要工作  我不是东西  从优秀到卓越  我服务于人 2006年5月1日:“不恰当的比较——病态团队”  想要挑起战争  这不是竞争  我会给你些提示  团结在一起第10章 微软,你会喜欢它的 2001年11月1日:“我是怎么学会停止焦虑并爱上重组的”  沿着巴别塔下来  地狱里的生活  很少有人走过的路  容忍问题还是主动去解决? 2005年3月1日:“你的产品单元经理是个游民吗?”  有计划的人  我等不及要去实施了  魔鬼藏在细节里面  道路规则  回到正确的跑道上 2006年9月1日:“有幸成为Windows的主宰者”  你还有别的要求吗?  准备轮船  设置路线  启航  导航  责任  下一代Windows 2006年12月1日:“Google:严重的威胁还是糟糕的拼写?”  他们步伐踉跄,我们手舞足蹈  注定要失败  聪明人需要智能客户端  保持警惕  一马当先 2007年4月1日:“中年危机”  你已经变了  日子照过,只不过要掌握一点窍门  不轻易冒险  我认为他们还不能胜任  不再年轻了  不要惊慌失措  没有人是完美的  术语表

章节摘录

第1章 项目的不当管理本章内容:2001年6月1日:“开发时间表、飞猪和其他幻想”2001年10月1日:“竭尽所能:再论开发时间表”2002年5月1日:“我们还开心吗?分诊的乐趣”2004年12月1日:“向死亡进军”2005年10月1日:“揭露真相”我的第一个栏目是在2001年6月刊的微软内部网络杂志《Interface》上发表的。为了进入I.M.Wright的人物角色,我需要一个真正能让我伤脑筋的主题。而工作的时间安排和进度跟踪再好不过了。项目管理的伟大神话至今都让我疯狂,它的威力远胜过其他任何主题。这些神话是:1.人们能够按期交付被要求实现的功能(事实上,项目可以按期交付,但人们按期交付功能的概率不会高于击中曲棍球的概率)。2.有经验的人估计日期比较准(事实上,他们能够较好地估计工作,但不是日期)3.人们必须按照项目预定的日期按时交付项目(事实上,因为人们不能按期交付被要求实现的功能,而你若想你的项目能够按期交付的话,你必须进行管理风险、范围和通过沟通来减轻人性的弱点可能给项目带来的负面影响)。在本章中,I.M.Wright讨论了如何通过管理风险、范围和进行沟通,来保障你的项目能够按时完成。前两个栏目专门讨论开发工作的时间安排,接着讨论善后事宜的管理(我们称之为“Bu9分诊”),最后是一篇对死亡行军的声讨,以及一个关于人们为什么要撒谎的哲学栏目。不得不提的是:通过我在微软多年的工作经历,以及对我所在组织的观察,我发现,项目管理行为和方法在不同规模和抽象层次的组织中,其表现大不相同。这些层次包括:团队或功能层次(10人左右),项目层次(50~5000人,他们一起致力于某个特定的产品发布),以及产品层次(由高层人员主管的多次产品发布)。敏捷方法在团队这个层次能够很好地发挥作用,组织方法在项目这个层次比较适用,而长远的战略规划方法在产品这个层次功效显著。然而,一个人几乎不可能同时在多个层次上工作。时间长河为每个人将这些经历错开了。当一个人从一个层次转到另一个层次工作的时候,他可能会想,在以前那个层次上有效的方法在其他层次上应该也同样有效。灾难就这么产生了!原因很简单:小型、紧凑的群体跟大型、松散的机构在运转方式上是不同的。因此要因地制宜,选择最适合的方法。——Eric2001年6月1日:“开发时间表、飞猪和其他幻想”一匹马走进酒吧,说道:“我能在两天内完成那个功能。”开发成本计算和时问安排是个玩笑。相信它的人,要么是傻瓜,要么是初出茅庐的项目经理。这不是模糊科学,纯粹是杜撰。不错,的确有人相信编码可以被分割成一个可预见进度和质量的可重复的过程,那我儿子至今还相信牙仙子呢!事实上,除非你只需编写10行那么长的代码,或者代码可以直接从以前的工作中复制过来,否则你不可能知道编码会花费你多久时间。作者注:项目经理(ProgramManager,PM)有很多职责,其中最主要的是负责说明最终用户体验和跟踪项目的整体进度。这种角色是必要的,但他们常常不讨开发者的喜欢,因而也很少得到开发者的尊重。真遗憾,项目经理是一份很难做好的工作。但是,对于Wright先生来说,做好项目经理仍然是一个有趣并且容易达到的目标。里氏震级估计当然,你可以估计,但估计出来的时间是成对数比例的。有些事情需要花费几个月,有些事情需要几周,有些需要几天,有些需要几个小时,有些则只需几分钟。而我跟我的部门项目经理(GroupProgramManager,GPM)一起给一个项目做时间安排时,我们对每个功能使用“困难/中等/容易”3个等级来评估。“困难”意味着一个全职开发人员需要花费整个里程碑时间;“中等”意味着一个全职开发人员需要花费2~3周时间;“容易”意味着一个全职开发人员需要花费2~3天时间。这里没有中间等级,也不做精确的时间表。为什么呢?因为我们俩知道,我们已经不可能知道得再精确了。在我的记忆里,除了一系列里程碑、测试版、正式版发布等“项目日期”外,我没有在开发时间表上为各个功能规定交付日期。一个好的开发时间表应该是这样的——它只是简单地列出在每个里程碑期间需要实现的功能。那些“必须有”的功能放在第一个里程碑内,并且标上开发人员的数量和“困难/中等/容易”等级;“最好有”的功能放在第二个里程碑内;“希望有”的功能放在第三个里程碑内。除此之外的所有功能统统不做。通常情况下,如果到了第三个里程碑内的第二周,你仍然有较多“最好有”、“希望有”的功能没有实现,这时候大家都很惶恐,你就要把所有“希望有”的功能扔掉,并且将“最好有”的功能也只保留一半。作者注:里程碑的设定因团队而异,也因产品而异。典型情况下,一个里程碑跨越6~12周不等。它们被认为是“项目日期”,是组织(50-5000人)用于同步工作和复审项目计划的时间点。在里程碑期问,各个团队(3-10人)可能使用他们自己的方法来跟踪具体的工作,比如简单的工作条款清单或bum-down图。风险管理这才是我要引出的主题。开发成本计算和时间安排不能只盯着日期或时间不放,而应该关注的是风险管理。我们通过软件的功能和特性来取悦客户,而不管这个软件产品是零售包还是网络服务。这里的风险是,我们否能在合适的时间、将包含必要的功能集合、并且达到一定质量要求的软件产品交付到客户手中。一个好的开发时间表通过优先处理关键功能来管理风险。这些关键功能是能让客户满意的最小功能集合。通过“困难/中等/容易”这种评级方法,可以判断出在这个最小集合中包含哪些功能才是切实可行的。其他功能按照优先顺序和一致性原则依次加入。然后你开始编写代码,并且选择功能实现从困难转向容易,或者从容易转向困难。你通过平衡资源,以降低不能按时交付高质量的“必须有”的功能的风险。其他都是次要的,有则锦上添花,没有也无妨,况且你还可以设立不重要、但又不失挑战性的项目交给实习生去做。作者注:具有讽刺意味的是,几乎所有工程师和经理都赞同要优先处理“必须有”的功能,但事实上很少有人真的这么做,因为“必须有”的功能通常是乏味的,比如安装、建造、向后兼容性、性能和测试套件等。然而没有这些功能,你的产品根本就发布不了。因此,产品发布往往是因为这些领域的问题一拖再拖。一定要破除“功能交付日期”的神话,因为开发人员专注于这种日期的时候会破坏风险管理。真正要关心的日期只能是“项目日期”,比如各个里程碑、测试版发布等,而绝不应该是“功能交付日期”。项目日期之间一般都有较长时间的间隔,而且不会很多。管理这几个日期要容易得多。如果要求开发人员在某个日期之前一定要实现某个功能,当他们不能按时完成时他们往往不会告诉你,而是对你说“我正在加紧做……我会加班……”之类的话。在软件开发过程中进行风险管理,我们还要特别注意以下几个因素:一个是过度劳累的员工,一个是匆匆忙忙实现的、质量很差的功能,再一个就是你花费几周的时间、动用2~3位甚至更多的高级开发人员去解决一个棘手的问题。如果你的开发人员是在围绕“功能交付日期”付出大量的努力,而不是帮助你在产品的关键功能上实现降低风险,那么那些时间真的就被浪费了。客户赢了一个产品的成功与否,取决于你对关键功能的风险管理能力。当你给开发团队解释清楚这一点之后,情况就完全不一样了。当然,额外的功能可以锦上添花,但最关键的还是要专注于存在风险的领域,充分沟通,并一起努力把它们解决掉。当所有人都理解了目标,所有人都能比以前工作得更好。每个艰巨任务的完成都能鼓舞士气,即使新员工也会因为成熟的决议而得到回报。最终,我们的客户是大赢家,因为他们得到了真正想要的功能,并且产品质量也是他们当初所期望的,而不是一些勉强实现的、质量不能保证的垃圾。顺便提一句,我对开发时间安排的所有论述,对于测试时间安排同样适用。2001年10月1日:“竭尽所能:再论开发时间表”该对我6月份的那个栏目(“开发时间表、飞猪和其他幻想”)的评论做出一些回应了。其实,大部分评论都是恭维之词,这里就不再赘述,因为没有必要再次证明我有多么正确。我这里要做的是,去帮助一下那些对那个栏目还在无知中徘徊、但又非常热情的读者朋友们。软件工程绝对是含糊的我对关于不能也不应该对一个功能的开发做时间安排的论断表示怀疑。文中的论述精确地描绘了“编码”活动。不幸的是,这是初中生干的事情,类似于他们拼凑一个VB程序来解密信息、相互通信。我们可是软件工程师啊,不是电脑苦工。——一个充满怀疑的无知者作者注:这是我仅有的一个“邮件箱”栏目,收集了我对一些读者来信的回复。我还在持续不断地收到读者对我的栏目的大量“反馈”,但一旦一个栏目很受欢迎,很多新的话题便会涌现出来;讨论那些新话题的价值要远远超过对一个老话题邮件的回复。不管怎么样,当我回顾这个早期的栏目时,我意识到,可能Wright先生应该再次清空他的邮件箱了。我经常听到这种说法,但请就此打住。银行经理并不管理银行,软件工程师也不在软件上做工程。他们开发软件,定制软件,通常随意性很大,对所谓的操作范围、公差、故障率、压力条件等没有明确的度量标准。的确,我们的系统有这些标准,但这些标准不是为软件编码准备的。我曾到一个工程学校进修过。我的朋友当中也有很多是电力、基建、航空、机械等方面的工程师。工程师做的项目,其建造模块和建筑流程都经过了很好的定义和提炼,而且都是可预测的。虽然有时候为了达到客户的要求需要一个优雅的设计,像写小说一样把各个模块创造性地组合在一起,但最标新立异的建筑也会符合一定的公差要求,并且具有严格的可控质量和功能。但对软件开发来说,情况就不一样了,尽管很多人竭力想让这两者达成一致。软件的各个构造模块太底层了,变数太多。它们之间的交互影响太难预料了。像Windows、Office、VisualStudio、MSN等大型软件系统的复杂度,已经远远超过了工程的正常范围,以至于哪怕只在这些系统中做微小的功能改动,也无法粗略估计出这些改动所引起的“平均失效时间”。因此无论好坏,还是抛开痴心妄想和崇高理想,回到现实中来吧!我们必须承认,我们是开发者,而不是工程师。我们不能奢望轻易得到传统的工程领域积累了成百上千、甚至成千上万年的经验才能做到的“可预测性”。这无异于我们奢望:不跟电脑说什么,而电脑却能按照我们心里的想法去做事。我们还办不到!作者注:在我写下这个栏目6年后的今天,微软已经对其很多软件进行了“平均失效时间”的评估。除此之外,把编程当作工程看待的各种方法也逐渐出现了。这个我会在第5章的“软件发展之路”栏目中再次介绍。纵然如此,我仍然认为本栏目很好地见证了软件开发作为一个领域,他已经走过了幼年,但跟他早已长大成人的传统工程兄弟相比,他还只是个10几岁的小朋友的现状。

编辑推荐

《代码之道》是《代码大全》姊妹篇!是微软公司内部所有工程师的必读之书!了解未经掩饰的真相:怎样提高软件的质量和价值,从设计到安全;怎样切合实际地管理项目的时间表、风险和规范书,怎样为常见的低效率开发瘦身,怎样应用过程改进方法、避免固执盲从,怎样驱动一个成功的、令你自己满意的职业生涯,怎样不变成暴君、发展并管理一个欣欣向荣的团队!

图书封面

图书标签Tags

评论、评分、阅读与下载


    代码之道 PDF格式下载


用户评论 (总计25条)

 
 

  •   微软质量管理部门资深员工的鲜活观点,值得一读。
  •   51节看完了,很不错的书,不像教科书,但是作者的观点和见解的确让人启发,从事软件行业的人都可以参考借鉴。很不错的书。推荐大家都去看看。
  •   一本可以提高自身水平的书,能帮你更透切看东西
  •   帮同事买的所以不了解大概的内容
  •   以前买的那本丢了,再买一本
  •   由于没时间,书刚到。随意翻了两页,应该还可以吧
  •   由于没时间,书刚到。随意翻了两页,应该还可以吧!有机会好好读读。多读书,我想是应该有益处的吧!开卷有益啊!
  •   书的内容不错,很有启发,但是翻译太糟糕了
  •   书刚到,还没来得及看,随手翻了下,是我想看的内容。
  •   没具体看,纸质可以,
  •   但是有点冒进
  •   书的内容比较实在的反应出软件开发的各项注意问题,但感觉书里面的语句翻译得不太好,不够中国化。
  •   刨去对微软的适当吹捧,开发人员和PM都能在这本书里找到有用的信息,比如单元测试啊,团队合作啊,我觉得这是一本各取所需的书,可能不是整本书都适合你,个人觉得开发人员又兼管理任务的读者可以获得最多的信息量。另外,不是很难懂,适合任何时候阅读。
  •   翻译的确不是非常好,但是总体都能看的懂,毕竟英文同中文差别很大。但书的内容质量绝对一流,值得程序员到PM所有的人学习。。。
  •   不错的一本书,还在学习中,比较深奥……但也能理解,支持……
  •   个人经验总结 要好好体会
  •   书的内容是不错。很有意思。让人一读就懂。。
  •   工作人员把发票搞错了,200多块的书,给我寄了一张另外公司的发票。打了N次电话都未能给解决。竟然还要求我把错误的发票用快递给公司寄过去,客服人员态度很蛮横。说是通过平信邮寄,至少也未见影,打电话回去确认,说已经邮了。无赖!真是垃圾。客服人员有二个是北京的,说话还带脏字。
  •   不错,但我还在初学
  •   不错,讲了不少东西,值得一看
  •   书的内容是非常好,就是翻译的时候本地化做的还有瑕疵,一些美式语言的翻译不够通俗,理解起来就有些难度。
  •   损有余而补不足。用在这里也未必是不合适。
  •   虽然名字是代码之道,其实应该是本写给管理者的书籍,而且里面的内容看似有趣其实很空洞,只能说还行,不合适开发人员
  •   看了前面几位的评论,决定说点公道话。这本书我没有全部看完,大概看了一半以上。个人认为,无论是开发人员还是测试人员,乃至PM,都有必要看看这本书,许多描述和当前开发状况及其相似,欣慰的是,书中也提出了相应的解决方法。所谓“飞猪”,书中有专门的注释,并不像大家想想的那样是胡乱翻译的。
  •   不知道原书质量怎么样。刚买了一本读了十几页之后,觉得翻译的很不好。
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7