软工蓦然回首篇——吹尽狂沙始到金
项目内容 | 详细信息 |
---|---|
这个作业属于哪个课程 | 软件工程2024 |
这个作业要求在哪里 | 作业要求链接 |
这个作业的目标 | 回顾这一学期软件工程实践课程,总结这学期的收获 |
姓名及学号 | 施宇翔 102202135 |
前言
期待
原本认为软工是很高大上的课程,毕竟有个专业就是软件工程,所以对这门课教授的理论和对课程中的实践是非常期待的。并且也希望能在这门课中学到很多,提升自我认知和能力。然而,没想到开发软件的实践中我更多的是在写已经接触过的,比较讨厌的前后端的代码。😱
目标
一开始我的目标是很简单的,希望我能够提升自我编码能力,项目代码量达到一万行。💪
达成与不足
在本学期的学习和实践中,我成功的达成了我预期目标的一半,代码量似乎并没用那么多,毕竟我更多时候是在写后端代码,即使是对ai调用和调整又或者是一个大项目的视图函数文件,可能代码量也就在一、两千行,但是在编码,debug的过程中,我的确收获了许多。☺️
废话不多说,直接进入正文。🚀 🚀 🚀 🚀 🚀
一、回首
作业一:对aigc熟悉和博客园以及GitHub使用
这份作业是认识软工课程的第一步,这第一步就让我觉得这门课似乎和我想得不一样,博客园和GitHub我之前就接触和使用,但是对aigc的强调的确是我没想到的。
我之前写代码或者做深度学习的小项目,我就比较依赖ai——chatgpt。我试着想要自己写代码,但是越来越多库的使用,见都没见过的函数很大程度上在干扰我,很难真正做到不依靠ai完整的写出代码。但这门课对aigc的强调然我意识到,ai已经在快速的发展并且融入了生活、学习甚至是工作,那我们可能更要学习如何使用ai,用好ai,而不是和ai比谁学的更快,知识实在是太多了,我在西二学了三个月的计算机视觉的知识,对于ai而言可能就是加入知识库的事情罢了,这并不具有可比性。
总结:如何更好地使用aigc是我接下来在学习过程中需要领悟和体会
作业二: 个人编程(aigc小游戏)
这个作业要求开发一个类似羊了个羊的游戏,使用aigc。
很明显,这是要ai写,而不是我写(😊),毕竟我不会写。
我能干的事情就是把需求告诉ai,比例子给ai,让ai给出代码,我来运行调试代码。
最后我做出来了一个套皮羊了个羊——kun了个kun
为了让我的项目能搞好的修改和使用,我使用了chatgpt和copilot的结合体
chatgpt帮助我生成完整代码
以及我使用的图片素材
copilot帮助我根据更细节的需求修改代码块
在两个ai工具的协作和我的努力下,完成了此次的作业,在本次作业中我也发现了ai都存在的缺点。
总结:
ai虽然能够完成大概,但细节和一些报错,还是需要自己手动来修改,ai有时候还是会显得比较傻,但是这个问题我感觉在被逐步解决,因为ai发展太快了,从第二次作业到现在才时隔三个月左右,openai又发布了新的模型,chatgpt的能力又上一层楼。
作业三:结对作业(项目开发)
这次作业明显让我感觉有些棘手,不论是web、app还是微信小程序,如此完整的开发过程我都没有经历过,需要从需求分析入手到原型设计再到编码,到最后的运维,这对我和我的搭档来说都是一次挑战,更何况我更经常地是一个人完成开发。如何分工协作也是本次作业一大挑战。😂
在我们俩的不懈努力和每天加班的情况下,我们完成了以上的原型,并且加班加点,不断调试完成了代码,虽说有校运会的三天,但感觉时间根本不够用。
但好在最后我们还是能给出个成品,虽然只是一个大概的成品。>_<
总结:本次作业除了需要对aigc有着比较熟练的应用,更需要有合作意识,什么是合作、怎么合作才是本次作业我认为最关键的点,结对作业也为之后团队作业打下了坚实基础。
作业四:团队作业(MAN游)
这次的团队作业是倾注了我无数心血。
先吐槽一下:为什么本学期有这么多的实践大作业,软工、数据采集、数据库、大数据项目实践、我根本没有时间真正在学习啊啊啊啊啊啊!!!!感觉我在上班,每天都在做项目。
本次作业我是后端的组长,我们前期开了很多次会,都在对选题和需求原型上进行分析和讨论,最后敲定了MAN游——倾注了我所有心血的项目(感觉我的时间基本都花在软工上了)。
接下来,如何把代码的工作量分下去,又如何把整个后端项目合出来,保证项目的安全性、规范性也是一大难点,最后我按照项目需要实现的不同功能按照模块划分,将工作分发,我负责各种api接口和代码检验修改。
非常感谢我们后端小组的成员,大家都能积极响应我的消息,使得我们的工作进度快,工作心情好、工作效率高,也使得我当后端小组长的工作量大大减轻。相比于前端组长,我应该算是比较轻松了。😀
我在开发的过程中遇到了几个难点。
1、kimi是傻逼
不能接受
网页端的kimi可以直接解析网页、但是模型不可以;
网页端的kimi回答格式规范,但是调用模型时不可以;
kimi不会算数!!!!
最后我只能一点一点的调试我的promt文件、并且调用scrape api来实现对网页的爬取,再使用beautiful soup来解析网页获得需要传给kimi的内容,用promt规范返回格式,并且提前实现计算的代码。
2、高德地图 api
原本认为api能直接解决很多问题,但后来发现,呵呵,很难,我得根据api有的功能来考虑我该使用什么逻辑调用api来完美实现我想要的效果,这的确是我开发时的一大挑战
最后我们的项目也做出来了大概,成功完成了这门实践课上最大的挑战。虽然我已经觉得一点精力都没有了,更过分的是我别的课程感觉什么都没学就要期末考了,悲。
每一次的答辩和汇报都是在挑战组长和前后端小组长的极限,一次答辩就是一次ddl,赶进度赶得也很累。iman冲冲冲。
总结:团队作业应该是本学期我印象最深刻的作业了,毕竟时间长、任务重、细节难。但团队的作用、ai的协助这些都不可忽视,在每一个开发的环节中都有着巨大的作用。本次作业我的代码量大概在2000-3000行,用时可能快一个月了吧。
花费(浪费 )的时间
作业 | 用时 |
---|---|
个人作业一 | 0.5天 |
个人作业二 | 3天 |
结对作业一 | 5天 |
结对作业二 | 7天 |
团队作业一 | 7天 |
团队作业二 | 7天 |
现场编程 | 0.5天 |
团队作业三 | 14天 |
团队作业四 | 7天 |
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
>270h | >19h | >20h |
二、淘金
1、作业收获
个人编程
一个人编程的好处在于没有团队协作的沟通成本,咱可以自由选择技术工具,自行设计界面并实现功能;但是,同时也缺少了更多开发者的视角和反馈。并且遇到难题没法解决时只能不断地拷打ai,试图解决问题,没办法集思广益。本次作业也让我更加了解aigc的能力不仅在代码,也能生成素材等等,所以aigc不止程序员在使用、其它各行各业未来对aigc的使用也会越来越多。
结对编程
老师之前也说过一人负责编写代码,另一人负责审查。当遇到难题时,两人可以共同讨论解决方案。然而真正做起来很难,因为工作量太大,而且我们都不够专业,审查起来就是感觉对对对。但本次作业的确让我意识到双人工作的流程,编码并非全部。
现场编程
说是现场编程可以提高编程速度和压力承受能力,然而,嗯,我们基本没做出什么比较完整的东西,只是一个简单的记账本小工具罢了。只能说是我们的能力都不是非常到位。
团队编程
这个!嗯~ 好的领导者真的真的很重要!团队项目实践强调团队协作、任务分配和项目管理。组长是团队的灵魂,在我们组长的积极组织调动下,在团队成员不懈努力下,实现了我们的项目,完成了一次又一次的汇报和答辩。
2、新技术、新生产力
- chatgpt
直接解决了我60%的问题、间接解决了我10%的问题,可以说chatgpt是我最重要的同伴了,失去了chatgpt我感觉我也可以停摆了。ai的潜力真的很强大,基于transformer框架的自然语言却能达到今天这一步,很难以想象。 - HBuilder X
虽然我大多时候在写后端,但是如何和前端对接,也让我学到了很多前端的知识,再加上我们做的都是app端,这个工具实在是好用。 - Github
这个算是我接触的比较早的,不算新,但实用。项目的管理、合作都很需要。 - 墨刀
原型设计的实用工具,可惜有些要收费,可恶。
3、提升
- 代码量的提升
- 团队协作能力的提升
- 对aigc熟练度的提升
- 时间管理能力的提升
- debug能力的提升
- 心态的提升
4、致谢
首先是对我们小组表示感谢,感谢大家的参与和付出,才有了我们的MAN游。
其次是对老师和助教表示感谢,感谢作业(已疯),感谢每一次的审阅和点评。
最后是对自己表示感谢,感谢自己的坚持和努力,感谢自己不断地汲取知识,才有了现在满满的收获。正所谓吹尽狂沙始到金,没有风雨、何见彩虹?
谢谢大家!