一、请回望暑假时的第一次作业,你对于软件工程课程的想象
-
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
-
答:在代码量的训练量和新语言的学习基本达到了开学初的期待和目标,不足之处在于由于课程较多学习相应代码语言的时间较少,不够系统的学习每次使用还需要在查看文档。
-
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
答:大概完成了1500行代码。
2、软工实践的各次作业分别花了多少时间?(做一个列表)
答:
标题 时间(分钟) 福大软工1816 · 第一次作业——准备 30 福大软工1816 · 第二次作业——单词词频统计 150 福大软工1816 · 第三次作业——结对项目1——论文获取原型 200 福大软工1816 · 第四次作业——团队作业1——团队介绍 30 福大软工1816 · 第五次作业——结对项目2——论文获取代码 360 福大软工1816 · 第六次作业——团队作业2——选题报告 120 福大软工1816 · 第七次作业——团队作业3——需求分析报告 150 福大软工1816 · 第八次作业(课堂实战)——团队作业4——项目UML设计 90 福大软工1816 · 第九次作业(课堂实战)——团队作业5——抽奖系统 120 福大软工1816 · 第十次作业——团队作业6——Alpha冲刺 600 福大软工1816 · 第十一次作业——团队作业6——Beta冲刺 300 3、哪一次作业让你印象最深刻?为什么?
答:最深刻的是Alpha冲刺,因为这次作业需要学习的内容很多,经过大家的合作进一步熟悉的我的队友们,在大家共同的努力下完成了我们产品的核心功能。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
答:累计花了60个小时左右在软工时间上,平均每周大约5小时。开篇博客回答:因为我选择了卓越班,所以希望能够通过这门课多学习些以后公司需要用到的知识,每周应该能够拿出6个小时左右课余时间来学习这门课。
5、学习和使用的新软件;
答:Visual Studio、Typora、微信web开发者工具、Xmind等等
6、学习和使用的新工具;
答:Visual Studio、Typora、微信web开发者工具、Xmind等等
7、学习和掌握的新语言、新平台;
答:html5,css,js以及微信的接口。
8、学习和掌握的新方法;
答:Echart绘图。
9、其他方面的提升。
答:团队合作能力以及遇到问题的解决能力。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
答:在团结项目时间中,我负责的地图可视化界面,将后端获取的图片的位置信息转化成可视化地图上的标点,根据,由于我以前并没有做过项目,一开始很迷茫,在一帆同学的推荐下我上github找到了一款足迹地图,他只能通过手动选区地区来生成最终图片,经过对该代码的研究后,通过百度上的Echart绘图样例终于了解了如何绘制成地图以及如何调整地图的样式,最终在一帆的帮助下完成了后端数据的对接,完成了通过上传照片的地理信息完成可视化地图的功能。 所以我推荐大家并不需要每一个代码都自己手敲,可以借鉴一些前人的总结以及经验。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
-
1)你有什么想建议、告知和期许想要告诉他们呢?
-
答:报软工实践一定不会后悔,一定能学到许多以后可以应用的知识!
-
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?
-
答:换队员无所谓,但自己不要是被换的那个,一般后面加入的都是划划水的,学不到什么新知识。
-
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
-
答:我认为一组8人比较合适,太多了也没有那么多活干,同时负责一个功能反而会造成拖延。
-
4)个人/结对/团队作业应该控制在怎样的规模?
-
答:我认为个人作业、结对作业应该有更详细的样例,不然敲了半天的代码上传后还是零分,感觉自己的努力都白费了。。也没有幸苦分,通过不了测试就是零分。团队作业我认为现在这样就很不错。
-
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
-
答:最感谢的是一帆同学,在他的帮助下我才能更好完成软工实践。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?
答:我们经历了萌芽阶段、磨合阶段、规范阶段,没有经过散伙阶段,但我认为我们也还没有达到整整的创造阶段,我们有部分要求达到了创造阶段,例如说:(1)团队知道为何而战,有共同的远景。(2)团队的注意力集中到如何创造、实现目标上。(4)不同意见仍会发生,但是成员都以一种积极的心态和方式来解决。 团队成员互相支持,互相依赖,而又保持各自的灵活性。(6)角色和职责能够根据项目的要求自然地转换,没有人为此担心或发牢骚。在这样的情况下,所有人都能把大部分精力花在工作上。团队士气高涨。(7)为了集体的利益而改进自己的行为——例如学习新技术,做更好的自我代码复审。但我认为我们的不足之处有(3)高度自治。不再需要领导的时时教诲与介入。(5)所有人互相都比较了解,同时也互相信任,个人可以放手独立工作。
五、怎样证明你学会了软件工程?
-
1)研发出符合用户需求的软件
-
答:通过问卷调查,我们获取了部分用户的需求,整理成了需求池。
-
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
-
答:通过问卷以及组内的讨论,最终也确定的我们做微信小程序已经功能如下图的软件。
-
3)并且通过数据展现软件是可以维护和继续发展的。
-
答:代码可以在github上找到,应用软件也可以直接通过微信搜索草履记来进行体验,所以肯定是可以维护和继续发展的。
-
对着这个检查表检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
类别 具体技能和面试问题 回答 语言 最拿手的计算机语言之一,代码量多少? C++,4000行 语言 最拿手的计算机语言之二,代码量多少? html+css+js,1500行 软件实现 你有没有在别人代码的基础上改进 有 你是怎么读懂别人的代码的 看别人的注释,看别人写的文档,自己随便修改参数试试看 你采取了什么方法来保证新功能不会影响原来的功能 将源代码上传后再进行修改 你在开发中遇到的最复杂的bug是什么,你是如何解决的?这个bug出现的原因是什么,你在将来应该怎么避免bug再出现? Springboot自带tomcat导致无法部署到tomcat。出现原因:自带的tomcat跟部署的tomcat两者冲突,创建依赖的时候,禁用掉自身的tomcat就能解决。 软件测试 你如何测试自己写的代码 给朋友进行测试,尝试输入下些极端数据 你如何测试别人写的代码 尝试输入下些极端数据 你掌握了多少种测试工具和方法 一种 你写过测试工具吗 没有 你如何对一个网站进行压力测试和效能测试 没测试过 你如何测试一个软件的人机界面(UX/UI) 检查界面说明有无错误、鼠标点击交互反馈是否正常 效能分析 你写过的最复杂的代码是什么 用8个if判断8个方位然后遍历 你是如何测量和改进它的效能的,用了什么工具,如何分析的 用jprofiler分析结合IDEA的插件,看哪个函数调用最多找找原因 需求分析 你做过多少个有实际用户的项目,用户最多有多少,你的项目有什么创新的地方 目前就草履记。草履记创新点,记录照片不用手动定位,自动定位,以及生成美观的足迹地图。 行业洞察力 你最感兴趣的领域是什么 游戏 这个领域过去十年经历了哪些创新 你分析过这个领域前十的产品吗?请分析一下它们的优劣 你要进入这个领域应该如何创新 项目管理 你参与过项目管理吗 没有 软件设计 你做过构架设计,模块化设计,接口设计吗? 没有 质量意识 你是怎么做代码复审的 按照开发文档 工具/社区 你在各种开发平台都使用过什么开发工具 微信web开发者工具,vs 自己写过什么工具来改进工作效率 给社区贡献过什么工具和代码,github有分享代码吗 你的技术博客坚持了多久,读者最多的是哪一篇 坚持了4个月 团队协作 请描述你在项目中如何说服同伴采用你提出的更好的解决方案,或者你如何听取了别人的一件,改进了自己的方案 结合自己之前的经验,来告诉他哪种方法效果最好,以及优劣,让他自己取舍判断。 你如何说服懒惰的同伴赶紧工作,实现团队目标 一直督促,提醒 理论素养 你上过什么数学,计算机或其他理论课 高等数学,离散数学,数据结构,计算机网络等等 请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题 自我管理 全年级你专业排名多少? 103/110 你刚入学带现在的排名有变化吗? 差不多 如何解释你的排名的变化 没有好好学习