2016.04.8-2016.04.14这周工作时间和内容

这周的学习内容:这周学习是4个小时,除了上课以为,给自己多增加一个小时来学习,感觉很好,学习了很多,这周主要学习了团队形式1.窝蜂模式 (chaos team) ? 2.主治医师模式: (Chief-Programmer Team, surgical team) ? 3.明星模式 (Super-star model) ?4. 社区模式 (Community Model) ?5. 业余剧团模式 (Amateur Theater Team) 6. ?秘密团队 (skunk work team)?7.特工 (SWAT) 团队 ? 8.交响乐团模式 (Orchestra) ?9. 爵士乐模式 (Jazz Band) 10.功能团队模式 (feature team) ? 11.官僚模式 (bureaucratic model)。开发流程:我们在开发,运营, 维护软件的过程中有很多技 术, 做法, 习惯, 和思想。软件工程把这些相关的 技术和过程统一到一个体系中, 叫 “软件开发流程”,软件开发流程的目的是为了提高软件 开发,运营, 维护的效率;以及用户满意度, 可靠性,和软件的可维护性。

这周的阅读内容: 

过度“敏捷”可能是危险的

这几条重要的价值观,你最好能够背下来。如果你打算学习Scrum和XP这些敏捷方法的话,先把他们多读几遍。

那么你知道敏捷宣言的作者都是谁吗?他们分别是 Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C.Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas。你可以在这里查看他们的资料。

和书有关的现象

当我们研究一个新的领域时,阅读相关的书籍往往是把握整体内容的最佳途径。因此,我在Amazon上搜索了和上面那些作者有关的书,得到的结果让我很吃惊。为了让你体会到我的感受,我把和那些作者所著的关于敏捷方法的书籍都列在下面,这些书主要是:

  • 标题里包含“Agile”或者“Agility”的书
  • 介绍了敏捷方法(Scrum,Extreme Programming,等等)的书
  • 讲解了重构,测试,代码质量或者其他用来响应变化的技术手段的书
  • 体现了实用主义思维并且不局限于某个特定语言(Java, Ruby等)的书

 

很奇怪的感觉

 

这些作者的书籍数量之庞大,让你感到吃惊吗?真的吗?为了能够广泛传播自己的观点,他们经常需要进行布道,而写书恰好是布道工作的一部分。还有一点让人很吃惊:这些书在Amazon上的评价都很高(至少是4星,5星满分)。这些书都是关于敏捷方法的很好的参考资料,并且这些家伙们在软件工程这个领域里做了大量的工作:我强烈建议每个开发者都去订阅他们的博客(他们大部分人都有写博客,你可以通过搜索引擎去查找)。

不过,看看相反的观点也是很有意思的。Steve Yegge(一个Google员工)在他的文章《Good Agile,bad agile》里这样批评方法论:

  • 一般来说,任何自称为“方法论”的东西都是愚蠢的
  • 任何东西,如果它需要布道者并且提供研讨班的话,那么它的存在只是为了赚钱
  • 任何不提及竞争者和替代者的事物毫无疑问都是自私的
  • 一般来说,任何没有重要细节的图表都是愚蠢的

我这里的“愚蠢”这个词语,是来形容用类似于杀鸡用牛刀的行为。

或许,这些观点并不是很客观,并且 Steve 文章的最主要观点是任何公司皆可复制 Google 的模型,但因不同的公司文化,使其观点一直不被认可。我也不同意他的这个观点,当你一味听从他人的意见时,你也是愚蠢的。不过我同意Steve的另一个观点,我们都注意到,当布道工作做的过火时,布道这事已被我们看到无可替代了。

敏捷方法并不适合于所有的项目

最近,我开始担心起“敏捷”这个词了,因为它似乎变成了一个流行词,并且我们大部分人都忘了其实有时候敏捷并不是最好的方法:

  • 很难真正做到敏捷
  • 敏捷并不一定是最合适的方式

当说到敏捷并非万能之时,我们通常会想到第一条,但也经常忘记第二条。Steve McConnell在畅销书《代码大全》里写道:

在软件行业,顾问经常让你只采取一种软件开发方法,而把其他的方法都排除在外。那样会让你的项目很不幸,因为如果你100%地只采用一种方法,那么你会用这种方法来看待所有的事物。在有些情况下,这会使得你错过一些更加适用于你当前项目的方案。
大部分(所有的?)敏捷宣言的作者都同意Steve关于软件方法的观点。所以,记住这一点就够了。

什么时候敏捷会比较合适呢?

Danc在他的文章《Managing game design risk: Part I》里给出了过程复杂度的分类:

  • 简单过程:当需求和实施方案都比较清晰的时候,那么这个项目就可以通过比较简单的过程来控制。一般来说一个简单的checklist就能胜任。单独的一个工人在流水线上重复工作的过程就是简单过程的一个很好的例子。
  • 复杂的:当需求和实施方案有时候会有变动的时候,你还是可以通过一个独特的checklist来完成项目。不过,为了完成项目,你需要添加很多规则和一些额外的步骤。桥梁建设是复杂任务的很好的例子。
  • 更加复杂的:很多项目都处在一种需求和实施方案都大致确定,但是在很多程度上都存在着变动的危险境地。在这种情况下,敏捷方法能够帮助团队高效进行反馈,领导项目走向成功,并且避免高风险和不确定性。软件开发是更加复杂任务的一个最佳示例。
  • 混乱的过程:当需求和实施方案的变数都非常高的时候,项目会陷入无法控制的混乱状态。从实际的过程来看,这种项目的成功与否取决于运气。

结论

首先,你自己不要成为一个布道者,多关注自己的项目,根据项目的实际情况决定哪个方法是最合适的。有时候,敏捷不一定是最好的方法,但是如果你发现项目的需求不是很稳定的时候,敏捷将会是一个很好的选择。
你是否会认为你自己有时候会成为一个布道者呢?

时间: 2024-12-09 00:18:04

2016.04.8-2016.04.14这周工作时间和内容的相关文章

2016.04.29-2016.05.05这周工作时间和内容

这周的学习内容:这周我还和平常一样,上了三个小时的课,下课用一个小时来巩固自己的学习的知识,然后对自己学习的内容加以深化,其实我自己对于学习是懒的,懒的学,懒的动,每次上课虽然说不上特别的认真听,但是老师让学习的,让做的我也没有落下,估计是我自己对学习太过于懒惰了,很多东西就是不知道,也不明白,从第一节开始,自己的落下了,一直到现在,总有些东西是不明白,就像这周吧,这周课学习了ER图和状态图,我对于这个ER图就不是那么的熟悉了,之前的学期,学习过数据库等等,在交课程报告的时候也有做过ER图,可是

2016.06.24-2016.06.30这周工作时间和内容

这周学习内容:马上要考试了,这周老师给我们复习了判定树和判定表.首先老师先出了一道题让画出判定表,两种画法都可以,我画完之后,老师用的在班里讲,老师指出了我画的问题,包括我对折扣的换算的错误,还有我对结果的表达方式的错误.很感谢老师可以用我画的图来讲解,让我更深刻的加深印象,以后像这样的错误也不会发生,非常的感谢.这个学期马上要结束了,老师辛苦了,感谢您! 这周的阅读内容: <构建之法>第二章 个人技术和流程 概述 一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应该

2016.06.10-2016.06.16这周工作时间和内容

由于这周是端午节,我们放假了,就没有上课. 这周的阅读内容: 第1章 概论 理论和知识点 计算机科学的领域 软件的特性 软件工程 软件工程与 计算机科学的关系 练习与讨论 练习不断通过简单的程序来实现一系列要求和改进 从切身体会出发,讨论软件的特性,软件和 软件工程对社会的影响 结合所在的学校的特点和自身经历,讨论 软件工程与 计算机科学的区别 1.1 软件 = 程序 + 软件工程(1) 几乎所有的程序员都知道“程序= 数据结构+算法”1 这句名言,但是在实际的学习和工作中,也有不少人产生了疑问

2016.06.03-2016.06.09这周工作时间和内容

这周的学习内容,这周是我们实训任务很大,老师让做一个大的程序,功能要齐全,我是李志芳组的,我们组的题目是酒店客房管理系统,我们一起研究了功能,布置了我们每个人的分工,每个人的模块,我做的是员工信息管理,主要管理员工的信息,通过我们的努力,做完了报告,提交了,这周的实训就这样结束了,收获很大,主要是学会了画用例图,在调程序上,我又学会了很多,刚开始的时候数据库就是连不成功,后来通过上网查资料,我研究会了怎么去修改数据库字符串,真的有很大的收获,感谢这次实训,感谢老师. 这周的阅读内容:“大数据”是

2016.05.20-2016.05.26这周工作时间和内容

这周的学习内容:这周学习了NS图和PAD图,流程图由一些特定意义的图形.流程线及简要的文字说明构成,它能清晰明确地表示程序的运行过程.在使用过程中,人们发现流程线不一定是必需的,为此,人们设计了一种新的流程图,它把整个程序写在一个大框图内,这个大框图由若干个小的基本框图构成,这种流程图简称N-S图.NS图形象直观,具有良好的可见度.例如循环的范围.条件语句的范围都是一目了然的,所以容易理解设计意图,为编程.复查.选择测试用例.维护都带来了方便:NS图简单.易学易用,可用于软件教育和其他方面:功能

2016.05.26-2016.06.02这周工作时间和内容

这周学习的内容:这周和平常是一样的,我们在课堂上学习了三个小时,老师讲了用例图,类图,序列图,状态图.我们了解了用例图,用例图(use case diagram)就是由主角.用例以及它们之间的关系构成的图.该图说明了用例模型中的关系.类图(Class diagram)由许多(静态)说明性的模型 元素(例如类.包和它们之间的关系,这些元素和它们的内容互相连接)组成.类图可以组织在(并且属于)包中,仅显示特定包中的相关内容.类图(Class diagram)是最常用的 UML图,显示出类.接口以及它

2016.03.10-2016.03.17这周工作时间和内容

这周的学习内容:我给自己每周定的是学习3个半小时,我在课堂上认真的学习了三个小时,回到宿舍也学习了半个小时.在这周三个小时的课堂上老师让我自己去编写四则运算,刚开始是用户输入两个数和一个运算符,求出结果,就是简单的加减乘除,刚开始编这个代码的时候,我是左思右想,怎么也想不出来,后来从网上看到了别人类似的代码,我把它敲进去,然后运行不出来,我经过自己的调试,和慢慢的琢磨终于成功了,接着老师让输入三个数和俩个运算符求出结果,我这次就学会了,我自己对代码进行了改编,自己对代码进行了理解和加深,终于把之

2016.05.06-2016.05.12这周工作时间和内容

这周学习内容:这周 也没有学习什么新的东西,因为有全国的技能大赛在我们轻工举行,我们机房的电脑很多都被拿去供参赛的选手用,我们上课因为没有机器,同学们都是好几个人坐一个电脑,所以老师 没有讲课,复习了我们之前学习的东西,复习了ER图,数据流图和定义数据,我对于这个数据流图还是不太懂,不过经过老师的复习,我对这个数据流图有了更深的理解,画起来也很容易了,每一次对学习的东西有一个复习是个很好事情,我要努力的慢慢的养成这个习惯. 这周的阅读内容:<代码大全(第2版)>是著名IT畅销书作者SteveM

2016.05.13-2016.05.19这周工作时间和内容

这周的学习内容:这周电脑有好多也不能用大家都是一起用的,我同样是学习了三个小时,外加回宿舍学习的一个小时,我在画图,画图中遇到了很多问题,我不知道该画箭头还是直线,也不知道该怎么去构想过程,老师这节课讲了软件结构图的画法以及它的用法,定义,我学会了怎么去构思和动手画.软件结构图(Structure Chart, 简称SC)是软件系统的模块层次结构,反映了整个系统的功能实现. 软件结构以层次表示程序的系统结构,即一种控制的层次体系,并不表示软件的具体过程. 件结构一般用树状或网状结构的图形来表示.