软件工程实践寒假作业

222000319吴若桐 2023-02-11 22:02:00

作业基本信息

这个作业属于哪个课程<软件工程-23年春季学期>
这个作业要求在哪里<作业要求的链接>
这个作业的目标<Gitcode仓库、回首过去、立足当下、展望未来、思维导图和学习路线>
其他参考文献《构建之法》、CSDN、GitCode、菜鸟教程

@

目录

  • 作业基本信息
  • 1. Gitcode仓库
  • 2. 回首过去
  • 2.1 当初你为什么选择软件工程这个专业?
  • 2.2 当初对软件工程这个专业的期待和想象是什么?
  • 2.3当初希望自己是如何投入这个专业的学习的?曾经做过什么准备,或者立下过什么FLAG吗?
  • 3. 立足当下
  • 4. 展望未来
  • 4.1 阅读《构建之法》,并阅读构建之法社区中前人提出的问题,选择5个及以上的问题写下思考。
  • 4.2 未来的职业规划
  • 4.3 对于软件工程实践课程的理解和期望
  • 5. 思维导图和学习路线
  • 5.1 思维导图
  • 5.2 学习规划

1. Gitcode仓库

仓库地址

在这里插入图片描述

仓库展示:

Gitcode仓库展示

2. 回首过去

2.1 当初你为什么选择软件工程这个专业?

从个人兴趣角度来说,并没有特别想要去的专业,在初中高中虽然没有接触过信息技术方面的竞赛,但是热衷于给游戏打mod,打补丁,打素材,可能这一方面影响到了专业报考时的方向。同时网络世界令我向往,如果能熟练运用网络,利用计算机开发,我想一定是非常了不起的事情。另一方面来说,我对于这个专业的前景较为看好,在当时的环境下,文科就业难,传统工科理科的就业同样不景气,再结合个人分数的考量,选择了较为热门的计算机相关专业。

在这里插入图片描述

2.2 当初对软件工程这个专业的期待和想象是什么?

期待当然是能够掌握编程,熟练掌握在网络世界中处理问题的能力,成为解决问题的能手。想象中,这个专业学习任务重,实践性强,需要经常与电脑打交道,这些想象最终都一一验证了。当时认为编程应该是很有意思的事情,这一点与预期不符,或者说是部分不符。实际上,写的顺的时候非常快乐,但一遇到bug或者卡脖子的地方,往往要焦灼个几个小时,不停查资料,请教才能搞定。

在这里插入图片描述

2.3当初希望自己是如何投入这个专业的学习的?曾经做过什么准备,或者立下过什么FLAG吗?

希望能够尽快将课内知识掌握,在此基础上,多学习新知识,新技术。我认为整理好笔记尤为重要,也在一步步实现,不断精简,优化笔记,从纸质的,到电子的,再到学会用幕布,Markdown,现在也经常写博客,分享知识,也受到网友的检验。并且我同样认为多编程是提高技术的最好方法,希望在大学中能够得到很好的编程锻炼。
在高中毕业的假期,我自学编程,虽然只是从最为基础的C开始,但也算入了门。同时在假期中了解到庞大的语言体系,繁多的技术,在当时令我又激动又兴奋。我也向计算机专业的学长请教,大致了解了学习概况,也算是对以后的学习有了点初步的认识和规划。
立下的FLAG当然有立下FLAG,曾经希望自己能够搞算法,打算法比赛,可惜几次尝试下来只是证实自己不是这块料。几个小时下来只能通过寥寥几个数据点的挫败感是让人难以承受的。之后也做了反思,做了和解,开始把重心放在做项目上。相比于算法来说,有成果,也培养了团队协作能力,我认为收获更多。

在这里插入图片描述

3. 立足当下

个人简历
学号222000319头像
昵称Kilav
出生年月2002.0527
专业水平
编程语言C,C++,Java,C#,HTML,CSS,XML,Android
技术框架Yii(Web)
开发软件Dev,VS Code,Visual Studio ,IDEA ,Android Studio
累计代码量18K
获奖情况
奖学金 2020-2021学年第一学期二等奖学金 2020-2021学年第二学期二等奖学金 2021-2022学年第一学期二等奖学金 2021-2022学年第二学期二等奖学金 2021-2022学年校“优秀学生干部”
科研竞赛国家级大创一项 SRTP科研训练计划两项
项目经历
学生信息管理系统(C)大一上个人项目,代码量数千行,最基础的项目。通过不同函数之间传递参数实现对用户输入数据的逐层切割,处理。分为学生端和教师端,控制台程序,通过输入一行命令进行运行和处理。
小骑士走迷宫(C++)大一的个人项目,使用C++进行图形界面编程。创建一个n*n的迷宫,每个迷宫会对小骑士进行某一数值的扣血,小骑士从左上角移动到右下角,寻找一条能令小骑士保持最高血量的路径。
网络聊天室(JAVA)大二下个人作业。该项目用到了网络编程的内容。用户端可以彼此添加好友,互相通信。管理员端在后台查看所有用户的通信内容并且对用户进行管理
流浪宠物领养系统(JAVA)大二下小组作业,在其中担当后端编写,报告书攥写工作。用户端可以领养宠物,查看动物信息。管理员端对动物和用户进行增删改查,所有信息同步到数据库中
炮打飞机(C#)大三上C#编写,主要实现图形界面和多线程。通过界面上的按钮控制大炮前后左右移动,飞机自动左右移动,点击发射按钮发射炮弹。
博客系统(Yii2.0)大三上使用HTML、CSS、PHP等编写。Web的个人实践课程作业。通过网课实现基本功能,前端用户端可以查看文章和评论,后端管理员端可以对文章和评论进行增删查改。在此基础上增加了额外功能,界面美化,Markdown编辑器,富文本编辑器,图表等功能
虚拟评论识别系统(python)国家级大创项目,负责完成数据收集和数据分析处理部分。整体项目通过使用卷积神经网络训练Bert模型实现对网络上评论是否出自真人进行判断。

4. 展望未来

4.1 阅读《构建之法》,并阅读构建之法社区中前人提出的问题,选择5个及以上的问题写下思考。

问题一:如何区分一个好的程序员和不好的程序员呢?

按我对于程序员的理解,首先是要过硬的专业知识,编写代码的能力过硬,能够适应重复的,机械性的工作。其次,从人的角度来说,思维严谨,做事周密,对于关键的细节考究,对于过于的细节又能够选择性忽略。第三,从团队角度来说,程序员往往是不能够脱离团队的,和团队的其它成员有良好的沟通和认识,首先确保好自己所工作的职责范围,在这一基础上能够为团队尽量做出更大的贡献,同样是一个重要的衡量标准。最后,技术始终是不断迭代,不断革新,所以好的程序员也要跟上时代,跟上新技术,不断学习,将新的技术用在实际要解决的问题上,这一点也尤为重要。

问题二:学生与职业程序员的区别?

学生写代码的时间多于工程师,这个我认为应该是两方面原因。一方面,工程师的代码能力肯定是远远大于学生的,编写起来流畅,轻松应该是可以想得到的。第二方面,编写代码是工程师所做工作中的一环,其它工作还有需求分析,项目设计,在编写时已经有了一个完整的框架。而学生可想而知会在编写代码的过程中处处碰壁,也要上网搜索修改代码,寻找bug解法。

此外,工程师在测试上花费的时间更多。我想首先是因为二者目的性不同,或者说是二者的项目的层次不同。测试是工程师工作的极为重要的内容,而对于学生来说,小型项目不需要过多测试,更别说往往学生追求的只是项目能跑,完成基本需求,不会对很细节的部分进行足够充分的测试。

但是从学习的角度来说,学生的学习时间无疑是多于工程师的,虽然学习内容的层次有所差异,但是学生能够拥有充分的从认识到实践的过程,而工程师由于时间紧任务重,可能就得在实践中学习了。

问题三:低层次的问题能依赖工具解决么??

对于这个问题的回答,我的答案是可以,但同时要把握好尺度。

对于工程师而言, 这些问题真的没有必要纠结,工具效率高,准确性高,能够节省很多的时间,把这些时间精力用在更有意义的地方上不好吗。工具开发出的目的不正是帮助我们更好的完成生产,完成项目吗?
但是对于初学者和学生来说,低层次的问题也不容大意。从我个人角度来说,刚学习语言时往往就是容易在类似创建数组,编写循环等问题上犯错。一开始用Dev,当然什么都得自己写。可是后来接触IDEA,Vscode才发现功能实在是太好用了。虽然效率上大有提升,也能避免很多小错,但同时也担心,要是考试考到了怎么办?实际上,对于学生而言,只是刚刚入门,试卷的考察往往逮着这些问题不放。过早的把自己投射为程序员,工程师,而不注重细节,首先在成绩上就是个大大的不及格。

而现在的工具越来越智能,AI不但能帮人写论文,甚至代码也能写,拿过来直接就能用,已经不仅仅局限于低层次的问题了。我想,这样方便快捷,提升开发效率的工具哪怕我们不用,行业革新的洪流也是不可阻挡的。我认为不必在低层次问题上过度纠结,但是我们也要意识到自身发掘自身的不可替代性,否则等待着我们的恐怕是被机器取代。

问题四:为什么软件工程师个人能力的衡量中重复性工作更重要?

一方面来说,重复性工作在软件工程师所涉及到的工作中占较为巨大的比重,引用原帖中原话,坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了90%-95%的比例。 相比于重复性工作,创新性的灵光一现只占据一小部分。并且我们现在很多的软件,都是建立在前人的基础上,已经有很多的先驱者提供了创新性的点子助力行业,技术的革新,大部分人所能做的就是工程性,过程性,重复性的工作,从这一方面来说重复性工作更为重要。从软件需求这一方面来说,软件所需要的是各个部分稳定,满足局部需求,在这样的基础上,软件的整体才能尽量保证稳定。而软件的开发工程有着严谨的规划,细致的流程,所看中的是软件工程师完成基础工作,完成重复性工作的能力。所以这一方面来看,同样是重复性工作的能力更为重要。
当然,我当然不是说创新能力不重要。往往拥有极大创新能力的人已经超脱了软件工程师的范畴,他们往往是新领域的奠基人,是技术革新的带领者,他们只占一小部分。而大部分人接触的都只是重复性的工作,所以相比于创新头脑,更为看中重复性工作能力。但是在保证重复性工作能力过硬的基础上,不断的开发自己的思维,找出创新点,不断地迸发出新的idea,这同样是对于个人,对于团队,对于软件的非常重要的能力。

问题五:个人在团队中应该只是一个流水线上的机器吗?

首先这个问题的答案肯定是否,个人和机器绝对不能划上等号。 但对于这个问题我认为也要分情况讨论。首先来说,个人相对于机器,有绝对的创造性和灵感,在团队中提出创造性的观点和方案是非常重要的。其次,个人对于一些细致的工作可以相机决断,不可能完全按照既定的方案去实施,对于细节的处理有个人的见解。但同时,机器有着人所没有的精准性,执行力。我认为,个人在团队中,应该要发扬身为人的创造力,但同时,在一些工作上也要像是机器一样能够高执行力,低错误率。团队的氛围中绝对不能把人当做机器,要满足人的种种需求,理解人的种种不足。

4.2 未来的职业规划

本科阶段,实话实说,为了争取推免牺牲了很多实践性的学习,项目经历有所不足。所以我希望继续提高学历,首先要拿到推免名额和期望的学校的offer,在研究生期间积累更多的项目经历和编程能力,掌握更多更全面的知识和技能。并且在研究生期间,找好研究方向,并且在该领域持续长久地钻研,做出一定成果。研究生毕业后,我希望凭借本科和研究生期间积累的能力和经验,到企业或者国家体系中发挥个人能力。

4.3 对于软件工程实践课程的理解和期望

理解:对于这门课程的理解,首先望题思意,按我的理解,本门是以实践为基础和方式,以培养软件开发能力为目的的一门实践性课程。而根据我进一步的了解和与学长的交流,我深入认识到,在这么课程当中,有这非常严谨的时间安排,非常成熟和正式化的课程设计,对于个人编程水平,团队项目水平都有着充分的考验。重要性来说,无疑是大三中最为重要的一门课程,选好团队,做好时间规划,做好个人学习都十分的重要。
期望:在之前的学习生活中,我已经接触了一些的实践作业和团队合作项目,但跟本门课程相比恐怕只是小打小闹,。所以从个人角度来说我希望能够在本课程的学习实践过程中,积累到更多的团队合作的经验,并且希望磨练我的编程能力,为小组同学做出足够的贡献。从团队角度来说,我同样期待看到小组成员不断磨合,相互促进,从生疏到精巧,从陌生要团结的一整个过程,我认为这同样是十分宝贵的。

5. 思维导图和学习路线

5.1 思维导图

在这里插入图片描述

5.2 学习规划

在这里插入图片描述

...全文
360 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
GreyZeng 2023-03-05
  • 打赏
  • 举报
回复

关于:问题三:低层次的问题能依赖工具解决么??

你的回答我非常赞同

222000319吴若桐 2023-03-06
  • 举报
回复
@GreyZeng 非常感谢您的评论 是我个人的一点小见解 得到老师的赞同非常开心

586

社区成员

发帖
与我相关
我的任务
社区描述
软件工程-2022-23学年(第二学期)
软件工程 高校
社区管理员
  • LinQF39
  • chennuo.
  • 助教-钟宇煌
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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