软件工程实践总结&个人技术博客

这个作业属于哪个课程 2021春软件工程实践|S班
这个作业要求在哪里 作业要求的链接
这个作业的目标 1. 回顾自己列出的5到10个问题:尝试解答、继续分析、提出新问题。
2. 5个阶段中,每个阶段收获最大的知识或能力
3. 结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得
4. 个人技术总结
其他参考文献 本人所有博客

从无到有

第一部分:课程回顾与总结

任务一:回顾自己列出的5到10个问题:尝试解答、继续分析、提出新问题

问题链接:问题链接

1. 问题一

4.5 结对编程 中 "结对编程让两个人所写的代码不断地处于“复审”的过程,程序员们能够不断地审核,提高设计和编码质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。 "

在本次个人作业中,我与同学也曾为了实现一个功能连着麦修改了一下午的代码,我想这也算是结对编程吧,但是在这个过程中我发现如果有一方主导意识较强,就容易将问题带入一个死结。且在这个过程中我们还产生了分歧,那么这个时候是否应该结束结对编程,各自实现自己的想法呢?还是两人应当按顺序,一起先尝试其中一个人的想法,再一起尝试另一个思路,然后对比取更优呢?

双方应加强沟通,结对过程中有分歧的时候及时探讨,双方都参与问题的解决,不要将问题抛给一个人。

  • 新问题:在团队作业中发现并没有用到结对编程的机会,而即使出去工作,团队开发应该也是主流,那结对编程何时能起到作用呢?

2. 问题二

3.2 软件工程师的职业发展 "迈克康奈尔把工程师分为8个级别(8—15),一个工程师要从一个级别升到另一个级别,
需要在各方面达到一定的要求。例如,要达到12级,工程师必须在三个知识领域
达到“带头人”水平。例如要到达“工程管理(知识领域)的熟练(能力)”水平,工程师必须要做到以下几点。阅读: 4—6个经典文献的深入分析和阅读工作经验: 要参与并完成6个具体的项目课程: 要参加3个专门的课程有些级别"

到目前为止我看过的关于编程的书屈指可数,在学习新技术的时候我偏向于在网络上学习,毕竟网络上的技术文章是最新的,那么,阅读经典文献的必要性在哪呢?

网络上的知识大部分是零碎的,很容易学了上篇没下篇,更适合单个知识点的查询,如果要完善的学习一门技术,还是通过阅读经典文献比较容易。

  • 新问题:经典文献往往是大部头,又长又难啃,着实很打击学习热情,该如何解决?

3. 问题三

5.2.1 主治医生模式 "在一些学校里,软件工程的团队模式往往从这一模式退化为“一个学生干活,其余学生跟着打酱油”"

这种情况的确很常见,但是如果在其他学生的水平都较低,对于那个水平高的学生来说,自己完成比教会他们再与他们合作效率不是高多了吗? 但这种模式也是合理的吧,特别是对于高年级学生来说,如果参加竞赛,对于队伍中的新生,不就应该带他们吗?

在团队作业中,我们组内也有“大腿”,我们后端其他几个人一开始是对Springboot一窍不通的,但是“大腿”带我们迅速入了门,而我们也帮他减轻了繁琐的工作,到后来我们各自负责相应的模块,开发过程中也有许多新知识,而我们其他人各自学习相应的技术,效率肯定比“大腿”自己都去学习高。

4. 问题四

11.5.1 闭门造车 "小飞:我今天真失败!在办公室里坐了10个小时,但是真正能花在开发工作上的
时间可能只有3个
小时,然后我的工作进展大概只有两个小时!
阿超:那你的时间都花到哪里去了?"

对于这个问题我深有体会,在完成个人项目的过程中,我常常一坐就是一整天,对着一个bug能改一个下午,但其实只是一个很小的错误,就很容易陷入这样的迷惑中,不独处呢,很难进入状态工作,一个人呢,又会发散了思维,那我以后去公司里工作该怎么办呢

应该提高效率,开发的过程总尽量不要玩手机,如果手机可以锁起来就更好了,需要独处环境就自己创造,戴耳塞假装听不见别人的声音。

5. 问题五

16.1 创新的迷思 "最近几年,我们整个社会似乎对创新很感兴趣,媒体上充斥了创新型的人才、创新型的学校、创新型的公司、创新型的城市、创新型的社会,等等名词。有些城市还把“创新”当作城市的精神之一,还有城市要批量生产上千名顶级创新人才。"

一直有听说前辈创业的事迹,但在进入专业学习了三年,我发现创新并不是那么容易的,你想实现的功能早就有人实现了并且已经失败了,甚至找不到创新的方向,那些自称创新型的事物,是否夸大其词了。还有就是对于那些热门的新技术方向,真正接触了发现你能够听到的新技术,其实已经有许多先行者了。

这个问题我还没有更多的想法,请老师和助教指教。

任务二:5个阶段中,每个阶段收获最大的知识或能力

需求阶段:
  • 学会了一个团队应该如何分析需求,从《构建之法》学到了NABCD模型的使用,培养了自己发现和解决问题的能力。
设计阶段:
  • 在设计阶段我参与了后端数据库的设计,学会了使用StarUML制作类图,用XMind制作思维导图,我学会了如何从需求中抽象出数据库中的类,为后续的开发奠定了基础。
实现阶段:
  • 我负责的是后端的评论和公告相关的接口,实现阶段我学会了Springboot的使用,学会如何使用Mybatis-Plus来简化开发,。
测试阶段:
  • 测试阶段我主要负责对自己的板块的测试,从单元测试到组装测试再到系统测试,主要使用黑盒测试与白盒测试进行测试。
发布阶段:
  • 学会了如何将后端项目部署到云服务器上,软件发布后邀请同学来使用我们的软件,并通过收集问卷的方式来得到用户的反馈。

任务三:心得体会

整个软件工程课程中,从寒假的个人任务开始到最后的团队项目,可以说是一直在进步的,从一开始简单的学习如何撰写Markdown语法的博客,再到后来为了团队开发现学的Springboot,在这些学习的过程中都有很充实的乐趣,虽然熬夜的时候经常焦头烂额的,但是在每一次的任务完成后内心都有极大的满足。

  • 在个人项目中,课程发布的第一个寒假作业就是让我们立足当下,展望未来,并让我们制作了接下来的学习路线和要学习的技术的思维导图,在这个过程中我学会了在开始一个项目前应该先为项目做好准备,提前储备技术,这样在项目开发过程中才不会拖进度。

  • 在结对编程中,这是我首次两个人一起编程,结对给我带来的是对另一方的责任,必须做好自己的部分才不至于拖累对方,对对方负责,因此开发的效率和进度比个人项目的时候高多了。

  • 在最后的团队项目里,我体会到了各司其职的团队开发,与个人开发不同的是,在团队项目里你只需要负责项目的一部分,我们组做的是考研论坛,由于对web后端的开发有一点点经验,因此开发的过程中遇到的问题并不是很多,并且从组长李星源哪里学习到了很多,一开始入手Springboot多亏了他手把手教学。

总结:总的来说本次软件工程实践课程收获颇丰,虽然过程也是较为痛苦的,但是结果是令人满意的。

第二部分:个人技术总结

个人技术博客

posted @ 2021-06-28 15:42  t0p1Crayon  阅读(73)  评论(4编辑  收藏  举报