《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. bzoj3505: [Cqoi2014]数三角形 [数论][gcd]

    Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input 输入一行,包含两个空格分隔的正整数m和 ...

  2. maven+scala+idea 环境构建

    组建信息 组件 版本 下载地址 maven 3.6.1 https://maven.apache.org/ jdk jdk1.8.0 https://www.oracle.com/technetwor ...

  3. css中图片有缩放和转动效果

    现在html中利用div来包裹住一张图片. <div class="xuanzhuan"> <img src="images/top.png" ...

  4. 两个问题: 1、头文件重复包含 2、头文件加了ifndef条件预处理指令为什么还会定义

    第一个问题:编译时重定义 文件1.h void fun1(); struct A { int a char b; };   文件2.h #include"1.h" struct B ...

  5. 如何查看jdk版本和路径

    cmd进入命令提示符,查看jdk版本,输入java -version;查看jdk路径 ,输入set java home.,这个也是默认路径

  6. 使用R语言 SDK调取tushare数据

    安装Tushare 打开RStudio,在控制台输入命令: > install.packages('Tushare') Tushare的R包需要依赖httr.tidyverse.forecast ...

  7. Jmeter----函数助手参数化

    要填写开始日期和结束日期和赋值的变量名

  8. linux mysql主从复制配置

    1.设置主库master的servie-id值并且开启bin-log功能参数vi /etc/my.cnf修改my.cnf的参数:[mysqld]server-id=1 //每一个库的server-id ...

  9. [转]从客户端中检测到有潜在危险的 Request.Form 值。

    参考资料: ASP.NET 4.0中使用FreeTextBox和FCKeditor遇到安全问题警告的解决办法关于问题出现的原因说的很清楚 引言 本人在.NET 4.0+VS2010环境下调试一个ASP ...

  10. dev设置子窗体的初始位置,grid控件表头的属性设置

    当在父窗体上弹出子窗体时,一般设置子窗体的初始位置是居中, //在需要展示子窗体的父窗体上写这段,注意必须设置在show方法之前Form2 f2 = new Form2(); f2.MdiParent ...