网络软工个人作业4——Alpha阶段个人总结
一、个人总结
在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程;
请用自我评价表,有比较才会有进步。
类型 | 具体技能和面试问题 | 现在的回答 |
---|---|---|
语言 | 拿手的语言 | 相对比较好的就是C语言和JAVA |
软件实现 | 有没有在别人的代码基础上进行改进?你是怎么读懂别人的代码?遇到的bug是什么,怎么解决?bug出现的原因,应该如何避免? | 有,在做项目的时候,经常使用别人的代码作参考,首先要先运行代码,知晓程序的功能,然后可以根据功能在代码中找到对应的模块,这样即使没有代码规范,也能自己看懂代码。遇到的BUG多半就是在实现功能方面,例如本学期的结对编程,就是在现有代码上改进的,当时遇到的问题是程序并没有检测重复运算,导致生成的题目会有小概率出现重复,最后我们通过编写了一个检测函数,解决了这一问题。BUG之所以会出现,主要还是我们在编写时对于所需算法的不了解,考虑不够周全,应当从多方面考虑,多进行测试。 |
软件测试 | 你是怎么测试自己的代码?怎么测试别人的代码? | 可以做单元测试,通过一系列的测试工具实现。对于别人的代码,既然我已经得到了,那就是我的啦(开玩笑的),要把别人的代码理解通透,我会从它运行的效果来看,可以设计一个思维导图,理清楚别人在编写时的思维构架,然后熟悉了之后,就当成是自己的代码在测试吧 |
效能分析 | 你是如何测量代码效能的? | 做性能测试、压力测试等一系列的测试实现效能分析 |
需求分析 | 你做过多少个有实际用户的项目?你的项目有什么创新的地方 | 只有本学期的团队项目做过。创新的点在于将单机小游戏实现用户之间的互动(通过好友较量、排行榜等规则) |
行业洞察力 | 你最感兴趣的领域是什么?你分析过这个领域前十的产品吗?请分析一下他们的优劣,你要进入那个领域,如何创新 | 应该是网络安全领域的吧。比较著名的厂商就是绿盟和华为等等了。 |
项目管理 | 1.你参加过项目管理么?请描述一下两个当下流行的开发方法在你的项目中的具体应用情况。如何决定各个任务的优先顺序,有什么理论来支持你的做法?如果项目不能及时完成,作为项目领导,有什么办法? | 本学期的团队作业就是项目管理了。我们的团队就是明星模式的团队模式,当然我即将转到另一个小组去了,这个小组又是主治医师的团队模式 |
团队协作 | 描述你在项目中如何说服同伴采取你更好的方案,或是听取别人的意见改进自己的方案,如何说服懒惰的同伴加紧工作,或者如何听取了别人的意见,改进了自己的方案? | 我认为大家要保持一起完成的状态,这样就不会要某一个落下了。 |
理论素养 | 你上过什么数学,计算机或是理论课,举出具体的例子,如何帮你解决问题 | 数学方面有高数、离散数学、概率论和线性代数。计算机方面有计算机组成原理,各类编程语言等等。 |
二、回答问题
我们在课程开始之初,曾经要求大家针对软件工程提出问题:个人阅读作业2,那么在经过alpha阶段,大家是否对软件工程有了一定的了解?请结合自己提出的问题进行回答
问题一:关于创新
由于我的编程水平和编程经验非常不咋地,所以我根据张敏老师的建议先从第16章切入。16章主题便是IT行业的创新,本章开篇已经提到,不单是普通群众不喜欢创新,甚至许多的IT技术人员都不喜欢创新。从我自己的角度看来,我似乎已经习惯了在一定的模式下去完成一些东西,就例如书上提到的QWERTY键盘布局和DVORAK键盘布局,在我小学时接触电脑,便已经习惯了使用QWERTY键盘布局,到后来智能手机的发展之后,这样的全键盘输入法使用的频率就更加高了,即使是DVORAK键盘布局从科学的角度上来说对个人更好,但是毕竟习惯成自然,那么,在我们的创新过程中,我也会有这样的困扰,当我自己被平时许多习惯束缚,安于现状时,要如何打破这样一个束缚,去开发自己创新的一面。
有一句话叫做:“如果你只是做你力所能及的事情,那么你永远不会进步”,这句话也献给当时提这个问题的自己,创新本身就是一个挑战自我极限的过程,当你冲破束缚之后,就会发现一片新的大陆。
问题二:领域的专家为什么不能创新?
对于16章的迷思之五:要成为领域的专家,才能创新。
这一节所说的一些实例,其实在我的校园生活中也非常的常见。例如,我大一的时候,集美大学财经学院有一位学长,通过自己的创意制作了一款手机APP(如果没记错的话是专门用于解决国外华人的就餐问题的APP),这个学长通过自己的这个想法挣到了自己在创业中的第一桶金,而且在我大一那年横扫校内所有的创新创业奖项,而且经常到各个座谈会宣讲(不然我也不会知道他)。这位学长也不是学计算机专业的,但是却能在软件开发方面取得我们这些专业学生都取得不到的成就。那么我们作为学计算机的学生,其实很多时候是不是应该寻找自己其他方面的兴趣,再利用专业所学与之结合呢?
我认为一个领域之所以能达到一定的高度,必然是和其他的领域有所联系有所互通的,在这样的基础下才能去实现一些创新的功能,做到1+1>2。
问题三:结对编程
结对编程方面,我也有一个问题,就是在我们平时完成一个项目的过程中,我发现我往往都是跟自己的关系比较好的人或者舍友(特点:兴趣不大、水平相当)组队完成小项目,这时候就会出现一个问题,例如我们大一时想完成一个科研立项,当时我是小组组长,可是当我什么都不说时,他们也不会提到这件事情,当我有想法有建议时,他们给出的反应往往就是:“这样可以啊”、“我觉得OK”、“按你说的做吧”这样的,所以到最后这个项目也就完成了10%,所以在结项的时候并没有成功。我认为大家水平都不高而且都差不多的时候,经常出现这样的情况,而我们的学院这一个圈子下的专业水平更高的一群人也报团在做一个项目。我认为在这样的环境下很难发挥出一个团队的效果,我想知道有什么样的办法能够提高这样的团队的效率吗?在正在进行的结对编程中,我应该如何避免这样的问题。
其实我现在认为我自己当时的表现也是一个没有积极性的表现,所以只是一个借口用来推脱,要实现团队的效果,一定是要小组的成员们有一定的紧迫感,才能实现工作和目标的一致。
问题四:关于MSF
MSF有九项基本原则,我认为这九项基本原则在平时完成一些课程上的练习方面没什么实际意义。例如第七条投资质量(平时的实验如何体现出投资质量)、第二条为共同的远景而工作(学生对于一项工程的共同远景多半就只有完成就好=_=)。那么我们在团队项目中如何凸显出MSF的价值呢?
当时我对于一个项目的认知还不够长远,其实在需求分析阶段,就能发现这个基本原则的价值所在了,一个产品,往往都需要去考虑它的价值所在,而不能因为它价值不那么大就不去考虑,学习本身就是一个由小到大的过程。
问题五:实际应用
我个人其实对于编程方面的知识可以说是没什么兴趣的,因为学习编程这并不是我的本意,不过在大致读了《构建之法》后,我第一次在计算机专业的范畴内感受到了我更感兴趣的管理、人际交往方面的知识和编程是有着密切的联系的,也感受到了编程,不单单只是为了实现一个什么样的算法的,而是有实际应用的。那么,如何将这些人际交往、团队合作的内容实际的应用到软件工程的学习中去呢?
其实这个问题提的不好,我认为软件工程的学习过程就给了我们一个人际交往团队合作的平台,此后遇到类似的团队项目,都应该是一个交流的好机会。