Fork me on GitHub

记录第一次敏捷开发

敏捷一把

软件工程实践启动会

时间:2017年06月24日

地点:工训

课程要求:敏捷开发

组队要求:每组6~8人,每组有且只有一位女生。

课程时间:2017年06月24日~2017年07月05日

其实这种安排也不是没有料到,理工科男女比大家又不是不知道,何况是在北航这种性别分化极端的学校。so 原本计划好的8个大老爷们的团队被替代了。

新的团队里面一共7位成员,荣获漂亮的小姐姐一枚。葫芦娃七兄弟集齐,开启救爷爷的征途!同样小组名称就被定为了”走,救爷爷!“。

拉个微信小队,建个QQ小群,就这样七兄弟凑到了一起。

就在小团队气氛还没有活跃起来的时候,七兄弟就迎来了第一个挑战(可不是动画里的打蛇精救爷爷),编写用户故事以及迭代开发文档。

也许大家是头一回组队在一起干活,个个生龙活虎,干劲十足。当然了这种精神头不但没有随着开发进展而减退,反而随着Deadline的逼近不断增强。

经过团队的共同努力,还算顺利地完成了作业(当时真的是吓坏了,距离作业提交deadline只剩一分钟),不过后头阅读发现文档里面存在着很多的缺陷。这也给了大家一个小小的警示。做事情一定要认真仔细,忙而不慌,紧而不乱。然后这一点警示可能太微小了,直到后面遇到大问题时团队才下决心一定改正。

记录一下时间吧:2017年07月04日00:53:42,有点晚了今天,明天还有一天需要整合代码,调整前端样式,进行测试。回忆记录先到此,之后再补。

(Error:一定要回来补,别忘了!!!)

项目感想

时间:2017年07月05日

地点:工训

事件:项目无bug顺利展示,葫芦兄弟们都很满意,都有各自的新的体会,下面分享七兄弟的项目心得体会。

大娃(力大无穷,巨大化):

这是自己第一次进行的敏捷开发,艰辛而充实。在这里真的要对团队中的每一位成员说一声谢谢!感谢你们的陪伴和帮助,没有你们,项目不可能这么成功。在短短两周的小学期中,体会到了团队交流和团队合作的重要性。从项目伊始到项目完整演示,每一位成员都付出了太多太多,项目的成功离不开团队之间的密切合作以及团队信任。项目成功的完成迭代开发不仅使自己学到了新的技术,更重要的是这给我信心,让自己能够在这个领域里不断努力钻研下去。

这个团队的名字为“走,救爷爷!”,但是并不意味着大家都是单打独斗。恰恰相反,团队时刻围绕着交流合作进行项目开发。通过这个项目自己的代码能力得到了进一步的训练,为之后的生产实习再次巩固了基础。自己也积极地为项目开发发光发热,不断学习新的技术和操作。自己的定位为开发工程师,因此比较倾向于后端的代码逻辑,这样也进一步提升了自己的逻辑思考能力。

留下印象深刻的一幕就是团队为了尽快提高自身技术,加快项目进度而自愿加班工作。要说什么最美,最美的不过是完成一行有一行严密的代码。项目采用的开发框架为ASP.NET MVC,使用的数据库为SQL Server,但其实自己对正两方面都不是很擅长。但是在团队的交流互助之下,大家经过两天的努力成功突破了关键的技术难点。同时团队每位成员都有着明确的工作强项,数据库操作强势者,逻辑代码严谨者,前端页面美化者,数据操作者等。

其实项目开始初期是相当困难的,曾记得用了两天仅仅写出了登录界面的逻辑。为何这么慢的原因就是大家不熟悉MVC的前后端数据的传递操作,以及页面之间的数据传递和页面跳转操作。在项目中自己发现了一个自己很严重的缺点,脾气太差没有耐心,容易陷入局部最优。从项目中也让自己明白了要在以后的生活中需要注意改正这一缺点。

团队的力量是不容小觑的,从这次的项目开发中对这一点深有体会。能够遇到配合的如此紧密,积极性如此之高的成员是在不容易。珍惜这次来之不易的团队,这段艰苦而充实的日子应该会给自己留下很深的影响。

二娃(千里眼,顺风耳,灵活聪明,机敏过人,最善于谋划计策):

在这个团队中,我感受到了很强烈的集体感。团队成员之间互相理解,互相帮助,目标一致,能够一起努力做好这次项目。我身处这个团队之中,觉得十分幸运。其实觉得在团队合作当中,成员之间的和谐相处,心灵相通非常重要。在整个开发过程中,我们虽然有时也有意见不统一的地方,但经过有效的交流沟通,我们总能统一意见,让团队的凝聚力更强。在这次敏捷开发中,体会到了什么叫做愉快地开发,个人能力也得到了很大的提升。

三娃(铜头铁臂,钢筋铁骨,刀枪不入):

从6.25到7.5,在这短短的十天之内,我们能够组件起一只团队并且使用自己之前完全没有使用过的敏捷开发这种开发方式,大家齐心协力、夜以继日地把一个团队协作教务系统实现出来,不管最后的成绩是怎么样的,我们有足够的理由为自己感到自豪。

需求工程一直是项目开发中最关键的一环之一,在最开始就决定了一个项目的成败。对于我们这些从来没有真正使用过敏捷,只会纸上谈兵的家伙来说,用户故事的划分编写以及对用户故事点数的估算、进而到首次发布计划及两次迭代计划的制定,我们都经过了反复的修改。即使已经提交了用户故事和发布计划和迭代计划,我们还是需要在开发的过程中不断地与老师进行沟通,不断跟进、明确与细化老师真正的需求,对老师真正有价值的东西;而不是自己主观推测,加上自己认为老师需要的功能,最终只能是费力不讨好。

比较两次迭代,可以明显的发现,第二次迭代的开发效率明显高于第一次迭代的开发效率。除了对所用技术的熟悉程度加深,结对编程默契层度加深和大的底层设计框架在第一次迭代中完成这些因素之外,我认为还有一个重要的因素是我们使用了原型工具来设计页面,这样直观的展示给老师,根据老师的建议进行修改,不仅让我们尽快确定前端页面,为后端的逻辑实现打下基础,同样也加深了小组成员对客户需求的理解。

开发任何的大型项目都不可能是一个人单独完成的。这次小学期不仅仅让我们学习和实践了敏捷开发,也让我们练习了在团队中如何与其他开发人员合作进行开发,如何与他人沟通的技能。虽然我们组的成员平时性格都很和善,但这么高强度的团队开发实践中,我们组内成员之间有时还是会产生一些意见不合甚至是一些小冲突。这些经验都很这对我们今后的工作具有重大的意义。

四娃(喷火,吸火,霹雳):

在小学期期间,大家一起合作了10天,按照Scrum的基本流程,基本完成了一个小网站的开发过程,感想颇多。

它改变了我对传统软件开发过程的看法。以前,我以为软件开发是一个枯燥的过程,,目的是为了开发出软件产品,过程是写一些枯燥的代码。敏捷开发告诉我,软件开发是一个人性化的过程,在软件开发过程中,应该从枯燥的编码过程中去体验的编程之美,

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,相对于传统软件开发方法的“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。所以,千万不要忽视每个人在开发过程中的作用。

敏捷开发是一个过程,不是一个事件。在敏捷开发的各个过程中可能集合了很多种传统软件开发方法,比如迭代、增量开发,甚至有瀑布、快速原型法的影子,也许还有更多。敏捷开发可理解为在原有软件开发方法基础上的整合——取其精华,去其糟粕。因此敏捷开发继承了不少原有方法的优势。这也是为什么现在敏捷开发为很多工程师所推荐的方法。那个更好不能立刻下决定,对于不同的项目一定有他更适合的方法。敏捷开发,融合软件工程的优点。也可以软件工程融合一些敏捷开发的优点来适应实际的项目。如今的快节奏,快餐化的软件更倾向于敏捷开发。但重大项目简单的敏捷开发是绝对不合适的。

不要害怕做决定;不要害怕改变以前的决定。 敏捷开发的目的是应对客户需求的不确定。 开发前期你不可能获到全部的信息。 你应该尽可能的拖延做决定的时间,但一旦到了你该做决定的时候,你应该当机立断,让项目向前推进。 你不能说一直等到有了足够的信息才做决定。 相反,你要依赖现有的信息作出最正确们决定。之后,当有新的信息出现后,不要害怕对以前的决定作出更改。

五娃(吸水,吐水,口吐闪电产生降雨):

(1)小组内的成员有自己一份独特的对代码的理解,在各种理解交流的同时总能学习到对自己有用的方面。例如:小组内郑鹏飞的注释写的很棒,而我自己又是一个没有写注释习惯的人,和他一起结队编程时,多少有逐渐帮我养成写注释的习惯。而且事实证明,注释的确很重要,不仅方便别人阅读自己写的代码,在自己之后阅读时也会条理清晰很多。沈毅的代码总是很整齐,阅读起来赏心悦目,自己也会注意代码的格式。还有很多其他小的细节,变量命名方式,传参方式等等,都让我比之前做的更好了一些。

(2)数据库方面,在建立好最初版本的数据库后,应考虑用户故事对系统所提出的功能需求,并记录功能和其所对应的sql语句,在之后编码时会节约很多时间。

(3)在使用mvc框架时,因其前端,后端和数据源互相分离,可以实现同时开发,但要各个开发队伍提前确定好接口问题,即前段需要后端以何种方式传入何种值,后端需要数据源方面以何种方式让后端读出写入数据。

(4)对我自己来说,我是一个很包容的人,不是很喜欢锋芒毕露,可能这样在同龄人中间会让同龄人认为我这是一种没有主见的表现,就会随意对我的代码作出修改或者对我的行为进行评价。但我发现这种包容并不必要,反而会给自己也给团队带来很多麻烦,我已经写好并测试完成的代码被不停地改错,出错之后又来找作为负责人的我,面对这种我的代码被修改然后又要让我来修改bug的情况,我也是忍无可忍,还好大家也都理解。所以我应该在包容的同时将问题也提出来,才不会总是被误会。

(5)在这两周的开发中,大家互相争论然后互相包容,互相鼓励的这种气氛,让每个人都充满开发的激情,也很感谢大家对我的包容,也和感谢所有人的付出和辛苦。

六娃(隐身术,透体术,来无影去无踪,聪明机灵):

在结束了为期10天的小学期之后,作为SM的我,感触良多,分为以下几点:

  1. 不要过早地更新进行优化前端工作。在开发进行中,首先进行了前端的设计与编写,但是在一开始并不是很了解需求,所以在花了大量时间进行前端页面设计之后,在做后端时,又将之前很多的工作推翻了。在内核里的代码应该尽力的写好来避免不要的浪费,但针对高于单个方法的级别的优化应该在整个项目测试通过、针对最终实际用户的压力测试用例通过之后才能进行。 仅仅根据静态的代码来判断哪些是影响整个性能最主要的问题的论断往往是错误的。 相反,评审整个系统的运行表现,找出真正影响性能的1%的代码,只针对这些代码做优化。
  1. 在人员的协调沟通方面,应该更多地进行沟通交流,让每个成员了解需求。大型复杂的项目必须要分割到几个独立的团队去开发,然后派发到每个开发人员的手中,但这绝对不能变成程序员可以不明白最终产品的使用用户的需求和目标是什么。在敏捷开发中,结对编程更容易使得一个团队的人对需求的理解程度不同,造成后期整合代码时,大家的逻辑不同,为后期优化制造了大量的工作。
  1. 只有当准备好了实现和测试才去确定设计。 我应该有一个总体的认识我们要做什么,应该有个总体架构目标,而不是详细设计、详细的具体方法的实现,只有当开发迭代到一定程度后、足以让我们定下设计细节后才去把它表现成文档。 详细设计只应该包括当前需求用例中需要覆盖的部分。 软件开发中最大的浪费就是你花时间设计出来东西后被告知不需要了,或者是你的设计一开始就建立在错误的假设上。

七娃(有宝葫芦,可以吸入魔法、兵器和妖怪):

可能真的像林老师在项目启动会说的那样,这十多天的小学期是我大学生活中最充实的一段日子。

项目刚启动的时候真的是很迷茫,说起来在软件学院学习了三年,但我对自己的代码能力却不是很有把握,因为总是碎片式的参与,没有一种完整的体验,而且总是觉得编程是一种非常无聊的事情,每次大作业当成是一种痛苦来面对,而这次小学期我觉得收获的要比之前所有的课程都更多,算然很辛苦,每天起早贪黑,但我的代码能力、修错能力都得到了极大锻炼。

某种意义上,这个过程也是个逐步发现自我的过程,在一开始的结对编程中,我是写前端的代码,但随着业务的深入,我在团队中的位置也是越来越靠后端。一开始大家对于如何从数据库获得数据不甚了解,我花了一个晚上简单了解了linq的相关操作,次日早晨教大家学会了这些操作之后,我感觉自己在这方面还是拥有一定灵感的,于是进一步深入,再往后大家遇到数据库方面的问题也开始都来找我,我在解答的过程中也感觉到了快乐,开始觉得编程并非想象中枯燥。

在团队协作的过程中,我也对团队内的每一个人有了更全方位的认识,这种共同的经历让我们紧密地团结在一起,我想以后以后的很长时间内这也会是一份极为珍贵的回忆吧。

摘录感想

时间:2017年07月06日

地点:大运村公寓

事件:葫芦娃兄弟朋友圈感想摘录:

梦见在写代码,总是报错,寻觅无果,突然惊醒,想起小学期已经结束。
大概是大学几年中最拼的10天,天天加班,人朝九晚五,我们朝八晚十二(这一点都不敏捷🤦🏾)
项目开始的时候真的是很懵逼,幸而有无比靠谱的队友,每个人都足够认真负责,等到项目结束也都找到了自己擅长的东西。
经历了人生第一次通宵写代码,8点答辩,7.20在回校的车上发布了最终网站。
每个环节的时间都很紧凑 至于结果?希望也能令人满意
总之感谢各位👏 ----七娃(力大无穷,巨大化)

从绝望到难忘的10天里
大概熬了9天夜(还有1夜通宵了)
大概内部整理了50个版本(因为解决了800个bug)
大概让我止不住地感动(为什么一整个团队都可以这么认真这么负责)
这就是我曾经一直渴望而现在最最喜爱的团队呐
可以说是没有什么遗憾了
“走,救爷爷!”[机智] ----六娃(千里眼,顺风耳,灵活聪明,机敏过人,最善于谋划计策)

说实话,头一次感到这么大的压力。
自己一遇到问题就很容易陷入局部最优的坑里,谁都不想理,也什么都不想管。自己的性子又急脾气也还不好,说话做事都不考虑大家的感受,在此先向大家说声对不起。
其次必须要感谢大家这10多天来对我的包容和理解,能够容忍我那些无理的要求甚至十分伤人的话🙏🙏🙏。无论是控制情绪还是合理交流,这些都是自己的弱项,都是我在以后的学习生活中要特别注意的地方。
小学期累是累了些,但是过得很充实,很有目标。经过10多天的开发,各自都有了擅长的基本定位。可以说是个个身怀不同的绝技,现在就是名副其实的葫芦七兄弟! 走,救爷爷去!
暑期就要到来,新的目标也就在不远处!所有的人都要加油哦[皱眉] ----大娃(铜头铁臂,钢筋铁骨,刀枪不入)

posted @ 2017-07-04 00:58  伊甸一点  阅读(563)  评论(0编辑  收藏  举报