[I.3] 个人作业:结课总结

20374290-曹宏墚 2024-06-30 23:39:53
项目内容
这个作业属于哪个课程2024年北航敏捷软件工程
这个作业的要求在哪里[I.3] 个人作业:结课总结
我在这个课程的目标是学习软件工程知识
这个作业在哪个具体方面帮助我实现目标总结

提问博客:《构建之法:现代软件工程》阅读和发问

阅读提问

在结对编程的过程中,如果两人水平相差较大,会不会导致效率低下?

是会的。结合我们的结对编程过程,常常由于水平不同和沟通不畅,写着写着就变成了单人编程。这样的话结对编程没有效果,同时还桎梏了另一个人的时间。

但是同时我们也发现,在结对编程实践中,如果“严格”按照结对策略执行,虽然说一开始速度会比较慢,但是随着时间的推移,两个人的水平会逐渐接近,效率也会逐渐提高。同时对于水平较低的同学而言,这是一个很好的提升自己的机会。并且在这个合作的过程中,能够发现一些自己的盲点,提高自己的技术水平。

敏捷开发中,如何正确预估一个任务的时间?

要想做到较好的预估时间,首先需要对技术栈相对熟悉。如果两眼一抹黑就去干,可能会“越干越多”。所以,在动手做之前,需要广泛的进行调研,了解任务的构成和团队成员的水平(这需要观察,下一个问题中会讲到)。

如何在团队创建的初期快速熟悉互相之间水平,找准每个人的定位和适合其负责的工作?

我们团队作为相熟的同学,一个好处就在与对每个人的历史表现比较熟悉,包括课业和业余的任务。这样的话,我们可以根据每个人的特点,分配任务。同时,我们也可以通过一个初期的大致分配,然后根据每个人的表现进行调整。

如何将合适地任务进行分解,即分而治之?

其实这个问题我们在我们的实践过程中也有遇到。当一个大需求下来,可能需要将其分配给个人。但是整体的任务又过于的庞大。一般来说,我们会根据之前每个人完成任务的类型,将大任务拆分为较小的模块,每个模块尽量保证能在两天内完成,这样快速进行迭代,防止出现你等我我等你的现象。同时这样安排也提高团队成员的成就感。

什么时候进行扩大化 / 泛化?

事实上在我们的敏捷开发中,基本上没有进行泛化的环节。我们在一开始经过较长时间的调研和讨论,已经将框架确定好,所以在后续的开发过程中,我们只需要根据需求进行开发即可。此时我们的框架已经具有一定的泛化能力,在较为紧张的开发流程中不再需要二次泛化。当继续进行开发时,我们会酌情根据需求进行泛化,能不泛化就先用着,每次要进行泛化时就进行全面的调研,尽量少走回头路。

学到了什么知识点

需求/设计/实现/测试/发布/维护

在需求阶段,我觉得学会的最重要的一点就是广泛的听取意见,不能以为自己的想法就是正确的,而不去理解别人。

在设计阶段,我觉得学会的最重要的一点就是要有一个清晰的思路,不能一上来就开始写代码,要先画图,先思考。

在实现阶段,我觉得在做一个项目的过程中不能追求“完美”。工程上很多时候是没有所谓完美实践的,都是需要进行取舍。如果过分追求完美,最后只会止步不前。

在测试阶段,我发现一个好的测试框架是十分重要的,拥有良好的回归测试能极大地提高工作效率,防止走回头路。

在发布和维护阶段,目前还没有学到重要的东西,但在这两个阶段最好是将产品包装得规范一些,这样能让用户有个更好的体验。

心得

在开发团队项目的过程中,我们遇到了很多问题,也有很多不符合预期的做出取舍的地方,当时可能会觉得很难受,觉得自己做的东西还要被砍掉,或者说觉得很重要的功能要被迫简化。但事实上这都是可以克服的,没有什么事情是尽如人意的。

同时,在开发的过程中,最好要选取成熟的框架,不要一上来就搞科研,这样会浪费很多时间。借鉴别人的实践经验,能够让我们少走很多弯路。

最后,我觉得在开发的过程中,最重要的一点就是要有一个好的团队氛围,大家要互相信任,互相尊重,互相帮助。这样才能够让团队的效率最大化。

...全文
169 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

73

社区成员

发帖
与我相关
我的任务
社区描述
2024年北航敏捷软件工程
软件工程团队开发结对编程 高校 北京·海淀区
社区管理员
  • clotho67
  • Yeyanhan
  • HJin_Gwok
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧