🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

昨天,在一次團隊站立會議上,一位初級開發人員問我:「你怎麼記得住這些東西?」我笑了。 “我記不住。我每天都會用谷歌搜尋。”

引言:懺悔

讓我告訴你一個在技術面試或 LinkedIn 貼文中沒人談論的秘密:

我是一名擁有 8 年經驗的高級軟體開發人員,我會每天、甚至每小時都會在 Google 上搜尋一些基礎內容。

上週二,我花了 20 分鐘在 Google 上搜尋“如何在 JavaScript 中反轉陣列”,因為我記不清它是.reverse()還是.reversed()還是.reverseArray()

它是.reverse()

我已經使用過它一千次了。

我還是忘了。

你知道嗎? Google、亞馬遜和微軟等公司 58% 的科技工作者都覺得自己像個騙子。你旁邊那個似乎無所不知的高階開發人員?他們甚至會用谷歌搜尋基本的語法錯誤。

這篇文章是我的懺悔。或許也是你的懺悔。我們是時候停止偽裝了。


第一部分:本週我在 Google 上搜尋的內容(我沒開玩笑)

讓我打開我的瀏覽器歷史記錄,把自己暴露出來。以下是我過去5天的真實搜尋記錄:

週一

  • 「css flex align items centre 不起作用」(我忘記設定display: flex with a height of 100dvh

  • 「TypeScript 介面 vs 類型」(第 100 次)

  • 「如何退出 vim」(我是高級開發人員,但我仍然被困在 vim 中)

週二

  • 「react useEffect 清理功能」(我知道這個。我只是…需要檢查一下)

  • 「git revert vs reset vs restore」(哪一個再次刪除提交?)

  • 「javascript 會依日期對物件陣列進行排序」(預設為升序還是降序?)

週三

  • 「如何將 div 置中」(經典)

  • 「nodejs 讀取檔案」(是fs.readFile還是fs.readFileSync ?我總是忘記)

週四

  • 「docker compose up vs docker-compose up」(有破折號還是無破折號?)

  • 「SQL 連線類型視覺化」(我每次都需要那個維恩圖)

  • 「正規表示式電子郵件驗證」(永遠不要記住這個)

星期五

  • 「如何撤銷尚未推送的 git commit」(這實際上是我搜尋次數最多的查詢)

  • 「javascript 陣列方法備忘單」(map、filter、reduce... 各自扮演什麼角色?)

  • 「css 網格範本列」(重複(自動調整、最小最大…某某某)

每。週。

我應該成為我們團隊的「專家」。


第二部分:我們在求職面試中說的謊言

以下是我在上次面試中所說的話:

面試官: “你對 React 的熟練程度如何?”

我: “非常熟練。我已經使用 React 5 年了。”

以下是我沒說的話:

我(內心獨白): “我每天都用 React,但每次需要用到它的時候,我還是會去 Google 一下‘useContext 是怎麼工作的’,因為我從來不用 Context。我把之前的專案中用到的 useEffect 模式都複製粘貼過來了。更別提 useReducer 了。”

面試官: “你使用 TypeScript 的經驗如何?”

我: “非常廣泛。我已經將幾個專案遷移到 TypeScript 了。”

翻譯: “我知道如何為函數參數加入類型。對於任何複雜的東西,我會谷歌一下或隨便輸入any ,然後繼續。TypeScript 的錯誤訊息可能就像古希臘語一樣。”

面試官: “你對演算法的掌握程度如何?”

我: “沒問題。我理解時間複雜度,可以實現常見的演算法。”

翻譯: “我上週在谷歌上搜尋了‘二叉搜尋樹實現’,然後復制粘貼了它。我實在沒法從頭開始寫。大 O 符號?我依稀記得 CS50 裡有。”

我們都在玩同一個遊戲,假裝我們知道的比我們實際知道的更多。


第三部分:「高級開發人員」的真正意義

以下是人們對「高級開發人員」的理解:

❌ 記住每種程式語言

❌ 從不犯錯

❌ 第一次嘗試就能寫出完美的程式碼

❌ 永遠不需要 Stack Overflow

❌ 知道所有答案

「高級開發人員」的實際意義如下:

✅ 知道該用 Google 什麼

✅ 能夠閱讀文件(即使它很糟糕)

✅ 已經犯過所有錯誤(所以知道什麼不該做)

✅ 能夠有效率地除錯

✅ 知道何時尋求協助

初級和高級之間的區別不在於知識,而在於模式辨識和解決問題的速度

真實場景:初級開發人員 vs 資深開發人員

問題: “按鈕未提交表單。”

初級開發人員:

  1. 恐慌

  2. 谷歌搜尋“按鈕不起作用”

  3. 閱讀 10 篇不相關的 Stack Overflow 帖子

  4. 嘗試隨機解決方案

  5. 破壞其他東西

  6. 3小時後:仍然損壞

資深開發人員:

  1. 開啟開發控制台(第一直覺)

  2. 看到錯誤:“form.submit 不是一個函數”

  3. 谷歌確切的錯誤訊息

  4. 立即找到 Stack Overflow 答案

  5. 意識到有一個名為submit的變數與本機方法衝突

  6. 5分鐘內修復

資深開發人員知道答案嗎?不知道。

他們知道怎麼找到它嗎?是的。

這就是差別。


第四部分:我重複用谷歌搜尋但永遠記不住的東西

即使是經驗豐富的開發人員也記不住很多東西,因為你不會每天都用到所有東西。以下是我在 Google 上搜尋過 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 --softreset --mixedreset --hard之間的區別。

每次我需要撤消某些操作時,我都會回到 Google:“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 與 Promises

// 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)
}

我知道兩種方法都有效。我忘了哪個比較適合什麼用途了。不過Google知道。

5.正規表示式

// I will NEVER memorize regex
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ // Googled this 10000 times

// Also this:
const phoneRegex = ??? // No idea, straight to Google

任何說他們不使用 Google 正規表示式的人都是在撒謊。


第五部分:Google恥辱堂

讓我分享一下作為一名「高級」開發人員,我在 Google 上搜尋過的最尷尬的事情:

我應該知道的基礎知識

  1. “如何在 JavaScript 中宣告變數”

(我慌了。到底是varlet還是const ?2025 年了,我還是會猶豫)

  1. “undefined 和 null 之間有什麼區別”

(我知道這一點。我教這個。我仍然會用谷歌來確認)

  1. “如何編寫 for 迴圈”

(經典文法? forEachmap ?我在程式設計面試時一片空白)

「我應該被解僱」的搜尋

  1. “如何在 Mac 上開啟終端機”

(我在會議上展示我的螢幕。我愣住了。想不起快捷方式了)

  1. “JavaScript 如何將兩個數字相加”

(我得為自己辯解一下,我已經筋疲力盡了。另外,我忘了+是否也適用於字串)

  1. “什麼是 html”

(我當時正在寫文件,並對這個定義進行了二次猜測。冒名頂替綜合症嚴重打擊了我)

誠實的人

  1. “高級開發人員冒名頂替症候群”

(這讓我陷入了「我是否有資格擔任我的工作?」的困境)

  1. “作為一名程式設計師,用 Google 來搜尋所有東西是正常的嗎?”

(劇透:是的。谷歌搜尋是一項技能,擅長谷歌搜尋可以讓你成為一名優秀的程式設計師)

  1. “如何退出 vim”

:q!:wq ?或是:exit ?幫忙。)


第六部分:為什麼小輩認為我們是巫師

初級開發人員看著我的工作並認為我是某種編碼嚮導。

他們看到的是:

  • 我打字很快

  • 我快速修復錯誤

  • 我自信地編寫程式碼

  • 我很少陷入困境

實際發生的情況:

  • 我打字很快,因為我已經複製和貼上了這個模式 1000 次

  • 我修復錯誤很快,因為我之前也犯過同樣的錯誤

  • 我可以自信地編寫程式碼,因為我 5 分鐘前就在 Google 上搜尋過解決方案

  • 我很少遇到困難,因為我知道如何有效地使用谷歌

速度的幻覺

在腳本式教學影片中,開發人員工作速度非常快,因為他們已經建立了應用程式,並且知道如何解決問題。但實際上,這需要更長的時間。

初級學員在輔導課上看到的內容:

“我將在10分鐘內建立這個身份驗證系統!”

現實:

  • 2 小時谷歌搜尋 JWT 實現

  • 1 小時除錯為什麼令牌沒有被發送

  • 30 分鐘搞清楚 CORS

  • 1 小時後才意識到自己忘了哈希密碼

  • 總共4小時


第七部分:「知道」與「發現」的真相

觀察經驗豐富的開發人員犯的錯誤、走錯的方向或在谷歌上搜尋,對於初級開發人員來說非常有幫助。

這是軟體開發的骯髒秘密:

你不需要知道一切,你需要知道如何找到一切。

我實際記住的內容(簡短清單)

  • 基本語法(變數、函數、循環)

  • 核心概念(範圍、提升、閉包)

  • 如何使用偵錯工具

  • 如何閱讀錯誤訊息

  • 如何有效地使用谷歌

我每次都會用 Google 尋找的內容(長列表)

  • 其他一切

任何開發人員都不可能了解所有事情。技術棧太龐大了。框架更新太快了。語言不斷增加新功能。

如果您記住了 API,那麼您就做錯了。


第 8 部分:Google搜尋的藝術(高級技能)

讓我教你真正的高級技能:如何像專業人士一樣使用 Google

第一級:初級谷歌搜尋

搜尋: “按鈕不起作用”

結果: 1000 萬個不相關的結果

浪費時間: 2小時

第 2 級:中級Google搜尋

搜尋: “react 按鈕 onclick 不起作用”

結果:更好,但仍然通用

浪費時間: 30分鐘

第 3 級:高級Google搜尋

搜尋: “react button onclick event.target undefined typescript”

結果:確切的 Stack Overflow 答案

節省時間: 2分鐘

高級開發人員 Google 公式

  1. 包含的技術: “React”而不僅僅是“JavaScript”

  2. 包含錯誤訊息:來自控制台的精確文本

  3. 如果相關,請包含上下文: “typescript”

  4. 新增年份: “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 和谷歌搜尋”,那麼您並不孤單。

我的冒牌者症候群時刻

週一早上站立會議:

經理: “Elvis,API 整合做得太棒了!”

我(表面上): “謝謝,很簡單。”

我(內心): “我從 Stack Overflow 複製並貼上了 80% 的內容,雖然不完全理解 JWT 的工作原理,但它通過了測試,所以……🤷‍♂️”

程式碼審查:

初級開發人員: “哇,你怎麼知道在這裡使用 WealMap?”

我(對外): “性能優化。”

我(內心): “我在 Google 上搜尋‘javascript 記憶體洩漏修復’,然後點擊了第一個連結。”

技術面試(作為面試官):

候選人: “我不記得 reduce 的具體語法...”

我(對外): “沒關係,理解這個概念很重要。”

我(內心): “兄弟,我每次都用 Google 搜尋 reduce。你真棒。”

現實檢驗

Google、微軟、亞馬遜、Facebook 和蘋果 58% 的科技員工面臨冒名頂替症候群。

那個說話自信滿滿的 CTO?他們醒來後渾身冷汗,懷疑自己是不是犯了一個可怕的錯誤。

那個人人都敬佩的建築師?他們正在谷歌搜尋基本的語法錯誤。

你並不孤單,你很正常。


第 10 部分:作為一名初級開發人員,我希望了解的事情

如果我能回到過去,和年輕時的自己談談,我會這樣說:

1. 谷歌搜尋是一個功能,而不是一個 Bug

初級的我: “我不需要谷歌這個。真正的開發人員知道這些東西。”

資深的我: “真正的開發人員知道如何使用 Google。那些假裝不知道的人是在撒謊。”

2. 你會忘記文法-這沒關係

即使是經驗豐富的開發人員也無法記住很多東西,因為你不會每天都使用所有東西,所以你會忘記一些事情。

我至少忘了 50 次 React Context 語法。每次我都得自己找或從專案中的其他文件複製貼上。

3. 複製貼上不算作弊

初級的我: “我應該從頭開始寫所有內容才能真正學到東西。”

資深的我: “我已經把整個身份驗證系統複製貼上過來了。你只要明白你貼上的是什麼就行了。”

4. 沒有人無所不知

在科技領域,不可能事事精通。科技發展如此之快,沒有人能夠真正掌握所有的技術和概念。

你的工作不是了解一切。你的工作是解決問題

5. 犯錯是工作的一部分

即使是經驗豐富的開發人員也會花費數小時來解決簡單的錯誤、走錯方向並犯錯。

上週我花了 3 個小時除錯程式碼才意識到變數名稱有拼字錯誤。

userIdusreId

三小時。

我是一名高級開發人員。


第 11 部分:真正讓你變老的事情

既然我們已經確定「無所不知」並不是資歷的標誌,那麼什麼才是呢?

當你滿足以下條件時,你就是資深開發人員:

  1. 你知道你不知道什麼

年輕人假裝自信,老年人則承認無知,然後去谷歌搜尋。

  1. 您可以閱讀錯誤訊息

初級員工會感到恐慌。高級員工會閱讀堆疊追蹤訊息,並透過 Google 查找確切的錯誤訊息。

  1. 您之前已經除錯過同樣的錯誤

模式辨識。你看過這部電影了。

  1. 你知道何時尋求幫助

低年級學生獨自奮鬥了好幾天,而高年級學生在谷歌上搜尋了 30 分鐘後才詢問。

  1. 你可以簡單地解釋複雜的事情

因為你已經在 Google 上搜尋過很多次了,所以你現在實際上已經了解它了。

  1. 您編寫的程式碼其他人可以維護

因為您必須維護糟糕的程式碼(兩年前的程式碼)。

  1. 你擁抱未知

「我不知道,讓我谷歌一下」並不丟人,而是誠實。


第 12 部分:生活中的一天(真實對話)

讓我帶你回顧昨天。典型的「高級開發人員」的一天:

上午 9:00 - 晨間站立會議

我說: “我今天將完成支付整合。”

我的意思是: “我將第五次在 Google 上搜尋如何整合 Stripe,因為我每次都會忘記。”

上午 10:00 - 開始編碼

Google搜尋 #1: “stripe payment intent react”

Google 搜尋 #2: “stripe webhook 簽名驗證”

Google 搜尋 #3: “條紋測試卡號”

(我用谷歌搜尋了每一個專案)

上午 11:30 - 漏洞出現

錯誤: Cannot read property 'amount' of undefined

我的過程:

  1. 盯著程式碼(2分鐘)

  2. 在所有地方加入console.log (5 分鐘)

  3. 谷歌錯誤(30秒)

  4. 尋找 Stack Overflow 答案

  5. 意識到我忘記在存取物件之前檢查它是否存在

  6. 摀臉

  7. 新增if (payment?.amount)檢查

  8. 固定的

總時長: 8分鐘

初級開發人員時間:本來是 2 小時

為什麼?不是因為我比較聰明。因為我已經犯過100次這樣的錯誤了。

下午 2:00 - 程式碼審查

青少年程式碼:

const data = response.data.users.map(user => user.name)

我的評論: “如果response.data.users未定義怎麼辦?”

小輩: “哦!我沒想到這一點。”

我沒有說的是: “我上週忘了檢查這個,導致生產崩潰。我吃過不少苦頭。現在你不用再吃了。”

下午 4:00 - 架構會議

經理: “我們應該如何建立微服務?”

我說的是: “我們應該使用帶有訊息佇列的事件驅動架構。”

5 分鐘前發生的事情:我在 Google 上搜尋了「微服務通訊模式」並閱讀了第一篇文章。

下午 5:00 - 幫助一名青少年

小輩: “你是怎麼記住這些指令的?”

我: “我不知道。我有小抄本。”

我(顯示書籤資料夾):

  • Git 指令速查表

  • CSS Flexbox 指南

  • JavaScript 陣列方法

  • React Hooks 模式

  • 常見的正規表示式模式

小輩: “等等,你用小抄本嗎?”

我: “每一天。”


第 13 部分:我實際使用的資源

讓我分享我的秘密武器(也就是我每天造訪的書籤):

我最常造訪的 10 個網站

  1. Stack Overflow - 顯然

  2. MDN Web 文件- JavaScript/CSS 參考

  3. React 文件- 當 Stack Overflow 不夠用時

  4. CSS-Tricks - 解決所有 CSS 問題

  5. regex101.com - 因為正規表示式是不可能的

  6. caniuse.com - “我可以使用這個 CSS 屬性嗎?”

  7. npm 趨勢- 比較軟體包流行度

  8. GitHub - 閱讀其他人的程式碼

  9. DevDocs.io - 所有文件都集中在一個地方

  10. 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"

第 14 部分:不使用谷歌搜尋的真正危害

這是一個有爭議的觀點:有時候你不應該使用谷歌。

自己解決問題的時間

  1. 學習基礎知識

如果你在學習 JavaScript 時,每次都去 Google 搜尋“如何寫函數”,那你根本學不會。堅持練習,直到掌握為止。

  1. 除錯你自己的程式碼

在Google搜尋之前,先嘗試自己理解錯誤。閱讀錯誤訊息,檢查行號,思考。

  1. 理解核心概念

不要只是在谷歌上搜尋“什麼是閉包”。去嘗試。打破常規。理解為什麼。

平衡

  • 錯誤:用 Google 搜尋每一行程式碼

  • 優點: 15 分鐘後卡住時使用 Google

  • 最佳做法:透過 Google 學習模式,然後自己實現


第 15 部分:我對初級開發人員的建議

基於現實情況,忘記語法和犯錯正是開發人員所做的事情,以下是我的建議:

1. 不再對Google搜尋感到內疚

我們所有開發者都依賴 Stack Overflow、YouTube 和 Google。這不是弱點,而是工作原因。

2. 建立個人知識庫

記錄你反覆在 Google 上搜尋的內容:

# 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. 老年人結對計劃

觀察經驗豐富的開發人員犯錯、走錯方向或在 Google 上搜尋可能會非常有幫助。

你會發現我們都是在邊走邊想辦法。


結論:承認自己不知道的解放

我希望你們從中得到以下幾點:

你並不是因為使用 Google 搜尋而成為冒名頂替者。

忘記文法並不代表你的技能降低。

雖然你不知道所有事情,但你並不是一個糟糕的開發人員。

你是人。我們不斷學習各種訊息,花費無數時間進行除錯,怎麼能指望記住所有東西呢?

我從事專業開發工作已有十年。我領導著一個團隊。我的年薪達到六位數。我開發的產品已服務數百萬用戶。

我每個月至少會在 Google 上搜尋一次「如何將 div 居中」。

初級人員和高階人員之間的差異不在於知識,而是是否知道如何快速找到知識。

因此,下次當您發現自己瘋狂地在 Google 上搜尋一些「基本」內容時,請記住:

在某個地方,谷歌的一位高級開發人員正在谷歌上搜尋完全相同的東西。

歡迎來到軟體開發領域。別再心懷愧疚,繼續用谷歌搜尋吧。


輪到你了:你會用 Google 什麼?

我給你看過我的了,現在也給你看你的吧。身為開發者,你在 Google 上搜尋過的最尷尬的事情是什麼?

請在下方留言或推文給我@elvisautet ,分享你最常使用的 Google 搜尋。讓我們一起規範它。

Google搜尋次數最多的名人堂作品:

  • “如何退出 vim”

  • “git強制推送”

  • “javascript 降序排序”

  • “css垂直對齊”

  • “正規表示式電子郵件”

你的是什麼? 👇


資源(我每天都會谷歌搜尋)


關於作者

我是 Elvis Autet ( @elvisautet ),一位擁有 8 年經驗的高級全端開發者,並且對谷歌有著十足的痴迷。我已經在谷歌上搜尋過「如何反轉陣列」無數次了,現在我對此已經不再感到羞恥了。

在 X 上關注我: @elvisautet ,獲取更多誠實的開發人員內容以及有關我在 Google 上搜尋過的內容的糟糕承認。

如果這篇文章讓你在Google搜尋方面不再感到孤單,請分享給其他需要幫助的開發者同行。我們同舟共濟。


PS:在寫這篇文章之前,我在 Google 上搜尋了「如何寫出好的部落格結論」。 😂


原文出處:https://dev.to/elvissautet/im-a-senior-developer-and-i-still-google-everything-and-thats-perfectly-normal-21a2


精選技術文章翻譯,幫助開發者持續吸收新知。
按讚的人:

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝28   💬6   ❤️8
679
🥈
我愛JS
📝1   💬11   ❤️1
78
🥉
御魂
💬1  
4
#4
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付