《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. CF601C Kleofáš and the n-thlon(期望+前缀和优化dp)

    传送门 解题思路 要求这个人的排名,我们可以先求出某个人比他排名靠前的概率,然后再乘上\(m-1\)即为答案.求某个人比他排名靠前可以用\(dp\),设\(f[i][j]\)表示前\(i\)场比赛某人 ...

  2. Java-Class-C:org.springframework.http.MediaType

    ylbtech-Java-Class-C:org.springframework.http.MediaType 1.返回顶部 1.1. /* * Copyright 2002-2018 the ori ...

  3. IDEA web 开发环境搭建

    最近由eclipse 换 IDEA ,记录下开发环境的搭建过程. 1 配置idea vim 既可以使用IDEA方便的代码提示和调试功能,又可以方便使用vim编辑文件,安装完成后显示为vim Emula ...

  4. 中断控制及basepri 与 basepri_max

    1.总开关 每个CPU有一个中断总开关.通过CPU中断控制寄存器实现.Cortex-M的中断控制寄存器包括:FAULTMASK.PRIMASK.BASEPRI.BASEPRI_MAX.总开关的本质是变 ...

  5. CodeForces 1152D Neko and Aki's Prank

    说明 Catalan(i) 表示卡特兰数的第 i 项. 题目链接:http://codeforces.com/problemset/problem/1152/C 题目大意 有 n 个左括号和 n 个右 ...

  6. VS新建工程或者新建项时 出现未定义标识符号

    VS新建工程或者新建项时 出现未定义标识符号,编译之后不影响运行,但是看着很不舒服,影响效率. 解决办法:属性--->VC++目录-->包含目录-->编辑,将自己所用QT的inclu ...

  7. java程序——CPU过高100%及内存泄露排查

    CPU过高 这类问题可以使用 top 命令观察一些,CPU 是不是都被 Java 程序占用了.比如下面这个截图: 服务器的 CPU 大多都被 Java 占用了.这正是我们之前生产上 CPU 过高的一个 ...

  8. Jedis整合单机、Sentinel和Cluster模式

    配置文件和配置类 @Data @Configuration @ConfigurationProperties("jedis-config") public class JedisC ...

  9. 随笔-ansible-4

    触发器: 一个任务同时调用多个触发器: 为远程主机上的用户设置环境变量: 保存前一步命令的输出结果,并保存到foo中: 添加环境变量的另一种方式: 注意:lineinfile模块只适用于修改少量环境变 ...

  10. (二十三)Http请求的处理过程