个人作业4——alpha阶段个人总结
一、个人总结
1、在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程;
保持高标准,不要受制于破窗理论(broken windows theory)[i]。当你看到不靠谱的设计、糟糕的代码、过时的文档和测试用例的时候,不要想 “既然别人的代码已经这样了,我的代码也可以随便一点啦。” 不但主动做, 还会影响同事一起做好
总体来说,这次的alpha并不是很顺利,编程是基础,如果对语言不是很熟悉的话,一个团队是很难开发出什么东西的,我们组刚开始是打算边学边做,但是想法总是很美好,现实总是因为自己的懒而没有做到,我自己有在学习前段的开发,但是学到的知识一些皮毛吧,想要一下子使用起来还是很困难的。
2、自我评价表
类型 具体技能和面试问题 现在的回答
语言 拿手的语言 JAVA。此外,还学了Python
软件实现 有没有在别人的代码基础上进行改进?
你是怎么读懂别人的代码?
遇到的bug是什么,怎么解决?
bug出现的原因,应该如何避免? 1.经常这么干。
2.先根据注释大体看一下实现的功能,然后再详细阅读。
3.bug会有很多原因,但是命名导致最后乱成一团以及一些逻辑问题,这些是很要命的本质问题。
4.熟能生巧。
软件测试 你是怎么测试自己的代码?怎么测试别人的代码? 1.进行JUnit单元测试,市面上有测试工具来进行性能测试、压力测试等等。
2.测试别人的代码,就是先读懂别人的代码,如同转换成自己的东西,再进行同样测试
效能分析 你是如何测量代码效能的 进行多种测试,比如性能测试、压力测试等
需求分析 你做过多少个有实际用户的项目?
你的项目有什么创新的地方 1.有实际用户的项目是我们目前开发的微信记账小程序
2.他的创新之处在于可以做预算,计划每天的能花费的钱,并根据实际花费(超支或者剩余)对接下来天数的可用金钱进行调整
行业洞察力 你最感兴趣的领域是什么?你分析过这个领域前十的产品吗?请分析一下他们的优劣,你要进入那个领域,如何创新 人工智能吧。最让我印象深刻的是去年底索尼公司只是面向日本市场推出的robodog系列机器狗,每只售价1800美元 。最突出的一点是,该款产品结合AI技术能够准确识别出主人并在互动过程中感知主人的情绪。换言之AIBO机器狗通过传感器能够具备强大的养成能力,感知到主人的喜好并调整自己的性格及互动行为,成为每个主人身边独一无二的AIBO。它的优势是在于不再是冰冷的机器,而是可以让主人对它产生感情,并且进行情感互动。至于创新,应该就是基于人性化的设计尤为关键吧
项目管理 1.你参加过项目管理么?请描述一下两个当下流行的开发方法在你的项目中的具体应用情况。
如何决定各个任务的优先顺序,有什么理论来支持你的做法?
如果项目不能及时完成,作为项目领导,有什么办法? 这次的软件工程的项目开发最重要的任务之一就是项目管理,我想很多团队包括我们团队,都是采用“主治医师”的团队模式(不排除一些团队用的是"明星模式";在冲刺阶段采用的是敏捷开发。大家各自其职。
2.PM总是在宏观调控大家的任务与进度,优先顺序自然是把最基本的、适合所有人的功能放在首位。
3.如果不能及时完成,那我们就会选择退而求其次,放弃附加功能,尽力完善基础功能
团队协作 描述你在项目中如何说服同伴采取你更好的方案,或是听取别人的意见改进自己的方案,如何说服懒惰的同伴加紧工作,或者如何听取了别人的意见,改进了自己的方案? 没有出现谁说服谁的情况,遇到问题大家都是一起讨论,找到一个好的解决方案,冲刺阶段项目经理及时跟进,让我们顺利赶出进度
理论素养 你上过什么数学,计算机或是理论课,举出具体的例子,如何帮你解决问题 高等数学,C语言,JAVA等,据说算法课程很有用,可惜我没有选,这些课都是很基础的课,编程能力越高冲刺阶段的敏捷开发就越轻松
自我管理 全年级你专业排名多少?你从刚入学(大学一年级)到现在的排名有变化么?如何解释你的排名变化? 1.二十几名
2.大一是四十几名,大二是三十几名,总体来说是在进步的,给自己朵小花
3.用在学习的时间上多了,不再抱着“及格就行”的心理
回答问题
问题一
看到软件工程这本书,我的第一感觉就是又要开始编程写代码了,对于一个编程薄弱的人,并且属于网络专业的学生来讲,学习这门课程到底有多大的用处,或者说能从这本书中学到什么东西?通过百度查询了一下网络工程的定义:本专业培养的人才具有扎实的自然科学基础、较好的人文社会科学基础和外语综合能力;能系统地掌握计算机网和通信网技术领域的基本理论、基本知识;掌握各类网络系统的组网、规划、设计、评价的理论、方法与技术;获得计算机软硬件和网络与通信系统的设计、开发及应用方面良好的工程实践训练,特别是应获得较大型网络工程开发的初步训练;本专业是专门为网络领域人才市场供不应求的迫切需要而设置的专业。所以我觉得在软件开发这方面涉及的比较少。
答:编程是学习计算机必须要掌握的一个基础,可能网络这方面对编程的要求不是很大,但是如果一个计算机专业的学生连编程都不会,那就说不过去了。学好编程会对人的思维有一定的帮助,客观的来说,学好一门课程对自己的学习能力也是一种提升,编程对很多人来说可能是比较难的,但是如果学会了,也就说明了自己的学习能力提上去了,有了这个学习能力,在学习其他的,就会很容易上手,毕竟做很多事情,都是要自己去学习,自己去领悟,对于软件工程这门课,除了给我们锻炼编程的机会外,也包括了如何去更好的完成一个项目。
问题三
看了第三章--软件工程师的成长,我开始有一个感受,对于这本书的读者,是不是应该具备有良好的编程基础,对于基础薄弱的我,问的问题更多不是技术上的,而是如何去学习好这门课程。第三章有一个问题--选哪一种医生,分别有abcd种类型,但是更多人还只是处于a的类型,软件工程这门课可能是对编程的一个提升,我想问的是,目前在学习这门课程,该用什么样的方式才能跟得上。
答:只能说,功夫不负有心人,只要肯花时间去学,就没有学不会的东西,基础不好,不代表学习能力差,但是如果不肯花时间去学,学习能力只会慢慢下降,更重要的还是学习能力,其次就是学习方法,再者就是学习动力,想要比别人好,就要花更多的时间去学习。
问题五
PM即项目经理,讲述了PM在团队中的重要性,也就相当于前面所提到的Scrum master ,一个合格的PM需要的能力有1、观察、理解和快速学习能力;2、分析管理能力、3、一定的专业能力、4、自省能力。对于一定得专业能力所指的范围是什么,是不是要经过一定的开发经验才能做好上PM?还是要求每一个计算机知识都能懂一些,但是允许编程能力的不足?如果想要做一名PM。有什么好的建议?
答:一个PM除了会管理之外,还要是行内人,可以不用很好的编开发能力,但是要懂得开发的流程,如果有好的开发能力,那么在一个项目的实施,会有更合理的安排。
三、再提问题
1、对于文中提到的敏捷开发,因为现实中需求一直在变,如果前后需求差别很大,怎么样细化每个成员的任务?
2、当项目遇到瓶颈的时候,每个人都毫无头绪,那该怎么办?
3、在团队的软件开发过程中如果遇到技术瓶颈,是否应当删掉某部分功能或者外包给别人做?
4、需要换团队成员,那么如何选择离开的成员,贡献度最低的那个吗?换完成员后,如何快速融入新的团队?