《Practices of an Agile Developer:Woring in the Real World》读书笔记

     本周我阅读了《高效程序员的45个习惯:敏捷开发修炼之道》(标题中书名的中文译名)一书,本书并未繁复啰嗦地具体告诉读者如何在软件开发的每一步中做到敏捷,而是从宏观层面介绍了成为高效开发人员需要具备的习惯、观念和思想方法。

所谓敏捷,书中有一句精辟概扩:“敏捷开发即在一个高度协作的环境中,不断地使用反馈进行自我调整和完善”。简而言之,敏捷开发意味着“小团队”“短周期”“尽全力”。以下我将从书中涉及的三个方面谈谈我的感想。

  1.      态度致胜:谦勇、好学与开放

敏捷开发中,心态至关重要。倘若一支团队里,成员们在出现问题后只是花费大量精力来弄清楚这是谁的错,而不是着力于解决问题,那么问题只会日益恶化。指责对于应对BUG毫无帮助,那么遇到问题时不妨直接动手解决它,而非厘清纷繁复杂的责任关系。在我过去的编程中,也时常遇到令人异常烦躁的bug,这时比起怨天尤人,乖乖设置断点来弄清楚问题所在并努力解决才是正道。同时,解决他人问题的时候应当保持谦逊,在指出问题的同时不刻意伤害、贬低他人。这一点可以说是语言的艺术,作为我院辩论队领队,我对此深有体会。在团队讨论时,尤其是带新人的时候,否定他人观点都很需要技巧。简而言之,对事不对人。当然,在发现问题或有异议时,也要勇敢地指出。开发如战场,排除万难、奋勇前进的觉悟是必需的。

好学,自不必说,是每一位开发者必备的态度。具体而言,要时刻关注技术变化,了解最新行情,积极阅读和参加各种活动,以保证不落后于时代。同时,在团队中勇于争先、积极共享知识、善于改变、打破砂锅问到底。关于学习的种种,作为学生的我们算是深有体会,而作为开发者,也应当具备这些素质。

开放,则意味着频繁的交流:于团队,于客户。当今时代是开源的时代,把自己的代码share出来而非敝帚自珍,无疑是更成熟的开发之道。开放的态度能让团队中成员对彼此负责的模块知根知底,对项目有宏观把控,益处无穷。而对于客户,积极地让他们了解软件开发进程、提供试用版来调研产品开发是否符合客户预期,才能做到高效而敏捷。闭门造车、故弄玄虚的结果往往是浪费时间精力、带来双输局面。

2.      实战为王:反馈、编码与调试

         反馈来源于多方面,最基本的是测试程序的反馈。编写单元测试对于简单代码来说似乎只是浪费时间,但对于需要复用、维护、集成的工程代码而言,不可或缺,自动化的单元测试如同高空作业中的安全带。在此之上,还要考虑不同环境之下代码的工作情况,随时编写发布文档来跟进代码进程,保证环境的及时反馈,而非在兼容性出现问题时才恍然大悟却为时已晚。做到这两条之后,还需要关注最关键的:用户的反馈。用户就是上帝,再完备优美的程序,若与用户需求相左,就几乎毫无价值。

编码的敏捷,大致如同《代码整洁之道》一书中所述,清晰明确的命名、适当的注释、“一个函数只做一件事”等等,在此不再赘述。

调试的秘诀在于“各个击破”。进行开发时,应当考虑到各种报错情况,程序测试时记录问题解决日志,时刻报告所有异常并提供有用的错误信息。这些举措虽然耗费时间,但避免了更大额的时间消耗,保证了代码的可维护性,较清晰的错误信息也能让客户在使用时了解具体出了什么问题,而非面对“闪退”无计可施。具体技巧有“二分查找”debug,抛出合理异常等等。

   3.      协作至上:合作、交流与管理

项目开发的成功与否,依赖于团队中的成员如何一起有效地工作、互动和如何管理他们的活动。正如《人月神话》中所言,“人”是软件开发中最为重要的元素,高效的协作是敏捷开发的基石。要做到这一点,首先要定期安排会面时间,保证持续而有效的沟通。其次,应做到“人人敲代码,代码为人人”,组中每个人都应该是代码开发者,每一份代码都应该在组内共享。这么做的目的显而易见:交流,协作,清晰,规避风险。最后,应注意代码复查和及时通报进展。一支具有活力的团队,应该随时报告进度,设定长短期目标并切实执行,经常检查组内代码的健壮性。

我的软工小组中,每周进行例会,小组成员分别担任前后端代码开发,使用github等工具保持代码共享和交流,设定前后端组长每周报告进度和安排任务。作为前端组长,我会努力学习敏捷团队管理所需的知识和方法,尽力让团队做到敏捷高效。

总而言之,通过对本书的阅读,我对敏捷开发有了初步的认知,也在一定程度上进行了编程实践,确实受益匪浅。在本学期的软工实践中,我会努力运用这些知识,做到敏捷开发、营造敏捷团队。在今后的编程实践中,我也会尽量使用敏捷的开发方式,调整心态、注重反馈、勤于交流,做一位敏捷开发者。

参考文献:

[1]Venkat Subramaniam.& Andy Hunt著 钱安川 郑柯 译 《敏捷开发修炼之道》 . 人民邮电出版社, 2014.10.

《Practices of an Agile Developer:Woring in the Real World》读书笔记 PB16110698(~3.22)第三周的更多相关文章

  1. 高效程序员的45个习惯·敏捷开发修炼之道(Practices of an Agile Developer)读书笔记

    首先,这本书值得再看一遍——这次的阅读,有很多东西都是知其“形”,不知其“神”的,这导致了我对其中某些建议持怀疑态度,接受了的建议也有待商榷. 总之,先记录本书的一些信息: Practices of ...

  2. 固定的价格就意味着背叛——《practices of an agile developper》

    “对这个项目,我们必须要有固定的报价.虽然我们还不清楚项目的具体情况,但仍要有一个报价.到星期一,我需要整个团队的评估,并且我们必须要在年末交付整个项目.” Venkat & Andy 提出了 ...

  3. 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

    问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...

  4. 敏捷软件工程(agile software development) VS传统软件工程(traditional software development)

    敏捷软件工程(agile software development) VS传统软件工程(traditional software development)      Agile principle  ...

  5. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  6. 【Mood-10】每个程序员都应该读的30本书

    “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...

  7. StackOverflow程序员推荐:每个程序员都应读的30本书

    “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...

  8. 书单BookList

    1. <代码大全> 史蒂夫·迈克康奈尔 (Code Complete) 2. <程序员修炼之道> Andrew Hunt [读过了,非常好的一本书] (Pragmatic Pr ...

  9. 【转】StackOverflow程序员推荐:每个程序员都应读的30本书

    “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...

随机推荐

  1. hive的数据压缩

    hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的MR ...

  2. USACO 06JAN 牛的舞会 洛谷2863

    题目描述 The N (2 <= N <= 10,000) cows are so excited: it's prom night! They are dressed in their ...

  3. NX二次开发-UFUN获取工程图详细信息UF_DRAW_ask_drawing_info

    NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <uf_part.h> UF_initialize ...

  4. CPUID 指令的使用

    使用 CPUID 指令可以从 processor 厂商里获得关于 processor 的详细信息,CPUID 指令是从 Intel 486 处理器以后开始加入支持. 1. 检测处理器是否支持 cpui ...

  5. Try running RemoteDll as Administrator

    在使用RemoteDll注入动态库的时候发现注入有的动态库会提示下面的错误, LoadLibrary on remote process [1968 - Explorer.exe] failed. T ...

  6. JVM虚拟机瓜分内存原则

    操作系统分配给每个进程的内存是有限制的,例如32位的Windows限制为2GB.虚拟机提供了参数来控制java堆和方法区(非堆)这两部分内存的最大值.则剩余的内存为2GB(操作系统限制)减去Xmx(最 ...

  7. Typora--终于找到一个能够解决将csdn文章同步到hexo的完美编辑器(解决csdn图片防盗链导致无法直接复制文章的问题)。

    文章目录 需求 背景 新宠 告诉我,我的名字叫什么?大声点我听不见~ 页面 神奇之处 看得见的优点 如何设置项目根目录 如何显示图片? 于是最终操作流程 个人博客:https://mmmmmm.me ...

  8. C#面向对象通信

    面向对象通信编程: 看起来像是调用本地的函数,就得到了结果: 实际上参数是传递到了远程机器上了,而函数也是在远程机器上运行的.

  9. kafka 入门

    李克华 云计算高级群: 292870151 195907286 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch  kafka入门:简介.使用场景.设计原理.主要配置及集群搭 ...

  10. 初学者学习PHP开发应该掌握的几段精华代码

    来自:http://hi.baidu.com/dckhello/item/d62b16d8994bf93449e1ddb0 经典循环例子 <HTML><HEAD><TIT ...