Code Clean (sạch) or Speed (nhanh)?

Code Clean (sạch) or Speed (nhanh)?

September 15, 2024 0 By Nam Vu

Nếu bạn có thể viết code vừa sạch vừa nhanh, có lẽ bài toán của bạn đơn giản hoặc bạn không thuộc đối tượng của bài viết này.

Phần lớn lập trình viên không thể đồng thời đảm bảo cả hai yếu tố này. Luôn có những lập trình viên xuất sắc như Linus Torvalds hay David Heinemeier-Hansson có khả năng giải quyết vấn đề một cách nhanh gọn và hiệu quả trong cả ngắn hạn lẫn dài hạn.

Tuy nhiên, trên thế giới không có nhiều người có khả năng vượt trội như họ. Đa số lập trình viên thường đối mặt với các vấn đề vượt quá năng lực hiện tại của mình, điều này làm công việc lập trình trở nên thú vị nhưng cũng khiến họ đau đầu trong việc chọn lựa giải pháp phù hợp. 

Một giải pháp tốt cho cả ngắn và dài hạn, được hoàn thành trong thời gian cho phép, thường là một bài toán ba biến số không có lời giải hoàn hảo. Lập trình viên thường phải chấp nhận hy sinh, chỉ có thể đáp ứng được hai trong ba tiêu chí trên. Vậy, câu hỏi đặt ra là: nên viết code sạch để dễ dàng mở rộng và bảo trì sau này, hay viết code nhanh để giải quyết bài toán trước mắt trong thời gian cho phép?

Điều này, đương nhiên, phụ thuộc vào tình huống cụ thể, và thường là vào mong muốn của bộ phận kinh doanh trong việc chuyển giao sản phẩm tới khách hàng hoặc người dùng.

Tuy nhiên, cần nhận thức rằng bộ phận kinh doanh thường theo đuổi những KPI ngắn hạn và ít quan tâm đến tương lai dài hạn, dẫn đến việc đội ngũ kỹ thuật thường phải chịu áp lực về deadline.

Về phương pháp luận thiết kế và phát triển phần mềm, lập trình viên cần biết rằng có những phương pháp như Agile cho phép tổ chức tạo ra sản phẩm chất lượng, dễ bảo trì và chuyển giao sớm hơn. Đây là một trong những cách giúp lập trình viên viết code vừa sạch vừa nhanh.

Tuy nhiên, nếu bạn đã áp dụng Agile một cách hiệu quả mà vẫn gặp phải tình trạng tiến thoái lưỡng nan này, thương lượng với đội ngũ kinh doanh có thể là giải pháp duy nhất còn lại. Trên lý thuyết, sẽ luôn có những phương pháp làm việc tốt hơn hiện tại; nhưng khi đã đến giới hạn của một phương pháp, việc tìm kiếm và chuyển đổi sang phương pháp mới đòi hỏi rất nhiều nỗ lực.

Tôi đã gặp nhiều lập trình viên có thể viết code sạch và (theo tôi là) khá nhanh, nhưng họ không thể duy trì sự sạch sẽ này khi tổ chức yêu cầu họ tăng tốc độ gấp đôi, mặc dù đã áp dụng các kỹ thuật và công cụ hiện đại nhất.

Tuy nhiên, khi tổ chức cho phép họ làm việc chậm lại để ưu tiên code sạch, họ lại cảm thấy công việc trở nên nhàm chán và thiếu thử thách. Đó là bản chất của lập trình viên, họ luôn muốn đối mặt với những thử thách mới.


Trích Devup – Nguyễn Hiển

#ntechdevelopers