Stone Soup và Boiled Frogs — Chuyện nấu súp với luộc ếch trong Pragmatic Programmer
Mở đầu
Hai anh em mình lại gặp nhau nha. Hôm nay là bài thứ tư trong series cảm nhận về "The Pragmatic Programmer" — cuốn sách mà anh Phong đang đọc. Mỗi lần đọc xong một topic là mình lại ngồi xuống viết, vừa để ghi nhớ vừa để chia sẻ với mấy bạn. Và bài hôm nay là về chuyện… nấu súp với luộc ếch. Nghe lạ đúng không? Để mình kể.
Ảnh: Christina Morillo — Pexels
Stone Soup và Boiled Frogs
Topic này có hai câu chuyện ngụ ngôn cực kỳ thâm thúy.
Chuyện thứ nhất — Stone Soup (Súp đá): Mấy anh lính đi qua một ngôi làng, đói bụng nhưng dân làng không ai cho gì. Thế là họ nhóm lửa, bắc nồi lên, bỏ một cục đá vào nấu. Dân làng tò mò chạy ra xem, rồi lần lượt mỗi người góp một thứ: củ cà rốt, miếng thịt, vài củ khoai… Cuối cùng là nồi súp ngon lành cả làng cùng ăn.
Bài học cho dân IT: Đừng chờ xin phép. Hãy bắt đầu làm. Có những dự án mà nếu mình cứ chờ duyệt, chờ họp, chờ phân tích — thì không bao giờ có ngày xong. Thay vào đó, hãy lén làm một cái prototype nhỏ xíu, một cái POC (proof-of-concept) cho thấy được cái "vibe" của giải pháp. Người ta thấy có cái để góp ý, để "thêm gia vị" sẽ dễ đồng thuận hơn là ngồi bàn giấy trên trời.
Dân Pragmatic Programmer là dân "biết cách mở đường" — không phải chờ có tất cả mới làm, mà làm một ít, khoe một ít, kéo mọi người vào cuộc.
Ảnh: cottonbro studio — Pexels
Chuyện thứ hai — Boiled Frogs (Ếch luộc): Thả con ếch vô nồi nước sôi — nó nhảy ra liền. Nhưng thả vô nồi nước lạnh, rồi từ từ đun lên — con ếch nằm im tới khi nó chín.
Bài học: Cảnh giác với sự thay đổi chậm mà hủy diệt. Code của mình hôm nay hơi lộn xộn tí, không sao. Rồi mai lại thêm một cái workaround nữa, thêm một cái "tạm thời" nữa. Rồi tuần sau, tháng sau… cái nồi đã sôi từ lúc nào, và mình đã thành con ếch luộc trong dự án của chính mình.
Mỗi ngày một ít technical debt, một ít shortcut — nếu không để ý thì một ngày đẹp trời bạn nhìn lại codebase và không dám động vô cái gì nữa.
Cảm nhận của mình
Hai bài học này đi liền với nhau như hình với bóng. Stone Soup dạy mình chủ động, Boiled Frogs dạy mình tỉnh táo.
Có lần mình từng ở trong một team, khi mới vào ai cũng háo hức, code review cẩn thận, chạy test đầy đủ. Rồi deadline dí, sếp thúc, sửa nhanh một tí "cho qua". Rồi cái "một tí" đó thành thói quen. Một tháng sau, codebase là một mớ spaghetti, không ai dám đụng tới module đó. Đó chính là cái nồi nước lã mà team mình đã từ từ tăng nhiệt ^^
Còn về Stone Soup — cái hay là mình thấy áp dụng rất nhiều trong môi trường corporate. Có những ý tưởng tốt nhưng chờ approval 3 tháng không xong. Thay vì vậy, mình cứ làm một cái demo nhỏ vào cuối tuần, show cho vài đồng nghiệp, cho sếp thấy. Và đùng cái, mọi người bắt đầu góp cà rốt, góp khoai tây. Dự án thành hình từ cái "cục đá" ban đầu.
Ảnh: Brett Jordan — Pexels
Kết
Tóm lại, topic này đưa ra hai chân lý rất thực tế mà lập trình viên nào cũng gặp hằng ngày:
- Hãy là người khởi xướng. Đừng đợi ai cho phép. Cứ làm, cứ show, mọi người sẽ theo.
- Hãy là người tinh ý. Quan sát sự xuống cấp từng ngày của hệ thống, đừng để nó âm thầm hủy hoại dự án.
Cuốn sách này mới đọc tới topic 4 mà đã thấy thấm rồi. Hẹn mấy bạn bài sau nha!
Đây là bài viết số 4 trong series "Pragmatic Programmer" của mình. Bài trước để mình link ở comment.