Video hướng dẫn, các khóa học online đang dần trở thành những nguồn tài nguyên hữu ích cho developer chúng ta, những người cần liên tục cải thiện, làm mới kiến thức. Chuyện một gã giữa đêm khuya ngồi code theo một gã khác trong máy tính đã trở nên phổ biến, phổ biến đến mức nhiều người lầm tưởng rằng đó là cách học code, cách cải thiện kĩ năng lập trình hiệu quả nhất. Xem nào… Mình không nghĩ vậy.
Phải công nhận rằng việc code theo ai đó để tạo ra được một sản phẩm đem đi khoe thật sự hấp dẫn. Còn gì vui hơn việc bạn có thể tạo ra một trang web đem đi khoe bạn bè chỉ trong vài đêm code theo? Điều mà bạn không thể tự mình làm trong thời gian ngắn như vậy.
Đó chính là vấn đề, vấn đề nằm ở chỗ bạn không thể tự mình làm ra sản phẩm đó, nhưng việc code ra được sản phẩm khiến bạn nghĩ rằng bạn thật sự làm được nó. Để biết được khả năng lập trình của bạn có được cải thiện hay không thông qua việc code theo video, trước tiên chúng ta phải hiểu xem lập trình thật sự là gì?
Lập trình thật sự là gì?
Bạn định nghĩa lập trình như thế nào? Theo mình, lập trình chính là việc bạn tạo ra thứ gì đó từ hư không. Rõ ràng, từ một ý tưởng vu vơ, bạn cần làm cho máy tính hiểu được ý tưởng đó và làm theo những gì bạn muốn.
Với định nghĩa của mình ở trên, rõ ràng code theo video chẳng phải là lập trình. Bởi vì bạn không tạo ra thứ gì từ hư không cả, cái bạn đang làm đã được tạo ra sẵn bởi gã trong máy tính rồi, bạn chỉ đang copy hắn mà thôi.
Nếu nó không phải là lập trình thì làm sao nó có thể giúp chúng ta cải thiện khả năng lập trình? Bạn không thể chạy tốt hơn thông qua việc ngồi xem các vận động viên chạy trên TV. Bạn không thể có cơ bắp đẹp hơn thông qua việc đọc sách thể hình, trừ khi bạn áp dụng những kiến thức đó vào tập luyện thực sự. Bạn không thể sex tốt hơn thông qua xem phim sex. Tương tự với lập trình.
Có phải các video dạy lập trình đều vô dụng?
Không, chúng khá hữu ích. Nhưng chỉ hữu ích ở một mức độ nào đó mà thôi.
Theo mình, khả năng code của chúng ta thông thường được chia làm 2 phần theo tỉ lệ 2/8.
Phần thứ nhất là cú pháp ngôn ngữ, những kiến thức cơ bản của một ngôn ngữ, framework nhất định. Nếu xem “khả năng lập trình” của bạn là thang 10 thì phần này chiếm 2. Nó cũng giống như việc bạn học chơi thể thao, giả sử bóng chuyền chẳng hạn, bạn sẽ được học cách đệm bóng, phát bóng, đỡ bước một… Rõ ràng biết hết các kĩ thuật đó không có nghĩa rằng bạn là một tay bóng chuyền thực thụ.
Phần còn lại, chiếm 8. Phần này là khả năng giải quyết vấn đề, fix bug, sáng tạo, kinh nghiệm… Những gì tinh túy nhất của một developer nằm ở phần này. Và nó sẽ quyết định “khả năng lập trình” của bạn.
Như vậy, việc code theo video chỉ giúp bạn cải thiện được phần đầu tiên. Có nghĩa là nó chỉ hữu ích trong giai đoạn ban đầu khi bạn mới học lập trình. Những kiến thức cơ bản ban đầu là những gì bạn có thể học được từ việc code theo. Sau đó, khi bạn đã nắm được những kiến thức cơ bản của một ngôn ngữ, công nghệ nhất định thì cho dù bạn có code theo hàng trăm video, có hàng trăm sản phẩm đi nữa, bạn cũng chẳng thể vượt được con số 2.
Một vài lý do
Code theo không đồng nghĩa với code
Như mình đã định nghĩa ở trên, code hay lập trình là quá trình chúng ta tạo ra một thứ gì đó từ hư không. Code là cả một quá trình.
Quá trình đó bao gồm việc bạn cần đọc hiểu yêu cầu khách hàng, yêu cầu của task được giao, từ đó xử lý logic. Tiếp theo đó bạn cần học cách thiết kế cấu trúc chương trình, tách module, phân chia function, class một cách hợp lý… Tiếp theo nữa là debugging, testing…, cùng đủ thứ lằng nhằng khác.
Code theo video chẳng giúp được gì trong những điều mình vừa nêu cả. Tất cả những điều quan trọng nhất bạn cần rèn luyện đã được làm bởi gã trong máy tính. Từ việc nhỏ nhất là cách đặt tên biến, tên hàm cho đến những logic phức tạp nhất, tất cả đều là hắn làm, sau đó hắn nói với bạn rằng “khóa học kết thúc và bạn đã có thể tự tạo cho bản thân được một sản phẩm như chúng tôi đã cam kết”.
Cuộc sống không dễ dàng như thế
Khả năng quan trọng nhất của một developer, như mình đã nói trước đây, đó là khả năng giải quyết vấn đề. Mọi thứ xung quanh chúng ta đều là vấn đề, một ứng dụng trong thực tế có vô số vấn đề cần giải quyết. Đôi khi chỉ một dòng code là đủ để khiến bạn tốn cả đêm tìm hiểu, nghiên cứu để giải quyết nó. Thế nhưng tại sao mấy tay trong video chẳng bao giờ gặp lỗi, hay có vấn đề khó khăn cần giải quyết? Có 2 lý do, thứ nhất là bởi họ chỉ làm những ứng dụng cơ bản, không thể sử dụng trong thực tế được, vì vậy cũng chẳng gặp vấn đề gì nhiều. Thứ hai là có thể họ đã gặp lỗi trong quá trình code, nhưng đã tìm hiểu, giải quyết nó sau đó mới đưa lên video.
Đây là lý do tại sao một vài bạn khi mới đi làm thường rơi vào trạng thái “trầm cảm”. Họ thường lẩm bẩm “thế quái nào code đến đâu lỗi đến đó, ở nhà làm theo có bao giờ lỗi đâu?”.
#ntechdevelopers