第四次博客作业-提问回顾与个人总结
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2023年北航敏捷软件工程 |
这个作业的要求在哪里 | 作业要求 |
我在这个课程的目标是 | 学习软件工程知识,提升团队合作能力,积累网页开发经验。 |
这个作业在哪个具体方面帮助我实现目标 | 本次作业让我总结、回顾这一学期软件工程的历程。 |
链接到以前提问题的博客
阅读提问
问题一:站在员工的角度,敏捷开发是否真的更能带来价值?是否具有可持续性?
敏捷开发在短期内可以提高团队的工作效率和生产力,但也需要考虑可持续性的问题。在高强度的敏捷开发环境下,员工可能面临压力和工作负担过大的问题,影响员工的工作效率和心理健康。
因此,敏捷开发能带来更多的价值与否、具有可持续性与否,都很大程度上取决于项目管理者是否合理安排工作量和时间,从而保证团队成员的身心健康,避免过度劳累和疲劳。
问题二:在大学第一次软件工程课程中安排敏捷开发是否合适?
尽管大家没有特别多的软件开发经验,但是凭借较强的自学能力,大家仍然能够较为顺利地完成这门课程。
此外,课程的教学目标之一是培养学生的团队协作和项目管理能力,敏捷开发可以作为一种有效的教学方法进行实践和探索。从课程最终效果上来看,这一点还是十分成功的。
问题三:在软件工程课程中大家如何较为准确估计任务的时间?
在初次上手设定计划时,确实难以准确估计任务的时间,也难以将任务进行合理的划分。但是老师通过博客对我们的计划提出了不少有建设性的意见(如任务粒度过大,可能导致时间不好估计),某种程度上确实帮助我们更好地估计了任务的时间。根据实际情况变化或者根据他人建议,动态调整时间分配或许是一个可取的策略。
问题四:软件服务是否应该记住用户的选择?这种权力是否应该由用户决定?
对于这个问题,需要具体情况具体分析。我认为绝大多数情况下需要充分地对用户需求进行调研,并在用户体验和隐私安全之间进行权衡,最终才能得出答案。
问题五:如何激励创新者的提出新想法?我们需要多少创新者呢?
适当的奖励机制、开放的交流平台均有益于创新想法的提出。此外,企业应该鼓励员工提出新想法和尝试新方法,并为他们提供支持和资源,对失败持容忍态度,鼓励员工从失败中学习和成长。
而对于具体需要多少创新者,这可能需要根据所处领域、组织的规模等因素共同决定。
请问你们在项目的需求/设计/实现/测试/发布/维护阶段(一共6 个阶段)中都学到了什么“知识点”,每个阶段只要说明一个知识点即可。
需求
在需求阶段,我学习到了需求规格说明书的撰写,它是对需求进行详细、准确、完整描述和说明的文档。在需求规格说明书中,需要明确系统的功能和非功能需求、系统的使用场景和限制条件、系统与其他系统的接口和交互方式等信息。
设计
在设计阶段,我认识到如何设计软件架构以及它的重要性。在软件架构设计中,除了需要考虑如何选择和设计各组件之间的接口之外,还要考虑软件的可扩展性和可维护性等因素。
实现
在实现阶段,我学习了drf的后端框架的编写,并掌握了ORM机制的原理与使用。在团队开发中,我还学习了github的开发规范、共享接口管理软件eolink的使用方法以及notion的多种功能,在这一阶段需要和其它队友保持频繁密切的沟通。
测试
测试阶段,我学会了drf中单元测试用例的编写,并初次体验了TDD测试驱动开发的流程。TDD开发能保证在开发新功能时,原有功能不被破坏,并且测试效率与使用postman手工测试相比大大提高。
发布
在发布阶段,我们在士谔书院官方公众号上发布了推送,取得了出色的宣发效果。在软件宣传过程中,用户的反馈是非常重要的,需要及时回应用户的问题和反馈,以提高用户满意度和软件品牌形象。
维护
在维护阶段,我们通过共享文档收集用户的bug反馈与改进建议,并使用github中的issue管理维护记录。针对用户提出的数据库相关的改动需求,我们也都能及时给予答复。
心得体会
个人项目
个人项目灵活度比较高,可以随时随地进行开发,并且不需要涉及合作和沟通,因此最终项目的效果也主要取决于个人的知识水平与投入的精力。
结对编程
结对编程是两个人开发,灵活度也比较高。遇到的一个难点是分工的问题,如何尽量降低两个人工作的耦合程度、同时又保证两人的工作量相当,在编程开始之初确实难以决定。
我比较擅长算法,何指导擅长工程和测试,合作还是十分愉快的,我也从他那里学到了很多工程的技巧和习惯。如果能够找到长处互补的队友,结对编程还是很有收获的。
团队项目
团队项目中学习的更多如何与成员交流、合作、沟通,在其中我学习到了使用github、notion的工具进行合作开发,这对我以后的开发工作将十分有帮助。
由于队友都比较厉害,而且PM几乎是全程负责了与外界对接的工作,因此开发流程整体上十分顺利。