软件工程博客——提问与回顾
项目 | 内容 |
---|---|
这个作业属于 | 2020春季计算机学院软件工程(罗杰 任健) |
这个作业的要求是 | 个人博客作业 |
我在这个课程的目标是 | 掌握软件团队工程化方法,提高自我软件编程能力 |
这个作业在哪个具体方面帮助我实现目标 | 回顾、总结一学期的软件工程实践,并给之后的软件开发留下经验 |
提问博客 | 软工第一次博客作业 |
问题解答
1)、关于敏捷开发
该以什么样的标准判断当下的项目是否适合使用敏捷开发的思想?
在阅读作业的写作过程中,我对这个问题的思考结果是:试错成本低、需求变化快、沟通效率高。符合这样特点的项目,则比较适合选择敏捷开发。
在本学期的实践过程中,我们的项目没有很好的契合了我上述的所说的特点,而且因为课程的原因以及其他因素(主要是因为计算机网络实验课程需要其他的准备,实验时间不统一),我们没有采取敏捷开发作为我们的开发思想。虽然我们的需求经常变化,但是我们很难做到统一时间,毕竟我们不是专职的开发人员,每位团队成员都有其他必须去做的事。所以敏捷开发对我们团队来说是不现实的。
我们的沟通效率也因为团队的技术水平不同而具有比较大的阻碍, 前端承担了大部分的开发工作,前后端分离开发,协商好接口两者基本是独立开发。
2)、关于效能分析
什么时候应该开始思考代码效能的提高,如何有效使用效能分析?如何能够避免多次重构?
代码效能的提高我认为很大程度上需要依靠对技术本身的理解,因为软件工程这门课程定位不教授技术本身,作为开发人员只能依靠现成的网络资源速成,并且缺乏对各个框架内部实现的深刻理解。项目很难达到一个高效能的目标,因为实现设计的功能已经耗费了大量查阅资料和试验的时间。
3)关于用户界面和用户体验
如何能够完美的确定自己的设计满足大多数用户的需求?
产品确定需求需要具有实际生活经验,在确定需求的过程中,可以多去尝试同样定位的其他产品,能够很好的帮自己的产品实现产品的个性化定制。
4)关于测试
测试的目标是发现问题并修复,但是这个过程中如果存在只能通过重构才能解决的问题,但是重构又会带来新的测试,这个过程如何判定自己的测试不是增加工作量,解决一个bug但是却正在创造全新的bug
在真正的测试过程中,往往是已经实现了基本的功能。如果真的牵扯到重构,也是因为在当下架构下,无法扩展功能,才回去考虑重构。重构前必须慎之又慎。
5)关于项目经理PM
如何成为一个优秀的PM?
我认为优秀的PM应该具有以下前提:
- 必须对项目需要用到的技术栈有初步的了解,知道在实际开发过程中,每个需求实现所需要消耗的时间。
- PM有点像幼儿园班主任,一个团队内每个人都对手头项目的优先级。很那做到所有人劲往一处使的情况,因为不同的人对项目最初的预想是不一样的,愿意付出的努力也不一样。PM的作用就是给团队定基调,大概做到什么程度,优秀的PM应该能够准确把握团队内关键开发人员对项目的心理预期。
- PM必须学会承担责任,就如同创业者一样,承担决策的责任,同时也收获大部分因决策带来的收益,但也要承担决策带来的风险。
在实践中学习的知识点
- 需求:产品需求需要借鉴已经走过一部分路的竞品项目,同时也要根据相应的经验和设计确定需求。
- 设计:设计产品具有很大的弹性空间,需要团队一起思考。
- 实现:在选择实现的技术栈时除了需要对技术有很深的了解,同时要提前设计实现过的架构。
- 测试:测试bug是必须经历的过程。
- 发布:尽量采取多渠道发布的发布方式。
- 维护:合适的日志系统会带来系统维护的简化。
心得与理解
- 个人作业
在个人作业过程中,我查阅了相关资料,最后完成了博客以及代码的编程。
- 结对项目
结对项目中用到了Qt,查询了许多的资料,在这个过程中尝试增加不同的需求,结对同学互相商定接口,最后完成了项目。
- 团队项目
在团队项目中,有很多收获,也有一些遗憾。作为团队里相对熟悉技术细节的人,因为相对来说我有比较多的付出,所以我想提出一些个人对团队项目的。
在实践过程中接触了较多代码,在接手上一届学长的项目时,我是团队里有过javaweb开发经验的同学,对于python的web开发我用了一天时间速成就能快速给团队成员讲解代码并进行分工了,但是由于有的同学没有接触过web开发,即便是有团队里有技术经验同学的指导,从零开始的摸爬滚打也是会耗费很多时间,存在技术壁垒在一开始很难确定需求(因为没法量化实现难度)。我觉得我们的软件工程课程内容部分,可以加入老师或者是助教学长现场写代码的教学过程,通过代码展现软件工程设计思想的魅力。
很感谢这学期老师和助教的帮助,也是收获良多,希望我们的软件工程课程越办越好。