软件工程实践寒假作业:阶段总结,未来规划

222100121洪恒辉 2024-02-02 15:39:34
这个作业属于哪个课程2302软件工程社区
这个作业要求在哪里软件工程实践寒假作业
这个作业的目标回首过去,立足当下,展望未来,规划学习路线
其他参考文献CSDN、《构建之法》、菜鸟教程

目录

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

1、准备工作

仓库地址

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

2、回首过去

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

当初选择软件工程这个专业的原因有很多,一是专业性强,不可替代性高,二来是工资和可上升空间高,投入所得的回报能明显感受得到。另外就是这个专业的大佬很多,也说明这个领域的活力充沛,技术更迭快,学习新的技术确实让人欲罢不能。于是总的来看,先选择专业,然后根据分数来到了福大。

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

当然期待是很丰富的,电脑的精彩纷呈给过普通人很多想象,毕竟影视剧中电脑骇客总是那么帅,我进入这个行业当然也是想成为这样一个技术大佬,劈里啪啦敲一大段代码,然后就能很方便的将一些事拿给我的电脑做,最终当然就是得到了这样的结果:

请添加图片描述

虽然梦想幻灭了,不过对技术的热爱还是支持着我在计算机的领域继续走下去。

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

学习方面的规划和准备我是做得比较全面,因为身边有从业的大佬带,时不时可以问问市场走向,得到的第一句话就是准备好接着高三的学习强度,进入这个行业也是做好心理准备的,小的学习规划我一般一学期会做一次,总的四年规划是前三年尽可能丰富自己的技术栈,最后一年尽可能多的做做项目开发、科研和比赛。

3. 立足当下

个人简历
姓名
洪恒辉
头像
电话
18006907068
github
https://github.com/akarinH
兴趣爱好
接触新事物,游戏,音乐
特长
逻辑思考,创新
专业水平
掌握的编程语言
Java、GO、C语言、python、C++、C#、鸿蒙、HTML、CSS、JavaScript、TypeScript、PHP、XML……
技术框架
Spring、SpringMVC、SpringSecurity、SpringBoot、MyBatis、Yii2.0、ThymeLeaf、unittest、Pyrestest、httplib2……
开发软件
CLion、IntelliJ IDEA、GoLand、Visual Studio Code、Visual Studio、PyCharm、Postman、Navicat……
累计代码量
5w+行
项目经历
基于Yii2.0的博客系统
通过yii框架实现设计一个个人博客系统,包含了文章管理,用户管理,与评论管理;实现了权限管理;采用MySQL管理数据,实现了增删改查,并对数据进行统计可视化。使用CSS模板对页面进行了美化,增加了dashboard界面,页脚添加了RSS订阅,添加了markdown格式的文章支持。
图书管理系统
综合运用了SpringBoot框架、整合SpringSecurity进行安全验证,采用Mybatis整合数据库连接查询,前端采用ThymeLeaf框架,完全实现了前后端分离,服务器分离,前后端分别部署。
外卖系统
基于SpringBoot和Vue实现的前后端分离系统,数据交互采用JSON格式。根据功能划分模块,主要有菜单管理、订单管理、用户管理、分类管理、套餐管理等,使用阿里云短信服务进行短信验证,使用redis缓存热点数据,短信验证码等。
在线学习系统
基于SpringBoot和Vue实现的前后端分离系统,数据交互采用JSON格式。主要有用户管理模块,短信模块,课程模块,视频模块,OSS模块等。主要技术有基于Redis实现的首页数据、短信验证码的开发,使用JWT实现分布式单点登录,搭建阿里云OSS实现文件上传下载,EasyExcel完成课程批量添加,接入了阿里云的云视频点播。

4. 展望未来

4.1 阅读《构建之法》以及构建之法社区中前人提出的问题后针对部分问题的思考

问题一:AI辅助编程,是一个银弹么?

使用AI辅助编程在我看来是未来程序员必备的技能之一了,我个人也尝试过各大平台开发的代码辅助工具,虽然现有许多框架基于“约定大于配置”的理念开发了已经相当完善的代码生成器,但就我个人的使用体验来看,AI的使用赛道并不同于此,而是更偏向于思维启发和小规模的定式代码生成,比如说对于一个项目开发中途遇到问题,可以询问AI解决思路。还有就是现在用得最多的小规模的定式代码生成,无论使用的代码生成器多完善,业务代码总归还是要程序员来编写的,在业务逻辑中使用的算法可以让AI生成模板算法,程序员在去修改和使用,比如算法中的各种自动机,建立各种树和图等,这样程序员仅需知道原理,而不用去背大段大段的模板。

问题二:单元测试应该在什么时候开始做?

这个问题每个开发者或许都会有自己的理解吧,我本人是开发和测试都有涉猎,了解到开发和测试两边的博弈,开发当然可以不管测试,老练的测试也需要把一部分工作推给开发而避免加班,这是从人的角度看待这个问题。从软件的角度看,开发人员当然是要在每一个业务逻辑编写完成后就进行冒烟测试,以保证单一功能的准确性,开发人员一般也需要掌握一些基本的测试框架,更何况有些公司根本没有专业的测试人员,此时开发中的单元测试更是尤为最重要。至于在业务完成前编写还是完成后编写,要求程序员并行或单元测试更早编写(这里的“更早”并非时间上的,而是逻辑上的,即单元测试应在不知代码全貌的情况下编写,即所说的冒烟测试),以便与文档要求一致。

问题三:为什么一般不推荐在单元测试中使用随机数增加测试的真实性?

这个问题也是非专业人士的误区之一,专业的测试人员要明白,测试的本质是“为难”开发者,随机数有时可能找不到具体问题,类比一个简单的哈希冲突,采用双哈或更高级别的哈希,冲突概率可以降到很低,但经过人的计算,可以很容易(也可能不太容易)的找到冲突的地方,如果完全随机,可能服务器跑很久都不会有冲突。有一些有趣的算法网站(如CodeFoces)就鼓励去骇入其他人的代码,最容易骇入成功的数据当然是边界情况,测试同理,也需要测试人员人为生成一些边界或容易出错的数据。

问题四:如何准确判断一门编程语言的发展阶段,从而在学习的过程中不会浪费时间到最后学了一门被淘汰的语言?

这个问题可以成为大一新生必问的问题之一了,几乎每个初入业界的萌新都会有类似的疑问:我要学习什么语言?在前人的引导和我自己的学习中也逐步明确了这个问题的答案:语言不重要!!!重要的是思想!!!这是我和目前在职的程序员沟通过的结论。初入行业需要选择一到两门编程语言学习,一般是选择C和C++,这样你就能学会编程中的大部分语法思路,这样即使公司要求你转码重构,也可以很快适应。解决完语法问题就是方向的不同了,如果走技术方向,需要掌握很多框架的思想,最常用的就是Spring的IOC和AOP思想,技术人员常常需要根据需求写出公司要求的框架给业务人员使用(大一点的公司都有自己写的框架),封装重写一遍SpringBoot也未必不可能,而掌握其中的思想才是最为关键的。如果走业务方向,就更简单了,两个思想:抽象和封装(出自某在职程序员)。语言排行榜的浮沉都是虚的,掌握更多的编程思想才能成为大佬。

问题五:多设备统一是否必要,有必要追求一致的体验吗?

先说观点,作为一个用户,这是当然且迫切需要的,某些大厂的平板和手机体验,x86和arm的软件体验,不知道已经被多少用户吐槽过了。作为一个专业的开发者这更是需要考虑的事情,做设备统一不能在业务逻辑中做,要在底层就让技术人员去封装,再交给业务人员调用,我与另一个在职程序员交流过一个项目,项目其中一个功能需要在Linux,Win,Mac上实现相同的功能,而这个功能在不同的机器上需要执行不同的指令,每次开发人员调用时写不同的代码显然不合适,也不方便后续的修改,解决方法就是抽象与封装,类比JDBC的封装,业务人员仅需调用:注册驱动、编写sql、提交收到查询结果就可以,底层针对不同数据库的命令由底层去做,业务仅需调用接口即可,在日后修改逻辑时业务层的代码就不需要修改了,这就是低耦合的好处。回到应用层面也是一样的,有兴趣的可以去了解一下H5的跨平台是怎么把ios干掉的就知道了。

4.2 未来的职业规划

目前就业形势确实不好,不过考研也只是逃避一时,丰富自己的技术栈才是关键,所以我的目标是就业,我的计划是先做Java或Go的开发,如果开发实在不好做,也可以考虑深造C去做硬件路由(懂不懂十几年不变技术栈的含金量),职业中期上升管理层,最终目标当然是架构师。

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

理解:软件工程在我的理解中是一门极其重要的课程,针对我上面所说的“思想”的提高是其它课程无法比较的,是对学生“思想”转变的关键课程。
期望:那么我的期望自然是通过这门课程学习到更多软件开发过程中运用的思想,这也是成为高级程序员的必经之路,所以我希望这门课程可以以某个实际的大项目为中心,逐步介绍学习开发过程中该项目所运用的思想,并仿照该项目的结构,在实践课中不限技术,不限人员,只仿照思想地完整地开发一个项目。

5. 思维导图和学习路线

5.1 思维导图

在这里插入图片描述

5.2 学习路线图

在这里插入图片描述

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

86

社区成员

发帖
与我相关
我的任务
社区描述
FZU-SE
软件工程 高校
社区管理员
  • LinQF39
  • 助教-吴可仪
  • 一杯时间
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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