Đọc lại code cũ của mình
Mở lại một cái repo hai năm trước. Vừa quê, vừa thương cái đứa đã viết nó.
Hôm qua tui mở lại một cái repo viết cách đây hai năm. Định sửa một con bug nhỏ. Ngồi đọc hết một buổi chiều, không sửa được gì, mà ra khỏi đó với một cảm giác lạ — vừa muốn độn thổ, vừa thương cái đứa đã viết ra đống này.
Code cũ của mình là một cái máy thời gian rất tàn nhẫn. Nó không nhớ giùm bạn những lúc bạn giỏi. Nó nhớ chính xác những lúc bạn vội, những lúc bạn không hiểu cái mình đang làm, những lúc bạn copy một đoạn từ đâu đó rồi cầu cho nó chạy. Mỗi cái tên biến khó hiểu là một lời thú tội. Mỗi cái // TODO: fix later là một lời hứa mà tui biết thằng đó sẽ không bao giờ giữ.
Quê, nhưng theo nghĩa tốt
Cảm giác quê khi đọc code cũ thật ra là tin tốt. Nó có nghĩa là bạn đã khá lên. Nếu mở code hai năm trước mà thấy ổn áp, thì hoặc bạn từng là thiên tài, hoặc bạn đã đứng yên hai năm. Tui biết tui không phải thiên tài, nên tui chọn tin vào vế còn lại: cái quê đó là khoảng cách giữa tui hồi đó và tui bây giờ, đo bằng đơn vị code.
Nhưng tui không muốn dừng ở câu "ráng lên rồi sẽ giỏi", nghe sáo lắm. Cái làm tui ngồi lại lâu là chuyện khác. Tui nhận ra mình đang phán xét cái đứa hai năm trước bằng kiến thức mà nó không có cách nào có được lúc đó. Nó vội, vì lúc đó deadline thật. Nó viết hàm dài ngoằng, vì lúc đó nó chưa thấy được cách tách. Nó đặt tên xấu, vì lúc đó nó còn chưa hiểu rõ cái nó đang đặt tên. Mọi quyết định tệ đó, ở thời điểm của nó, là quyết định tốt nhất nó làm được.
Tử tế với phiên bản cũ của mình
Tui nghĩ cách bạn đọc code cũ của mình nói lên cách bạn đối xử với chính mình. Có người mở ra rồi chửi: "trời ơi ngu vậy." Tui từng vậy. Giờ tui cố đọc theo kiểu khác — đọc như đọc thư của một người bạn trẻ hơn, đang cố hết sức với những gì nó có. Không phải để tha thứ cho code dở. Code dở vẫn là code dở, vẫn phải sửa. Mà để nhớ rằng cái đứa viết nó không dở — nó chỉ mới hơn.
Code cũ không phải bằng chứng bạn từng kém. Nó là bằng chứng bạn đã đi được một quãng.
Vì nếu hôm nay tui khắt khe với cái đứa hai năm trước, thì hai năm nữa, cái đứa lúc đó sẽ khắt khe với tui — cái thằng đang ngồi gõ những dòng này, tưởng mình đã hiểu rõ mọi thứ. Mà chắc chắn là chưa. Code tui viết hôm nay, hai năm nữa đọc lại, cũng sẽ đầy lời thú tội y vậy.
Cuối cùng thì tui không sửa con bug
Tui đóng cái repo lại, con bug vẫn còn đó. Không phải vì lười. Mà vì tui nhận ra sửa nó đúng cách nghĩa là viết lại kha khá, và cái đó xứng đáng một buổi riêng, tỉnh táo, chứ không phải nhét vội vào cuối một buổi chiều hoài niệm.
Tui để lại một cái comment mới, ngay trên cái // TODO: fix later của hai năm trước:
// vẫn chưa fix. nhưng giờ tao hiểu tại sao mày để lại. — Khoa, 2025
Coi như một lá thư gửi cho cái đứa sẽ mở lại file này, hai năm nữa.