Tracer Bullets — Bắn đạn sáng để tìm đường trong đêm
Mở đầu
Mình đang đọc cuốn The Pragmatic Programmer mà thấy thích mê. Cuốn sách này không phải kiểu lý thuyết suông, nó toàn những kinh nghiệm thực tế của mấy anh dev lão làng. Mình làm series cảm nhận từng topic để chia sẻ với mấy bạn, hy vọng ai đang code hàng ngày cũng thấy gần gũi. Hôm nay tới topic 12 trong chương 2, mình đọc xong chỉ biết gật gù liên tục.
Ảnh: Alexandra Krainyukhova — Pexels
Tracer Bullets
Tracer Bullets là một ẩn dụ cực hay. Trong quân đội, người ta bắn đạn tracer để nó phát sáng, soi đường đi trong đêm tối. Trong lập trình cũng vậy. Thay vì ngồi vẽ design chi tiết cả tháng trời rồi mới bắt đầu code (kiểu big design up front), mình nên bắn một viên đạn tracer trước.
Nghĩa là build một phiên bản cực kỳ đơn giản nhưng phải chạy xuyên suốt end-to-end: từ giao diện, business logic, database, đến integration với bên thứ ba. Viên đạn này không đẹp, không hoàn chỉnh, nhưng nó giúp mình thấy ngay lập tức là mình đang đi đúng hướng hay đang lạc.
Mình thấy cách này thực tế vl. Dự án nào cũng có uncertainty, requirement thay đổi liên tục, công nghệ mới cũng hay có bug lạ. Bắn tracer bullet giúp lấy feedback sớm, thay vì chờ đến cuối mới phát hiện sai lầm lớn.
Ảnh: Lukas Blazek — Pexels
Cảm nhận của mình
Thật sự topic này làm mình nhớ lại mấy dự án trước. Hồi đó team mình hay ngồi họp cả tuần để vẽ architecture hoàn hảo, vẽ UML đầy bảng. Code được một thời gian thì requirement thay đổi, API bên thứ ba update, database schema không khớp. Tốn thời gian refactor kinh khủng.
Nếu áp dụng tracer bullets từ đầu, build một cái flow đơn giản chạy được hết các layer, chắc mình phát hiện vấn đề sớm hơn nhiều. Mình từng thử cách này với một side project nhỏ. Thay vì plan chi tiết, mình code cái core feature chạy end-to-end trước. Dù ban đầu code xấu xí nhưng sau đó mình hiểu rõ hệ thống hơn, refactor cũng dễ dàng.
Mình nghĩ topic này hay vì nó khuyến khích dev hành động thay vì suy nghĩ quá nhiều. Fail fast nhưng fail một cách thông minh. Trong thời đại bây giờ, thay đổi nhanh đến mức nào cũng có, nên cách tiếp cận thực tế như vậy rất đáng học.
Ảnh: ThisisEngineering — Pexels
Kết
Tóm lại, Tracer Bullets nhắc mình rằng lập trình giống như bắn trong đêm tối – đừng cố vẽ bản đồ hoàn hảo, hãy bắn viên đạn sáng để xem đường đi. Xây dựng cái gì đó chạy được trước, rồi mới tinh chỉnh dần.
Hẹn mấy bạn ở topic sau nha! 📖