Week 7 迭代总结
写在前面:
本次我为团队博客写了一篇总结,深刻总结了我们组发生的问题以及将来要做的事情。有兴趣请移步http://www.cnblogs.com/Buaa-software
Week 7 Alpha轮迭代总结以及我的一些启发
先说说我们的项目:
我们的项目没有大泥球。
大泥球这种东西对于一个项目来说是要了命的,出现这种情况纯属大家没有精力和意愿去维护以前的代码。这大大降低了项目的潜力,让代码成为用过即丢的一次性物品,浪费了大量的时间、精力。而这一切却仅仅因为作者们在更新时不去修改以前代码的兼容和BUG,导致泥球越滚越大。
我们的项目有黄上同学作为首席测试员,他为我们的代码找出了许多BUG,我们及时的更新了自己的类。保证了整个项目的稳定。而且项目的代码复用性也得到了提高。
一坨脓包似的权宜代码,被一群盲目的根本不知IT架构为何物的所谓IT“专业人士”永无休止地复制着,粘贴着。
这篇文章说的很有意思,也很有道理。所谓质量,只有某人对它负责时才有意义。好多项目有着臃肿的代码,却实现不了基本的功能。在开发过程中一个很常见的事情是:这个问题不会,于是在网上找到了一段代码来解决问题。然而这段代码没有头没有尾,就错误的用在了这里,虽然解决了问题,却给后面的开发引来了很多隐患。我们的项目是从头做起的,那些基本的功能也是我们一点一点实现的,所以也不存在这种问题。
我同意没有银弹的说法。我相信无论是在软件工程,还是在其他的课程当中,银弹这种东西都是不存在的。没有万能或万全的方法论,对于软件工程这一门学科来说,在软件开发过程当中,最重要的还是三个字:看需求。
- 项目得多长时间完成?
- 项目的启动资金有多少,有多少人做?
- 项目的核心功能有多少,需要什么样的稳定性?
- ……
这些东西在没有确定之前,我们不能得出一个结论。同样我想到目前为止,还没有万能药能解决所有的不同需求的项目。
软件工程的方法论毫无疑问是有用的。我们把大部分次要复杂度通过软件工程的方法论都优化掉了。剩下的主要复杂度是我们的学习成本,我们都是在学习中逐渐进步的。我们在软件工程的A轮迭代中得到了很多经验教训。现在把我们团队博客的一部分迁移过来,以便展示:
简单地总结一下,我们的团队有成员没有达到敏捷开发的要求,体现在:自主管理,自我组织。
自主管理:以前领导布置了任务,我们实现就可以了,现在要自己挑任务;每次Sprint结束之后,还要总结不足,提出改进,并且要自己实施这些改进。“自主管理”不等于“没有管理”。
自我组织:以前做好自己的事情就好了,安心下班。现在每个人要联合起来对项目负责,有人工作落后了还有帮助他改进,项目缺少某类资源自己还要顶上去。
这件事情发生在团队身上,就是“积极度不高”。大家没有积极地把这件事情做出激情,对于团队交代给的任务也没有积极完成。比如说,如果留学生同学能够主动的来要代码,把我们分享的知识学习完全,写博客的同学能主动找开发人员要今天的进度。负责辅助首席程序员写代码的同学能够主动的去要任务来减轻首席程序员的负担,这些都是“自主”掌控的地方,而在这些地方我们掌控的都不好。
另外,在阅读中的这一句话我简直不能同意更多:
通常情况下,最引人注目的创新解决方案来自于意识到你对问题的概念是错误的。
而我们组几次大型的更新,几次把代码推倒重来,恰恰因为发现我们原来的想法是错误的。因为一些交流上的不直白,我们多花了两天时间写代码。这说明,一个好的系统架构师是多么重要,他能从一开始就把问题考虑到。从而能让整个队轻松解决一些问题。我离这个目标还差很远,我还需要太多的经验。
还有,在设计的初期,
一定要画图!
一定要画图!
一定要画图!
重要的事情说很多遍。队友无法想象你在想什么,只交流不画图只能带来更高的沟通成本。
这次迭代对我而言还有更深层的体会,不过跟软件工程的方法没什么关系,而是我自己的问题:
- 被别人带着,是痛苦的。我还是喜欢自己去实现什么东西,才能神清气爽,毫无羞愧。让自己的队友做大部分东西,对我而言是一件很不舒服的事情。我希望能在团队中有所贡献,而且还不能低,否则还不如不参加团队。在团队做出来东西时一点喜悦感都没有。
- 有问题就要及时说,不要以为队友可以轻松意识到。有可能你有的信息他们并没有,不把想法说出去就会白白加大交流沟通的成本,而毫无所得。
- 程序员更应当爱惜羽毛。要对自己写过的代码负责任,保证其可复用性和稳定性,不要写完一扔就不管了,最后还要麻烦别人把东西实现。到时候可能别人读不懂你的代码就自己写了,你辛辛苦苦写的劳动成果可能因为这样的小事情而毁于一旦。
暂时就这些吧。
老师大人和助教大人,我14-22号要跟着学校出去,可能会无法及时回复博客,请您谅解,我会时常关注您的评论的!
Week 7 迭代总结的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- IteratorPattern(迭代子模式)
/** * 迭代子模式 * @author TMAC-J * 聚合:某一类对象的集合 * 迭代:行为方式,用来处理聚合 * 是一种行为模式,用于将聚合本身和操作聚合的行为分离 * Java中的COLL ...
- JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)
1.使用对象字面量定义对象 var person={}; 使用这种方式创建对象时,实际上不会调用Object构造函数. 开发人员更喜欢对象字面量的语法. 2.有时候需要传递大量可选参数的情形时,一 ...
- python征程3.1(列表,迭代,函数,dic,set,的简单应用)
1.列表的切片. 1.对list进行切片.'''name=["wangshuai","wangchuan","wangjingliang", ...
- 让产品有效迭代,前端A/B Testing的简单实现
A/B Testing简介 互联网产品的迭代速度很快,往往一周一小发布,一月一大发布,产品提出的种种需求,哪些改动是提升产品体验的,哪些是阻碍产品进步的,如果没有数据可以参考,仅仅是靠拍脑袋的话,对产 ...
- JAVA中的for-each循环与迭代
在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable<T>接口(位于java.lang包中),实现这个接口允许对象成为 ...
- 迭代字典中的key和value
字典是python中十分重要的一个内容. 今天我们来谈谈,在一个 for 循环中,能否同时迭代 key和value?当然可以咯. dict 对象的 items() 方法返回的值: >>&g ...
- python中的迭代、生成器等等
本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...
- ICP算法(Iterative Closest Point迭代最近点算法)
标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许 ...
- Python迭代器,可迭代对象,生成器
迭代器 迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的界面,设计人员无需关心容器物件的内存分配的实现细节. ...
随机推荐
- Java jni字符串转换
1.jstring转QString 对于Qt5.2以上(含)可以用QAndroidJniObject::toString(),详见这里:https://stackoverflow.com/questi ...
- python使用关键字爬取url
python网路爬虫 --------- 使用百度输入的关键字搜索内容然后爬取搜索内容的url 开发环境:windows7+python3.6.3 开发语言:Python 开发工具:pycharm 第 ...
- 学生&部门智能匹配程序
Github链接 结对成员: 031502308 付逸豪 031502113 胡俊钦 数据生成 样例链接: 来点我啊 由于在生成数据的时候做了很多符合实际情况的限制,所以生成的数据都挺好的,就随便选了 ...
- 类的反射_reflex
JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为j ...
- Git提交新项目
Github或者码云上新建项目 $ git init $ git add * $ git remote add origin https://gitee.com/demo/demo.git $ git ...
- LCA树链剖分
LCA(Lowest Common Ancestor 最近公共祖先)定义如下:在一棵树中两个节点的LCA为这两个节点所有的公共祖先中深度最大的节点. 比如这棵树 结点5和6的LCA是2,12和7的LC ...
- 【转】android IDE——通过DDMS查看app运行时所占内存情况
在Android内存优化方面,我们不可能做到没有大内存的占用情况. 所以有时候要清楚我们的app到底占用了多少内存,哪一步操作占用了多少的内存. 这时候,android的ddms中提供了一个工具,是可 ...
- openssl windows 生成公钥与私钥
链接: https://pan.baidu.com/s/1qn-qeFxovor-vcAWFl8jIw 提取码: zy5v 一,下载安装windows平台openssl密钥生成工具,执行安装目录bin ...
- linux shell脚本调用java main方法 代码
#!/bin/sh # #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用. # #Author: tuda ...
- adb报错问题解决方法
1,报错信息:adb server version (31) doesn't match this client (40); killing 解决方法: 一: 主要是前面的31或者其他,比如32/31 ...