一、请回望开学时的第一次作业,你对于软件工程课程的想象
1.对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
看到这道问题,我特意看了我的第一次个人作业,当时的期待和目标是:
我希望学完这门课程能做到有所学,有所得,提高自身的动手能力,锻炼自己的逻辑和思维的能力。虽然很多大佬都提出了要自学,但是我还是希望老师可以很好领我入门,而不是像博客一直在路上——记我从初中到本科近十年的学习成长历程提到的老师一样“照本宣科地阅读PPT课件”。
回顾整个课程,快速的入门一门语言,经历了两次冲刺,冲刺期间与队员不断讨论,理清逻辑,期间几乎熬夜写代码,可以说是一段充实又紧张的时光。因此我的动手能力,逻辑思维能力得到了提到,虽然还没达到大神级别,但是也是一种进步。张敏老师,在上课期间会通过视频等,比较直观的东西,让我们更好的理解。
我觉得在锻炼自己的逻辑和思维的能力的目标上还是有不足的地方,因为锻炼逻辑和思维的能力不是一朝一夕的事情,需要日积月累,才能感受到它的进步,所以对于这个目标还需努力。
2.总结这门课程的实践总结和给你带来的提升,包括以下内容:
1)统计一下,你在这门课程中,完成了多少行的代码;
大概完成1500行的代码
2)软工的各次作业分别花了多少时间?(做一个列表)
作业 | 所花时间 |
---|---|
个人阅读作业1 | 4h |
结对编程练习 | 36h |
个人阅读作业——提问题 | 8h |
团队作业1——团队组队&展示 | 1.5h |
个人作业3——案例分析 | 8h |
团队作业2——团队计划 | 6h |
团队作业3——需求分析与设计 | 12h |
软工网络15Alpha阶段敏捷冲刺 | 70h |
团队作业5——测试与发布 | 5h |
团队作业6——展示博客 | 5h |
alpha阶段项目复审 | 2h |
团队作业7——alpha阶段之事后诸葛亮分析 | 2.5h |
个人作业4——alpha阶段个人总结 | 4h |
团队作业8——敏捷冲刺(Beta阶段 | 30h |
团队作业9——项目验收与总结 | 6h |
beta版验收互评 | 2h |
3)哪一次作业让你印象最深刻?为什么?
个人阅读作业之提问题,因为真的没有做过对教材提出问题的作业。我记得我做这个作业做了很久,前面几天看书,后面几天断断续续的写博客。我不是很擅长提问题,我一般会在老师上课过程中产生疑惑,对于第一次接触的东西我一般首先会接受,试着去理解,不会急着提出质疑。为什觉得这次作业难,还是关键在于不会提问题,助教也对我提问题的咬文嚼字提出了建议。但是我如果抱着要找出五个问题的目的去看这本书,我就会带有找茬的心态看这本书,就会一个字一个字看,最终就容易钻牛角尖。不过也是因为这次作业,看了其他同学提的问题,了解了原来可以有这么多其他的想法,也锻炼了我提问题的能力。
4)累计花了多少个小时在软工上?平均每周花多少个小时?
根据上面作业花的时间,累计花了200个小时,平均每周花14.3小时。我感觉不只是这些特别是冲刺阶段,那一整周心都放在软工上,连上下课都在讨论软工的问题。
5)学习和使用的新软件;
腾讯云服务器、知晓云、码云、leango、微信web开发者工具,51调查网
6)学习和使用的新工具;
微信web开发者工具
7)学习和掌握的新语言、新平台;
学习和掌握的新语言:WXML,WXSS,JS
新平台:微信web开发者工具
8)学习和掌握的新方法;
通过个人阅读提问的作业,学会了看书提问题的学习方法;通过结对编程,学会了单元测试方法,软件的各项功能测试;通过团队冲刺,学会了需求分析的方法,了解了敏捷冲刺的流程,学会了用码云管理代码,用Leangoo管理项目进度,学会写代码规范,规范编程。
9)其他方面的提升。
学会遇到bug,不骄躁,上网查找解决方法,提升了解决问题的能力。
通过团队合作,提升了沟通能力,团队合作能力,增加了责任感。
二、写下属于自己的人月神话
个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
-
学会计划安排时间并能按照计划行事,这在冲刺阶段是尤为重要的。
一个团队最终是否能如期交付取决于项目进展是否顺利。这点我们团队做得还是不错的,大家都能根据任务计划表来完成任务,我是看到有的其他团队最终没有如期交付,然后看了一下他们的燃尽图,就可以大概知道他们没有合理安排时间,然后导致项目进展受阻。 -
不要在一种方法“吊死”
我们都知道条条大路通罗马,对于同一个问题有多种解决方法,就比如数据的存储有多种形式,比如本地存储,MySQL数据库存储,知晓云存储等等。我们一开始是使用MySQL数据库来存放数据,但是后来为了如期交付,选择用比较简单的方法本地存储来先解决数据存储的问题,当然这不是最好的方法,所以我们在Beta阶段放弃MySQL数据库使用知晓云来存储数据。如果我们没有使用知晓云,而是坚持使用MySQL数据库,不会知道知晓云的方便性,虽然使用MySQL数据库也可以完成项目,但是会拖延项目的进展,在一个问题上卡死。 -
快速入门一门语言,实际动手操作才是最快的方法,不要有畏惧心理
我一开始使用微信开发工具也是一脸懵逼,再加上没学过WXML,WXSS,JS这三们语言,还要短期内学会并写代码,确实不容易,心里也会担心可不可以。一开始写的时候错了也不知道错在哪,也不会定位,也不会调试,一头雾水。熬过第一天,后面就用的比较顺手了。新的东西一开始都很难,只要你开始了渐渐就会了。 -
团队合作要善于沟通
因为每个人都是独立的个体,大家都有不同的想法,而且在团队冲刺阶段你不可以看着团队成员在做什么。只有沟通才能最快获取任务进度,才能知道队员遇到了什么问题,是否需要调整进度。 -
PM要做到把握整体和项目的进展,需要一个会写代码的人来承担
因为PM要制定团队计划,分配任务,只有PM懂得代码,才能合理安排时间。因为团队每个人做的只是项目的一部分,只有PM才知道项目的整体,可以更好把整个项目串起来。
三、建议
对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。对于换人机制,有什么样的建议?
- 对下一届实践的建议
学号c语言和java,打好基础,它可以帮助你在今后学习新的语言。确定项目的题目的时候,可以团队一起确定。要根据团队的水平选择适合团队的项目。如果选择新的平台开发项目也不要太畏惧,既然选择了,也要笑着写下去,不要轻易放弃,要相信自己。如果在项目开发的过程中遇到困难,可以与团队讨论,不用自己孤军奋战。做团队任务的时候,要把团队任务放在优先级,不要因为自己某些不愿意,打击团队的积极性。 - 对于开学初的我
多读书,多学习。静下心,专心做好一件事。 - 对于换人机制
其实对于写代码的人来说,换到新的团队很难承担写代码的任务。而且一般上一个团队会写代码的成员即主力军,也不会换到其他团队,毕竟自己看着自己项目建起,然后要放弃它,还是很不舍。而且换人跟冲刺阶段很接近,新加入的成员还没很好适用,就制定了团队计划,这种情况下为了保险,一般不会安排主要任务给新的成员。而且第一阶段团队成员已经建立一定的革命友谊,新加入的成员一时很难加入。所以我个人认为其实不是很有必要有换人的机制。
四、分析一下自己所处的团队。
软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
四个阶段,分别为
- 萌芽阶段:组队完成,虽然彼此熟悉,但是对项目怎么做还是一脸懵逼。
- 磨合阶段:对于项目的安排,项目的细节,大家都有各自想法,需要讨论开会统一观点。
- 规范阶段:团队成员各司其职,按照团队计划进展,根据代码规范编程,完成一个可交付的产品。
- 创造阶段:个人认为还未达到这个阶段。
五、怎样证明你学会了软件工程?
1.研发出符合用户需求的软件
- 必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
从截图可知有73个用户
项目二维码:
2.通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
- 有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
项目规划
项目的需求分析
项目的设计
项目的实现,发布,维护:
http://www.cnblogs.com/LDLYMteam/p/8983035.html
http://www.cnblogs.com/LDLYMteam/p/8983051.html
http://www.cnblogs.com/LDLYMteam/p/9142408.html
项目定时的进度发布:
Beta阶段Scrum 冲刺博客合集
Alpha阶段Scrum 冲刺博客合集
3.并且通过数据展现软件是可以维护和继续发展的。
- 而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
项目通过码云管理源代码,码云地址:https://gitee.com/yangxueying/software_engineering_team_work