`
qsbj84qsbj
  • 浏览: 13358 次
社区版块
存档分类
最新评论

《高效程序员的45个习惯――敏捷开发修炼之道》 读书笔记(三)

 
阅读更多

《高效程序员的45个习惯――敏捷开发修炼之道》 读书笔记(三)
2011年02月13日
  《高效程序员的45个习惯――敏捷开发修炼之道》 读书笔记(三)
  读书笔记2011-02-13 03:46:11阅读0评论0  字号:大中小 订阅 第三章    学无止境
  即使你已经在正确的轨道上,但如果只是停止不前,也仍然会被淘汰出局。
  ――Will Rogers
  习惯五:跟踪变化
  BEAST:“软件技术的变化如此之快,势不可挡,这是它的本性。继续用你熟悉的语言做你的老本行吧,你不可能跟上技术变化的脚步。”
  ANGEL:“跟踪技术变化。你不需要精通所有技术,但需要清楚知道行业的动向,从而规划你的项目和职业生涯。”
  “唯有变化是永恒的。”
  如果只是掌握了工作中需要的技术并不够。那样的工作也许几年之后就不再有了――它会被外包或者会过时,那么你也将会出局。
  如何才能跟上技术变化的步伐呢?下面是一些建议。
  迭代和增量式的学习。每天计划用一点时间来学习新技术,它不需要很长时间,但需要经常进行。记下那些你想学习的东西。然后在计划的时间中深入研究它。
  了解最新行情。阅读社区讨论和邮件列表,可以了解其他人遇到的问题,以及他们发现的很酷的解决方案。选择一些公认的优秀技术博客,经常去读一读,以了解那些顶尖的博客作者们正在关注什么。
  参加本地的用户组活动。
  参加研讨会议。
  如饥似渴地阅读。找一些关于软件开发和非技术主题的好书,也可以是一些专业的期刊和商业杂志,甚至是一些大众媒体新闻。
  切身感受
  你能嗅到将要流行的新技术,知道它们已经发布或投入使用。如果必须要把工作切换到一种新的技术领域,你能做到。
  平衡的艺术 许多新想法从未变得羽翼丰满,成为有用的技术。即使是大型、热门和资金充裕的项目也会有同样的下场。你要正确把握自己投入的精力。
  你不可能精通每一项技术,没有必要去做这样的尝试。只要你在某些方面成为专家,就能使用同样的方法,很容易地成为新领域的专家。
  你要明白为什么需要这项新技术――它试图解决什么样的问题?它可以被用在什么地方?
  避免在一时冲动的情况下,只是因为想学习而将应用切换到新的技术、新的框架或者新的语言。在做决策之前,你必须评估新技术的优势。开发一个小的原型系统,,是对付技术狂热者的一剂良药。
  习惯六:对团队投资
  BEAST:“不要和别人分享你的知识――自己留着。你是因为这些知识而成为团队中的佼佼者,只要自己聪明就可以了,不用管其他失败者。”
  ANGEL:“提供你和团队学习的更好平台。通过午餐会议可以增进每个人的知识和技能,并帮助大家聚集在一起进行沟通交流。唤起人们对技术和技巧的激情,将会对项目大有裨益。”
  团队中的开发者们各有不同的能力、经验和技术。每个人都各有所长。不同才能和背景的人混在一起,是一个非常理想的学习环境。
  在一个团队中,如果只是你个人技术很好还远远不够。如果其他团队成员的知识不够,团队也无法发挥其应有的作用:一个学习型的团队才是比较好的团队。
  如果你参加了一个课程或者研讨班之后,所学的知识如果不用,往往就会忘记。所以,你需要和其他团队成员分享所学的知识,把这些知识引入团队中。
  找出你或团队中的高手擅长的领域,帮助其他的 团队成员在这些方面迎头赶上。
  每个人都比你厉害吗?嗯,那太好了!
  著名的爵士吉他手Pat Methany说过这样一句话:“总是要成为你所在的那个乐队中最差的乐手。如果你是乐队中最好的乐手,就需要重新选择乐队了。我认为这也适用于乐队之外的其他事情。”
  为什么是这样呢?如果你是团队中最好的队员,就没有动力继续提高自己。如果周围的人都比你厉害,你就会有很强的动力去追赶他们。你将会在这样的游戏中走向自己的顶峰。
  切身感受
  这样做,会让每个人都觉得自己越来越聪明。整个团队都要了解新技术,并指出如何使用它,或者指出需要注意的缺陷。
  平衡的艺术 读书小组逐章一起阅读一本书,会非常有用,但是要选好书。
  不是所有的讲座都会引人入胜,有些甚至显得不合时宜。不管怎么样,都要未雨绸缪。诺言在建造方舟的时候,可并没有开始下雨,谁能料到后来洪水泛滥呢?
  尽量让讲座走入团队中。如果午餐会议在礼堂中进行,有餐饮公司供饭,还要使用幻灯片,那么就会减少大家接触和讨论的机会。
  坚持有计划有规律地举行讲座。持续、小步前进此案时敏捷。稀少、间隔时间长的马拉松式会议非敏捷也。
  如果一些团队成员因为吃午饭而缺席,用美食引诱他们。
  不要局限于纯技术的图书和主题,相关的非技术主题(项目估算、沟通技巧等)也会对团队有帮助。
  午餐会议不是设计会议。总之,你应专注讨论那些与应用相关的一般主题。具体的设计问题,最好是留到设计会议中去解决。
  习惯七:懂得丢弃
  BEAST:“那就是你一贯的工作方法,并且是有原因的。这个方法也很好地为你所用。开始你就掌握了这个方法,很明显它就是最好的方法。真的,从那以后就不要在改变了。”
  ANGEL:“学习新的东西,丢弃旧的东西。在学习一门新技术的时候,要丢弃会阻止你前进的就习惯。毕竟,骑车要比马车车厢强得多。”
  敏捷 的根本之一就是拥抱变化。既然变化是永恒,你就不可能一直使用相同的技术和工具。
  Expensive mental models aren't discarded lightly 根深蒂固的习惯不可能轻易地就丢弃掉 在学习一门新技术的时候,多问问自己,是否把太多旧的态度和方法用在了新技术上。学习面向对象编程和学习面向过程编程是截然不同的。
  打破旧习惯很难,更难的是自己还没意识到这个问题。丢弃的第一步,就是要意识到你还在使用过时的方法,这也是最难的部分。另一个难点就是要做到真正地丢弃旧习惯。
  切身感受
  新技术会让人感到有一点恐惧。你确实需要学习很多东西。已有的技能和习惯为你打下了很好的基础,但不能依赖它们。
  平衡的艺术 沉舟侧畔千帆过,病树前头万木春。要果断丢弃就习惯,一味遵循过时的旧习惯会危害你的职业生涯。
  不是完全忘记就到习惯,而是只在使用适当的技术才使用它。
  对于所使用的语言,要总结熟悉的语言特性,并且比较这些特性在新语言或新版本中有什么不同。
  习惯八:打破砂锅问到底
  BEAST:“接受别人给你的解释。别人告诉你问题出在了什么地方,你就去看什么地方。不需要再浪费时间去追根究底。”
  ANGEL:“不停地问为什么。不能只满足于别人告诉你的表面现象。要不停地提问直到你明白问题的根源。”
  当你受到那些压力的时候,也许会觉得受到了威胁,不想去深入了解问题,而且别人告诉你的已经够深入了。然而,为了解决问题,你需要很好地了解系统的全局。你需要查看所有拟认为和问题相关的部分――及时其他人觉得这并不相干。
  在计算机世界中,有很多问题都会影响你的应用系统。为了解决问题,你需要知道许多可能的影响因素。当找人询问任何相关的问题是,让他们耐心地回答你的问题,这是你的职责。
  切身感受
  这就好比是从矿石中采掘贵重的珠宝。你不停地筛选掉无关的物质,一次比一次深入,直到找到发光的宝石。你要能感觉到真正地理解了问题,而不是只知道表面的症状。
  平衡的艺术 你可能会跑题,问了一些与主题无关的问题。就好比是。如果汽车启动不了,你问是不是轮胎出了问题,这是没有任何帮助的。问“为什么”,但是要问到点子上。
  当你问“为什么”的时候,也许你也会被反问:“为什么你问这个问题?”在提问之前,想好你提问的理由,这会有助于你问出恰当的问题。
  “这个,我不知道”是一个好的起点,应该有此进行更进一步的调查,而不应该在此戛然而止。
  习惯九:把握开发节奏
  BEAST:“我们很长时间没有进行代码复审,所以这周会复审所有的代码。此外,我们也要做一个发布计划了,那就从星期二开始,用3周时间,做下一个发布计划。”
  ANGEL:“解决任务,在事情变得一团糟之前。保持事件之间稳定重复的间隔,更容易解决常见的重复任务。”
  在许多 不成功的项目中,基本上都是随意安排工作计划,没有任何的规律。那样的随机安排很男处理。你根本不知道明天将会发生什么。
  很多敏捷实践必须一直进行,它贯穿于项目的整个生命周期。有人说,上帝发明了时间,就是为了防止所有事情同时发生。因此我们需要更具远见,保持不同的开发节奏,这样敏捷项目的所有事情就不会突然同时发生,也不会随机发生,时间也不会不可预知。
  时间盒
  敏捷开发者可以从多方面得到反馈:用户、团队成员和测试代码。这些反馈会帮助你驾驭项目。但是时间本身就是一个非常重要的反馈。
  许多的敏捷技巧来源于时间盒――设定一个短时的期限,为任务设定不能延长的最终期限。你可以选择放弃其他方面的任务,但是最终期限是不变的。你可能不知道完成所有的任务需要多少个时间盒,但每个时间盒必须是短期的、有限的、并且要完成具体的目标。
  当你遇到艰难抉择的时候,固定的时间期限会促使你做决定。你不能再讨论或功能上浪费很多时间,这些时间可以用于具体的工作。时间盒会帮助你一起前进。
  鲨鱼必须不停地向前游,否则就会死亡。在这方面,软件项目就像是鲨鱼,你需要不停地前进,同时要清楚自己的真实进度。
  最大的节拍就是迭代时间,一般是1~4周的时间。不管你的一个迭代是多长,都应该坚持――确保每个迭代周期的时间相同很重要。运用有规律的开发节奏,会更容易达到目标,并确保项目不停止前进。
  切身感受
  项目开发需要有一致和稳定的节奏。编辑,运行测试,代码复审,一致的迭代,然后发布。如果知道什么时候开始下一个节拍,跳舞就会更加容易。
  平衡的艺术 在每天结束的时候,测试代码,提交代码,没有残留的代码。
  不要搞得经常加班。
  以固定、有规律的长度运行迭代。也许刚开始你要调整迭代的长度,找到团队最舒服可行的时间值,但之后就必须要坚持。
  如果开发节奏过于密集,你会精疲力竭的。一般来说,当与其他团队(或组织)合作时,你需要减慢开发节奏。因此人们常说,互联网时代发展太快,有害健康。
  有规律的开发节奏会暴露很多问题,让你有更多鼓起勇气的借口。
  就像减肥一样,一点点的成功也是一个很大的激励。小而可达的目标会让每个人全速前进。庆祝每一次难忘的成功:共享美食和啤酒或者团队聚餐。
  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics