程序员的职业素养

出版时间:2012-9  出版社:人民邮电出版社  作者:Robert C.Martin  页数:178  译者:章显洲,余晟  
Tag标签:无  

前言

1986年1月28日,美国东部时间上午11:39,“挑战者”号航天飞机在发射仅73.124秒后,因右侧固体火箭推进器的故障,在4.8万英尺的高空化成碎片。七名航天勇士魂断苍穹,其中包括高中教师克丽斯塔·麦考利芙。麦考利芙的母亲亲眼目睹女儿在九英里高空中不幸罹难,彼时彼刻她脸上的表情,至今印刻在我的心头无法拂去。挑战者号之所以解体,是由于高热气体从出现故障的固体火箭推进器的外壳接缝处泄露出来,喷到外部燃料舱体上。主液氢燃料舱底部发生爆炸,液氢被点燃,并将液氢燃料推入上方的液氧燃料舱中。与此同时,固体火箭推进器从下支架脱落,开始绕上支架滚动。推进器的机头捅破了液氧舱。整个飞行器因异常受力,逆向气流旋转,但同时仍然以1.5马赫的速度飞行。在巨大的过载下,挑战者号迅速被撕成碎片。在火箭推进器的圆形接缝处,有两个由合成橡胶制成的同心密封圈。当壳体通过螺栓连接在一起时,密封圈被压缩,起到密封作用,确保气体不会从接缝处逸出。但在发射前夜,发射台气温降到了17华氏度 ,比密封圈的最低承限温度低了23度,比以往发射气温低了33度。这个气温下的密封圈已经硬得失去了弹性,无法很好地密封高热气体。推进器点火后,高热气体迅速累积,对壳腔形成了瞬间压力脉冲。助推器壳体向外膨胀开来,密封圈受到的压力变小。硬化的密封圈无法保持密封,一些高热气体就泄漏出来,并且将密封圈中70多度的弧形范围都气化了。设计了推进器的莫顿·赛奥科公司的工程师事前已经知道密封圈有问题,并早在7年前就已经将这些问题报告给莫顿·赛奥科公司和美国宇航局的管理人员。事实上,在以前的发射中,密封圈就曾发生过类似的损坏,只是没有引发灾难而已。发射气温越低,后果就越严重。工程师们已经针对该问题设计了一个修复方案,但修复方案却迟迟未得以实施。工程师们知道密封圈在低温的时候会硬化。也知道挑战者号发射时的气温比以往任何一次发射时的都要低,远低于红色警戒线。简而言之,这次发射的风险太高了,他们不能对危险视而不见。于是他们写了备忘录,发出高危预警信号。他们强烈要求赛奥科公司和美国宇航局的管理人员们取消此次发射任务。在临发射数小时前所开的紧急会议上,这些工程师展示了最有说服力的数据。他们摆事实,讲道理,软硬兼施,拒不执行这次发射任务。但最后,管理人员们对此还是无动于衷。发射时,一些工程师不忍观看现场直播,因为他们担心发射台上会发生爆炸惨剧。但是,随着挑战者号优雅升空,他们开始有点放松下来了。就在挑战者号解体前的瞬间,看着飞行器已经迈过1马赫的关口时,一位工程师还说他们已经“躲过一劫”。管理人员们听不进去工程师们的抗议,也不看备忘录,更没有命悬一线的危急感。他们认为自己更了解情况,认为工程师们小题大做了,他们不相信工程师们的数据和结论。他们之所以进行这次发射任务,是因为面临着很大的财务和政治压力。他们对此心存侥幸,希望一切都能平安无事。这些管理人员不只是愚蠢至极,他们是在草菅人命。他们以为自己才是专家,他们的恐惧、希望和直觉才是准的。恰恰是因为他们的自以为是,七名优秀宇航员的生命以及一代人对太空旅行的梦想,都在那个寒冷的早晨一起灰飞烟灭了。他们篡夺了真正了解情况的工程师们的权力。而那些工程师呢?当然,工程师做了他们应该做的事情。他们通知了管理人员,并且极力捍卫自身立场。他们经由适当的渠道,调用了所有合适的沟通协议。他们做了在体系内力所能及的事情,只是最后不得不听从领导的决定。因此,看起来工程师可以毫无愧意地置身事外了。但是,我不知道那些工程师之中,是否有人会躺在床上夜不能寐,眼前浮现克丽斯塔·麦考利芙母亲脸上的惨痛表情,为之前没有给丹·拉瑟 打电话而悔恨不已。关于本书这本书主要阐述软件开发者的专业精神。书中包含了许多实务性的意见,试图回答诸如以下的问题:· 什么是软件专业人士?· 软件专业人士如何行事?· 软件专业人士如何处理冲突,应对很紧的工期,如何和不切实际的管理人员打交道?· 软件专业人士何时应该说“不”?怎么说?· 软件专业人士如何应对压力?你还会发现,在本书的实务性意见背后,隐隐体现出一种奋力突破的积极态度。这种态度提倡要诚信,要富有荣誉感、自尊心和自豪感,要勇于承担作为一名手艺人和工程师所肩负的重大责任。这种责任包括要努力工作,出色完成任务;要擅于沟通,能够就事论事;要管理好时间,能够坦然面对艰难的“风险回报”决策。除此之外,这种责任之中还包括神圣的使命感。身为一名工程师,你比任何管理者可能都了解得更透彻。了解这些也意味着你肩负着要敢于行动的重大责任。参考文献[McConnell87]:Malcolm McConnell, Challenger “A Major Malfunction”, New York, NY: Simon & Schuster, 1987[Wiki-Challenger]:“Space Shuttle Challenger disaster,”http://en.wikipedia.org/ wiki/Space_Shuttle_Challenger_disaster

内容概要

  《程序员的职业素养》是编程大师Bob大叔40余年编程生涯的心得体会, 讲解成为真正专业的程序员需要什么样的态度、原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来人引路,助其职业生涯迈上更高台阶。  《程序员的职业素养》适合所有程序员,也可供所有想成为具备职业素养的职场人士参考。

作者简介

Robert C. Martin是软件工程领域的大师级人物,设计模式和敏捷开发运动的主要倡导者之一,曾经担任C++ Report杂志主编多年。Robert C. Martin的Agile Software Development: Principles, Patterns, and Practices一书曾荣获Jolt大奖。

书籍目录

第1章 专业主义 1.1 清楚你要什么 1.2 担当责任 1.3 首先,不行损害之事 1.3.1 不要破坏软件功能 1.3.2 不要破坏结构 1.4 职业道德 1.4.1 了解你的领域 1.4.2 坚持学习 1.4.3 练习 1.4.4 合作 1.4.5 辅导 1.4.6 了解业务领域 1.4.7 与雇主/客户保持一致 1.4.8 谦逊 1.5 参考文献 第2章 说“不” 2.1对抗角色 2.2高风险时刻 2.3要有团队精神 2.3.1试试看 2.3.2消极对抗 2.4说“是”的成本 2.5如何写出好代码 第3章说“是” 3.1承诺用语 3.1.1识别“缺乏承诺”的征兆 3.1.2真正的承诺听起来是怎样的 3.1.3 总结 3.2学习如何说“是” 3.2.1 “试试”的另一面 3.2.2 坚守原则 3.3结论 第4章编码 4.1做好准备 4.1.1 凌晨3点写出的代码 4.1.2焦虑时写下的代码 4.2流态区 4.2.1 音乐 4.2.2 中断 4.3 阻塞 4.4调试 4.5保持节奏 4.5.1知道何时应该离开一会 4.5.2开车回家路上 4.5.3 洗澡 4.6进度延迟 4.6.1期望 4.6.2盲目冲刺 4.6.3加班加点 4.6.4交付失误 4.6.5定义“完成” 4.7帮助 4.7.1帮助他人 4.7.2接受他人的帮助 4.7.3 辅导 4.8参考文献 第5章测试驱动开发 5.1此事已有定论 5.2 TDD的三项法则 5.3 TDD的优势 5.3.1 确定性 5.3.2缺陷注入率 5.3.3 勇气 5.3.4 文档 5.3.5设计 5.3.6、专业人士的选择 5.4 TDD的局限 5.5参考文献 第6章练习 6.1 引子 6.1.1 10的22次方 6.1.2转变 6.2编程柔道场 6.2.1 卡塔 6.2.2瓦萨 6.2.3 自由练习 6.3 自身经验的拓展 6.3.1 开源 6.3.2 关于练习的职业道德 6.4结论 6.5参考文献 第7章验收测试 7.1需求的沟通 7.1.1过早精细化 7.1.2迟来的模糊性 7.2验收测试 7.2.1 “完成”的定义 7.2.2 沟通 7.2.3 自动化 7.2.4额外工作 7.2.5验收测试什么时候写,由谁来写 7.2.6开发人员的角色 7.2.7测试的协商与被动推进 7.2.8验收测试和单元测试 7.2.9 图形界面及其他复杂因素 7.2.10持续集成 7.3结论 第8章测试策略 8.1 QA应该找不到任何错误 8.1.1 QA也是团队的一部分 8.1.2需求规约定义者 8.1.3特性描述者 8.2自动化测试金字塔 8.2.1 单元测试 8.2.2组件测试 8.2.3集成测试 8.2.4 系统溺4试 8.2.5人工探索式测试 8.3结论 8.4参考文献 第9章时间管理 9.1 会议 9.1.1拒绝 9.1.2 离席 9.1.3确定议程与目标 9.1.4立会 9.1.5迭代计划会议 9.1.6迭代回顾和DEM0展示 9.1.7争论/反对 9.2注意力点数 9.2.1 睡眠 9.2.2咖啡因 9.2.3恢复 9.2.4肌肉注意力 …… 第10章 预估 第11章 压力 第12章 协作 第13章 团队与项目 第14章 辅导、学徒期与技艺 附录 工具

章节摘录

版权页:   插图:   这些终端由中断驱动。发送给终端的字符先保存在循环缓冲中。串Vl每发送完毕一个字符,便会释放一个中断信号,然后循环缓冲中的下一个字符便做好发送准备。 最后我们发现,终端僵死是由于管理循环缓冲的三个变量出现同步异常。不知道为什么会发生这种现象,但这至少是一个线索。在5千多行的监管代码中肯定有个bug,误操作了这些指针中的一个。 这个新发现也使得我们能够手工解除终端的僵死情况!我们可以使用检查器,将这三个变量重置为默认值,这时本来僵死的终端便会奇迹般地复活。最后我们写了一个小工具来检查所有的计数器是否一致,当发现不一致时便进行修复。一开始,当卡车司机工会的人打电话向我们报告说发生僵死情况时,我们会通过在前面板上敲击一个特定的“用户中断开关”来调用这个工具。后来,我们把这个工具改为每一秒自动跑一次。 差不多一个月后,僵死的问题不再出现,卡车司机工会的人终于可以专心工作了。偶尔某个终端会停滞半秒钟,但是系统的基础速度只有每秒30个字符,似乎没人注意到这个情况。 但是,为什么会出现计数器不一致的情况呢?那时刚好19岁的我决心要一探究竟。 监管代码此前是由Richard编写的,他当时已经离开公司去学校读书了。我们其他人没人熟悉那部分代码,因为之前Richard把那部分代码捂得死死的。那代码属于他,别人不能碰。但是现在Richard已经离职了,我便能扒开厚厚一摞代码清单,逐页细看。 系统中的循环队列使用的就是一个先进先出的数据结构,是的,也就是队列。应用程序会在队列的一端推入字符,直到队列满。当打印机已经准备好时,中断头会将队列另一端的字符弹出。当队列空的时候,打印机会停止工作。存在的bug会导致应用程序以为队列已满,但中断头却以为队列是空的。 中断头是在和其他代码不同的“线程”中运行的。因此,必须对中断头和其他代码都可以进行操作的计数器与变量做好保护,以防止发生同步更新操作。在这个案例中则意味着,任何其他代码在操作这三个变量前,必须先关闭中断。坐下来翻查代码时,我知道我要搜索的是那些在代码中触及了这些变量但却没有事先关闭中断的地方。 换做现在,搜寻的时候我们当然会使用各种强大的工具,找出代码中涉及这些变量的全部地方。几秒钟内便可以知道触及它们的每行代码。在几分钟内,我们便可以知道哪些代码没有事先关闭中断。但是那是1972年,那时我手上没有任何类似的工具可供使用,只能靠一双眼睛。

媒体关注与评论

“毫无疑问,Bob大叔的这本新作又一次抬高了专业程序员的门槛。在书中,他从交互管理、时间管理、压力管理、合作方法以及工具选择等诸多方面,阐述了他对一名专业程序员的期望。Bob并不囿于对TDD和ATDD的传授,他不仅解释了每一名自视为专业人士的程序员所需要知道的东西,而且指出了他们需要在历练尚浅的软件开发职业生涯中需要不断精进的内容。”—— Markus G·rtner,it-agile公司资深软件开发者“有一些技术书颇具启发和教益,有一些则读来轻松喜悦且富有趣味,但很少有技术书籍能够同时兼具所有这四个特色。我感觉Martin所有的书都可归入此列。本书也不例外。 阅读、学习和守持书中的教诲,你将可以信心满满地把自己训练为软件专业人士。”——George Bullock,微软公司资深程序经理“如果计算机科学学位要求有‘毕业后必读书单’,本书当在其列。在现实的职业生涯中,糟糕的代码不会因学期结束就此消失,程序员也不会因加班加点开夜车编码便可获得A级评分,而雪上加霜的是,你还必须抽出精力与人打交道。就算你是个编程高手,也并不一定就可以称为专业人士。本书描述了迈向专业程序员的修炼旅程……而且阅读起来确实异常有趣。”——Jeff Overvey,伊利诺伊大学厄本那-香槟分校“本书远不只是给出了一套规则或指导方针,它还包含了无数来之不易的智慧和知识,这些宝贵财富通常只有经历过多年的试错,历经由初级学徒修炼成为大师级工匠的整个过程才能获得。如果你期望自己能成为软件专业人士,那么本书不容错过。”——R.L. Bogetti·,Baxter Healthcare公司系统主设计师

编辑推荐

《程序员的职业素养》是编程大师 Robert C. Martin40余年编程生涯的心得体会, 讲解成为真正专业的程序员需要什么样的态度、原则,需要采取什么样的行动。Robert C. Martin以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来人引路,助其职业生涯迈上更高台阶。

名人推荐

Bob大叔的这本新作又一次抬高了专业程序员的门槛,指出了他们需要在历练尚浅的软件开发职业生涯中需要不断精进的内容。——Markus Gartner,it-agile公司资深软件开发者有一些技术书颇具启发与教益,有一些则读来轻松喜悦且富有趣味,但很少有技术书籍能够同时兼具所有这四个特色。我感觉Martin所有的书都可归入此列。——George Bullock,微软公司资深程序经理如果计算机科学学位要求有“毕业后必读书单”,本书当在其列。本书描述了迈向专业程序员的修炼旅程……而且阅读起来确实异常有趣。——Jeff Overvey,伊利诺伊大学厄本那-香槟分校如果你期望自己能成为软件专业人士,那么本书不容错过。——R.L.Bogetti,Baxter Healthcare公司系统主设计师

图书封面

图书标签Tags

评论、评分、阅读与下载


    程序员的职业素养 PDF格式下载


用户评论 (总计15条)

 
 

  •   作者写的是不错,但仅限于他在美国的环境,国内目前的环境按照他说的去做,恐怕处处得罪领导
  •   内容很喜欢,而且看起来是正版。很不错
  •   外国人写书的思路跟国人不太一样哦~
  •   适合休闲轻松的环境阅读。能有多少收获和感悟,全看自己~
  •   很多使用的东西,不只是技术,更是为人处事的艺术
  •   光看目录,我就觉得值得我一读了。+++++++++++++上星期天看完第一遍了,获益良多,接着要进行第二轮了,争取消化团队方面的思想,目前急需这方面的营养,如果你也有同等需求,推荐买本看看
  •   做技术的人都该看看。
  •   修炼内功必看的书籍。
  •   如题,非常值得一读。
  •   放在公司书柜,大家看了!
  •   比较实用,就是贵了点,然后有些可能不符合国情
  •   不是一本技术书籍,非常通俗易懂。从专业的角度,讲述该如何去使用技术。也讲述了许多有趣的故事。推荐所有程序员参读。
  •   期望太高了,比预想的内容少些
  •   程序员的职业素养
  •   我是一个程序员 哈哈
 

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

京ICP备13047387号-7