Py学习  »  chatgpt

【第3573期】初高级开发者:如何使用 ChatGPT 编程(关键区别解析)

前端早读课 • 9 月前 • 187 次点击  

前言

探讨了初级开发者和高级开发者在使用 ChatGPT 编程时的不同方式,并提供了如何提升使用 ChatGPT 编程水平的建议。今日前端早读课文章由 @Er Raj Aryan 分享,@飘飘编译。

译文从这开始~~

探索初级和高级开发者在使用 ChatGPT 编程时的真实差异。学习高级开发者在设计上的思维方式和实践方法。

初级开发者 vs 高级开发者在使用 ChatGPT 编程时的区别(以及如何提升自己)

初级 vs 高级

初级开发者通常会直接让 ChatGPT “写代码”,然后再对其进行修改;而高级开发者则把 ChatGPT 当作一个 “思考伙伴”,用于帮助设计、验证、处理边界情况和维护。

区别不在于工具的使用权限,而在于 意图、拆解问题的方式、验证过程,以及如何把结果融入系统。

【第3564期】从“物造”到“改善”:开发者的独特编程之道

为什么写这份指南?

我经常看到大家在问同一个问题:

“我使用 ChatGPT 的方式,和高级工程师一样吗?”

这份指南整理了在实际团队、工程博客和公开案例中常见的模式,并把它们转化为可立刻实践的工作流程,而不是空洞的 “提高提示词质量” 的建议。

一句话总结核心差异

  • 初级开发者的模式是:“生成一段能实现 X 功能的代码。”
  • 高级开发者的模式是:“帮我探索设计方案、权衡利弊、生成一个最小可测试的实现,并验证它是否符合约束条件。”

这一点转变,会从根本上改变:你如何写提示词,以及你最终代码的可靠性。

高级开发者风格的提示模式

1、先提出设计需求

示例:

“你是一名资深工程师,正在协助设计一个解决方案。背景:我们正在使用 Node.js 构建一个受速率限制的 API 客户端,用于访问一个每分钟 100 次请求的第三方服务。我们用 TypeScript、Axios、Jest,并遵循 ESLint + Prettier。

约束条件:必须能处理突发流量、支持指数退避重试、幂等键、熔断机制。

任务:请给出 2–3 种设计方案,并列出优缺点(延迟、复杂度、可测试性)。推荐一个最佳方案,并提供一个最小接口定义和测试清单(包含正常路径、边界情况、失败场景)。”

2、再请求代码

示例:

根据推荐的设计,生成一个最小可行实现方案:

  • 接口和类型定义
  • 不超过 80 行的小规模实现代码
  • 覆盖所列场景的 Jest 测试
  • 在代码中用注释解释关键设计决策,确保从概念上能通过 npm run test

3、最后进行验证和优化

示例:

请审查实现,找出可能的竞态条件、退避逻辑是否正确、超时处理是否合理。再提供一个简单的性能测试方案,以及如何埋点监控指标。

这个顺序迫使模型先思考,再写代码,最后验证 —— 这正是高级开发者的思维流程。

实例对比:同一个任务,不同的结果

任务:写一个函数来验证邮箱并返回域名

初级开发者风格的提示

写一个 JavaScript 函数来验证邮箱并返回域名。

可能的结果

  • 一个依赖正则的函数,遗漏不少边界情况(如国际化域名、注释、不常见但合法的格式);
  • 没有测试;
  • 没有性能或国际化方面的考虑。
高级开发者风格的提示

考虑到 RFC 5322 的复杂性和实际需求:

目标:用于用户注册时的邮箱验证(不严格遵循 RFC),允许国际化域名,并能提取域名。
语言 / 技术栈:TypeScript,严格模式。
约束条件:性能合理、代码可读。需要 5 个单元测试,覆盖国际化域名,并说明不支持哪些情况以及原因。
交付内容:函数 + 类型定义 + 测试 + 简短说明(正则 vs 库的取舍理由)。”

可能的结果

  • 使用成熟的库或简化规则实现一个实用的验证器;
  • 提供测试;
  • 清楚记录权衡和边界,不会出现 “灾难级正则”。
高级开发者可以用 ChatGPT 练习的技能

上下文包装(Context Packaging)

  • 提供的信息包括:语言、框架、版本、lint 规则、类型严格度、CI、目标平台、性能预算、安全约束。
  • 提问方式:“我还缺少哪些信息会影响设计?”

拆解能力(Decomposition)

  • 将流程拆分为:设计 → 接口 → 测试 → 代码 → 验证 → 文档 → 集成。
  • 提问方式:在写代码之前,先要一个验收清单。
基于证据的验证(Evidence-Driven Verification)
  • 始终要求:单元测试、基于性质的测试(适用时)、微型基准测试计划、边界情况清单。
  • 提问方式:要一个 “风险与缓解措施” 表格。
权衡思维(Trade-off Thinking)

要求模型提供 2–3 种方案,并给出优缺点(如:简洁 vs 可扩展、内存 vs 延迟、可读性 vs 性能)。

仓库上下文意识(Repository Awareness)
  • 提供文件树、package.json 脚本、类型定义和关键接口。
  • 提问方式:只针对修改的文件提出补丁方案。
运维考虑(Operational Concerns)

提示 ChatGPT 添加日志、指标和运行手册:在代码中加上调试 / 信息 / 警告 / 错误日志,并设计一个包含 5 个关键指标的仪表盘草案。

文档挂钩(Documentation Hooks)

如果要更改行为:文档注释(docstrings)、架构决策记录(ADR)、迁移指南(在行为变更时)。

可直接使用的提示词
“设计优先” 系统提示(Design-First)

请作为一名资深工程师行事。优先保证设计清晰度、约束条件、权衡点和可验证性,而不是单纯追求代码量。如果缺少关键信息,请列出最重要的 5 个问题,它们会改变设计方向。

“验收清单” 提示(Acceptance Checklist)

在开始编码之前,给我一个‘完成’清单:测试覆盖、边界情况、性能预算、安全问题、文档更新、依赖影响。

“仅补丁” 提示(Patch-Only)

给定文件树和 lint 规则,请只输出需要修改的文件的最小补丁。保持函数小而清晰、严格类型化,并添加文档注释。同时生成相应的测试文件补丁。

“代码红队” 提示(Red-Team My Code)

请对以下实现代码进行批评。列出正确性风险、并发陷阱、性能热点和变量命名歧义。提出具体修复方案,并补充 5 个会失败的测试用例。

初级开发者常犯的错误(以及解决方法)

  • 1、请求信息不完整 → 提前给出约束条件和成功标准。
  • 2、过度依赖生成的代码 → 先要求测试,把代码当作草稿,而不是绝对可靠的结果。
  • 3、缺少仓库上下文 → 分享文件树、工具链和接口,请求最小补丁而不是整块代码。
  • 4、忽略权衡 → 要求多种方案,并解释选择理由,同时记录未采用的方向。
  • 5、错误处理薄弱 → 从一开始就提示 ChatGPT 考虑失败模式、重试逻辑、幂等性和可观测性。

高级开发者的防护措施

  • 始终在提示中要求测试,涵盖正常路径和边界情况。
  • 设置复杂度预算:函数保持在 40 行以内,优先纯函数。
  • 强制风格 / 类型规范:符合 ESLint/Prettier,使用严格的 TypeScript 类型。
  • 安全检查:列出可能的注入点或不安全解析,并修复它们。
  • 性能说明:估算时间 / 空间复杂度,并给出一个微基准测试计划。
  • 文档 & ADR:添加一个 10 行的架构决策记录,简要说明决策和备选方案。

小型案例研究:API 分页工具(API Pagination Helper)

背景
  • 技术栈:TypeScript + Axios
  • 需求:开发一个工具来遍历 API 返回的 { items, nextCursor } 数据
  • 约束条件:
    • 当收到 429 响应时执行退避(backoff)
    • 到达最大条数时停止
    • 以惰性方式(lazy)逐条返回数据
高级开发者式的请求(简化版)
  • 请提出两种设计方案(迭代器 vs 回调),并说明优缺点。
  • 选择其中一个,定义接口和类型。
  • 生成最小实现(<80 行),并写 Jest 测试(错误、429、最后一页情况)。
  • 列出需要的日志和监控指标,并说明内存使用注意事项。
为什么这样有效?
  • 你强制提出多种设计方案 → 避免了盲目写代码
  • 测试与退避逻辑是前置条件 → 而不是事后补救
  • 实现规模足够小 → 易于审查和快速上线
如何像高级开发者一样衡量进步?
  • PR 质量指标:更少的评审轮次、更小的代码差异、更清晰的解释
  • 缺陷率:更少的合并后修复,因为测试优先
  • 信心建立速度:更快,因为有测试和设计推理作证
  • 可复用性:产出的工具和模式可以在后续任务中继续使用
  • 团队采纳度:同事会借用你的提示词和清单
一份可随手放在编辑器旁的清单
  • 我提供了上下文背景信息(技术栈、版本、仓库结构、代码风格、约束条件)
  • 我要求了设计选项和推荐方案
  • 我先要接口 / 类型,再写完整代码
  • 我要求测试(正常路径 + 边界情况)和验证计划
  • 我要求风险与缓解措施,以及性能说明
  • 我集成时保持最小补丁,确保通过 lint/CI
  • 我写了 ADR(架构决策记录)和文档注释
  • 我执行了 “红队审查” 步骤

最后思考

从初级到高级的跨越,并不是某个神奇的提示词,而是一种思维方式。

【早说】设计与工程思维

把 ChatGPT 当作系统思考的助手,而不是代码贩卖机。

当你始终前置约束条件、要求证据、并严格把结果融入工作流时,你产出的成果自然会带有高级工程师的特质 —— 因为这就是高级的做法。

加分提示:一条可直接用的全能提示词

你是一名资深工程师。给定以下仓库上下文,请为所需功能提出 2 种设计方案并分析权衡,推荐一个方案,定义接口和测试,然后生成最小的 TypeScript 补丁和 Jest 测试。请包含风险与缓解措施表格、复杂度估算,以及一份 10 行的 ADR。如果有任何假设可能影响设计,请提出 5 个澄清问题。保持函数简短并使用严格类型,遵守 ESLint/Prettier,确保代码易于审查。

今天就能用,明天可以继续改进。

这就是高级开发者使用 AI 的方式。

关于本文
译者:@飘飘
作者:@Er Raj Aryan
原文:https://er-raj-aryan.medium.com/junior-vs-senior-developers-how-they-use-chatgpt-for-coding-key-differences-explained-5e2b669d4a01

这期前端早读课
对你有帮助,帮” 
 “一下,
期待下一期,帮”
 在看” 一下。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/185779