“自由与束缚的哲学统一”或许不该放到标题上去,毕竟它只是我灵光一闪的感悟。但这个spark让我感到高中到大学的哲学应该也没有白学,这是让人非常兴奋的一件事。

所以我还是把它放到了标题上。

来谈敏捷软件开发(Agile Software Development)。

由于在课堂上,老师已经介绍了敏捷开发、极限编程等概念,所以看到这些概念时,并没有过于激动。

但在了解这一开发方法产生的过程中,还是不由得想向用于叛逆于“繁文缛节”的人们致敬。

The Unpredictability of Requirements

看到对“需求的不可预见性”的认同,以及对“不可预见活动不能按照可预见活动的那套方式干活”的认定时,我实在是又激动又感动,还要表示深深的认同。因为它表述出了我苦恼了一学期才得出的结论“日常计划不能定的太死”。

我曾经一度将一周的课表打印出来,花两个小时的时间来填满课表上的每一个空位,甚至把睡眠的起始时间也固定其中,好让自己又踏实又满足。但实践的结果是,我总是被各种突如其来的事情打乱节奏,我还在想怎么去补昨天没完成的计划时,现在又因为一件急事要放弃当前的计划了。

这简直是最让人depressed的事情之一了。

能发现问题的所在实在是一件伟大的事:我们不能把土木工程的方法论拿到软件工程来用。

也即,我不能将不可预见的每周日程死死的写在课表上,还期望实现这一周的计划。

The Adaptive Customer

看到这里,我又要热泪盈眶了,因为这简直是血的教训啊——我曾自愿为我航某个亚洲级的辩论比赛做开幕式视频,连续工作17个小时连续工作做出了成果,最终却被“用户”嫌弃了。

我的“引以为豪”成了别人眼中的“不合适"。主办方也为我的工作没能一次通过而遗憾。

"There is nothing more frustrating to a developer than seeing their hard work go to waste."

最终解决这一问题的办法就是,我找到看我的视频不爽的人,一起工作,他想要什么样的我就给他做成什么样的。

适应性客户确实有助于提高软件开发的有效性。

我想我一定也是Agile Software Development的忠实用户者,因为自己用亲身体会验证了其观点的可贵。

Putting People First

这个想法非常有趣。

大家早都习惯了工厂式的工作方法,码农只是流水线上的一名工人,只需要完成某些相应的工作就好,就像软件工程中我们分PM,engineer,test三个部分一样,每个人只需要各司其职就好。可是这却忽略了非常重要的一点:软件开发是一件极富创造力与灵活性的活动。

深表赞同。

文章读到这里,我对所有敢于跳出当前窘境、站在更高层次看待问题的人产生了深深的敬意。

因为在大二下学期我们完成一门叫“面向对象建模”的课程时,老师要求我们先完成需求文档,再根据文档来完成我们的软件开发。而我们实际的过程是,先完成软件开发,再按照我们写好的软件去画UML图,去写各种需求分析,去设计测试用例等等。结果我们的文档写了70多页,想想如果先写70多页的文档再去开发软件,程序员早都没耐心了吧。

当时我们还在讨论“实际工作中一定也是这样,大家都是先开发再写文档”,却没有想到改变这一现状,只是觉得“要写文档?好吧我写。”

这种容易接受problem的态度真让人后怕。

联想到我们这次的软件工程小组的分工,其实还是认为每个人都是部件,而不是灵活具有创造力的软件开发人员。其实这也未尝不可,因为大家还没有到登峰造极的码神阶段。

另一方面,其实对整个队伍的分工进行设定其实也有其好处。“有序”在某些情况下,是可以保证高效的。

The Self-Adaptive Process

“The first part of self-adaptivity is regular reviews of the process.”

这一点又让我联想到自己惨不忍睹的时间管理经历。我试图review自己一周的时间开销,从而使得我对下一周的时间计划设定得更为合理。

但时间一下过去了两个小时……

所以写日记不是要所有事情都一点一点回顾然后记下来啊!所以review也一定要注重效率啊!

Should you go agile?

看完整个敏捷编程的叙述与思考,这个问题提的不能再好。是啊,我是否真的要用Agile Software Development?

回想一下敏捷编程的每个过程,灵活性,或者说对变化的适应性实在是太突出了。这种灵活会对实际的开发过程带来极大的不确定性,一定会影响整个项目的进展。

所以我们还得遵循敏捷编程的规则与价值观。

只有在一定的约束下,我们才能更自由。

【homework week5】初步了解敏捷开发——自由与约束的哲学统一的更多相关文章

  1. 20145205 《Java程序设计》实验报告三:敏捷开发与XP实践

    开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软 ...

  2. 实验三 敏捷开发与XP实践

    实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验 ...

  3. 关于敏捷开发方法(Agile Software Development)的阅读笔记

    对“敏捷开发”(Agile Software Development)这个词,我是在这学期邹欣老师<现代程序设计>课上第一次听到的,刚听到时并不知道其具体指什么,只是从字面上直觉其意思应该 ...

  4. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

  5. 【转】敏捷开发 Scrum 总结

    转:http://www.open-open.com/lib/view/open1330413325514.html 最近把之前学习 Scrum 的资料整理为一篇文档,在接下来的团队和项目开发中,根据 ...

  6. 20145334实验三《敏捷开发与XP实践》

    实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 1.敏捷开发与XP 敏捷开发(Agile Dev ...

  7. 实验三 java敏捷开发与XP

    一.实验内容 (一)敏捷开发与XP 软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. 光有各种流程的思想是不够的,我们还要有一系列的工具来 ...

  8. 20145215实验三 敏捷开发与XP实践

    20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...

  9. 20145211 《Java程序设计》实验报告三:敏捷开发与XP实践

    实验内容 使用 git上传代码 使用 git相互更改代码 实现代码的重载 XP基础 XP核心实践 相关工具 一.git上传代码 这一部分是与我的partner合作的,详见他的博客- 20145326蔡 ...

随机推荐

  1. 初见微服务之RESTful API

    1. REST名称由来 REST全称为Representational State Transfer,即表述性状态转移,最早由Roy Feilding博士在世纪之交(2000年)提出,喜欢追根溯源的朋 ...

  2. spring-autowire机制

    在xml配置文件中,autowire有5种类型,可以在<bean/>元素中使用autowire属性指定 模式                        说明 no            ...

  3. ubuntu install oracle jdk

    .Download the required tarball from here .unzip this tarball using "tar -zxvf tarball_name .cre ...

  4. nodejs 爬虫

    参考了各位大大的,然后自己写了个爬虫 用到的modules:utils.js     ---    moment module_url.js var http = require("http ...

  5. cf550D. Regular Bridge(构造)

    题意 给出一个$k$,构造一个无向图,使得每个点的度数为$k$,且存在一个桥 Sol 神仙题 一篇写的非常好的博客:http://www.cnblogs.com/mangoyang/p/9302269 ...

  6. Microsoft .Net framework 4.0出现 安装不成功,错误代码0x80240037 的解决方法

    ,安装Microsoft .Net framework 时出现 解决方法:用QQ管家 之后 以上就解决了

  7. linux系统监控工具glances

    glances linux系统自带了很多系统性能监控工具,如top,vmstat,iftop等等,还有一款监视工具glances,它能把其他几个监控的指标都集于一身.Glances是一个相对比较新的系 ...

  8. python 实现简单语音聊天机器人

    '''思路:使用百度的文本转音频API,将结果保存成mp3格式,并用mp3play库播放该文件.''' 1 # -*- coding:utf-8 -*- import sys import reque ...

  9. Session 会话保持

    本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答 一.术语session session,中文经常翻译为会话,其本来的 ...

  10. 从源码带你看懂functools的partial方法

    1.what? partial是什么, partial也叫偏函数.源码的描述是: 部分应用给定参数和关键字的新函数. New function with partial application of ...