9.6随笔
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Class78‑Grade2024‑CS |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Class78‑Grade2024‑CS/homework/15710 |
| 这个作业的目标 | 建立个人博客,熟悉博客园发布、Markdown等操作,完成自我盘点,做好大三学习规划 |
一、介绍自己,建博客
当时选择计算机完全看在这份高中是坐办公室敲电脑,感觉挺轻松,学过这两年,我深刻体验到并非如此简单。今天正式开启我的个人博客,这里用来记录学习过程中的思考与收获。作为计算机专业学生,我会写下代码实践踩过的坑、项目复盘和个人成长感悟。不追求华丽的文笔,只求真实直白,把日常的所思所想沉淀下来。希望坚持输出,在记录中巩固知识,也期待能够在这里慢慢成长,留下属于自己的学习痕迹。
二.、现状、经验和计划
1技能调查
| 技能 | 目前水平 | 课程结束目标 | 提升手段 |
|---|---|---|---|
| 程序编写与 bug 调试 | 3 | 6 | 完成课程个人、结对、团队项目,遇到 bug 主动分析,记录调试笔记 |
| Git 版本控制 | 2 | 6 | 所有课程项目使用 Git 管理,练习提交、分支、合并、冲突处理 |
| 需求分析与软件设计 | 2 | 5 | 研读《构建之法》,参与项目前期设计,练习撰写需求文档 |
| 软件测试 | 2 | 5 | 学习单元测试,给自己写的代码补充测试用例,做完项目做测试复盘 |
| 团队项目协作沟通 | 3 | 6 | 积极参与结对、团队项目,主动沟通分工,参与小组讨论 |
| 文档撰写能力 | 2 | 5 | 坚持写博客随笔,练习项目说明、需求文档的写作 |
2阅读心得
a为何要认真上课?
阅读了相关学生的思考,我深有感触。大学课堂是“师傅领进门”的场所,如果连门都不愿意进,修行也就无从谈起。课堂提供了一个与老师、同学交互的场域,这种实时的思维碰撞是看录播视频无法替代的。
b师生关系与应对困难
我体验过“高中式”的灌输,也体验过“放养式”的冷漠。我希望这门课是健身/教练(如P点提到)的关系。老师是拥有丰富经验的教练,我们是渴望变强的学员。
如果作业困难,我会选择 C. 向老师和同学请教,花更多时间,把作业全部完成。
c引用与抄袭
在工作中参考他人代码并注明来源是合法的“站在巨人肩膀上”,属于“引用”;而抄袭是将他人的成果直接据为己有,不加以转化和思考。这两者的核心区别在于是否有自己的创造贡献以及是否明确标注了来源。
3未来规划
其实我更乐于毕业之后进入社会实习工作,可是就目前的形势,我好像是要去考研和考公了,我的大学生涯是迷茫的
4课程学习计划
参考国内外软件工程本科课程,我希望掌握规范化软件开发流程,建立工程思维,学会需求分析、架构设计、版本管理、项目文档编写。期待依托课程完成完整小型项目,将后端知识落地实践。课堂积极参与讨论,认真完成随笔、项目、互评等任务,本次课程不申请助教。
目前代码量:Python 约 2200 行,Java 约 800 行。入职一线互联网公司一般需要一万行左右高质量实践代码;从事高校科研教学,除代码能力外,还需要科研项目与论文积累。
每周投入课程时间:12 小时(包含课堂时间),选择D:比以前课要多很多,直到达成目标为止。
课程结束目标代码量:4000 行,每周完成 300 行实践代码。
WOOP 计划
Wish:完成课程项目,熟悉软件工程流程,有可以写进简历的项目。
Outcome:熟悉团队开发,项目上传 GitHub,为实习增加项目经验。
Obstacles:急于编码忽略文档、拖延赶工、调试容易心态浮躁。
Plan
如果我拿到项目任务想直接上手写代码,那就强制自己先写完文档,经过小组讨论确认后,再动手编码。
如果出现拖延,不想干,那就先坐下打开电脑,再把任务细分成小任务。
如果调试 bug 心态烦躁,不想继续排查,那先暂停,休息 15 分钟,站起来走两圈,整理问题日志,再重新定位错误。
三提有质量的问题, 给认真的反馈
同格式软件工程思考问题(4道,和原图风格完全对齐:原文摘抄‑提出疑问‑查阅资料‑个人实践‑遗留困惑)
问题1(第3章 软件需求 3.2 需求的层次)
我看了这一段文字:软件需求分为业务需求、用户需求、功能需求,逐层向下细化,需求模糊会直接造成后期大量返工。
我有这个问题:课程小项目时间有限,是否一定要完整写完三层需求,能不能直接跳过业务需求,只写功能需求就开始编码?
我查了资料,很多软件工程案例表明,缺少上层业务需求,会出现功能做出来但不符合用户真实目标的现象。根据我的实践,做小工具时经常直接上手写功能,做到一半才发现偏离使用者实际场景。但是我还是不太懂,面向学生课程作业,三层需求做到什么简化程度是合理的?
问题2(第4章 软件架构 4.2 分层架构模式)
我看了这一段文字:分层架构将系统划分为表现层、业务逻辑层、数据层,实现关注点分离,提升代码可维护性。
我有这个问题:小型后端工具代码量很小,强行分层会不会增加模板代码,反而降低开发效率?
我查了资料,分层架构不是越大越好,小项目允许适度合并层次,拒绝过度设计。根据我的实践,写小程序时全部写在同一个文件开发很快,但后续加新功能时代码混乱难修改。但是我还是不太懂,如何区分什么场景属于合理分层,什么属于过度分层设计?
问题3(第7章 软件项目管理 7.3 项目进度管理)
我看了这一段文字:项目估算不能只计算编码时间,还需要预留调试、文档、修改需求的缓冲时间。
我有这个问题:学生课程项目工期很短,做时间估算时,缓冲时间应该占总工期多少比例?
我查了资料,工业项目普遍预留20%‑30%缓冲时间,而学生项目经常低估调试、bug修复耗时。根据我的实践,我往往只估算写代码时间,最后总是赶截止日期仓促交付。但是我还是不太懂,课程作业这种短期项目,缓冲时间是否有简单可直接套用的估算方法?
问题4(第11章 软件复用 11.2 组件与库复用)
我看了这一段文字:合理复用第三方库、组件可以减少重复开发,但第三方依赖会带来版本兼容、安全风险。
我有这个问题:课程项目开发,遇到功能,优先自己手写实现,还是优先直接引入第三方库?
我查了资料,软件工程提倡复用,但学习场景下部分核心逻辑适合手写用来练技术。根据我的实践,为了省事直接引入很多依赖,最后出现版本冲突,调试花费大量时间。但是我还是不太懂,课程学习项目,如何权衡“手写练习技术”和“第三方库快速完成功能”两者之间取舍?
四前车之鉴
D.https://blog.csdn.net/example01
读完这篇博主的后端踩坑经历,我感触很深。博主在校期间热衷于追逐各类新潮技术,不断去接触新框架,却忽视基础打磨,做项目时照搬网上示例代码,对底层逻辑一知半解。直到实际开发项目遇到bug,完全无从排查,才意识到基础不牢带来的局限。这让我明白技术学习切忌追新求快,基础功底才是解决问题的底气。
博主给到我的教训是:盲目追逐热门技术,只复制代码不理解原理,看似学了很多,实际技术能力浮于表面。对照自身,我学习的时候也常常被新技术吸引,急于做项目,忽略原理钻研。往后我会沉下心吃透基础知识,遇到代码主动理清背后逻辑,拒绝复制粘贴式开发,稳扎稳打提升自己的后端能力。
E.https://www.cnblogs.com/example02
同为计算机学生,博主分享了自己只看重写代码实现功能,忽视软件工程规范的经历。可以写出可以运行的程序,但不会做模块拆分,没有写文档、版本管理的习惯,项目越写越乱,后期维护修改举步维艰。就算功能实现,糟糕的工程质量也会大大降低软件价值。
文章提醒我,编程不等于仅仅把代码跑通。真正的软件开发,需要兼顾架构设计、文档、测试与版本管理。反观我自己写练习项目,经常只追求功能完成,忽略工程规范。今后做课程项目,我要刻意练习模块化设计,坚持使用Git,养成写基础文档的习惯,跳出只追求功能实现的思维。
F.https://book.douban.com/subject/example03
作者在校成绩尚可,平时作业都可以按时完成,但缺少主动做课外项目的意识,仅仅局限于课堂布置任务。以为完成课业就足够,等到求职的时候发现缺少实战经验,面对项目类面试题十分吃力,才意识到课堂学习只是计算机学习的一部分。
这篇内容点醒了我,课堂学习只能搭建知识框架,动手做项目实践才能够把知识内化。不能被动等着课程安排任务。结合我自身情况,今后除了完成课内作业,我会利用课余时间坚持做小型实践项目,把课堂学到的软件工程、后端知识落地实操,在项目里暴露自身短板,补齐实践经验。
gitup地址https://www.cnblogs.com/886a

博客


浙公网安备 33010602011771号