Thực hư về cái gọi là “căn bản” và “tư duy lập trình”


Thuở còn là sinh viên, mỗi khi phải ngồi nghe giảng giải những kiến thức khô khan buồn ngủ, chúng ta thường bị mấy ông thầy dụ dỗ “Kiến thức căn bản quan trọng lắm, nắm vững căn bản rồi sau này học gì cũng được!”.
Mấy năm sau, chúng ta lại tiếp tục được nghe “Tư duy lập trình mới quan trọng, ngôn ngữ hay thuật toán chỉ là phụ thôi”.
Điều này đôi khi làm sinh viên “loạn” vì không biết thật sự “căn bản” là những cái gì; “tư duy lập trình” mặt mũi nó ra sao, làm sao để rèn luyện nó?
Bài viết này sẽ cùng vén bức màn bí mật về những thứ gọi là “căn bản” và “tư duy lập trình” mà giang hồ thường nhắc đến.

Kiến thức căn bản gồm những gì?

Đây là những kiến thức cơ sở nhất, là những viên gạch đặt nền móng cho kiến thức sau này (VD như: thuật toán cấu trúc dữ liệu, OOP, vòng lặp, đệ qui, callback, 1 số mô hình MVC MVVM, cơ chế hoạt động của web, …).
Vì chúng là kiến thức nền tảng, mang tính học thuật nhiều nên đôi khi khá là phi thực tế và buồn ngủ. Chắc hẳn ai cũng từng nhức đầu đau não khi nghe các thầy giảng về sự kiện, con trỏ hàm, cây nhị phân, đệ qui… .
Tuy nhiên, nếu nắm vững những kiến thức nền tảng này, bạn sẽ thấy việc chuyển đổi qua lại giữa các ngôn ngữ khác nhau rất dễ dàng, vì chúng được xây dựng dựa trên nền tảng chung. (Như bản thân mình, vì đã rõ cơ chế GET/POST, giao tiếp giữa client/server, mô hình MVC, mình có thể học nhanh Zend của PHP, Struts2 của Java, ASP.MVC của C#).
Trường đại học chủ yếu dạy những kiến thức này, do đó đôi khi bạn sẽ thấy chương trình học khá khô khan. Hãy nhớ điều mình từng học khi xem phim kiếm hiệp thời xưa, để học được võ công thượng thừa, phải rành những chiêu thức cơ bản trước. Những chiêu thức hoa mĩ đều từ cơ bản mà ra cả.

Tư duy lập trình là cái chi chi?

Tư duy lập trình là một thứ hơi … hư cấu vì chưa ai thấy mặt mũi nó như thế nào cả. Có người bảo rằng tư duy lập trình là thuật toán, học thuật toán và giải bài tập cho giỏi thì nhiều thì tư duy lập trình sẽ giỏi.
Cá nhân mình nghĩ, tư duy lập trình bao gồm tư duy giải quyết vấn đề và tư duy để chuyển cách giải đó thành code.
Tư duy giải quyết vấn đề sẽ giúp bạn phân tích vấn đề thành những vấn đề nhỏ hơn, xem xét những phương án giải quyết phù hợp, lựa chọn phương án tối ưu. Sau khi đã chọn được phương án thích hợp, ta phải biết cách tư duy để chuyển phương án này thành code.

Ví dụ như với ứng dụng Nhận Diện Idol, vấn đề đặt ra là: làm sau nhận diện được tên idol dựa vào hình ảnh đưa vào. Mình dùng tư duy để tìm ra hướng giải quyết gồm ba bước:
  1. Tìm API nhận diện khuôn mặt
  2. Xây dựng cơ sở dữ liệu mẫu gồm các JAV Idol để so sánh
  3. Dựa trên CSDL đã có, dùng API để huấn luyện cho máy nhận diện
  4. Khi đưa ảnh vào, dùng API để nhận diện ảnh, tra cứu trong CSDL đã có
Sau khi đã tìm được hướng giải quyết, mình mới bắt đầu viết code để hiện thực từng bước thôi.
Để rèn luyện tư duy này, cách duy nhất là suy nghĩ nhiều, lập trình nhiều. Muốn cơ bắp to thì bạn phải tập gym chứ không thể xem tạp chỉ thể hình. Muốn chịch giỏi bạn phải chịu khó chịch chứ không phải chỉ xem JAV là giỏi.  Tương tự, muốn rèn luyện tư duy lập trình thì phải chịu khó lập trình nhiều chứ không phải chỉ đọc sách là được.

Căn bản quan trọng cỡ nào?

Căn bản rất quan trọng, nhưng các bạn đừng đặt tư tưởng là “phải nắm vững căn bản rồi mới làm!”. Việc học căn bản khá nặng nề, mệt mỏi và buồn ngủ. Đừng cố gắng nắm vững căn bản ngay từ đầu, khó lắm! Cứ bắt tay vào thực hành đi, việc trực tiếp code sẽ giúp bạn ngộ ra nhiều điều, giải đáp những điều bạn chưa rõ khi học căn bản.
Ngoài ra, bạn cũng đừng mang tư tưởng học căn bản cho xong là ngừng, từ nay mình giỏi rồi, học ngôn ngữ mới dễ òm, chả cần học thêm gì nữa.
Tại sao vậy? Kiến thức thay đổi, đôi khi có những thứ căn bản cũng sẽ thay đổi theo. Giả sử bây giờ giang hồ không sử dụng OOP nữa, mà chuyển qua Functional Programming. Lúc này, đống căn bản về OOP sẽ trở nên vô dụng hết.
Ngoài ra, có nhiều thứ vượt lên căn bản, phải đào sâu tìm hiểu và tiếp xúc lâu dài với công nghệ thì mới ngộ ra được.

Kết

Xét cho cùng “căn bản” vốn chỉ là căn bản thôi. Nó chỉ là một cái nền. Có nền móng vững chắc sẽ rất tốt, nhưng nếu nhà mà chỉ có nền mà không có tường, không có điện nước thì cho tiền cũng không ai dám ở. Một cái cây có bộ rễ vững chắc có thể chống chọi được bão tố, nhưng nếu nó cứ chăm chút dinh dưỡng cho bộ rễ thì sẽ không vươn cao vươn xa được.
Các mẫu phỏng vấn tuyển dụng cũng không ai thêm chữ “căn bản” vào nội dung tuyển dụng, mà họ tuyển người có những kĩ năng cần thiết, kiến thức về công nghệ. Do đó, đừng quá bám rễ vào căn bản, cũng đừng đua đòi chạy theo công nghệ mà hãy biết uyển chuyển thay đổi cho phù hợp nhé.
Share on Google Plus

About Sơn Nguyễn

Chào các bạn mình là Sơn mình là một lập trình viên đam mê với khoa học máy tính. Đây là facebook của mình "ngoài ra mình có làm youtube partner các bạn sub kênh youtube của mình để xem hướng dẫn về CNTT nhé " Cảm ơn các bạn đã ghé thăm blog của mình. Bạn có thể xem mình là ai ở đây

0 nhận xét: