# 24: Đừng sợ đột phá

Những người có kinh nghiệm trong nghề chắc hẳn đã từng làm ở những project mà chất lượng codebase kém. Dự án được thiết kế một cách tồi tệ, và chỉnh sửa một vấn đề luôn luôn làm ảnh hưởng ít hay nhiều đến những tính năng hoàn toàn không liên quan khác. Bất cứ khi nào một module mới được thêm vào, mục đích của người lập trình viên là làm thay đổi ít nhất có thể, và “nín thở” mỗi khi phát hành phiên bản mới. Điều này khiến chương trình tương tự việc chơi trò rút gỗ với những thanh sắt I trong những tòa nhà chọc trời và chính nó là cội nguồn của tai hoạ.

Lý do làm cho những sự thay đổi trở nên đáng lo lắng chính là do dự án của bạn có vấn đề. Nó cần một vị “bác sĩ” nếu không thì nó sẽ ngày càng trở nên tồi tệ hơn. Bạn đã biết chuyện gì xảy ra với dự án của bạn nhưng bạn lại sợ “đập vỡ cái trứng để làm một cái trứng rán”. Một bác sĩ phẫu thuật giỏi biết rằng vết cắt phải thực hiện để quá trình phẫu thuật có thể diễn ra đồng thời anh ta cũng biết rằng vết cắt ấy là tạm thời và sẽ hồi phục. Và kết quả cuối cùng của ca phẫu thuật là làm tiêu biến cơn đau, và bệnh nhân sẽ hồi phục khỏe mạnh hơn họ khi chưa thực hiện ca phẫu thuật.

Đừng sợ hãi code của bạn. Không ai quan tâm nếu có thứ gì đó tạm thời hỏng trong khi bạn đang thay đổi thứ gì đó. Nỗi sợ phải thay đổi là nguyên nhân khiến cho dự án của bạn chìm trong trạng thái lỗi. Đầu tư thời gian cho việc chỉnh sửa chúng sẽ giúp chúng ta tiết kiệm thời gian trong những lần bảo trì trong suốt vòng đời dự án của bạn. Thêm vào đó bạn còn có thể nâng cao kinh nghiệm của cả team bạn khi xử lý những dự án bị hỏng khiến bạn trở thành “chuyên gia” trong việc hiểu nó nên hoạt động như thế nào. Hãy ứng dụng kiến thức này thay vì khó chịu khi đối mặt với nó. Làm việc trong một dự án mà bạn không thích thì cực kỳ tốn thời gian.

Hãy tái định nghĩa về giao diện, tái cấu trúc những khối lệnh, chỉnh sửa những đoạn code mà bạn copy và paste, và đơn giản hoá dự án của bạn khiến nó bớt phụ thuộc hơn. Bạn còn có thể giảm độ phức tạp thuật toán của bạn một cách rõ rệt bằng việc xét các trường hợp gốc cái thường là kết quả của việc kết hợp không vững vàng giữa các tính năng. Chậm rãi chuyền từ những cấu trúc đã lỗi thời bằng những cấu trúc tân tiến và song song kiểm tra sự chính xác của chúng. Đừng ôm quá nhiều việc một lúc chúng sẽ khiến bạn gặp rất nhiều rắc rối dẫn đến dễ chán nản và bỏ cuộc giữa chừng.

Hãy trở thành vị bác sĩ không sợ việc phải giải phẫu sáu bộ phận để tạo tiền giúp bệnh nhân hồi phục. Thái độ của bạn sẽ truyền cho mọi người và tạo cho họ cảm hứng bắt đầu làm việc trở lại cải tiến những dự án mà họ đã dẹp sang một bên. Hãy giữ một danh sách những công việc “dọn dẹp” mà nhóm của bạn cảm thấy những công việc ấy giúp ích cho lợi ích chung của dự án của team bạn. Hãy thuyết phục mọi người rằng mặc dù chúng ta không thể thấy kết quả của những việc ấy nhưng chính chúng sẽ góp phần làm giảm chi phí và đẩy nhanh việc phát hành tính năng mới. Hãy luôn quan tâm đến tình trạng code của bạn như sức khoẻ của chính bản thân ta.