《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. delphi窗体透明但上面的控件不透明怎么实现

    我不知道LAZARUS是什么玩意.纯用DELPHI的话.procedure TForm1.FormCreate(Sender: TObject);var mStyle, mExStyle: Longi ...

  2. FFT的应用

    FFT的应用 --讲稿 概述 FFT的模板很简单,大家都会背,于是出题的空间就在于建模了.FFT的题目难在建模,往往需要将问题抽象出来,经过一系列转化后得到乘积式的和,再赋予式子各个项的系数一定的意义 ...

  3. C/C++:Windows编程—调用DLL程序的2种方法(转载)

    文章为转载,原文出处https://blog.csdn.net/qq_29542611/article/details/86618902 前言先简单介绍下DLL.DLL:Dynamic Link Li ...

  4. [JZOJ 5814] 树

    题目:从u到v经过多少条边. 思路: 考虑他是怎么走的?? 从\(u\)到\(v\)一定是\(fa[u]\),\(fa[fa[u]]\),反正就是走\(LCA\),那么如果算出每个点到父亲的期望步数, ...

  5. flutter 死亡红屏 隐藏

    当组件报错的时候会出现红屏现象,解决办法是覆盖原有的ErrorWidget 用一个空白的组件去替换它 1.main.dart中进行修改 新增覆盖代码: void setCustomErrorPage( ...

  6. POJ3241 最小曼哈顿距离生成树 - 真有趣哇

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  给你n个坐标, ...

  7. MDK(KEIL) 两步解决 中文乱码 及 中文光标 半个半个跳的问题

    1. 如果已经用MDK(KEIL)的默认设置写了好多中文,那么先用notepad把文件一一打开然后转变编码格式为 utf-8 without ROM,如下: 2. 如果还没有开始编辑,或者已经用not ...

  8. 手机网站Meta的使用

    meta指元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. 标签位于文档的头部,不包含任何内容. 标签的属性定义了与文档相关联的名称/值对. ...

  9. SpringBoot-集成PageHelper5.1.2踩坑

    背景就不介绍了,项目是SpringBoot+MyBatis搭建的,需要集成git上的PageHelper5.1.2,这个插件大家都比较熟悉了 之前一直用的PageHelper4.0.3,集成是这样的: ...

  10. 未知高宽的div在其父级div中垂直居中显示

    (一)如果已知子div的高宽 .father { position: relative; } .child { width: 100px; height: 80px; position: absolu ...