提问回顾与个人总结
问题 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 提问回顾与个人总结 |
我在这个课程的目标是 | 系统了解并参与软件开发过程,提升自身工程能力 |
这个作业在哪个具体方面帮助我实现目标 | 回顾学期初提出的问题,总结课程收获 |
阅读提问
问题一:熟悉解决低层次问题与提高技能
正确地调用方法是一个低层次问题,但当方法各异、重载众多时,耗费时间和脑力来熟悉解决此问题,对提高技能有帮助吗?
关于这个问题,我的看法与先前一致——帮助甚微。不过,这有个前提,供调用的各个重载方法的底层性能是基本一致的。编辑器的代码提示虽然会提示方法的名称、参数、返回值等,但是不会提示方法的性能。开发人员需要了解各个方法的性能,以便对具体的编码进行优化。
问题二:注释
在实际开发中,当程序实现逻辑无法通过程序本身体现时,如果不在注释中描述程序的部分实现逻辑,遇到不同的开发人员进行项目对接,如何保证对接的顺利或重构的高效呢?
写注释不仅有利于项目对接顺利,也有利于项目日常维护,但如果对任何方法都写注释,则只会白白增加开发工作量。在我的开发过程中,我只对那些实现逻辑较为复杂,同时被其他方法普遍调用的方法编写注释。
在第一阶段的开发过程中,由于初学前端框架,我将页面不恰当地划分成了多个组件,使得组件交互十分混乱,导致后续在此页面上开发的队友需要仔细梳理代码结构(我相信这是十分痛苦的)。于是,在第二阶段,我将这个页面进行了重构,将若干不必要划分的组件文件统一到一个文件,并做好相关结构注释,极大提升了代码结构的易读性(个人认为)。
问题三:goto
在实际开发中,允许使用 goto 吗?
现在看来,这个问题并没有什么实际意义。项目开发过程中,团队一般会制定一套编码规范,如果规范不允许使用,那就不使用;如果规范允许使用,那就根据个人编码习惯选择是否使用。
问题四:结对编程
在实际开发中,结对编程通常以什么样的形式开展?结对的两个人在技术栈、性格等方面有什么要求?
真正体验过结对编程后,我对这个问题已经有了答案。在结对编程过程中,我和队友一人分析需求,一人具体编码,偶尔交换工作角色,使得每一个需求、每一行代码都被两个大脑理解、检验了一遍。
但我又产生了新的疑问:结对编程的价值体现在哪里?
在课程中后期的团队开发过程中,我们团队的开发任务按照模块进行分配,各模块之间相互独立,负责某个模块的人员具有最大的自由度设计和实现该模块。整个开发过程,结对编程从未得到应用,如果应用,开发自由度势必得到制约。
结对编程强调代码时刻处于复审过程,强调及时发现并解决问题。但实际上,我们团队有专门负责测试的人员,大批量数据砸下去,如果有锅,复现流程一反馈,执行逻辑一检查,锅很快就修好了,效率非常高。
问题五:项目经理
项目经理是否应该熟悉基本的开发流程和相关技术?
我很幸运,我所在团队的项目经理都有着丰富的技术掌握,这样的体验是极佳的。当项目经理熟悉一定的技术细节时,开发人员与之交流起来会很顺畅。一个懂技术的项目经理,可以和开发人员一同讨论任务实现流程,正确估量任务难度和预期完成时间,保证整个开发过程的有序进行。
做中学
需求
- NABCD是非常有效的需求分析方法。
设计
-
遵循设计的一些方法论。
很遗憾,到第二阶段,我才读到一些有关交互设计策略的书籍,并颇受启发。
实现
-
当实现细节越来越繁琐,同时心态越来越烦躁时,大胆重构。
-
接口文档应安排一定时间来细细商定。
在第一阶段的接口文档中,我将“文件夹”用category指代,将“名称”用title指代,于是一个“文件夹名”变量会命名为categoryTitle,恰好后端还没纠正我。现在想想,folder和name不香吗,少打多少个字母啊!
测试
- 密切关注测试人员的反馈结果,保持详细的沟通。
- 准备好及时修锅,尤其是严重影响用户体验的锅。
发布
-
不能轻视宣传,应当仔细商定宣传内容。
在第二阶段中,我们的重点宣传手段是向哔哩哔哩投稿宣传视频。但恰逢竞品横空出世,他们收获了近三十万播放量,我们仅收获了几千播放量。分析原因如下:
-
宣传时间较晚。
-
宣传内容值得进一步商榷。
我们的宣传视频从介绍传统背单词的弊端开始,逐步引出我们的项目,但后台数据显示,绝大多数用户只观看了视频的前几十秒,压根没耐心看后面的项目展示;而竞品的宣传视频一开始就是项目展示。
从结果上看,我们忽视了短视频火爆的社会现状。我们的宣传视频,如果用于答辩展示,效果会较好,因为观者没有主动放弃观看的选择,且看到视频后半部分的项目展示可能会产生试用兴趣;但用于推广,想要让别人主动从头看到尾,显然是不太现实的。
-
固有问题,只支持电脑或平板使用。
-
维护
-
及时收录反馈,及时修锅。
目前的视频播放量还在缓慢增长,也偶尔有用户申请进入内测群。我们软件的锅确实较少,小的锅很快就能修好,大的锅主要是部分设备的适配问题和未来可能的推荐使用模式等,非一时能修的。
个人心得总结——I just code.
我是一个异常难产的人,极度不擅长写文字,这从几次博客作业的低分中也可以看出来。一学期走下来,我唯一的感慨就是幸运。结对编程阶段,虽然我和队友共同承担编码任务,但主要的总结博客都是队友撰写的。团队开发阶段,我更是没有负责一篇团队博客的撰写任务。虽然但是,软工课程带给我的感受还是异常深刻的,尤其是遇到了这么多优秀的伙伴。
结对编程阶段,我和队友一同看指导书,画架构图,分析实现逻辑、算法性能,借鉴彼此优秀的编码习惯,收获颇丰。
团队开发阶段,我则充分发挥了团队赋予我的开发自由度,与大家共同协作完成了一款完备的网页软件。在项目临近结束同时考试密布的时候,我对原来的工作区页面设计不满意(按钮过多、文件夹栏可展示文件夹个数过少、文件夹栏占屏幕面积过大导致词图预览在平板等设备上过小、分页导致检索功能出现问题、未设置缓存导致页面跳转后再次进入时加载时间过长等),希望进行重构。虽然重构意味着不确定性,但我有这样的自由度选择重构,最终也没有辜负团队的期望。
于我而言,在软工课上,我不仅收获了前端开发的技术,为未来的工作积累了宝贵的开发经验,更收获到了珍贵的友谊,了解到了各个队友的优秀。这真的是无价之宝。