Bạn có bao giờ gặp chủ đề Rails không hiểu?
Ví dụ: bạn nghĩ mình hiểu, viết code, nhưng xảy ra chuyện hoàn toàn khác?
Hoặc bạn biết mình không hiểu, nhưng biết đủ để "xài được", trừ khi debug edge cases tốn thời gian bằng việc trở thành expert?
Sao không làm cho mọi thứ đơn giản hơn? Không tốt hơn nếu chỉ biết mọi thứ hoạt động như thế nào? Có mental model vững chắc? Để đưa ra quyết định đúng, viết code đúng?
Khi mới học web dev, session là "That Thing": tôi nghĩ mình hiểu một chút, nhưng thực ra không. Hiểu lầm về session gây ra nhiều bug đến nỗi bị chỉ trích gay gắt.
Sớm nhận ra phải dành thời gian để thực sự hiểu session hoạt động như thế nào. Gỡ rối, khiến nó không còn đáng sợ/lạ. Cuối cùng có thể đoán trước hành vi - và đoán đúng.
"Session" không phải chủ đề duy nhất tôi deep dive. Data modeling, caching, metaprogramming - đều là thứ dễ làm "chạy được" nhưng debug mãi không xong nếu không hiểu bản chất.
Trong Practicing Rails, tôi viết về T-Shaped learning: kiến thức nền tảng tốt, nhưng đẩy sâu vào chủ đề cụ thể khi cần. Những lần đẩy sâu đó là deep dive, giúp giải quyết vấn đề lớn suốt sự nghiệp lập trình.
Khi nào nên deep dive?
Làm sao biết đã đến lúc deep dive?
Trước tiên, phải biết mình dive vào cái gì.
Deep dive hiệu quả nhất khi deal với một chủ đề đơn lẻ. Một thứ cụ thể có thể mô tả trong một từ/ cụm từ ngắn. SQL query performance. Sessions. HTTP Caching. Quá cụ thể -> bỏ qua interaction phức tạp. Quá chung chung -> deep dive vào "Programming" (cả đời).
Tiếp theo, deep dive trong 2 tình huống:
Bạn nghĩ mình biết làm, nhưng xảy ra chuyện hoàn toàn bất ngờ. Bạn tin tưởng bấm nút xanh bật đèn hành lang, nhưng bấm xong phòng sập.
Bạn biết mình không hiểu sâu, và ổn... cho đến nay. Nhưng giờ fix bug, mọi thứ thử đều gây thêm vấn đề, sinh bug mới nhanh như fix bug cũ.
Hai tình huống có điểm chung: vừa nhận ra đang đi sai hướng. Dù hy vọng khắc phục, nhưng nhận ra sẽ tốn nhiều thời gian đau khổ.
Chúng giúp bạn nhạy cảm sớm hơn với việc cách làm hiện tại không hiệu quả.
Lần sau đi vòng tròn fix bug, hoặc code chạy khác kỳ vọng hoàn toàn, hãy nhớ cảm giác đó. Nhận diện nó. Đó là tín hiệu để dừng lại. Tự thu thập. Và học sâu, thật sâu, điều mà bạn giờ biết mình không hiểu.
Nhưng sau khi quyết định deep dive, làm sao để thực hiện?