“自由与束缚的哲学统一”或许不该放到标题上去,毕竟它只是我灵光一闪的感悟。但这个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. 多进程——waitpid()函数的小例子

    本例中使用fork()创建一个子进程,然后让子进程暂停5s,接下来对原有的父进程使用waitpid()函数,利用WNOHANG使父进程不会阻塞每隔一秒判断子进程是否退出. #include" ...

  2. Internationalization(i18n) support in SAP CRM,UI5 and Hybris

    i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是"国际化"的简称.对程序来说,在不修改内部代码的情况下,能根据不同语言及 ...

  3. Problem D: 双向冒泡排序

    Problem D: 双向冒泡排序 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 447  Solved: 197[Submit][Status][We ...

  4. softmax 函数

    总结为:   将一组数变换为  总和为1,各个数为0~1之间的软性归一化结果. ========================================================= 关于 ...

  5. 题解P3951【小凯的疑惑】

    相信参加OI的oiers都是数学高手吧 我好像不是 (滑稽 那应该大家都接触过邮资问题吧! 所谓邮资问题,就类似于这一题,给定a和b两种邮资数,求最大的不能凑出的邮资 数.这里给出公式:最大的不能集出 ...

  6. CUDA 中dim3含义

  7. 移动端调试利器-vConsole

    现在移动端开发越来越火,随之而来的问题也越来越多,今天给大家介绍一款移动端调试神器,vconsole. 一.先引用文件,可以从https://www.bootcdn.cn/vConsole/下载,也可 ...

  8. Beyond Compare在Mac下永久试用

    转自 作者:忆如初 链接:https://www.jianshu.com/p/596b4463eacd 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. 亲测可用 一. ...

  9. MySQL数据库的下载安装

    目录 一.概述 二.MySQL安装 三.安装成功验证 四.NavicatforMySQL下载及使用 一.MySQL下载 MySQL版本:5.7.17 下载地址:https://dev.mysql.co ...

  10. 二十四、MySQL ALTER命令

    MySQL ALTER命令 当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本章教程前让我们先创建一张表,表名为:testalter_tbl. root@ho ...