Listen to Your Lizard Brain — Lắng nghe trực giác khi code (Pragmatic Programmer #37)
Chào mấy bạn, lại là mình đây!
Hôm nay mình tiếp tục hành trình xuyên qua The Pragmatic Programmer (20th Anniversary Edition) với Topic 37: Listen to Your Lizard Brain nằm trong Chapter 7 — While You Are Coding.
Nghe cái tên "lizard brain" nghe có vẻ kỳ lạ ha? Nhưng thực ra đây là một trong những topic mình tâm đắc nhất từ đầu series tới giờ đó. Để mình kể cho mấy bạn nghe nha.
🐊 Lizard Brain là cái gì vậy?
Trong não bộ con người có phần gọi là amygdala — hay còn gọi là "lizard brain" (não thằn lằn) — phần não nguyên thủy nhất, chịu trách nhiệm cho phản ứng "chiến hay chạy" (fight or flight), cảm xúc và bản năng sinh tồn. Nó nhanh, mạnh, nhưng đôi khi cũng... hơi quá đà.

Ảnh: MART PRODUCTION — Pexels
Trong lập trình, "lizard brain" của chúng ta thường phát ra những tín hiệu như:
- Sợ bắt đầu — "Mình không biết phải viết từ đâu..."
- Lo âu mơ hồ — "Có gì đó sai sai với đống code này..."
- Khó tập trung — "Viết hoài mà không thấy xuôi..."
- Trì hoãn — "Để mai viết, hôm nay không có hứng..."
Thường thì chúng ta hay gạt những cảm giác này qua một bên, coi đó là yếu đuối hay thiếu kỷ luật. Nhưng cuốn sách nói rằng: Hãy lắng nghe nó! Vì rất có thể đó là trực giác của bạn — thứ được tôi luyện qua hàng năm trời coding — đang cố gắng nói với bạn điều gì đó.
🔍 Khi nào thì "lizard brain" lên tiếng?

Ảnh: Mizuno K — Pexels
Theo tác giả, có mấy tình huống điển hình mà bạn nên đặc biệt chú ý:
1. Sợ bắt đầu một task mới
Nếu bạn thấy mình cứ lần lữa, không muốn động tay vào code, rất có thể là do bạn cảm thấy có điều gì đó không ổn với thiết kế hoặc cách tiếp cận hiện tại. Có thể bạn sợ mình sẽ làm sai, hoặc sợ code sẽ không chạy, hoặc đơn giản là bạn biết trong thâm tâm rằng còn thiếu thông tin gì đó quan trọng.
Giải pháp: đừng cố gắng gượng ép bản thân code tiếp. Hãy bước ra khỏi bàn phím, đi uống cà phê, đi dạo một vòng, hoặc làm gì đó thư giãn. Thường thì sau 15-20 phút, insight sẽ đến một cách tự nhiên.
2. Cảm giác "sai sai" trong lúc code
Có những lúc bạn đang viết code, mọi thứ đều chạy, nhưng trong lòng lại có cảm giác bất an. Đừng lờ nó đi! Nếu bạn cảm thấy khó khăn khi viết một đoạn code nào đó, rất có thể vấn đề không phải ở bạn, mà ở code. Có thể design đang sai, có thể bạn đang đi vào hướng không tối ưu.
Các tác giả gợi ý một quy trình xử lý rất hay khi gặp tình huống này:
- Dừng lại — ngưng gõ phím, đứng dậy, làm việc khác mindless.
- Nếu vẫn stuck — hãy "externalize" vấn đề. Vẽ nó ra giấy, giải thích cho cục Ruby (rubber duck debugging), hoặc nói với đồng nghiệp.
- Nếu vẫn còn stuck — hãy coi như "việc này không quan trọng" và bắt đầu prototype. Viết code thử nghiệm như một đứa trẻ chơi đồ chơi. Khi không còn áp lực, bạn sẽ thấy rõ vấn đề hơn.
3. Bí code khi đọc code của người khác
Có khi bạn phải sửa một cái bug trong code của đồng nghiệp cũ, hoặc nhúng tay vào một dự án legacy, và bạn thấy khó chịu vô cùng. Lizard brain đang nói: "Có pattern gì đó ở đây mà mình chưa hiểu." Hãy kiên nhẫn tìm ra patterns, hiểu tại sao người viết code đầu tiên lại làm theo cách đó.
💭 Cảm nhận của mình

Ảnh: Moisés Fonseca — Pexels
Topic này làm mình nhớ tới rất nhiều lần trong quá khứ.
Có lần mình ngồi 3 tiếng đồng hồ để debug một cái lỗi trong hệ thống xử lý payment. Mọi thứ đều có vẻ đúng — syntax đúng, logic đúng, test pass hết — nhưng mình cứ có cảm giác "sai sai kiểu gì ấy". Cuối cùng, thay vì cố gắng gõ tiếp, mình đóng laptop lại, đi pha một ly cà phê và ngồi nhìn ra cửa sổ 5 phút. Và rồi tự nhiên nó đến: mình nhận ra mình đang dùng sai transaction isolation level trong PostgreSQL! Cái bug mà mình tìm 3 tiếng không ra, nó tự hiện ra trong đầu khi mình ngưng cố gắng.
Cũng giống như việc không nhớ tên một bài hát — bạn càng cố nhớ càng không ra, nhưng khi bạn thả lỏng, tự nhiên nó hiện ra. Não bộ của chúng ta hoạt động theo cách đó. Đôi khi cách tốt nhất để giải quyết một vấn đề là không giải quyết nó.
Mình nghĩ bài học quan trọng nhất ở đây là: học cách phân biệt giữa lười biếng và trực giác. Không phải lúc nào cảm giác khó chịu cũng là dấu hiệu của vấn đề — đôi khi bạn chỉ đang mệt thôi. Nhưng nếu cảm giác đó lặp đi lặp lại và tập trung vào một điểm cụ thể, rất có thể trực giác của bạn đang cố gắng nói điều gì đó.
Mình cũng thích cách tác giả khuyến khích prototyping như một hình thức chơi. Khi bạn "chơi" với code, bạn không còn sợ sai nữa. Bạn thử nghiệm, bạn khám phá, và bạn học được nhiều hơn là khi bạn ngồi cắm mặt vào màn hình với áp lực "phải đúng ngay từ đầu".
📝 Kết
Topic 37 dạy chúng ta rằng: coding không chỉ là gõ phím, mà còn là lắng nghe. Lắng nghe code, lắng nghe cảm xúc của chính mình, và đặc biệt là lắng nghe "lizard brain" — cái phần nguyên thủy nhưng đầy khôn ngoan trong mỗi chúng ta.
Lần tới khi bạn thấy mình đang struggle với code, hãy thử:
- 🗣️ Nói chuyện với rubber duck
- ☕ Đi uống cà phê, không nghĩ gì về code
- 🎨 Vẽ vấn đề ra giấy
- 🧪 Viết prototype không áp lực
Hẹn mấy bạn ở bài sau với Topic 38: Programming by Coincidence — một chủ đề cũng rất hay về việc code "ăn may" và tại sao nó nguy hiểm! 🚀