CodeFarmer 技術週報 #6 - 如何找到刷題的樂趣
就我自己的經驗而言 LeetCode 刷題這件事因為與日常工作相對較不相關,在初期複習一些演算法知識時不免因為這些坎覺得無聊,讓習慣總是斷斷續續不容易養成。這篇就來聊聊如何找到刷題的樂趣這件事。
嗨嗨 👋 大家,歡迎閱讀第 6 期的 CodeFarmer 技術週報,這週比較忙一些暫時沒做什麼新的技術筆記,就先來分享個比較軟性的內容。
這幾天看到 Ashish Pratap Singh 這個 How I Tricked My Brain to Be Addicted to Coding (The Dopamine Hack) 影片,討論「如何欺騙大腦愛上寫程式」,雖然影片討論的主題比較廣泛,但我自己看這個影片的解讀會是衍伸成「如何養成 LeetCode 刷題的習慣」。
因為就我自己的經驗而言刷題這件事因為與日常工作相對較不相關,在初期複習一些演算法知識時不免因為這些坎覺得無聊,讓習慣總是斷斷續續不容易養成。
後來我試著從中挖掘樂趣,有蠻多都跟影片的觀點不謀而合,看完這個影片後也更有系統化,以下綜合來分享自己一些觀點。
附上人權
以前 PTT 上在分享遊戲攻略、各種考試與面試心得時總是習慣會說要附上人權,也就是分享背景與排名之類的,我自己目前是只有少少的 117 題,也才拿了一個 JS30 的徽章,還比不上幾百幾千題、參加過多次週賽的刷題前輩,但可能以下心得適合剛起步還在觀望的像我一樣的刷題菜雞們。或等之後有更多心得再來分享一篇更成熟的版本。
如何找到刷題的樂趣
1. 找夥伴
這是一個許多刷題前輩都一定會提到的方法,實際嘗試後也真的有效。
今年初找了幾個前同事一起試辦一個刷題打卡群,為了追求群組討論的質量我覺得 3~5 人是最剛好的大小,2 人可能因為觀點不夠討論不起來且少了些制衡的效果,而超過 5 人可能容易讓人有一種「大家都講這麼多了我就不用講了」的錯覺。
我們一開始的目標是在農曆年前可以在 20 天內用自己習慣的方式 (Grind 75、NeetCode 150) 每天至少一題,然後上線打卡,不管只是分享實作的 GitHub 連結,或想多做一些寫成部落格都可以,就用自己舒適的方式,以養成習慣為主。
最後大家都有達成自己訂的目標,年後也就看各自的需求看要繼續把不熟的主題刷完或是補強其他前後端知識點等等。
而我自己是開始找更多的遊戲化方式希望把刷題習慣延續下去到成為一個內在動機,因此我從 2 月也開始了踏上挑戰取得 LeetCode badge 之路。
2. 取得連勝 (streak)
如果你也是個喜歡打電動的人,一定知道大部份遊戲都會有每日任務,透過一些簡單的小任務來讓玩家養成每天打開遊戲的習慣,就像很知名的情勒鳥 Duolingo 也有類似的機制,而 LeetCode 上也有 daily problem 的機制:
每天台灣時間 8:00 重置 daily problem
24 小時內解完並成功 AC (Accept) 後,會馬上得到 10 個 LeetCode coins
Daily badge 會在當月最後一天 AC 後出現
有 premium 會員者,每週可解額外題,每次可得 35 LeetCode points
錯過打卡的補救:可到 LC store 購買時光旅行票,每月最多使用 3 次 (70 coins/per)
看到上面的圖會看到 LeetCode 中也有像是 GitHub 的熱點圖,透過這樣自己製造一些動機想讓每天的綠點、或是連勝的火繼續亮起來,持續下去進而去養成習慣,有可能一天 10~15 分鐘就能讓這個動能持續下去。
註:但如果是以面試為導向想刷題的朋友,建議還是先做 Grind 75 熟悉各種題型後再來挑戰 daily,因爲 daily 很多時候題型比較雜一些,且可能較多不是常考題。
3. 從簡單開始
想想以前打電動的新手教學與引導,你會上癮也是從各種簡單對手開始打,當不斷地嚐到勝利後會更有動力繼續下去。以 LeetCode 為例,你可以從 Grind 75、JS30 上許多 Easy 難度的題目開始取得 small win 來找到成就感,建立正向迴路來養成習慣。
4. 從覺得有趣開始
影片中作者舉例他一開始學 C 覺得很難入門且無聊,但自從他接觸了 Python 後更快取得成就感,開始用它做一些有時可能也是不是為了面試的小玩具或 side project,慢慢地就會找到寫程式的樂趣。
而以 LeetCode 舉例的話,我自己最近在解 Daily Question 時也會去看討論區討論,看許多外國網友其實蠻有創意的:
像是因為 2/5 開局連五天 Easy,有人就說「這一定是暴風雨前的寧靜」,意思是可能之後要被 Medium、Hard 問題荼毒。
常會看到有留言在更早之前說「這題的複雜程度無法想像這題當作 daily」,當它真的成為每日問題時,就會有受害者在下面回覆「這下你開心了吧」。
5. 任務化
就像遊戲中的任務一樣,作者舉例可以使用 checklist 的方式在筆記軟體如 Notion 來條列要成為全端要學的知識點,每次打勾也能取得 small win 來累積成就感。
6. Novelty (新奇)
探索新事物會讓大腦釋放多巴胺,作者舉例像是他後來從原本寫較多 Python 跳去學習 Java,一方面重新找到初學的成就感,另一方面也能在日常切換不同的工具來讓大腦不疲憊。
7. 挑戰越級打怪 - 打週賽
如果是 LeetCode 來說的話,我嘗試在上週去參加了第一場的 LeetCode Contest 週賽,關於週賽詳細的介紹可以參考 sillyduck5566 大這篇《學而不思則惘 Leetcode Contest》。簡單筆記下會像是這樣的規則:
可以在開賽前提前到 LeetCode Contest 頁面註冊與加入行事曆提醒
單週賽在每週日早上 10:30、雙週賽在每雙週的週六晚上 22:30,每場 90 分鐘
每次大部份會是 Easy、Medium、Hard、Hard 的程度,隨著解出的問題不同取得不同的分數
排行榜依據解出的 AC 數、嘗試次數、複雜度來排
參加一次後覺得蠻有趣的,有點像是模擬面試寫前測的感覺,其實沒有說你今天沒刷到幾百題就不能參加,看 LeetCode 討論區上大家也會自嘲自己是 0/4、1/4 戰士,也就是一題都沒解出來或是解出一題的取暖區。基本上週賽就是練到一個階段去參加全國大賽試試水溫的概念。
分享關於 LeetCode 週賽的觀點
另外有個有趣的發現是原來最後排行榜除了參賽者外,還有 LLM 的智能排行,看這些模型是否能解出這些新題目,像是從上面這張圖看到 GPT-o1 嘗試了 5 種不同的程式語言的 prompt,其中最好的成績是 4 題全對的 20 分,而其他模型有的最好都只能答出前兩題。
雖然我最近很少跟 AI 的新消息,但看了這個後去查才知道原來 GPT-o1 是一種比 GPT-4o 更適合拿來解程式與數學競賽的模型。後來看了幾篇在 Reddit 上關於 GPT-o1 與 LeetCode contest 的討論後,發現在 5 個月前大家也對於排行榜上許多帳戶在週賽中使用 GPT-o1 有疑慮,不確定 LeetCode 官方有沒有針對像是許多面試系統做到作弊判斷,但看社群上的討論大家普遍覺得從那之後週賽的 3、4 題就開始難上不少。
自己也好奇實測了下 GPT-o1 也確實能透過推理來完美地解出這些 Hard 的新題目。看完許多討論後,得到一個反思就是刷 daily 或週賽對一個想練 DSA 的開發者來說大概是一種練手感與確認自己哪裡不足的方式,但如果是為了排名或徽章而去使用 GPT-o1 那就是比較本末倒置了,還不如回頭好好地把 Grind 75 與 NeetCode 150 觀念弄懂可能更有幫助一些。
本期推薦內容
上週看到一個很不錯的學習前端 CSS flexbox、grid 語法的視覺化網站,蠻意外這個隨手分享竟然在 threads 上爆流量,而且花的時間比我寫週報的時間少上十幾倍 🥹。Anyway,有興趣的朋友可以存起來 (連結)
昨天看到一個很有創意的個人介紹頁,把頁面做成像是線上版 VS Code,雖然作者沒有開源但可以參考他的 idea (連結)
今天在 PTT 的軟工版上看到 rer429 這篇佛心又詳細的北美工程師求職心得,從這篇與社群討論看起來 2024 下半年真的是軟體求職市場相對競爭的一個時期,期待 2025 年後能逐漸好轉。另外文中作者還有提供限時免費諮詢,有需要的朋友歡迎參考 (連結)
後來發現本期週報參考的 Youtube 影片作者本身也有開設自己的 Substack 電子報,分享了許多 DSA 與系統設計筆記,有興趣的朋友也可以參考看看 (連結)
知名的技術圈紀錄片 Youtuber — Honeypot 幾天前釋出了 Angular 生態圈的紀錄片,對該主題有興趣的朋友可以開著沈浸式翻譯當配飯的影片看 (連結)
年前有找到一個很不錯的電子報,覺得其中的《Learn things that don't change》這篇文章的觀點很棒,提醒軟體工程師們在這個每天都有新工具、框架吸引我們注意力的時代,應該專注在基礎的知識補強上,像是 DSA、設計模式、系統設計等等 (連結)
Google 的工程主管 Addy Osmani 延伸之前這篇精彩地討論 AI 與軟體工程的不可取代性的觀點後,在最新的文章中一樣提到專業開發者仍然是不可或缺的存在,但 AI 的發展可能帶來未來的較小眾且客製化的「個人軟體」趨勢。 (連結)
以上就是本期的 CodeFarmer 技術週報的所有內容了,若內容有什麼錯誤、問題、討論也都歡迎透過以下管道與我交流,或直接留言與回覆這封電子信我也能收到:
Email:codefarmer.tw@gmail.com
喜歡本期的內容也歡迎按讚,並分享給有興趣、正在努力學習路上的朋友一起來免費訂閱週報一同交流討論,那我們就下週三見了!




