软件工程第一次作业——自我介绍、现状与未来规划
软件工程第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS/homework/15710 |
| 这个作业的目标 | 学会用markdown排版进行随笔的编写,并创建GitHub个人仓库;明确自己对未来的规划与目标 |
一、自我介绍与博客建设感悟
我是一名软件工程专业学生,具备一定的软件开发实战经验,熟练掌握前后端主流开发技术,能够独立完成小型项目功能开发、接口联调与简单部署工作,目前个人有效代码累计量约两万行,实操能力优于同年级平均水平。
在个人能力方面,我最大的优势不在于单纯的代码量积累,而在于具备较强的自主学习能力、问题排查能力和实战复盘能力。在自学前后端技术的过程中,我长期面对陌生框架、代码报错、业务适配等问题,养成了不依赖他人、优先自主检索文档、拆解问题、分步排错的习惯。每完成一轮开发、解决一个典型Bug,我都会主动总结问题根源与优化方案,形成可复用的开发经验。同时我执行力较强,能够长期坚持技术积累,不浮躁、不摆烂,稳步夯实个人技术能力。
本次作业我系统完成了Markdown语法学习、规范化随笔排版、博客园文章发布、GitHub个人仓库创建、代码提交与版本管理等基础操作。在以往的开发学习中,我大多只注重“动手写代码”,忽视了输出沉淀与规范管理,大量项目代码、开发经验零散保存,缺乏系统性梳理,导致很多实战经验无法固化为真正的能力。
通过本次博客搭建与随笔撰写,我深刻体会到技术输出的价值。刷题、开发属于被动输入与实操积累,而写博客是主动复盘、重构知识体系的过程,能够有效查漏补缺,让零散的实战经验变得体系化、规范化。虽然撰写博客、规整排版、梳理内容需要花费较多时间,但长期坚持可以锻炼文档撰写、逻辑梳理、技术总结的核心能力,契合企业软件开发规范化、标准化的工作要求。
对于部分同学认为写博客浪费时间、没有意义的观点,我持反对态度。代码量只能证明开发时长,而博客复盘能够证明成长质量。短期的耗时付出,能换来长期的能力沉淀与思维提升。我将坚持更新个人技术博客,持续记录课程学习、项目开发、踩坑复盘的内容,稳步积累个人技术履历。
在课程学习中,我将坚守学习底线与学术底线,认真对待每一次作业、每一次提交,严格遵守学术诚信规范,杜绝敷衍、抄袭、摆烂等行为,以高标准要求自己,规范开发习惯,夯实专业基础。
二、现状、经验和计划
(1)专业选择缘由、能力差距与技能提升计划
我选择软件工程专业,源于对软件开发的浓厚兴趣,同时看好行业长期发展前景。数字化时代下,各行各业都离不开软件技术支撑,软件工程是一门兼顾理论体系与落地实操的实用学科,不仅可以锻炼逻辑思维、问题拆解、团队协作能力,还能通过技术落地创造实际价值。在亲身参与前后端项目开发、积累两万行代码实战经验后,我更加坚定深耕本专业的想法,希望从“会写代码、能做项目”进阶为懂工程、懂规范、懂迭代、懂架构的专业软件人才。
相较于同年级同学,我具备充足的实操基础与代码积累,但距离合格的IT专业毕业生仍存在明显短板:我的开发经验多来自自学摸索,依赖个人实战经验,缺乏系统化的软件工程理论支撑;开发习惯偏向“功能优先”,存在重实现、轻规范、轻测试、轻文档的问题;同时缺乏大型团队协作、项目管理、需求分析与架构优化的能力,工程化思维较为薄弱。
结合自身现状与行业需求,我选取7项核心技能,采用0-9分评分标准(5分可通过行业基础面试,9分代表世界一流水平),制定能力提升规划:
| 核心技能 | 当前水平 | 课程结束目标水平 | 提升手段 |
|---|---|---|---|
| 代码编写与调试能力 | 7 | 8 | 1. 基于现有两万行代码基础,优化代码风格与结构,减少冗余代码;2. 系统总结各类Bug的排查思路,形成个人排错体系;3. 参考开源项目规范,提升代码可读性与复用性;4. 坚持算法练习,强化逻辑思维;5. 开发后主动自测优化,提升代码质量。 |
| 软件工程理论能力 | 4 | 7 | 1. 通读《构建之法》全书,梳理完整软件工程知识体系;2. 将课本理论与自身项目实战结合对照,查漏补缺;3. 学习软件生命周期、迭代开发、项目管理、软件测试等核心知识;4. 每章节撰写读书笔记与复盘博客;5. 积极参与课堂讨论,纠正经验式开发误区。 |
| Markdown文档与技术写作能力 | 6 | 9 | 1. 熟练掌握全套Markdown排版语法,规范随笔与技术文档格式;2. 按照行业规范撰写项目说明、开发日志、复盘文档;3. 借鉴优质技术博客,优化内容逻辑与表达;4. 坚持定期输出,形成系统化写作习惯;5. 每次输出后自查优化,保证内容严谨、简洁、专业。 |
| 自主学习与问题检索能力 | 7 | 9 | 1. 遇到问题优先自主查阅官方文档、权威技术资料,减少无效提问;2. 深究问题本质,不仅解决表面报错,更梳理底层原因;3. 积累优质学习资源,搭建个人技术资源库;4. 主动学习前沿前后端技术,保持技术敏感度;5. 总结高效学习方法,形成专属自主学习体系。 |
| 团队协作与项目开发能力 | 5 | 8 | 1. 积极参与课程小组项目,主动承担核心开发任务;2. 学习团队分工、版本管理、代码合并、协作规范;3. 主动对接组员进度,高效沟通解决协作冲突;4. 复盘团队开发问题,优化个人协作方式;5. 学习基础项目管理流程,提升项目把控能力。 |
| 软件需求分析与测试能力 | 4 | 7 | 1. 系统学习需求分析方法,学会拆解用户场景与核心需求;2. 改变重开发、轻测试的固有习惯,养成先设计、后开发、必自测的流程;3. 学习基础软件测试方法,主动排查项目漏洞;4. 结合自身项目复盘需求偏差、功能冗余等问题;5. 积累需求梳理、缺陷排查、功能优化的实战经验。 |
| 软件创新与迭代思维 | 4 | 7 | 1. 学习持续性创新与颠覆性创新的核心逻辑,区分有效迭代与无效叠加;2. 对个人旧项目进行功能优化、性能迭代;3. 参考成熟产品设计逻辑,培养用户思维与产品思维;4. 在课程作业中主动尝试功能优化与创新设计;5. 跳出“实现即可”的固化思维,追求高质量、可迭代的软件成果。 |
(2)课程学习心得与思考
大学是人生中唯一可以全身心投入学习、系统夯实专业能力的黄金阶段。软件工程课程区别于普通编程课程,它不教单纯的代码语法,而是教会我如何规范开发、如何管理项目、如何团队协作、如何迭代优化,是将零散实操经验转化为专业工程能力的核心课程。
我之所以认真参与课程、坚持完成各项作业,是因为我清楚自身短板:实战经验充足但理论体系薄弱,容易陷入经验式开发的误区。参考往届学生的学习经历与博客评论,很多实操能力强的学生最终难以进阶,核心原因就是缺乏软件工程系统化思维。因此我希望通过本课程补齐理论短板,规范开发习惯,实现能力进阶。
在以往的大学学习中,我体验的是单向灌输式师生关系,老师授课、学生被动接收,缺乏互动、反馈与针对性指导。我希望这门课能够建立双向沟通、教学相长、互助共进的师生关系,学生主动提问、主动反馈学习难点与思考,老师针对性答疑、规范标准、引导思维,共同解决理论与实操结合的问题。
面对难度较高的课程作业,我的选择是C:向老师和同学请教,花更多时间,把作业全部完成。难题对应的正是自身的思维盲区与能力短板,凭借已有经验敷衍完成只会固化不规范的开发习惯,主动攻坚、深耕细节、积极请教,才能突破自我,实现能力提升。
通过阅读相关资料,我清晰区分了合理参考借鉴与抄袭剽窃的本质区别:在学术研究与软件开发中,参考他人资料、开源代码、技术思路,并且规范标注出处、结合自身需求优化创新,是行业鼓励的迭代学习方式,符合学术规范;而抄袭剽窃是直接照搬他人完整成果、不标注来源、冒充原创,属于严重的学术不端行为。在本课程学习中,我将严格遵守学校学术规定,规范引用、自主创作,坚决杜绝抄袭、拼接、照搬等违规行为。
(3)未来发展选择、优劣势与本学期规划
结合自身技术积累、兴趣方向与行业前景,我未来的核心发展选择为互联网软件研发方向,深耕前后端开发与工程项目研发,未来计划从事专业软件开发、项目迭代优化相关工作,持续深耕技术,走技术实战路线。
相比于其他同学,我的优势十分明显:具备两万行有效代码积累与完整的前后端开发实战经验,能够独立完成小型项目开发;自主学习、问题排查、实战复盘能力突出,适应技术迭代速度快;执行力强,学习态度端正,愿意为补齐短板持续投入时间精力。
我的劣势也较为突出:软件工程理论体系零散,开发多依赖经验,不够标准化、规范化;缺乏大型团队协作与工程项目管理经验;局限于功能实现,架构设计、性能优化、产品创新等高阶能力不足。
针对自身发展方向与优劣势,我制定了本学期专属规划:深耕软件工程理论,用专业理论规范实战开发习惯;坚持博客复盘与GitHub代码管理,系统化沉淀学习与项目成果;积极参与团队项目,积累协作与项目迭代经验;针对性提升需求分析、软件测试、架构优化能力,全面补齐工程化短板。
(4)课程学习计划、代码量与WOOP规划
当前代码量:前后端累计有效代码量约15000行。
行业代码量标准:入职一流互联网软件公司,需具备1-3万行高质量代码量+完整项目迭代经验;从事高校科研教学工作,需具备扎实的代码功底、项目研发能力与理论总结能力,代码量不低于2万行,同时具备极强的工程复盘与理论研究能力。
本学期课程目标代码量:新增5000行高质量规范代码,期末总代码量突破20000行。
每周计划代码量:每周稳定完成150行以上有效规范代码,结合课程作业、算法练习、项目迭代稳步积累。
课程时间投入:每周投入12小时以上用于本课程学习(含课堂、作业、博客撰写、代码练习、复盘总结)。针对过往存在松懈、学习不系统的问题,我的选择是D:比以前课要多很多,直到达到目标为止,摒弃浮躁心态,全力补齐能力短板。
是否担任助教:本学期以夯实基础、规范能力、沉淀自我为核心目标,暂不申请助教,后续能力达标后再尝试。
课程期待与学习态度:我希望本课程侧重理论落地、实操规范、项目思维培养,结合真实开发场景讲解软件工程流程,帮助学生打通理论与实战的壁垒。我将全程认真投入,不逃课、不敷衍,主动参与课堂研讨、课后复盘、项目实践,全力提升个人工程化能力。
WOOP完整学习计划
Wish(愿望):本学期系统掌握软件工程全套理论知识,彻底规范个人开发习惯,突破经验式开发瓶颈,熟练掌握Markdown随笔撰写与GitHub代码管理,积累标准化项目协作经验,实现从“实战开发者”到“规范化工程学习者”的进阶。
Outcome(结果):课程结束后,能够严格按照行业标准完成软件设计、开发、测试、迭代与文档输出;具备完整的软件工程思维,摆脱野蛮开发模式;拥有高质量代码积累与系统化学习成果,具备初级软件开发岗位的综合能力,为未来就业深造筑牢核心基础。
Obstacles(障碍):内部障碍为长期依赖实战经验,难以快速纠正不规范的开发习惯;轻视理论学习,偏爱实操;偶尔拖延,复盘总结不够深入。外部障碍为理论知识点繁杂枯燥,项目开发与课程学习时间容易冲突。最核心失败因素:固守旧的开发经验,轻视理论规范,导致工程思维难以提升。
Plan(If-Then风险防范计划)
1. 如果开发时沿用不规范写法,立刻对照课程理论与书籍规范整改,同步记录到博客复盘;
2. 如果出现重实操、轻理论的懈怠心态,每日固定1小时精读课程理论,做到理论实战同步推进;
3. 如果学习复盘流于表面,强制细化问题成因、整改方案、长期规避措施,形成完整复盘文档;
4. 如果项目开发与课程任务时间冲突,优先保障课程学习质量,合理拆分任务、规划时间;
5. 如果本周代码量或复盘任务未达标,周末优先补齐,杜绝任务堆积、拖延摆烂。
三、高质量提问与课程反馈
我快速通读《构建之法》全书,结合自身前后端开发经验,参考高质量提问模板,提出5个带有个人思考、实战对照、具备探讨价值的问题,明确标注章节、原文、个人经验与困惑。
问题一:软件工程“足够好”的软件是否具备行业量化标准?(第一章 概论)
引用原文:第一章概论提出,软件工程的核心目标是创造“足够好”的软件,软件无需做到绝对无Bug的完美状态,只需适配场景、满足用户核心需求即可。
提出问题:书中仅对“足够好的软件”做了定性描述,没有给出可落地的量化标准。在企业真实前后端项目开发中,不同应用场景的软件(民用软件、商用软件、工业软件)对Bug容忍度、性能标准、功能完整性的量化评判标准是什么?
个人经验与困惑:我在个人项目开发中,通常以“功能正常、无明显报错”作为合格标准,但这属于个人经验标准,不符合行业工程规范。我不清楚企业标准化的软件质量评判依据,容易出现要么过度开发、要么质量不达标的问题,希望明确可落地的行业量化规则。
问题二:如何平衡前期分析与快速迭代,规避“分析麻痹”误区?(第八章 软件工程师的成长)
引用原文:书中指出软件工程师存在四大思维误区,其中“分析麻痹”是指开发者过度纠结前期细节规划,追求完美分析,迟迟不愿动手落地,最终导致项目进度停滞。
提出问题:前期需求分析、架构规划是保障项目质量的关键,但过度分析会陷入停滞误区。对于有一定开发经验的开发者,如何精准把握分析尺度,平衡“充分前期设计”与“快速迭代落地”?是否有标准化的判断流程?
个人经验与困惑:相较于新手,我拥有较多开发经验,经常凭借过往经验预设各类问题,过度纠结架构细节,导致项目开发效率降低,陷入分析麻痹的困境。我无法精准区分“必要前期分析”与“过度内耗”,需要具体的实操指导方案。
问题三:低优先级任务的延缓处理是否存在边界与风险?(第十章 软件设计与实现)
引用原文:书中提出软件开发的核心经验:聚焦高优先级任务,延缓处理低优先级任务,通过区分轻重缓急提升开发效率,避免主次不分、全面发力导致效率低下。
提出问题:在多功能、多模块的完整前后端项目中,长期延缓低优先级任务是否会产生隐性兼容风险、技术债务?低优先级任务是否有处理时间边界?如何区分“合理延缓迭代”与“消极拖延堆积”?
个人经验与困惑:我在个人项目开发中,常优先完成核心功能开发,搁置界面优化、代码精简、兼容性适配等低优先级任务,最终导致项目迭代后期任务堆积、返工成本大幅提升。书中仅强调聚焦高优先级任务,未说明低优先级任务的管控规则,缺乏实操指导。
问题四:学生项目如何实现有效创新,避免无效迭代?(第十六章 IT行业的创新)
引用原文:书中将创新分为持续性创新与颠覆性创新,指出创新并非灵光一闪,而是基于大量基础积累的迭代优化,同时破除了大众对创新的认知误区。
提出问题:企业项目创新依托真实用户数据、市场需求与用户反馈,而学生课程项目、个人项目无真实用户场景,学生开发者该如何落地有效创新?如何避免盲目新增功能、导致项目臃肿的无效迭代?
个人经验与困惑:我在迭代个人前后端项目时,经常为了“创新”盲目叠加多余功能,导致项目核心功能弱化、代码冗余,看似持续迭代实则毫无质量提升。我不清楚学生阶段创新的核心方向与评判标准,希望得到明确指导。
问题五:低代码与AI普及下,软件工程学生的核心工程竞争力是什么?(第一章 概论)
引用原文:书中提到软件开发工具愈发简易,编程入行门槛持续降低,大量非专业人员可借助简易工具完成基础软件开发,行业优胜劣汰与竞争规则随之改变。
提出问题:当前AI代码工具、低代码平台可以快速实现绝大多数基础前后端功能,基础编码能力已不再是专业学生的独有优势。在工具普及的背景下,软件工程专业学生的核心竞争力应该聚焦于哪些高阶工程能力?
个人经验与困惑:我拥有两万行代码积累,熟练掌握基础开发技能,但清晰意识到基础编码优势正在被工具弱化。我希望明确未来学习核心方向,跳出基础编码内卷,聚焦不可被工具替代的工程化、架构化、产品化能力。
课程反馈选择
我的选择是D:经常提问题,平时就经常给老师和助教提反馈。我认同“必要困难促进高效学习”的理念,也深知问题是推动思维成长的核心动力。在课程学习中,我会结合自身实战经验与理论盲区,主动提问、及时反馈课程学习难点、个人思考与课程优化建议,持续参与课程互动与教学反馈,在提问和复盘迭代中提升自我。
四、前车之鉴——往届博文阅读感悟
我选取两篇往届优秀课程博文进行精读,结合自身开发经验与学习现状,总结经验、反思不足,具体感悟如下:
1. 博文感悟一
通过阅读往届学长的博客随笔,我深刻认识到代码实战只是基础,复盘沉淀才是核心成长。很多同阶段学生都有项目开发经验,但最终成长差距悬殊,核心原因就是是否坚持系统化复盘与输出。多数同学写完代码、完成作业就结束学习,经验零散易遗忘,而优秀学长坚持长期博客输出,将零散的实战经验转化为体系化的知识与能力,实现稳步进阶。
结合自身来看,我虽有两万行代码积累,但过往缺乏系统复盘,很多开发经验、排错技巧没有有效留存,成长效率大打折扣。这篇博文让我明确了后续学习方向:不盲目追求代码数量,更注重代码质量与经验沉淀,坚持博客随笔更新,将每一次项目开发、每一次作业完成都转化为可复用的个人能力,杜绝虚假努力。
2. 博文感悟二
部分往届学生拥有不错的实操基础,但凭借已有经验轻视课程理论、敷衍课程作业,长期固守个人野蛮开发习惯,最终无法突破能力瓶颈,难以进阶高阶开发。这一前车之鉴让我深受警醒。
我自身同样具备丰富的实战经验,极易陷入“重实操、轻理论”的误区,盲目自信、忽视规范。通过阅读前辈的失败与成长经历,我深刻明白:实战决定技术下限,工程理论决定能力上限。本学期我将摒弃浮躁心态,不凭借已有经验摆烂敷衍,认真深耕软件工程理论,用标准化的工程规范纠正个人开发陋习,打通理论与实战的壁垒,实现能力的高质量进阶。
要求截图
我的github链接:https://github.com/cc-fly001/cc-fly001.git

博客园 Markdown 编辑器截图


浙公网安备 33010602011771号