Hãy suy nghĩ đơn giản - Mọi thứ sẽ thật đơn giản
Bài đăng này đã không được cập nhật trong 4 năm
Chào các bạn, hôm nay chúng ta sẽ đến với một bài viết mang tính góc nhìn trong tư duy sử dụng thuật toán trong lập trình nhé ! Giả sử mình có một đề bài như sau:
Hãy viết chương trình in ra các số chẵn trong khoảng từ 1 đến 100.
Đây là một bài tập rất cơ bản với những người mới học lập trình, nó không hề khó, thậm chí dễ như ăn kẹo. Nhưng mình có thấy một cách giải mới đây:
Có thể chương trình trên chỉ mang tính chất hài hước, mang nặng tinh thần chống đối, tuy nhiên theo tinh thần của bài viết hôm nay chúng ta sẽ phân tích theo một cách khác, dưới góc nhìn thực tế.
Nếu đây là một dự án thực tế
Hãy tưởng tượng có một ông khách giàu sang đến và bảo bạn rằng "Viết cho tôi chương trình in ra các số chẵn trong khoảng từ 1 đến 100, hoàn thành trong 01 ngày, tôi sẽ trả cho anh 1000 đô". Và tất nhiên, bạn không thể để lỡ kèo thơm như thế được. Khoan đã !!! Hãy phân tích một chút nhé!
Chọn một cách giải tốt: Tại sao lại là lời giải tốt, mà không phải là lời giải đúng? Bởi vì trong trường học, nếu bạn đưa ra lời giải đúng bạn sẽ được điểm cao. Nhưng trong thực tế, cùng một vấn đề có rất nhiều cách để giải quyết, và không có phương án nào là đúng tuyệt đối cả, chỉ có phương án này tốt hơn phương án kia mà thôi.
Code chỉ là phù du, sản phẩm mới là quan trọng
Có hàng tỉ cách để in ra được dãy số này, nhưng ai mà quan tâm cơ chứ? Cái mà người ta mong muốn là gì? Là chương trình in ra được dãy số trên, tất cả chỉ có vậy. Ông khách kia trả tiền để có được sản phẩm, chứ không phải code hay thuật toán gì cả.
Hiệu năng và giá trị: Có thể cách giải trên có vẻ không thông minh cho lắm, nhưng nếu đây là một sản phẩm thực tế, mình sẽ cho nó điểm 10, rõ ràng rằng chương trình đã làm tốt nhiệm vụ, tối ưu về tốc độ, ít (hoặc không có) lỗi phát sinh, sản phẩm dùng tốt đối với khách hàng, mang lại giá trị thực tế.
Đây là phương án phù hợp: Sau khi xem ảnh trên, một số bạn comment rằng: "Thế nếu là 10.000 thì viết đến sáng à" Không, nếu như bài toán là 10.000, chúng ta sẽ chọn phương án khác, các phương án đưa ra phải phù hợp với điều kiện và khả năng thực tế. Sử dụng những công nghệ và thuật toán phức tạp cho một vấn đề đơn giản là không thông minh cho lắm.
Mặc dù diện tích tờ giấy làm bài thi là có hạn, nhưng nó đủ để đáp ứng trong trường hợp này. Liên hệ với thực tiễn, chẳng việc gì phải sử dụng NoSql database cho một bảng chỉ có 100 record cả.
Thời gian hoàn thành dự án: Về thời gian hoàn thành dự án, thời gian làm bài đủ để viết dãy số trên. Do đó, đây là một phương án tốt đảm bảo tiến độ trước deadline.
Kết luận
Từ một bài toán giả sử trên chắc các bạn sẽ bỏ túi cho bản thân một bài học nhỏ. Trong cuộc sống hay lập trình cũng vậy. Hãy nhìn nhận mọi thứ, suy nghĩ chúng đơn giản hơn - Bạn sẽ thấy mọi thứ thật dễ dàng.
Hãy nhìn nhận, đáng giá, đong đếm chính xác vấn đề rồi đưa ra một phương pháp, sử dụng một thuật toán hay công nghệ hợp lý. Vì đơn giản có hàng nghìn cách code nhưng sản phẩm tốt mới là điều mà kháng hàng cần. Hãy tối ưu nó một cách tốt nhất có thể.
All rights reserved