个人阅读作业3
之前阅读作业的博客:
http://www.cnblogs.com/JinD/p/4093433.html
一、关于之前遇到的问题:
1.关于团队合作中遇到的问题,整个阶段一,阶段二的合作下来,感觉还是比较好解决的。通过团队内定期的沟通交流,彼此汇报进度与各自遇到的问题时,团队中的其他人都都在,能够共同解决每个人遇到的问题,也就能保证尽可能有效快速的找出问题的根源,从而也能比较有针对性地让团队成员去解决各自所遇到的问题,而不至于把大把时间浪费在找出因为别人的一个小疏忽而影响自己进展的问题。
2.关于团队中工作分配的问题,确实每个人的水平都有不小的差异,虽然一开始分配工作的时候也就考虑了一些这种方面的内容,但是实际操作过程中难免会有不周全的地方。团队成员各自的工作基本不可能保证各自都能独立按时顺利的完成分配的任务,因此,某个人出现问题影响整体工程进度时,首先还是先尽可能地要求这位成员抓紧时间,看能否在有限时间内赶上工作进度,如果能够顺利赶上,那么任务继续进行,但在有限的时间能还是没什么进展,一直卡住的话,还是选择找替他团队成员先暂时放下自己的事,帮助出问题的成员先解决他的问题,以便让工程进度不至于一直因此被拖住。
就拿我们阶段一过程中遇到的网络连接部分的问题来说,由于种种原因,我们写的工程就是连接不上之前学姐写好的服务器,负责网络连接部分的成员因此也花费了大把的时间,也尝试过很多种方法,各种在网上搜集资料,各种请教周围的同学,学长学姐也没少麻烦,但是还是没什么实质性的进展,网络连接部分迟迟不能搞定。因为界面的设计与从网络上获取下来的数据内容与格式也有一点联系,而数据处理部分就更是了,要根据从网络上获取下来的数据进行相应的处理,然后实现相应的功能,所以就因为网络连接部分一直没有解决,导致数据处理部分的工作根本不能进行,(连返回的数据是什么样子的都不知道),界面设计虽然能够有进展,但是不敢保证能很好的显示从网络上获取下来的数据的各种内容,有些界面与布局也就暂时不能确定。总之,第一阶段时,就因为网络连接部分我们迟迟不能解决,导致整个团队的工程进展受到了非常严重的影响。以至于我们基本上所有人都尽可能地想办法一起解决这个问题,一切都已这个问题为主了。也因此难免最后没有能够按时完成工程。还是一开始没能对这部分有足够的认识,没有尽快的以这部分为中心吧。
3.关于共同远景的问题,这方面还是理解不够吧。原因的话,还是我们的工作中没有太多的关注这些吧。由于一开始的就遇到一个大问题导致工程进度被严重拖延,后期赶着解决问题都来不及,也顾不上什么远景了,想着能先把最基本的功能实现了就完事大吉了吧,也没什么雄心壮志说想要实现怎样怎样的目标了,感觉抓紧埋头写代码就不错了。
4.关于团队工作中的矛盾问题,要我说什么好的解决办法,可能还是不太说得上。原因是,我们团队做的是一个北航的MOOC客户端,说白了就是做一个Android的手机应用,不想其他好多组做关于学霸网站相关内容的,组与组之间有很大的联系,各组的工作中难免因为与其他组的沟通交流不够引发很多矛盾,离不开各种协调沟通,我们组没有这些问题,而组内团队成员之间,因为信息比较流通,没有多少因为彼此缺乏信息交流引发的矛盾,难得产生一些小矛盾,两个人商量一下,随便一个人让步一下也就解决了,都是一个团队的,也很好说话,所以这遇到的这方面的问题不多吧。
5.关于测试出的问题,就我们团队的情况来说,当初我们是把整个工程分成了三个大部分,每个部分交给两名成员,剩下一个成员做PM,负责协调处理整个工程,而分配给每两名成员的那部分工程,两名成员也就基本采用结对编程的方式,编写代码的过程中,就尽可能避免问题,同时,没完成一项工程,肯定会让边上的另一位团员进行测试检查,保证不会存在一般常见的问题。测试出来的问题,因为两个人对这部分工程都很了解,解决起来问题也就不大。最后的测试由于时间问题,做的不够全面,测试出的问题,基本很少了也就,通过团队集中交流处理的方式,也很快解决了。
二、新问题
1、部分团队成员很难安排,确实编写代码、写工程项目什么的能力不太够,但是更缺乏付诸实践的动力与热情,很难调度,分配的工作也就很明显的不均匀了,可能会影响团队中其他成员的积极性,这问题不知道怎么解决。
2、关于第二阶段的更换一名团队成员的问题,由于第一阶段的工作分配,第二阶段基本沿用,可是让新成员直接替换到离开的成员的位置又难免有些不合适,而因此更改整个工作分配,原来的团队成员也会觉得比较麻烦,因此这问题不知道有什么更好的解决办法。
三、新的感悟
一个学期的软件工程课程即将结束,通过这一个学期的学习与作业,主要是团队作业的第一,第二两个阶段下来,还是有不少的收获。
最直接的,因为软件工程的作业,这学期去图书馆的次数明显增加了,常因为布置的各种作业,而自己本身对这方面了解不够,要去图书馆借阅相关书籍从头学起。一开始的个人作业,要求用C#或C++写,结果因为没写过这两种语言的程序,先要学习C++的语法。而到了团队作业,就更不用说了,没有开发安卓应用的经验,又是去图书馆借了好几本安卓开发应用的书籍,看一本学一点,遇到现实问题不知道怎么解决了,又要去图书馆看看有没有关于这些问题的一些具体的解决办法。就拿我们第一阶段中遇到的最大的问题——网络连接来说,就是这个问题,就和舍友去图书馆找了好几次。虽然最后也没能还找什么有用的书籍资料,还是在学姐的帮助下解决的。
对于布置的个人阅读作业,也是为了完成这个阅读作业看了不少软件工程的相关文章。从第一次的《移山之道:VSTS软件开发指南》,到第二次的《No Silver Bullet: Essence and Accidents of Software Engineering》、《Big Ball of Mud》、《The Cathedral and the Bazaar》等等这多篇文章,虽然说实话,当初看的时候不是很详细认真,仅仅抱着完成作业的心态阅读了一下吧。当初看那几篇文章,还什么都没开始,也就算是为了面对接下来的团队工作,学习一些好的方法与经验。不过现在回过头去看当初的那几篇文章,确实有很多不一样的体会。就以团队协作中遇到的问题来说,我们的团队协作实在称不上成功。毕竟,我们在第一阶段,连老师最基本的要求都没能达到,第一阶段其他组都能像模像样的将自己发布的成果展示出来时,我们组却因为网络连接部分,只完成了基础的UI界面布局而已。
第一阶段暴露出的我们组团队合作中各种问题有很多,首先,我们团队整体实力不够,算是一个无奈的现实,也算是我们组内公认的一个借口吧,导致工作进度一开始就不是很顺利,进展较慢。总觉得没有一个人能够带头推动项目的进展,然后大家也就有点不知所措。同时,团队中的沟通交流存在问题,刚开始时,由于大家都不太清楚怎么做,每次想交流,每个人几乎都是很无奈的回答没什么进展,渐渐也就打击了大家彼此交流的积极性,慢慢的就算有了一点小小的进展,也觉得不好意思说了。还有就是第一阶段展示的时候也提到过,组内的有些成员很难完成分配下去的任务,又迟迟不能采取实际有效的行动,感觉什么都不会,要学的东西太多而无从下手吧。还有就是没有从一开始就规划制定好团队工作的方法,之前缺乏像这样的团队工作的经验,我们的团队工作只能算是多个人在干一个同样的工程而已,很难称得上是一整个团队在合作完成一个工程。这些算是一个教训与收获吧。
第二阶段开始,我们必须抓紧时间了,毕竟不仅要完成第二阶段的任务,首先我们还得完成第一阶段的历史遗留问题。虽然一开始还是因为网络连接的部分耽误了不少时间,中间也又查过很多书,在网上搜过很多,也找过学长、学姐好几次,甚至舍友找一个一个做软件的亲戚,请他们这些专业人士帮忙看看,结果也是迟迟没什么实际进展。直到终于有回信的学姐回复了一段代码,试了一下,能用了,对比之前我们写的,也就是关于cookie获取部分有那么一点小小的区别。结果问题也就是这里吧。真的感叹遇到实在麻烦的问题,还是找了解这问题的人帮忙最有效吧。接下来的团队工作总算是能够平稳的逐步进展了,虽然第一阶段中暴露的团队问题并没有完全解决,但也有了改善吧。最后勉强赶在截止日期前成功发布了。虽然确实因为第一阶段以及第二阶段开始落后的太多,第二阶段要求增加的功能有几个都没能实现。这是这次团队作业最后的遗憾吧。
总的来说,回顾这学期的软件工程课,体会到了一名程序员的艰辛吧。更深刻的体会到,以自己目前的水平,还差的太远,有太多要学习提高的内容。首先,自己阅读代码、编写代码的能力太弱,当初老师还特地给了我们学长之前写的iOS版本的代码,结果我们第一阶段的第一周时间全看代码了,去还是没看懂什么,虽然Xcode不了解也是一个原因,但是还是自己能力不够;其次,学习阅读能力不够,对看到了书上的,网上的知识不能有效地转化吸收,导致自己在工作中遇到问题的解决能力不够,忙的焦头烂额却没什么实际进展;还有就是在团队中与他人协作的意识不够吧,感觉宁可自己一个人,或者加上一个熟悉的人干,宁可自己或者两个人多干一点。
大概就这些吧。