`
hzbook
  • 浏览: 259114 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

开发人员个人的敏捷实践指南

 
阅读更多


《敏捷技能修炼:敏捷软件开发与设计的最佳实践》推荐序(By 徐毅)

软件行业一直有这样的传说,认为同等经验的两个不同程序员,在效率和质量上可能会有10倍的差距。不同的说法很多,具体的倍数差距也各不一样,但都证明了一点,不同人的编程生产力确实存在着巨大的差距。而且,一般来说,那些在单位时间内能够写出更多代码的程序员,他们的代码质量相对更低且更容易出错。我们不由得要问,大家都是写代码的,造成如此巨大差距的原因何在?

俗话说“失之毫厘,谬以千里”,对于程序员这个职业来说,若失去良好的编程习惯,那么谬的就是效率、成效和质量。养成良好的编程习惯无比重要,而其中最重要的就是一定要有设计意识,好的程序员不仅仅只是意识低下的键盘、鼠标输入器,而是要将优秀的设计思想和对实现对象的理解融入其中,从而开发出高质量、简洁的代码。

本书的几位作者在书中和大家分享了他们高效软件开发的经验,给大家提供了4个撬动敏捷软件开发的“小舵板”:意图导向编程、分离构造与使用、测试先行,以及Shalloway原则。无须从一开始就考虑全盘实践所有的敏捷编码原则,只要从这些小细节入手,就能够逐渐地产生大变化。阿基米德曾说过,“给我一个支点,我就能撬动地球。”而这些小细节,就是敏捷程序员撬动高质量软件开发的支点。

不管读者是已经有多年的编程经验还是刚刚入行开始写代码,都可以从此书中有所收获。亡羊补牢为时未晚,现在开始永远都不迟。本书的内容也非常耐读易懂,4位作者就像是循循善诱的老师,带着大家一步一步地体会其中的实践过程。他们总是从一个具体的问题出发,讨论有哪些方法可以实现,使用“小舵板”的方式又有什么样的好处,而使用对比的方式则有助于大家加深对这些编码原则的理解。

文中绝大部分内容都是开发人员凭一己之力即可以做到的,只有ATDD和CI需要有其他同事和相应工具的支持才行,这意味着本书的确就是一部开发人员个人的敏捷实践指南。而根据“一万小时天才理论”的说法,任何人都得经过一万小时(即10年每天3小时)才能达到世界级水准。如果我说这本书能够帮助大家事半功倍可能略嫌夸张,但遵循作者们的建议,至少也能够少走弯路,按正常的速度成为高手。

近些年来,我一直在从事敏捷教练和顾问的工作,协助一些组织、部门、团队和个人使用敏捷方法和实践。在与软件开发中不同角色的交流合作中,在和不同的软件开发思想、方法论的实践者和积极推动者的交流中,我发现,IT行业其实相当“喜新厌旧”,各种新概念、新方法论、新思想层出不穷,而在这其中唯一不变的就是我们对高质量代码的追求。而这本书的内容,即便到了将来,敏捷可能不再热门的时候,也依然适用,因为它讲的就是如何写出高质量代码的技巧和习惯。

书写高质量代码,是每一个软件人的责任。如今有很多团队,他们耗费大量的时间纠缠于所谓的“遗留系统”,为其进行后续开发和维护。这一切都是代码质量低下惹的祸,不管是从创建代码的第一天起,还是在修改代码的每一次,软件缺陷就已经悄悄地扎下了根。其实代码就像是土壤,盐碱地里种不出好粮食,不勤耕细作同样也种不出好粮食,而这一切就需要我们能够了解土壤自身的情况以及耕种所需要顾及的各个方面。代码也一样,你熟悉你的代码吗?面对满目疮痍的遗留代码,你会拿着化肥、杀虫剂、催产素等一大堆化学制品往上面泼,只为了能够继续生产出“可运行”的产品功能吗?着手开发代码之前,你清楚它的脾性吗?知道种植庄稼需要什么样的环境和呵护吗?你会不断地甚至优先地进行检查吗?你会设立可视化手段持续地监控其健康指标吗?你会选择好的种子和作物吗?

当然,书写高质量代码也不仅仅是个人层面的事情,它也关系到组织和企业软件研发的延续性。铁打的营盘流水的兵,人员流动对企业来说是常事,而代码则屹立不动、不断延续,直到某一天产品也寿终正寝的时刻便化为灰烬。阅读和修改晦涩难懂的代码,总是比阅读、修改简单易懂的代码来得困难,耗时也更多,出错的概率也更高,这一切也都意味着更高的时间和资金成本。当然,除了可读性,代码的设计和结构也很重要,影响范围和效果也更大。

遇到丑陋的代码,我们的第一反应可能是躲避,也可能是“那就改掉呗”。然而,“冰冻三尺非一日之寒”,恶劣代码的形成也不是一朝一夕的,要扭转局面需要比制造局面更坚强的毅力。而在这一切背后,是人的习惯和思维定势,需要创建出一种鼓励产出优良代码、鼓励形成良好习惯的环境,从而培育出更良好的代码,维持可持续的研发速度,不为缺陷修复所累。每一位程序员都应该阅读此书,学习“小舵板”,持之以恒地磨练。研发经理也应该阅读此书,以此为标准,创造出所需的环境并鼓励团队和个人加以实践。

“己所不欲,勿施于人”,没有人愿意维护难以理解、难以修改、难以增加功能的代码,那么也应该所有人都努力督促自己不写出这样的代码。就让我们从现在开始,努力地写高质量代码吧!

徐毅
诺基亚敏捷及精益教练
Agile China 2012大会执行副
Scrum Gathering Shanghai 2011及2012核心组织者


-------------------------------------

《敏捷技能修炼:敏捷软件开发与设计的最佳实践》作者简介:


豆瓣收藏:http://book.douban.com/subject/11614307/

样章下载:http://vdisk.weibo.com/s/cJGU3

网店购买:【互动网】【当当网】【卓越网】【京东网

分享到:
评论

相关推荐

    敏捷软件测试:测试人员与敏捷团队的实践指南

    ### 敏捷软件测试:测试人员与敏捷团队的实践指南 在当今快速发展的信息技术领域,软件开发模式不断更新迭代,其中“敏捷开发”作为一种高效、灵活的方法论被广泛采纳。与此相适应,“敏捷软件测试”也随之兴起,...

    互联网软件研发敏捷实践指南文档

    **互联网软件研发敏捷实践指南** 敏捷软件开发方法论在互联网行业中广泛应用,因其高效灵活的特点而备受推崇。本指南旨在提供一套适用于互联网软件研发的敏捷实践流程,帮助团队更好地理解和实施敏捷开发,提升软件...

    敏捷开发,敏捷开发,敏捷开发,敏捷开发

    本书详细介绍了45个帮助开发人员提升效率的习惯、思想观念和方法,覆盖了软件开发的各个方面: 1. **敏捷——高效软件开发之道** - **敏捷开发的重要性**:敏捷开发的核心理念是快速响应变化而非遵循计划。这种...

    敏捷开发培训Agile DevelopmentPPT学习教案.pptx

    十二个原则进一步细化了如何实现这些价值,如频繁交付软件、接纳需求变更、商务人员与开发人员的协作、简化沟通、持续改进等。 此外,敏捷开发还遵循一些设计原则,例如单一职责原则(SRP)、开放封闭原则(OCP)、...

    2022企业级无代码应用开发实践指南.pdf

    【团队构建与角色】企业级无代码开发团队可以由现有的研发团队角色构成,如产品经理、需求分析师、开发人员、测试人员等,他们利用已有的软件研发经验和业务理解,快速适应无代码开发。这种转变不仅有助于个人技能...

    敏捷软件开发 英文版

    - **不可知性**:软件开发过程中遇到的问题往往具有高度不确定性,这使得开发人员很难完全掌握项目的所有方面。 - **沟通障碍**:由于软件开发涉及多方面的技术和业务知识,团队成员之间在沟通时容易出现信息传递不...

    开发经理软件开发成功最佳练习指南

    通过深入理解和实践这些最佳实践,开发经理能够在软件开发过程中发挥关键作用,确保项目成功交付,同时提升团队的满意度和生产力。这份"开发经理软件开发成功最佳练习指南"无疑是他们提升专业能力的重要参考资料。

    敏捷开发原则

    4. **每日合作**:业务人员和开发人员必须相互合作,项目中的每一天都不例外。 - 加强团队内部及与客户的沟通。 5. **围绕动机的个人构建项目**:激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,...

    敏捷开发流程

    - **Scrum Master**: 监督敏捷实践的执行情况,帮助团队解决问题,促进团队协作,推动持续改进。 - **开发团队成员**: 执行具体开发任务,参与需求讨论和技术决策,保证代码质量和项目进度。 #### 四、开发流程...

    亚马逊-基于AWS的DevOps实践指南

    **DevOps**是一种文化和理念,强调软件开发人员与运维团队之间的紧密合作与持续沟通,其目标是缩短系统开发周期并提供高质量的软件和服务。它通过整合软件开发和IT运维的流程来实现这一目标,确保产品能够更快、更...

    跟我学企业敏捷开发1

    【跟我学企业敏捷开发1】是一本面向企业和个人的敏捷软件开发指南,旨在帮助新入职者和经验丰富的技术经理理解并实践敏捷开发方法,特别是Scrum框架。这本书由Larry Cai编写,采用Creative Commons Attribution-Non ...

    软件工程实践指南.pptx

    ### 软件工程实践指南知识点详述 #### 第1章 软件工程概述 **1.1 定义软件工程** - **定义:** 软件工程是一门研究和应用如何高效地构建和维护高质量软件的学科。 - **核心:** 结合计算机科学原理、工程实践方法...

    scrum敏捷软件开发方法介绍

    Scrum作为其中的一种框架,提供了具体的实践指南和角色定义,帮助团队高效地进行软件开发。随着软件行业的不断发展,敏捷开发方法已经成为了主流的选择之一,被广泛应用于各种规模和类型的项目中。

    Agile Scrum基础指南.pdf

    Scrum Master则需要有团队领导力、冲突解决和敏捷实践的专业知识。开发团队则需具备跨职能能力,能够独立和自组织地完成任务。 敏捷Scrum的实施还要求团队成员之间有高度的协作和沟通。团队必须能够自我管理,自主...

Global site tag (gtag.js) - Google Analytics