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,例如链表或阵列)上遍访的界面,设计人员无需关心容器物件的内存分配的实现细节. ...
随机推荐
- OpenLdap 对接内部系统(Gitlab+Wiki+Jumpserver+Openvpn)配置
LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议.目录是一个特殊的数据库,它的数据经常 ...
- Shell的基础介绍和案例
一.shell脚本基础 1.第一个脚本 vim first.sh 分别使用三种方法可以执行脚本: ./first.sh (需要有可执行的权限) sh first.sh . fir ...
- 2.1Python数据处理篇之---内建有关数学的函数
目录 目录 前言 (一)数学相关得内建函数 (二)具体演示 1.求绝对值 2.创建一个复数 3.求商和余数 4.求x得y次幂 5.生成一个序列 6.四舍五入 7.对一个集合求和 8.求最大值 9.求最 ...
- 780. Reaching Points
idea: 1.从后向前找 2.while (tx > ty) tx -= ty; 替为 % 操作 3.经过循环后,必定只有两种情况才true sx == tx && sy &l ...
- 给JDK提的一个bug(关于AbstractQueuedSynchronizer.ConditionObject)
1. 背景 之前读JUC的AQS源码,读到Condition部分,我当时也写了一篇源码阅读文章--(AbstractQueuedSynchronizer源码解读--续篇之Condition)[http ...
- 如何用jquery实现实时监控浏览器宽度
如何用jquery实现实时监控浏览器宽度 2013-06-05 14:36匿名 | 浏览 3121 次 $(window).width();这代码只能获取浏览器刷新时的那一刻的宽度,如何才能达到实时获 ...
- 泰泽智能电视(Tizen smart TV)问世
6月2日至4日,泰泽开发人员大会(TDC)在美国洛杉矶举行,会上韓国三星公司展出了一台泰泽智能电视(原型机). 智能电视(Smart TV not to be confused ...
- Ignatius and the Princess III(方案背包+搜索)
就是问你,n这个数可以被多少种方案组成. 比如: 算是,方案+完全背包的模板题了. #include<iostream> #include<cstring> using nam ...
- 老男孩Python全栈视频
链接:https://pan.baidu.com/s/1c1JOCL1w-vnYGkrhElk_GQ 密码私聊我
- mysql数据类型介绍(含text,longtext,mediumtext说明)
转自http://m.blog.csdn.net/sipsir/article/details/12343581 转载,文章原连接已经失效,百度快照找到的. MySQL支持大量的列类型,它可以被分为3 ...