我是一名高级开发人员,但我仍然会用谷歌搜索所有东西(这完全正常)。
昨天,在一次团队站会上,一位初级开发人员问我:“你怎么记住这么多东西的?”我笑了。“我记不住。我每天都上网查。”
引言:忏悔
让我告诉你一个在技术面试或LinkedIn帖子中无人提及的秘密:
我是一名拥有8年经验的高级软件开发人员,但我每天都会用谷歌搜索一些基本信息。有时甚至每小时都会搜索。
上周二,我花了 20 分钟在谷歌上搜索“如何在 JavaScript 中反转数组”,因为我记不清是用 ` .reverse()or`还是.reversed()`or` 了.reverseArray()。
它是.reverse()。
我用过上千次了。
我还是忘了。
你知道吗?像谷歌、亚马逊和微软这样的公司里,有58%的科技员工觉得自己像个冒牌货。坐在你旁边那位看起来无所不知的高级开发人员?他们也会上网搜索基本的语法错误。
这篇文章是我的忏悔,或许也是你的忏悔。我们是时候停止伪装了。
第一部分:我这周在谷歌上搜索过的东西(我没开玩笑)
让我打开浏览器历史记录,坦白一下。以下是我过去五天里真实搜索的内容:
周一
- “css flex align items center 不起作用”(我忘记设置了
display: flex with a height of 100dvh) - “TypeScript 接口 vs 类型”(第一百次了)
- 如何退出 Vim?(我是一名资深开发人员,但我仍然会陷入 Vim 中)
周二
- “react useEffect 清理函数”(我知道这个,我只是……需要确认一下)
- “git revert vs reset vs restore”(哪个会再次删除提交?)
- 使用 JavaScript 按日期对对象数组进行排序(默认情况下是升序还是降序?)
周三
- 如何使div元素居中(经典方法)
- “nodejs 读取文件”(是 `nodejs read file`
fs.readFile还是`nodejs read file`fs.readFileSync?我总是记不住)
周四
- “docker compose up” vs docker-compose up(带短横线还是不带短横线?)
- “sql 连接类型可视化图”(我每次都需要那个维恩图)
- “正则表达式电子邮件验证”(永远不要记住这个)
星期五
- “如何撤销尚未推送的 Git 提交”(这真的是我搜索次数最多的问题)
- “JavaScript数组方法速查表”(map、filter、reduce……它们各自都做什么来着?)
- "css 网格模板列" (repeat(auto-fit, minmax... something something)
每一周。
而我,应该是团队里的“专家”。
第二部分:我们在求职面试中说的谎言
以下是我在上次求职面试中说的话:
面试官: “你对 React 的熟练程度如何?”
我: “非常熟练。我使用 React 已经 5 年了。”
以下是我没说的话:
我(内心独白): “我每天都用 React,但每次需要用到 useContext 的时候,还是得谷歌一下‘useContext 是怎么工作的’,因为我从来不用 Context。我总是把以前项目里的 useEffect 模式复制粘贴过来。至于 useReducer,我都不想提了。”
面试官: “你对 TypeScript 有什么经验?”
我: “非常广泛。我已经将多个项目迁移到了 TypeScript。”
我知道如何给函数参数添加类型。遇到复杂问题,我都会上网搜索或者自己输入代码解决,any然后继续做其他事。TypeScript 的错误信息对我来说就像古希腊语一样晦涩难懂。
面试官: “你对算法的熟悉程度如何?”
我: “没问题。我理解时间复杂度,也能实现常见的算法。”
翻译: “我上周谷歌了一下‘二叉搜索树实现’,然后复制粘贴了代码。就算拼了命我也写不出来。大O表示法?我隐约记得在CS50上学过。”
我们都在玩同一个游戏:假装自己比实际懂得更多。
第三部分: “高级开发人员”的真正含义
以下是人们对“高级开发人员”一词的理解:
❌ 熟记所有编程语言
❌ 从不犯错
❌ 一次就能写出完美代码
❌ 从不需要 Stack Overflow
❌ 知道所有答案
“高级开发人员”的实际含义如下:
✅ 知道该搜索什么
✅ 能读懂文档(即使文档写得很糟糕)
✅ 各种错误都犯过(所以知道什么不该做)
✅ 能高效地调试问题
✅ 知道什么时候该寻求帮助
初级员工和高级员工之间的区别不在于知识水平,而在于模式识别和问题解决速度。
真实场景:初级开发人员与高级开发人员
问题: “按钮无法提交表单。”
初级开发人员:
- 恐慌
- 谷歌“按钮无法正常工作”
- 阅读了 10 篇不相关的 Stack Overflow 帖子
- 尝试随机解决方案
- 弄坏了其他东西
- 3小时后:仍然坏了
高级开发人员:
- 打开开发者控制台(第一反应)
- 出现错误:“form.submit 不是一个函数”
- 谷歌的确切错误信息
- 立即找到 Stack Overflow 的答案
- 发现有一个变量名
submit与原生方法冲突 - 5分钟内即可修复
这位资深开发人员知道答案吗?不知道。
他们知道怎么找到它吗?是的。
这就是区别所在。
第四部分:我反复搜索(却总是记不住)的内容
即使是经验丰富的开发者也无法记住所有东西,因为你不可能每天都用到它们。以下是我搜索过超过 50 次的内容:
1. Git 命令
# Things I Google constantly:
git revert
git reset
git cherry-pick
git rebase
git stash pop vs git stash apply
我使用 Git 已经 9 年了。但我仍然记不清 ` reset --softgit`、reset --mixed`git` 和 `git`之间的区别reset --hard。
每次需要撤销操作时,我都得求助于谷歌:“git undo last commit but keep changes”
2. CSS Flexbox 与 Grid 的比较
/* I have this Googled monthly: */
.container {
display: flex;
justify-content: ??? /* center? space-between? I forget */
align-items: ??? /* center? stretch? help */
}
我已经制作了100多个响应式布局,但每次仍然需要那份可视化指南。
3. 数组方法
// Which one flattens arrays?
.flat()
.flatMap()
.flatten() // this doesn't exist but I Google it anyway
// Which one adds items?
.push() // mutates
.concat() // doesn't mutate
// I mix these up constantly
4. Async/Await 与 Promise
// Every few months I forget:
async function getData() {
const response = await fetch(url)
const data = await response.json()
return data
}
// vs
function getData() {
return fetch(url)
.then(response => response.json())
.then(data => data)
}
我知道两者都能用,但我忘了哪个更适合什么用途。不过谷歌应该知道。
5. 正则表达式
// I will NEVER memorize regex
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ // Googled this 10000 times
// Also this:
const phoneRegex = ??? // No idea, straight to Google
任何声称自己不使用谷歌搜索正则表达式的人都是在撒谎。
第五部分:谷歌耻辱榜
让我来分享一下我作为一名“资深”开发人员在谷歌上搜索过的最尴尬的内容:
我应该知道的基础知识
-
“如何在 JavaScript 中声明变量?”
(我当时慌了。是 `var\n`、let`\n` 还是 `const\n`?都 2025 年了,我还在犹豫不决。) -
“undefined 和 null 有什么区别?”
(我知道,我教过,但我还是会上网查一下以确认。) -
如何编写 for 循环
(经典语法???forEach我map在编程面试中大脑一片空白)
“我应该被解雇”的搜索
-
“如何在Mac上打开终端”
(我在开会时展示屏幕,突然卡住了,想不起快捷键了)。 -
“如何使用 JavaScript 实现两个数字相加”
(为自己辩解一下,我当时太累了。而且,我也忘了这种方法是否也+适用于字符串。) -
“什么是 HTML?”
(我当时在写文档,对 HTML 的定义产生了怀疑。冒名顶替综合症发作得很厉害。)
诚实的人
-
“高级开发人员冒名顶替综合症”
(这让我陷入了“我真的胜任这份工作吗?”的困惑之中)。 -
“作为程序员,什么都要用谷歌搜索正常吗?”
(剧透:是的。使用谷歌搜索是一种技能,擅长使用谷歌搜索正是成为一名优秀程序员的关键。) -
如何退出 Vim?
(:q!或者:wq?还是别的什么:exit?求助。)
第六部分:为什么低年级学生认为我们是奇才
初级开发人员看着我工作,都觉得我是个编程高手。
他们看到的:
- 我打字很快
- 我很快就能修复漏洞。
- 我自信地编写代码
- 我很少遇到卡顿。
实际情况是:
- 我打字很快,因为我已经复制粘贴过这个模式一千遍了。
- 我能快速修复bug,因为我之前就遇到过完全相同的bug。
- 我写代码很有信心,因为我五分钟前在谷歌上搜到了解决方案。
- 我很少遇到难题,因为我知道如何高效地使用谷歌搜索。
速度的错觉
在预先录制好的教程视频中,开发者工作速度非常快,因为他们已经构建好了应用程序,并且知道如何解决问题。但实际上,事情往往需要更长时间。
初级学员在教程中看到的是:
“我10分钟就能搭建出这个身份验证系统!”
现实:
- 花了 2 个小时在谷歌上搜索 JWT 实现
- 花了 1 个小时调试令牌无法发送的原因
- 花了30分钟搞清楚CORS
- 1小时后才意识到你忘记对密码进行哈希处理
- 总共4小时
第七部分:关于“知道”与“发现”的真相
对于初级开发人员来说,观察经验丰富的开发人员犯错、走错方向或在 Google 上搜索信息是非常有帮助的。
这是软件开发中一个不为人知的秘密:
你不需要知道所有事情,但你需要知道如何找到所有事情。
我实际记住的内容(简短列表)
- 基本语法(变量、函数、循环)
- 核心概念(范围、起吊、闭合)
- 如何使用调试器
- 如何解读错误信息
- 如何高效地使用谷歌
我每次都会在谷歌上搜索的内容(长列表)
- 其他一切
任何开发者都不可能掌握所有知识。技术栈过于庞大,框架更新速度太快,编程语言也在不断添加新功能。
如果你在死记硬背API,那就错了。
第八部分:谷歌搜索的艺术(一项高级技能)
让我来教你真正的高级技能:如何像专业人士一样使用谷歌。
一级:初级谷歌搜索
搜索: “按钮无法工作”
结果: 1000万条无关结果
浪费时间: 2 小时
第二级:中级谷歌搜索
搜索: “react按钮的onclick事件不起作用”
结果:有所改善,但仍属一般水平。
浪费时间: 30分钟
三级:高级谷歌搜索
搜索: “react button onclick event.target undefined typescript”
结果: Stack Overflow 上的确切答案
节省时间: 2 分钟
谷歌高级开发人员公式
- 请注明技术名称: “react”,而不仅仅是“javascript”。
- 请提供错误信息:控制台输出的原文。
- 如果相关,请包含上下文: “typescript”。
- 添加年份: “2025”以筛选旧答案
例子:
❌ "how to fetch data"
✅ "react 19 fetch data async await typescript 2025"
高级技术
使用网站运营商:
site:stackoverflow.com react hooks
site:github.com typescript error
精确匹配请使用引号:
"TypeError: Cannot read property 'map' of undefined"
排除结果:
react hooks -class components
善于使用谷歌搜索可以节省大量开发时间。
第九部分:关于冒名顶替综合症的讨论
让我们直面这个显而易见却又难以启齿的问题:冒名顶替综合症。
如果你曾经觉得自己像个冒牌货,怀疑“我真的是个开发者吗?我懂什么?我只知道 StackOverflow、YouTube 和谷歌”,那么你并不孤单。
我的冒名顶替综合症时刻
周一早晨的站立会议:
经理: “埃尔维斯,API集成做得太棒了!”
我(表面上): “谢谢,这很简单。”
我(内心独白): “我从 Stack Overflow 复制粘贴了 80% 的代码,对 JWT 的工作原理也不是很了解,但它通过了测试,所以……🤷♂️”
代码审查:
初级开发人员: “哇,你怎么知道这里要用 WeakMap 呢?”
我(对外)说: “性能优化。”
我(内心独白): “我在谷歌上搜索了‘javascript内存泄漏修复’,然后点击了第一个链接。”
技术面试(作为面试官):
候选人: “我不记得 reduce 的确切语法了……”
我(表面上): “没关系,理解概念很重要。”
我(内心独白): “兄弟,我每次都用谷歌搜索减少次数。你没问题。”
现实检验
谷歌、微软、亚马逊、Facebook 和苹果公司中,58% 的科技员工都面临着冒名顶替综合症的困扰。
那位说话自信满满的首席技术官?他们可能会从噩梦中惊醒,冷汗涔涔,怀疑自己是否犯了一个可怕的错误。
那位备受推崇的建筑师?他们都在谷歌上搜索基本的语法错误。
你并不孤单。你很正常。
第十部分:我希望作为一名初级开发人员时就知道的事情
如果我能回到过去和年轻的自己对话,我会这样说:
1. 使用谷歌搜索是一项功能,而不是一个漏洞。
年少时的我: “我不应该需要上网搜索这些东西。真正的开发者都知道这些。”
以前的我: “真正的开发者都知道如何使用谷歌。那些假装不知道的人是在撒谎。”
2. 你会忘记语法——但这没关系
即使是经验丰富的开发人员也无法记住很多东西,因为你不可能每天都用到所有东西,所以你会忘记一些东西。
我至少忘记了 50 次 React Context 的语法。每次都是我查阅资料或者从项目中的其他文件复制粘贴。
3. 复制粘贴不算作弊
年轻的我: “我应该从头开始写所有东西,这样才能真正学到东西。”
年长的我: “我复制粘贴过整个身份验证系统。只要明白你粘贴的是什么就行了。”
4. 没有人知道所有事情
在科技领域,要掌握所有信息是不可能的。科技发展日新月异,没有人能够真正理解所有的技术和概念。
你的工作不是要什么都知道,你的工作是解决问题。
5. 犯错是工作的一部分
即使是经验丰富的开发人员也会花费数小时处理简单的错误,也会走错方向,也会犯错。
上周我花了 3 个小时调试代码,才发现变量名里有个拼写错误。
userId对比usreId
三个小时。
我是一名资深开发人员。
第 11 部分:真正让你成为老年人的事
既然我们已经确定“无所不知”并不是资历的标志,那么什么才是呢?
当你符合以下条件时,你就是一名高级开发人员:
-
你知道你不知道的事情吗?
低年级的学生会假装自信,而高年级的学生会承认无知并上网搜索。 -
你可以阅读错误信息,
但低年级的学生会惊慌失措。高年级的学生则会阅读堆栈跟踪,然后上网搜索具体的错误信息。 -
你以前调试过同样的错误
——模式识别。你看过这部电影。 -
你知道什么时候该寻求帮助
。低年级的学生会独自苦苦挣扎好几天,而高年级的学生在谷歌搜索了30分钟后就会开口求助。 -
因为你已经无数次在谷歌上搜索过,所以你现在真的理解了,能够用简单的语言解释复杂的事物。 -
你编写的代码其他人可以维护,
因为你曾经不得不维护糟糕的代码(你两年前写的代码)。 -
坦然承认自己不知道
“我不知道,让我谷歌一下”并不丢人——这才是诚实。
第十二部分:一日生活(真情流露)
让我带你回顾一下昨天。典型的“高级开发人员”的一天:
上午 9:00 - 早间站立会议
我说过: “我今天就能完成支付集成。”
我的意思是: “我要第五次在谷歌上搜索如何集成 Stripe,因为我每次都忘记。”
上午 10:00 - 开始编码
Google 搜索 #1: “stripe 付款意图响应”
Google 搜索 #2: “stripe webhook 签名验证”
Google 搜索 #3: “stripe 测试卡号”
(我每个项目都会用到这个)
上午 11:30 - 出现故障
错误: Cannot read property 'amount' of undefined
我的过程:
- 盯着代码看(2分钟)
- 到处添加
console.log(5分钟) - 搜索错误信息(30秒)
- 在 Stack Overflow 上找到答案
- 我意识到我忘记在访问对象之前检查它是否存在。
- 捂脸
- 添加
if (payment?.amount)检查 - 固定的
总时长: 8分钟
初级开发人员所需时间:大约 2 小时
为什么?不是因为我更聪明,而是因为我犯过一百次同样的错误。
下午 2:00 - 代码审查
Junior 的代码:
const data = response.data.users.map(user => user.name)
我的评论: “如果 response.data.users 未定义怎么办?”
小朱尼尔: “哦!我没想到这一点。”
我没说的是: “我上周忘了检查这个,结果导致生产环境崩溃了。我吃了个大亏。现在你们就不用再经历同样的痛苦了。”
下午 4:00 - 建筑会议
经理: “我们应该如何构建微服务?”
我说过: “我们应该采用带有消息队列的事件驱动架构。”
5 分钟前发生的事情:我在谷歌上搜索了“微服务通信模式”,并阅读了第一篇文章。
下午 5:00 - 帮助一名低年级学生
小朱尼尔: “你是怎么记住所有这些指令的?”
我: “我没有。我有小抄。”
我(显示书签文件夹):
- Git 命令速查表
- CSS Flexbox 指南
- JavaScript 数组方法
- React Hooks模式
- 常用正则表达式模式
小杰: “等等,你用小抄?”
我: “每一天。”
第十三部分:我实际使用的资源
让我来分享一下我的秘密武器(也就是我每天都会访问的书签):
我访问量最高的十大网站
- Stack Overflow - 显而易见
- MDN Web 文档- JavaScript/CSS 参考
- React 文档- 当 Stack Overflow 还不够用时
- CSS技巧- 解答所有CSS问题
- regex101.com - 因为正则表达式是不可能的
- caniuse.com - “我可以使用这个 CSS 属性吗?”
- npm 趋势- 比较软件包受欢迎程度
- GitHub - 阅读他人的代码
- DevDocs.io - 所有文档集中在一个地方
- ChatGPT/Claude——新时代的谷歌(别评判我)
我的 Chrome 书签栏
📁 Daily Use
├─ "git commands"
├─ "flex vs grid"
├─ "array methods"
├─ "async await examples"
└─ "typescript utility types"
📁 Regex (never memorizing)
├─ "email validation"
├─ "phone number"
└─ "url pattern"
📁 Interview Prep (for when I interview)
├─ "big O cheat sheet"
├─ "system design"
└─ "behavioral questions"
第十四部分:不谷歌搜索反而不好
这里有一个有争议的观点:有些时候你不应该使用谷歌。
需要自己想办法解决。
-
学习基础知识。
如果你每次学习 JavaScript 时都去谷歌搜索“如何编写函数”,那你根本学不到东西。要反复练习,直到熟练掌握为止。 -
在谷歌搜索之前,先尝试自己调试代码
,理解错误原因。阅读错误信息,检查行号,仔细思考。 -
理解核心概念。
不要只是在谷歌上搜索“什么是闭合”。要勇于尝试。要打破常规。要理解为什么。
平衡
- 错误做法:逐行搜索代码
- 好: 15分钟后遇到问题时,可以谷歌一下。
- 最佳方案:先通过谷歌搜索学习模式,然后自己实现。
第十五部分:我对初级开发人员的建议
鉴于开发人员每天都会忘记语法并犯错,我的建议如下:
1. 不要再因为使用谷歌搜索而感到内疚
我们所有开发者都依赖 Stack Overflow、YouTube 和 Google。这不是弱点——这是工作的一部分。
2. 构建个人知识库
记下你反复搜索的内容:
# Git Commands I Always Forget
## Undo last commit (keep changes)
git reset --soft HEAD~1
## Undo last commit (discard changes)
git reset --hard HEAD~1
## View commit history
git log --oneline --graph
3. 学习阅读文档
Stack Overflow 很棒,但官方文档更便于理解。
4. 接受不适感
如果你身处一个你不是最聪明的人的环境中,那就意味着你正在学习和提升自己。
5. 问一些“愚蠢”的问题
那个“愚蠢”的问题?其实还有三个人也想知道同样的问题,但他们太害怕而不敢问。
6. 与老年人结对互助计划
观看经验丰富的开发者犯错、走错方向或在谷歌上搜索信息,会非常有帮助。
你会发现我们都是在摸着石头过河。
结论:承认自己不知道的解放
我希望你们能记住以下几点:
你用谷歌搜索东西并不代表你是个冒牌货。
你不会因为忘记语法就显得技能不足。
你并不因为不懂所有事情就不是一个糟糕的开发者。
你是人。我们不断学习各种信息,花费无数时间调试,怎么可能记住所有东西呢?
我从事专业开发工作已有10年。我领导一个团队。我的年收入达到六位数。我开发的产品被数百万人使用。
我每个月至少会搜索一次“如何将div元素居中”。
初级员工和高级员工的区别不在于知识储备,而在于能否快速找到知识。
所以,下次当你慌乱地在谷歌上搜索一些“基本”信息时,请记住:
在某个地方,谷歌的一位高级开发人员也在搜索完全相同的内容。
欢迎来到软件开发的世界。别再感到内疚了,继续用谷歌搜索吧。
轮到你了:你会用谷歌搜索什么?
我已经给你看了我的,现在轮到你了。作为一名开发者,你搜索过的最尴尬的事情是什么?
请在下方评论或在推特上@elvisautet告诉我你最常搜索的关键词。让我们把这变成一种常态。
谷歌搜索量最高的名人堂提名:
- 如何退出 vim?
- "git push force"
- "javascript sort descending"
- “css垂直对齐”
- “正则表达式电子邮件”
你的呢?👇
我每天都会用到的资源
作者简介
我是Elvis Autet(@elvisautet),一位拥有8年经验的高级全栈开发人员,也是个不折不扣的谷歌迷。我搜索“如何反转数组”的次数多到数不清,而且我不再为此感到羞愧了。
关注我的 X 账号: @elvisautet,获取更多真实的开发者内容以及我谷歌搜索过的糟糕经历。
如果这篇文章让你在搜索信息时感到不再孤单,请把它分享给其他需要了解这些信息的开发者朋友。我们都在经历着同样的困境。
PS:我写这篇文章之前谷歌了一下“如何写好博客结尾”。😂
文章来源:https://dev.to/elvissautet/im-a-senior-developer-and-i-still-google-everything-and-thats-perfectly-normal-21a2