迭代开发与迭代学习法

方法学:迭代开发与迭代学习

软件开发方法

软件开发中的团队协作方法与个人学习技术的方法其实异曲同工。

最早的软件开发人员按照按部就班的线性流程(瀑布式)进行开发:分析需求->设计->编写代码->测试->维护。

这种方法的效率往往是低下,瀑布式的线性流程讲究先分析完需求然后才能开始设计,设计完了才能开始编写代码,然而,我们知道客户的需求随时可能会进行变化,如果客户在我们编写代码时变更了需求,那么开发团队不得不折返到分析阶段。

同时,满足客户的需求才是软件开发的首要目的,而只有客户才是真正完全理解他自己需求的人,需求分析人员不能一次性的就把客户的需要完全理解并且牢记于心,在设计,编写代码,测试的过程中,随时有需要问题会被反馈。

现代的软件开发讲究敏捷方法,其中极限编程与scrum最为有名。这两种方法都是基于迭代开发思想的。他们讲究将用户需求分为多个故事,给故事贴上优先级的标签,对优先级高的故事优先进行开发。在开发中团队与客户频繁沟通,确认完成需求。

个人学习方法

反观学习技术的方法,有两种方法:一种是先积攒足够的概念储备,再进行代码编写的活动,一种则是先敲够足够的代码才去阅读相关的知识讲解。这两种方法都是线性的,一种先有概念后敲代码,另一种先敲代码后看概念。

而我更赞同“迭代学习方法”:在具体知识与抽象理论之间进行折返式,增量式的循环学习。即在编程实践与理论学习中来回切换,循环式的增强学习。慢慢接近终点。

瀑布式开发 VS 迭代开发

名称 特点 优点
瀑布式开发 必须完成上一阶段才能进入下一阶段
迭代开发 经常会需要回到前面的阶段,或改变前一阶段的结果 灵活;迎合需求在不断变化这一事实

线性学习 VS 迭代学习

名称 特点 优点
线性学习 完全理解概念后才开始编程/完全做完某个项目才开始理解概念
迭代学习 简单理解概念后即开始编程,遇见编程难题后再折返理解概念,反复循环 高效;避免学习过程中只见树木不见森林;充分借助“轮子”的力量
稿源:燃冰非冰 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合编程 » 迭代开发与迭代学习法

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录