`

持续改进-《高效程序员的45个习惯》读后感

阅读更多
原帖地址:http://www.cnblogs.com/huang0925/archive/2013/05/24/3096581.html
<article class="hentry" role="article"><div class="entry-content"> <p>原书标题为<a href="http://www.amazon.cn/mn/detailApp/ref=asc_df_B0033WSFAO622894/?asin=B0033WSFAO&amp;tag=douban-23&amp;creative=2384&amp;creativeASIN=B0033WSFAO&amp;linkCode=asn">《Practices of An Agile Developer》</a>。中文名为<a href="http://book.douban.com/subject/4164024/">《高效程序员的45个习惯-敏捷开发修炼之道》</a>。敏捷这个词已经烂大街了,关于敏捷的书籍俯拾皆是。很多人是敏捷的狂热粉丝,而另一些人却讨厌敏捷,认为只是个噱头。我觉得很可能的原因之一是敏捷这个名字没起好。它的原名为“轻量型软件开发过程”(”lightweight process”),但后来阴差阳错成了agile(敏捷)。</p> <!-- more --><p>既然书名是敏捷开发者的实践,那么就必须认识敏捷。只有深入的理解了这些实践的来源和目的,才能更好的践行甚至改进实践。</p> <p><strong>敏捷可以用一句话来概括:敏捷开发就是在一个高度协作的环境中,不断的使用反馈进行自我调整和完善,最终交付用户想要的软件。</strong></p> <p>从这句话中可以得出很多东西。</p> <h2>首先,项目适不适合敏捷有两个先决条件:</h2> <ol> <li><p><strong>项目是以价值为导向的。</strong>也就是整个团队有一个总体一致的目标,那就是产出高质量、高价值、符合用户需求的软件。以价值为导向,看似简单,实则很难,甚至某些时候要要求公司的组织架构做出一定的调整。试想在一个等级森严、官僚化严重、各种无谓的考评泛滥的公司,有多少人能静下心来好好的搞开发,搞产品?只有打造一个相对扁平的组织,给予充分的信任和自由度,才有利于敏捷的实施。这反过来又要求团队中的每个人有高度的自律性。</p></li> <li><p><strong>团队能够达到高度协作。</strong>必须能够保证团队中的成员能够流畅的交流。如果在团队中大搞一言堂,信息不透明,很容易打击团队人员工作的积极性,致使团队分崩离析。另外,客户也属于团队中的一员。我们做出的产品最终是给客户看的,如果客户不能保证与团队紧密的合作,那么很容易使产品偏离客户的期望,最终交付失败。</p></li> </ol> <h2>再次,可以看到敏捷的基础:反馈。</h2> <p>一旦你意识到走错了路方向,就要立即做出决策。举个例子,办公室另个团队给我们分享了这样一个故事。在项目刚开始时他们设计了叫做CoreService的类来封装所有的服务。随着项目的进行,CoreService类由于需要处理的服务越来越多,导致类越来越庞大。每个人在修改这个类时,写单元测试要建立对N个服务的mock,苦不堪言。问题在于,没人及时的提出这个bad smell,导致了人们花费了大量的时间来维护它。</p> <p>这说明了及时反馈的重要性。<strong>反馈包含提出反馈和接受反馈。</strong></p> <p><strong>提出反馈需要勇气和时机。</strong>要勇敢的提出自己的想法,这既需要自身具有对项目负责的精神,还要团队提供安全的环境。要及时的指出项目中不好的地方,千里之堤,毁于蚁穴。大灾难是逐步演化而来的,项目中切忌温水煮青蛙。</p> <p><strong>接受反馈需要气度和行动。</strong>这就要求团队成员做事要有专业的态度,对事不对人,重结果轻过程。同时要拿出具体的行动,否则很容易打击积极性。</p> <h2>其次,可以看到敏捷的精髓:拥抱变化。</h2> <p>软件开发行业是一个不停发展和永远变化的领域。现在没有将来也不会有一个人能够了解你的项目的方方面面。</p> <p>变化无处不在,这就要求我们不断的学习。而迭代和增量式的学习则不失为一个好办法。一个学习型的团队才是较好的团队。当然,在学习的同时,你也要懂得丢弃。打破旧习惯很难,更难的是自己还没意识到这个问题。丢弃的第一步,首先是意识到你还在使用过时的方法,这也是最难的部分。</p> <p>同时,变化意味着我们要主动应对。德国陆军元帅Helmuth von Moltke说过一句话“没有任何计划在遇敌后还能继续执行。”在软件开发中,我们可以这样理解,任何设计在开发中只是一个起点,它如何你的代码一样,会不停地进一步发展和提炼。</p> <h2>最后,敏捷的目的:交付用户想要的软件。</h2> <p>试想客户将需求交付给你,要你几年后交付系统。然后,你基于这些需求构建了系统并按时交付。客户看了软件以后连声称赞。从此你多了一个忠实客户,接着开心的投入到下个项目中。请问这样的事情在你的项目中发生过吗?</p> <p>通常情况是客户看到后暴跳如雷,这根本不是我想要的。这是因为用户的需要、技术和我们对需求的理解,都会随着时间的推移而变化。</p> <p>那么,如何解决这个问题那?方法之一就是采用敏捷的迭代式开发。每个迭代至少有两个活动不可或缺。一个是展示会议(show case),向客户展示目前的项目进展,已完成的功能,从而收集客户的反馈,即时对产品的方向做出调整。另一个是回顾会议(retro)。回顾会议则是提出反馈的一个好时机。通过回顾会议分析出这个迭代中的做的好的地方和不好的地方,并提出具体的改进行动。</p> <p>要将团队带入新的领域,必须首先要以身作则。我们需要的是领导者,而不是管理者。无论你目前的项目是否是敏捷项目,这本书中你都可以找到能够借鉴和提高的地方。敏捷中的持续改进不仅局限于项目开发,其实更适合于个人。通过持续改进自己的习惯、处事方法,保持一颗好奇心,勇敢的尝试未知领域,只要自己能力提高了,何惧其他?</p> <p>改变从自身做起,不能自暴自弃,而要奋起直追。</p> </div></article>

本文链接

分享到:
评论

相关推荐

    优秀程序员45个习惯

    这45个习惯覆盖了态度、学习、开发流程、用户、编程以及团队协作等多个方面,旨在帮助程序员成长为更高效、更优秀的专业人士。 1. **态度篇**: - **做实事**:解决问题,勇于承担责任,避免抱怨和指责。 - **...

    高效程序员的10个习惯

    ### 高效程序员的10个习惯 #### 一、对事不对人 在软件开发过程中,团队成员之间经常会因为设计方案、技术选择等方面的意见不合而产生冲突。这种情况下,很容易将注意力从问题本身转移到个人身上,导致原本的技术...

    怎么样培养高效程序员

    Phil Chu 提出的高效程序员的七个习惯是每位IT从业者应当关注和实践的。以下是对这些习惯的详细解析: 1. **理解你的需求**:正确理解和把握项目需求是避免浪费时间和资源的关键。快速建模和创建原型有助于快速验证...

    035-10x程序员工作法

    《035-10x程序员工作法》这个主题聚焦于高效编程实践,旨在帮助程序员提升工作效率,达成所谓的“10x程序员”水平。在软件开发领域,10x程序员通常指的是那些能以远超平均水平的效率完成工作的程序员。他们不仅能够...

    程序员的岗位职责

    - **开发和维护现有的网站程序**:持续改进现有系统的性能和稳定性,确保网站能够应对不断变化的市场需求。 - **技术支持、日常维护,服务器常规管理**:确保网站的平稳运行,及时处理各种技术故障,进行必要的...

    作一个真正合格程序员的七种素质

    程序员应该具备自我测试的习惯,即在编写完代码后主动进行单元测试和集成测试,以确保代码的质量。测试不仅包括功能测试,还包括性能测试、压力测试等多种类型的测试。通过全面的测试可以及早发现并解决问题,从而...

    一个程序员的自我修养(编程修养)

    ### 一个程序员的自我修养(编程修养) #### 1. 代码规范的重要性 - **背景**:在软件开发过程中,编写高质量、易于维护的代码至关重要。这不仅能够提高工作效率,还能减少错误的发生。 - **意义**:良好的编码...

    如何成为一个优秀的程序员

    如何成为一个优秀的程序员:深入解析与实践指南 在IT行业,成为一名优秀的程序员是众多技术追求者梦寐以求的目标。在《如何成为一个优秀的程序员》一文中,作者罗伯特·L·里德(Robert L. Read)列出了多达一百条...

    程序员日程规范.pdf

    - 强调持续改进的重要性。 4. **提升工作效率:** - 每天尝试提高一点点,长期坚持将显著提升效率。 - 举例说明:以每日1%的增长率计算,一年后效率将是原来的37倍。 5. **关注行业动态:** - 通过阅读新闻...

    编程修养-程序员不可或缺的书

    // 改进后的做法 int sum = 0; int n = 10; int nSquared = n * n; for (int i = 0; i ; i++) { sum += i * nSquared; // 避免重复计算 } ``` 通过减少循环内的计算量,可以提高程序的运行效率。 #### 13. 函数名...

    程序员思维修炼-英文版

    《程序员思维修炼》这本书主要探讨了如何提升软件开发者的思考和学习能力,这对于任何想要在IT行业中取得成功的人来说都是至关重要的。在这个快速发展的领域中,不断学习和适应新技能是保持竞争力的关键。以下是对该...

    java 程序员 开发 转正答辩 ppt

    根据提供的文件信息,我们可以提炼出以下相关知识点,主要聚焦于Java程序员在开发过程中经历的转正答辩准备,包括个人简介、工作回顾、项目流程分析、工作体会等方面。 ### 一、个人简介与工作回顾 #### 1.1 入职...

    对程序员的忠告 txt文档

    ### 对程序员的忠告 #### 1. 选择学习领域并持续扩展视野 在IT行业中,技术更新迭代迅速,作为程序员应该不断探索新的技术领域,拓宽自己的知识面。这意味着不仅要在现有的技能上深耕细作,还要时刻关注新技术的...

    程序员的思维修炼

    此外,书中还探讨了学习和持续改进的重要性。在快速变化的IT行业中,程序员需要保持学习新技能和新技术的热情,以适应不断发展的环境。这包括学习新的编程语言、框架、工具,以及了解软件工程的最佳实践。通过持续...

    程序员应具备的能力和素质.doc

    在软件开发过程中,持续改进和优化是必不可少的。同时,对软件工程原则的理解,如敏捷开发、测试驱动开发等,也是现代程序员应当掌握的技能。 总之,成为一名合格的程序员并不仅仅意味着编码技术的娴熟,更在于具备...

    程序员简历模板-单页单色108.docx

    良好的工作习惯,如撰写工作日志和总结经验,展示了持续学习和改进的决心,这对于在不断发展的IT行业中保持竞争力至关重要。 综上所述,即使非典型的程序员工作经历,也可以从中提炼出适应IT职位的技能和经验,如...

    每个程序员都应该知道的97件事

    ### 每个程序员都应该知道的97件事 #### 知识点一:行动谨慎(Act with Prudence) - **作者**:Seb Rose - **核心内容**:本章节强调了作为程序员,在做出决策时应该保持谨慎的态度。无论是编写代码、设计系统...

    程序员述职报告(15篇).docx

    - 通过阅读书籍如《细节决定成败》,程序员可以提升自己的思维方式和习惯,这直接影响到个人工作质量和效率。 3. **岗位职责与技能提升**: - 程序员的主要任务包括软件开发与测试,以及系统维护,这些都需要良好...

Global site tag (gtag.js) - Google Analytics