Skip to content
View xxyyll0323's full-sized avatar
  • Guangdong University of Technology
  • Panyu District, Guangzhou City, Guangdong Province, China

Block or report xxyyll0323

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
xxyyll0323/README.md

个人介绍

1. 介绍自己

大家好,我是计算机专业的一名普通在读生。专业方面,在学校已经学习了基本的专业课——数据结构、网络、操作系统,Java和Python也算顺手,能独立写点小项目,目前主要是在用python跑一些研究,算是有那么一点点实操经验。闪光点吧,我觉得自己记忆力算比较好的,对于背诵和理解一些文章逻辑还算比较擅长。运动方面,足球篮球羽毛球乒乓球排球等等基本上上场打两下,不敢说精通,但都能打点。还有一个我比较享受的爱好是写随笔和小说,中学时拿过省级征文比赛的奖,现在偶尔也写点东西,当作平时的积累。我性格沉稳,善于沟通协作,面对复杂问题时习惯冷静拆解、逐层突破。自认为具备一定的自主学习能力和抗压能力,能快速适应新环境与新挑战。未来希望持续深耕计算机领域,在实战中积累经验,向兼具理论深度与工程能力的专业方向稳步成长。

2. 现状、经验和计划

(1)个人技能差距分析与提升计划表

说实话,选择计算机专业的原因没那么高大上——高中时第一次在信息课上用HTML写出一个带背景音乐的个人主页,让我觉得这行挺有意思。后来慢慢接触编程,发现它和写小说有点像:都是把脑子里的逻辑,翻译成别人(电脑或读者)能懂的语言。一个是用文字构建世界,一个是用代码构建系统。我喜欢这种创造的感觉,还有再朴实一点,这门课不会太涉及到物理相关的,更多的是数学逻辑方面的我更喜欢更擅长。

技能项 当前水平(0~9) 课程结束目标(0~9) 计划通过什么手段提高水平
需求对齐与代码健康度 3 6 ① 选一个小型真实项目,先写需求清单和验收标准再编码;② 学习并实践 SOLID 原则与常见代码坏味道;③ 给现有竞赛代码做重构练习;④ 参与一次他人代码评审;⑤ 用 ESLint / SonarLint 等工具检查代码质量;⑥ 每周复盘自己代码的可读性
验证深度与测试覆盖 2 6 ① 学习 JUnit / pytest 并为一个算法库补单元测试;② 练习为边界条件、空输入、异常路径设计测试用例;③ 学习 Mock 与测试替身的基本概念;④ 给一个小项目补集成测试;⑤ 使用覆盖率工具查看测试盲区;⑥ 阅读一个优秀开源项目的测试代码
工程复现性与构建完整度 2 6 ① 学习依赖管理工具,如 Maven / Gradle / pip + requirements;② 把一个课程项目改造成“克隆后可一键运行”;③ 写清晰的 README,包含环境要求、启动步骤、目录说明;④ 使用 Docker 封装一个自己写过的项目;⑤ 学习环境变量与配置文件分离;⑥ 尝试在另一台机器或干净虚拟机中复现自己的项目
云原生部署与资源优化 1 5 ① 学习 Docker 基础,会写 Dockerfile;② 把一个 Web 或 API 项目部署到云服务器;③ 学习反向代理与 HTTPS 基础;④ 配置健康检查与日志输出;⑤ 学习基础资源监控,如 CPU、内存、磁盘;⑥ 尝试使用 Docker Compose 管理多服务项目
自动化进化闭环与数据飞轮 1 5 ① 学习 GitHub Actions 或 GitLab CI;② 给一个项目配自动测试流水线;③ 给一个项目配自动构建与部署脚本;④ 学习日志收集与错误告警的基本思路;⑤ 做一个带反馈机制的练手项目,比如自动记录错误日志并生成报告;⑥ 养成“重复两次就写脚本”的习惯
手动掌控力与底层原理 4 7 ① 学习 Linux 常用排查命令:top、ps、netstat、journalctl;② 手动配置一次开发环境,不使用一键脚本;③ 学习 HTTP、TCP 基础,抓包分析一次请求过程;④ 阅读一个轻量级框架的源码片段;⑤ 手动管理一次进程与端口冲突问题;⑥ 学习 JVM 或 Python 运行时基础概念,如内存、垃圾回收、解释执行

(2)

a) 关于大学生上课是否要认真听讲的思考

博客中提到的那位北航同学关于“为何要认真听讲”的思考,特别是他对Scalers观点的回应,引发了强烈的共鸣。文章中提到:“不认真听讲其实也没有那么错”,但这并非是在为懈怠开脱,而是对“教”与“学”关系的现实反思。

Scalers的文章强调“认真听讲是一种能力”、“课程讲的不好不能成为不听讲的理由”,这些观点具有启发性,即大学生应培养专注和尊重课堂的习惯。同时,那位北航同学他指出,优秀课堂的“引力”是相互的:当老师像北航高宁老师那样,用极致的备课和人格魅力去“触摸历史的真实”时,学生自然会全神贯注。我认为,认真参与课堂,首先是对自己时间和精力的负责。 大学课堂的价值不仅在于知识本身,更在于跟随老师的思路,学习其分析问题、构建知识体系的“元能力”。这种思维训练,即便在信息随手可得的时代,依然稀缺且珍贵。

我的核心体会是: 认真上课不是对老师的“恩赐”,而是对自己学习成效的“投资”。在信息爆炸的时代,筛选、专注并深度跟随一个知识体系的机会,反而变得更加宝贵。作为我个人,我觉得自己实际上有时候是选择性地认真上课,我能够去认真上课学习我自认为学习深度不够的知识,但有时候老师为了课程丰富而过于拓展的个人或者他人的一些经历可能就没有认真听了。

b) 师生关系、面对困难作业的选择

邹欣老师在《现代软件工程讲义 0 教学方法》中,对师生关系的比喻令我印象深刻。他指出了“餐馆/食客”、“保姆/幼儿”、“狱警/犯人”等扭曲或不健康的关系模式,并明确提出他心目中理想的师生关系是 “健身教练 / 健身学员”

这个比喻极为贴切:

  • 主动者应是学员(学生): 是学生自己想要“健身”(提升能力),因此必须自己流汗、付出努力。
  • 教练(老师)的作用: 提供科学的方法、专业的设备、即时的反馈和严格的督促,防止学员走弯路或“偷懒”。

反思我的大学经历,最令我获益的,确实是那些像“教练”一样严格要求、给予大量实践反馈的课程。我深切希望这门《软件工程》课,能建立起这种“教练/学员”的、高要求且充满建设性反馈的关系。

如果老师布置的作业对我来说有些困难,我的选择是 C:向老师和同学请教,花更多时间,把作业全部完成。

c) 引用参考资料、开发借鉴与抄袭剽窃的区别

这个问题触及了学术研究与工程实践的根本底线。基于阅读的材料和我的理解,它们的核心区别在于 “是否明确、诚实地声明了知识的来源与贡献的边界”。博客中提到,软件作业分为文档和代码两类。在文档中,引用他人观点而不加标注,属于抄袭;在代码中,使用他人代码或框架而不加声明,也构成剽窃。邹老师举的例子极具讽刺性:连软件运行环境(如要求Pentium 133)都原封不动地抄袭,这不仅是懒惰,更是对学术规范和工程实践的无知与不尊重。

借鉴与开发,是“站在巨人肩膀上”的合法且有价值的行为。 我们学习文献,是为了了解前人成果,避免重复造轮子;我们在别人代码基础上开发,是为了更高效地创造新价值。这一切成立的前提,是 “透明的归因”

  • 在文档中: 对所有直接引用的语句、数据、观点,必须使用规范的引用格式(如加引号并标注来源)。对所有借鉴的思想,也要在参考文献或致谢中明确提及。
  • 在代码中: 如果使用了开源库,需遵守其许可证要求(如MIT、GPL等),在项目文档中明确声明。如果借鉴了某段具体代码的逻辑,也应在注释中说明来源。

我对这门课的要求与学校规定非常清晰: 所有提交的作业(包括博客、项目文档、代码)都必须是原创或明确标注了所有借鉴来源的。任何形式的抄袭、剽窃都将面临严厉的处理,因为这不仅是对课程规则的违反,更是对个人学术生命和职业未来的不负责。同时我也告诫自己必须时刻警醒,在学习和研究的每一个环节,都坚守诚实、透明的准则,这是底线。

(3)个人未来方向、优劣势与本学期规划

1.我的选择与准备

我的目标是攻读研究生,未来从事学术研究或技术研发工作。对照诸多前辈的经历,我今天的准备是:在夯实专业基础的同时,有意识地训练自己的科研思维和工程实践能力。 这意味着不满足于完成课程作业,而是主动追问知识背后的原理,并尝试通过项目来验证和深化理解。这与博客中强调的“做中学”、追求“有用”且“持久”的产品理念是一致的。

2.优劣势分析
  • 优势:
    1. 目标明确,动力持久: 我明确了读研的目标,这让我在遇到困难的课程或项目时,更能从长远发展的角度看待当下的付出,而不是仅仅追求分数。
    2. 具备一定的自学与钻研能力: 通过前期的学习,我养成了查阅文献、动手验证的习惯,这对于研究生阶段至关重要。我能较快地适应需要独立探索的学习任务。
  • 劣势:
    1. 工程实践经验相对不足: 与那些目标明确、本科阶段就大量参与企业实习或大型开源项目的同学相比,我的代码量(目前约8000行,主要是Python和一些课程项目用到的Java)和应对真实工业界复杂场景的经验可能偏少。这对理解“真需求”和“大规模系统”的挑战不利。
    2. 研究方向尚未完全聚焦: 读研意味着需要在某个细分领域深入,但我目前的知识面还较宽,对具体方向(如是偏系统底层,还是偏AI应用)的认知还不够深入和确定,这可能会影响我后续选择和准备的针对性。
    3. 产出和成果积累薄弱: 与一些已经开始发表论文或有高质量开源贡献的同学相比,我在正式的学术写作、科研项目成果上的积累几乎是空白,这在申请或面试时会是明显的短板。
3.本学期的规划

针对上述分析,我为本学期制定如下具体规划:

  1. 课程学习上: 将对《软件工程》等实践性强的课程投入更多精力(计划每周投入12-15小时),不仅仅完成要求,更要把课程项目当作一次“准实习”或“小科研”来对待,体会需求分析、团队协作、迭代开发的全过程,并产出高质量的代码(目标本课程新增1500-2000行有效代码)和文档。
  2. 技能提升上: 在保证课程学习的前提下,每周固定时间(如周末半天)系统地补充自己的短板,例如深入学习一门课程中涉及的核心框架(如Spring Boot或PyTorch),并阅读1-2篇与潜在研究方向相关的顶会论文。
  3. 成果物上: 计划在学期末,能将课程大作业(一个软件项目)和实验室的研究尝试整理成一篇技术博客或一份简要的研究报告,作为自己思考和成长的记录,也为未来申请积累素材。

(4)本课程计划、期待、时间与代码量规划

参考博客中提到的美国本科教育注重“过程控制”、“做中学”的理念,以及国内优秀课程对“真实项目”和“人员流动”的设计,我对这门《软件工程》课的期待是:它不仅仅是一门讲理论或做一次大作业的课,而是一次对真实软件开发流程的模拟演练。 我希望通过这门课,能切身感受团队协作的挑战与魅力,理解如何管理复杂性,并提升自己的工程化编码和沟通能力。

我打算这样度过:

  • 全程高度投入: 严格遵守课程的时间节点,积极参与每一次团队讨论和课堂互动。
  • 拥抱“教练/学员”关系: 将老师和助教的反馈视为最重要的成长养料,主动请教,并据此不断改进自己的工作。
  • 记录与反思: 像博客中建议的那样,坚持用博客或文档记录开发过程中的心得、遇到的困难以及解决方案,这会是我宝贵的经验财富。

关于助教,我目前不想当助教。但我非常尊重和感谢助教的工作,并会积极与他们互动,他们的榜样力量对我是一种激励。

代码量、时间投入与WOOP计划

  • 当前代码量:6500 行,主要包括:
    • Python: 约 5000 行(用于数据分析、机器学习课程项目、算法实现)。
    • Java: 约 1500 行(用于面向对象课程作业)。
    • 其他(C, JavaScript等): 暂无
  • 目标代码量:
    • 入职一流科技/互联网/AI公司: 我认为单纯以“总行数”衡量不够科学,但一个合格的新人工程师通常需要 1万-2万行 以上有质量的、经过测试和评审的代码积累,覆盖不同技术栈和项目类型,这代表了一定的工程熟练度和问题解决经验。
    • 从事高校教学科研工作: 代码量并非核心指标,更重要的是 代码的质量、逻辑的严谨性以及解决特定科学问题的能力。一个研究方向的代码库(如一个实验框架)可能只需几千行,但需要极高的可复现性和扩展性。因此,我的目标应是在某个领域写出“精而深”的代码。
  • 本周/本学期目标:
    • 本学期计划完成代码量: 在现有基础上,通过本课程和科研尝试,新增 2000-3000 行 有效代码,使总量达到 10000-11000 行
    • 每周计划完成代码量: 平均每周 150-200 行(考虑到非编码周)。
  • 时间投入选择: 我选择 D: 比以前课要多很多,直到达到目标为止。
    • 我计划平均每周拿出 12-15小时 用于这门课程(包含上课、阅读、讨论、编程和写博客)。

3. 提有质量的问题, 给认真的反馈

快速通读《构建之法》全书后,我被书中许多直指软件工程核心与现实问题的观点所触动。基于书中内容和我的学习经历,我产生了以下五个问题与思考。

问题一:关于“足够好”的标准——如何平衡“完美”与“完成”?

章节与上下文: **** 第1章《概论》第1.2节“软件工程是什么” 。书中写道:“软件工程的一个重要任务,就是要决定一个软件在什么时候能‘足够好’,可以发布。” 书中还提到,很多人认为有Bug就是质量不合格,没有Bug就是质量完美,但其实“市面上有这么多不完美的产品,软件团队为什么还要把这些不完美的软件发布出来呢?为什么不能等到它们完美之后再发布?”——这正是软件工程需要回答的问题。

我的问题: 在课程项目或实际开发中,当时间紧迫时,如何界定一个“足够好”的标准?是追求理论上最优的代码(可能耗费大量时间),还是实现一个能工作但存在已知瑕疵的版本(确保按时交付)?书中提到的“足够好”给出了方向,但对于缺乏经验的学生,这个权衡点仍然非常难以把握。

我的困惑: 书中强调“效能分析”主张基于数据的优化,这是理想路径。但在我们做的项目中,往往缺乏专业的分析工具和足够的时间,更常面临的是“明天就要演示核心功能,但代码结构还不清晰”,好几个项目结课作业课设堆在一起的窘境。我在刚开始的c语言课设中,为了追求更好的界面,额外花了时间重构代码结构,结果延期,最终演示版本还存在一些不知名新bug。但反过来,如果总是满足于“能跑就行”,是否会养成不良的工程习惯?书中提到的“单元测试”、“代码规范”等是保证质量的下限,但在复杂项目中,“质量上限”与“时间成本”的冲突如何在实际操作中智慧地解决?我希望知道是否更有实用的决策模型或经验法则。

问题二:关于敏捷的“仪式感”——站立会议是否会流于形式?

章节与上下文: 第6章《敏捷流程》第6.3节“敏捷的团队” 。书中介绍了Scrum流程中的每日站立会议(Daily Stand-up),说明站会的目的是让团队成员沟通进度、问题和计划,促进协作。书中也指出“极限编程对工程师提出了更高的要求……编码不再是私人的工作,而是一种公开的‘表演’”,暗示了这种公开性可能带来的挑战。

我的问题: 日站立会议作为敏捷开发的核心实践,在实际团队(尤其是学生团队)中,有多大比例能真正达到“同步信息、解决问题”的目的,而不流于形式化的“昨天做了什么、今天打算做什么”的汇报?

我的困惑:当团队氛围融洽但执行力不足时,站会这种仪式是否反而会成为效率的负担(占用时间却无实际产出)?如何设计反馈与改进机制,让站会能自我进化,持续服务于项目目标?还有,珍珠模式流于形式的核心原因在于缺乏“问题导向”的机制安全的团队氛围。书中强调“自组织团队”,但学生团队往往不善于将“我遇到了一个困难”转化为“我需要大家一起解决这个技术难点”。如果团队氛围不够开放,成员可能害怕暴露不足,选择报喜不报忧。那会不会影响最后效果

问题三:关于PM(项目经理)角色的困惑——技术背景与“信任”问题

章节与上下文: 第9章《项目经理》第9.3节“PM做开发和测试之外的所有事情”及第9.4节“领导力——高效的团队讨论” 。书中阐述了PM的职责、所需能力以及与开发团队的关系,特别提到PM需要赢得团队的信任,并列举了PM的能力要求包括“观察、理解和快速学习能力”和“一定的专业能力”。

我的问题: 在一个以技术为核心的团队中,PM的权威和建议,在多大程度上依赖于其自身的技术背景?书中说PM不一定是最强的程序员,但一个技术实力不强的PM,是否真的能通过“沟通、协调、管理”能力赢得资深开发人员的信任?

我的困惑: 阅读刘帅学长的经历和博客中关于PM角色的讨论,我意识到“信任”是协作的基础。但在现实中,我观察到一些团队中,开发人员对PM(或团队负责人)的技术决策常有质疑:“他又不写代码,凭什么决定这个架构?” 书中强调PM要“理解技术”,但“理解”的深度如何量化?如果PM无法在技术细节上与开发人员平等对话,他的管理决策是否更容易遭遇软抵抗?一个成功的PM,其核心说服力究竟来自“懂行”还是“懂人”,两者的权重如何分配?

问题四:关于创新与市场——“先发优势”真的那么重要吗?

章节与上下文: 第16章《IT行业的创新》 。书中讨论了创新的时机、模式以及“赢者通吃”的现象,提出了“创新的迷思”,并讨论了“先进入者”与“后进入者”的不同策略。书中还提到索尼创始人盛田昭夫有“随身听”的想法时,公司专家做了多次市场调查都证明没有市场,但盛田坚持己见,最终开辟新市场。

我的问题: 书中指出“创新的时机很重要”,并讨论了先行者优势。但在当今快速变化的IT行业,我们常看到“先行者”成为“先烈”(如许多早期社交平台),而“后发者”通过微创新和强大运营取得成功(如微信并非最早的移动IM)。那么,对于资源有限的学生创新项目或创业想法,追逐“先发优势”是否明智?

我的困惑: 书中指出“领先者”有风险,但似乎更鼓励在“市场空白”处创新。然而,识别“真实空白”对于缺乏经验的学生异常困难。我的困惑是:我们应如何区分“值得冒险的蓝海”与“注定失败的荒地”?在准备不充分的情况下,是应该快速推出不完善的产品去抢占市场认知,还是应该耐心打磨产品,等待时机以更完善的体验切入?这个决策的核心考量因素是什么?

问题五:关于“代码量”与“工程能力”的关系——量变必然引起质变吗?

章节与上下文: 这并非某特定章节的直接论述,而是贯穿全书“做中学”的核心思想。特别是第3章《软件工程师的成长》 中关于个人能力衡量与发展的论述,以及第2章“个人技术和流程” 中对单元测试、效能分析的要求,都隐含了对大量实践和高质量代码的重视。书中还提到“软件领域可以分为两个方面:一方面是技艺创新的大爆发;而另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了 90%~95% 的比例。”

我的问题: 博客要求我们思考代码量,书中也隐含了对实践量的重视。但我认为,“有效代码量”与“总代码行数”是两个概念。 机械地重复简单逻辑,写再多行,工程能力提升也有限。那么,如何界定“有效的实践”?

我的困惑: 在有限时间里,我们应优先选择什么样的项目来练习,才能使“代码量”真正转化为“工程能力”?对于初学者,是应该多参与功能丰富的中型项目(锻炼广度),还是深耕一个精简但高要求的核心模块(锻炼深度)?因为包括我自己在内,有时候都只是简单地重复者同样的代码,甚至有时候不是自己写的,那在这种情况下,一个通过什么样的项目来真正提高自己呢?

4. 前车之鉴

1.感想一:《辜新星:时刻调整方向 找到人生的蓝海》

文章链接: https://book.douban.com/subject/4006425/discussion/22803733/

这篇给我最大的启发,是将宏大的目标分解为具体、可执行的步骤,并主动寻求反馈与调整的能力。辜新星学长在求职产品经理岗位时,并没有盲目海投,而是:

  1. 明确目标: 锁定了IT产品经理和管理咨询两个方向。
  2. 针对性准备: 为技术面复习基础、手写代码;为产品面主动体验产品、思考逻辑;为咨询面训练结构化思维和英语。
  3. 亲身实践验证: 通过微软实习,亲身体验PM工作,确认了兴趣和“比较优势”,从而在工程师和PM之间做出了明智选择。

我的感想与关联: 我计划读研,这个过程完全可以类比。我的“求职”就是申请心仪的研究生项目或实验室。过去我可能更偏向于“广撒网”式地学习,但学长的经历告诉我,“选择”本身就需要能力和准备。我需要像他一样,尽早明确感兴趣的研究方向,然后针对性地去了解该领域的导师、阅读他们的论文、补充所需的知识和技能,甚至争取科研实践机会来验证自己的兴趣。他提到的“把每天把要做的事情分成ABCD四类”的时间管理方法,也正是我克服拖延、提高效率所需要的。 迷茫是常态,但行动是解药。通过具体、有目的的准备和尝试来探索方向,比空想或随大流有效得多。在接下来的大三生涯也是,我将努力将更多的迷茫转换成实际行动的动力而不是只空想不付出实际行动。

2.感想三:《徐宥:掉进读书的兔子洞》

文章链接: https://book.douban.com/subject/4006425/discussion/22802960/

徐宥学长的经历则展示了强大自学能力和长期积累所产生的复利效应。他从小养成“一个字一个字敲经典书上的程序样例”的习惯,大三大四时疯狂扫荡图书馆TP312书架,并坚持做笔记、记“思维快照”。这些看似笨拙、无头绪的积累,让他在面试微软、Google时发现“面试题怎么都那么熟悉”,因为那些题目背后的思想早在他读过的《编程珠玑》等经典中就已体现。

我的感想与关联: 这篇文章极大地坚定了我**“长期主义”学习信念**。他建立“索引”而非“全文检索”的比喻非常精妙。我计划读研,意味着需要在一个领域内进行更深入、更持久的探索。徐宥学长的做法告诉我,研读经典、动手实践、勤于笔记和总结,这些基础的学习习惯至关重要。它们不像刷题那样能带来即时反馈,但日积月累,会构建起别人难以企及的知识广度和深度。他那种“掉进兔子洞”般的阅读热情,正是我希望在未来的研究方向上能找到的状态。以此我要深信自学的价值,耐得住寂寞,进行大量“慢即是快”的积累。广泛阅读经典,勤做笔记,这些看似分散的努力,会在未来某个时刻连接起来,形成自己独特的竞争优势。

Popular repositories Loading

  1. helloworld helloworld Public

  2. MyProject1 MyProject1 Public

    zuoye

    Jupyter Notebook

  3. xxyyll0323 xxyyll0323 Public