《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.

最新文章

  1. css动画
  2. js基础3
  3. jquery 让滚动条处于div底部
  4. 移动应用开发测试工具Bugtags集成和使用教程
  5. zabbix 3.0 安装 ubuntu环境
  6. response的outputStream输出数据的问题
  7. SQL复制一个表的数据到另一个表
  8. Python安装、配置图文详解(转载)
  9. cocos基础教程(10)纹理缓存技术
  10. cc代码学习笔记1
  11. 第五章 体验Qt Creator的神奇魅力
  12. winform Execl数据 导入到数据库(SQL) 分类: WinForm C# 2014-05-09 20:52 191人阅读 评论(0) 收藏
  13. COJN 0484 800502电池的寿命
  14. android 通过代码设置drawableLeft
  15. echarts 地图与时间轴混搭
  16. 如何直观的解释back propagation算法?
  17. HDU 4612 Warm up(双连通分量缩点+求树的直径)
  18. perf学习-linux自带性能分析工具
  19. 关于Lumen / Laravel .env 文件中的环境变量是如何生效的
  20. Hadoop wordcount Demon

热门文章

  1. 牛客网 NOIP赛前集训营-普及组(第四场)C--部分和 (高维前缀和)
  2. UvaLive6893_The_Big_Painting
  3. Java设计模式(一)外观模式(门面模式)- 结构型模式
  4. 2016CCPC杭州现场赛 B-Bomb /// tarjan缩点
  5. c++ socket 出现绑定失败的一个特殊原因。Bind failed Error:10049
  6. SpringMVC向前台传输 JSON数据
  7. 结对编程收获-Core10组-PB16110698
  8. ctx.beginPath()开始新路径
  9. CI的session操作
  10. windows安装cygwin实现gcc/g++/linux操作等功能