All posts
Nuôi Dưỡng Sự Tò Mò

Nuôi Dưỡng Sự Tò Mò

Tien Le H.'s avatarTien Le H.
Table of Contents5 sections

Hôm thứ Sáu vừa rồi, mình cùng team của mình có buổi sinh hoạt hằng tuần, chủ đề hôm đó là làm sao để cải thiện bảo mật cho webhook endpoint. Chúng mình ngồi lại, cùng nhau vạch ra từng bước nhỏ để nâng cấp dần: xác thực chữ ký cho payload, chặn replay attack, xử lý idempotency khi hệ thống retry, rồi cũng đã nghĩ đến cả việc siết chặt kênh truyền bằng mTLS . Giữa buổi thảo luận, mình chợt nhận ra mình vừa đi qua rất nhiều thuật ngữ, rất nhiều ý tưởng loé lên trong đầu chỉ trong vòng một tiếng đồng hồ. Có cái mình đã nắm rõ, có cái chỉ nghe quen quen, và có cái hoàn toàn mới mẻ. Cảm giác đó ở lại với mình lâu hơn cả buổi họp: hoá ra những điều bí ẩn, những thứ đáng để tìm hiểu, chưa bao giờ ở xa cả. Chúng vẫn luôn ẩn hiện ngay trong công việc hằng ngày, chỉ là ta có đủ tò mò để nhận ra hay không.

Bài viết này là vài suy nghĩ của mình về việc làm sao giữ cho ngọn lửa tò mò đó luôn cháy, để những ý tưởng thoáng qua không chỉ loé lên rồi tắt, mà trở thành nguyên liệu để mình học hỏi và lớn lên mỗi ngày.

Vì sao ta hay lướt qua những ý tưởng ngay trước mắt

Khi đang giải quyết một vấn đề cụ thể, đầu óc mình thường chuyển sang chế độ hoàn thành nhiệm vụ. Mục tiêu lúc đó rất rõ ràng: xong việc, ship được tính năng, đóng được ticket. Ở trạng thái đó, bất kỳ khái niệm nào không phục vụ trực tiếp cho mục tiêu trước mắt đều dễ dàng bị bỏ qua, kể cả khi nó vừa lướt qua đầu mình chỉ một giây trước đó.

Mình hay ví trạng thái này giống như đi bộ trong một khu rừng với mục tiêu duy nhất là đến được điểm cắm trại trước khi trời tối. Mình bước thật nhanh, mắt chỉ dán vào lối mòn phía trước, và hoàn toàn có thể đi ngang qua một loài cây lạ, một dấu chân thú hiếm, mà không hề nhận ra chúng đang ở ngay đó. Không phải vì mình không đủ giỏi để nhận ra, mà vì mình không cho phép bản thân dừng lại đủ lâu để nhìn.

Sự tò mò, vì vậy, không phải là một năng khiếu bẩm sinh mà một số người có còn số khác thì không. Nó gần với một lựa chọn: lựa chọn dừng lại một nhịp, giữa guồng quay công việc, để nhìn kỹ hơn vào thứ vừa lướt qua.

Một buổi họp, và cả một khu vườn ý tưởng đang chờ được mở

Quay lại buổi họp hôm thứ Sáu, nếu dừng lại và nhìn kỹ, mình nhận ra mỗi thuật ngữ chúng mình nhắc đến thực chất là một cánh cửa dẫn vào một chủ đề riêng, đủ sâu để tìm hiểu cả một buổi chiều.

Khi ai đó nói về việc xác thực chữ ký cho payload, đó không chỉ là một dòng code so sánh HMAC. Đằng sau nó là cả câu chuyện về toàn vẹn dữ liệu, về việc làm sao đảm bảo request thật sự đến từ nơi mình tin tưởng chứ không bị giả mạo giữa đường. Khi nhắc đến chống replay attack bằng timestamp và nonce (bạn Tuấn team mình nhắc chớ mình cũng không có nhớ đến nonce luôn), mình đang chạm vào bài toán làm sao phân biệt một request hợp lệ được gửi lại do lỗi mạng, với một request bị kẻ xấu ghi lại và phát lại nhằm mục đích xấu. Khi nghĩ đến idempotency key, câu hỏi lớn hơn phía sau là làm sao một hệ thống phân tán có thể retry an toàn mà không gây ra tác dụng phụ, chẳng hạn trừ tiền khách hàng hai lần. Còn khi lóe đến mTLS, mình đang bước vào một tầng bảo mật khác hẳn: không chỉ xác thực nội dung mà xác thực luôn cả danh tính của bên gửi ở tầng truyền tải.

Bốn thuật ngữ, bốn cánh cửa, và mỗi cánh cửa đều đủ rộng để dẫn đến một chuỗi câu hỏi mới. Ví dụ, chỉ riêng chuyện idempotency key thôi cũng đủ để mình tò mò tìm hiểu các hệ thống lớn như Stripe xử lý bài toán này ra sao, họ lưu trữ và hết hạn key đó như thế nào, và điều đó liên quan gì đến khái niệm exactly once delivery mà mình từng nghe nhắc tới ở đâu đó.

Điều thú vị là những cánh cửa này vốn dĩ đã ở đó từ trước, chỉ là bình thường mình đi ngang qua chúng quá nhanh để mở ra xem.

Biến khoảnh khắc loé sáng thành thói quen học hỏi

Nhận ra ý tưởng đang ở đó là một chuyện, giữ được nó lại để không trôi qua mất là một chuyện khác. Mình nhận thấy vài thói quen nhỏ giúp mình làm được điều này, và không cái nào trong số đó đòi hỏi phải có thêm thời gian rảnh.

Đầu tiên là việc ghi chú lại ngay lập tức, dù chỉ một dòng. Không cần viết đầy đủ, chỉ cần đủ để sau này đọc lại vẫn nhớ được mình đang tò mò về điều gì. Mình thường giữ một danh sách rất ngắn gọn, giống như một hòm thư chứa những câu hỏi còn dang dở, để không phải cố nhớ trong đầu và cũng không bị áp lực phải xử lý ngay.

Thứ hai là thói quen tự hỏi tại sao thay vì chỉ hỏi làm sao. Biết cách gọi một API để bật mTLS là một chuyện, hiểu vì sao mTLS lại cần thiết trong bối cảnh cụ thể đó, và nó đánh đổi điều gì so với việc chỉ dùng TLS một chiều, mới là thứ khiến kiến thức đọng lại lâu dài. Câu hỏi tại sao thường dẫn mình đi xa hơn câu hỏi làm sao rất nhiều.

Thứ ba là dành ra một khoảng thời gian cố định, dù ngắn, để quay lại danh sách những câu hỏi dang dở đó và đào sâu một vài điều trong số chúng. Với mình, đó thường là một buổi cuối tuần, không cần dài, chỉ cần đều đặn.

Cuối cùng, và có lẽ là điều hiệu quả nhất, là chia sẻ lại những gì mình vừa tìm hiểu được, dù chỉ với chính team của mình trong một buổi sinh hoạt tương tự như buổi họp thứ Sáu vừa rồi. Việc phải giải thích lại một khái niệm cho người khác hiểu buộc mình phải hiểu nó rõ ràng hơn nhiều so với khi chỉ đọc qua một lần.

Tò mò cũng cần một biên giới

Có một điều mình cũng nhận ra: nếu cứ mở hết mọi cánh cửa mình gặp, năng lượng sẽ bị dàn trải, và công việc trước mắt có nguy cơ không bao giờ xong. Tò mò không giới hạn, nếu không được cân bằng, dễ biến thành một dạng trì hoãn có vỏ bọc học hỏi.

Cách mình thường dùng để cân bằng là tưởng tượng kiến thức của mình như hình chữ T. Một vài chủ đề mình chọn để đào thật sâu, thường là những thứ liên quan trực tiếp đến công việc hiện tại hoặc lặp đi lặp lại ở nhiều dự án khác nhau. Phần còn lại, mình chỉ cần biết nó tồn tại, biết nó dùng để giải quyết vấn đề gì, và ghi chú lại để khi cần thì đã biết phải tìm ở đâu.

Một câu hỏi nhỏ mình hay tự đặt ra để quyết định có nên đào sâu ngay hay không là: khái niệm này có đang chặn mình hiểu công việc trước mắt không, hay nó đã xuất hiện lặp lại đủ nhiều lần để đáng được ưu tiên. Nếu câu trả lời là không, mình cứ yên tâm ghi chú lại và tiếp tục công việc, không cần cảm thấy áy náy vì chưa tìm hiểu ngay.

Lời kết

Buổi họp thứ Sáu hôm đó rồi cũng kết thúc, và team chúng mình cũng đi đến được một vài bước cải thiện cụ thể cho webhook endpoint. Nhưng điều mình mang về sau buổi họp không chỉ là một checklist bảo mật, mà là một lời nhắc nhở nhẹ nhàng: những điều đáng tò mò không nằm ở đâu xa, chúng nằm ngay trong buổi họp thường nhật, trong một đoạn code review, trong một dòng log lỗi mà mình vừa lướt qua.

Nếu có một điều mình muốn giữ lại từ suy nghĩ này, đó là thói quen dừng lại một nhịp, mỗi khi có một thuật ngữ hay một ý tưởng nào đó thoáng qua đầu mình mà mình chưa thật sự hiểu rõ. Chỉ cần dừng lại đủ lâu để nhận ra cánh cửa đang ở đó, phần còn lại, việc mở nó ra, chỉ là vấn đề thời gian.


Lê Hữu Tiến, Associate Engineering Manager tại Classmethod Danang.