Kmin Academy

Nền tảng có thật sự quan trọng khi học lập trình?

Điều gì cản trở bạn trong việc học lập trình? Hay điều gì khiến bạn chưa trở thành 1 lập trình viên chuyên nghiệp? Hãy đọc thử bài viết này nhé.

11/06/2021

Mình có trò chuyện nhiều với các bạn đang học lập trình web và các bạn đang làm việc fresher/junior web developer và thấy điểm yếu và cũng là nổi sợ của hầu hết các bạn là:

1. Cấu trúc dữ liệu và giải thuật

Đúng rồi, chính nó - "Data structure and algorithms" (D&A), nổi ám ảnh của không ít các bạn sinh viên ha.

Điều gì ngăn cản bạn nuốt trôi nội dung kiến thức này? Đó chính là những niềm tin (định kiến) sau:

  • Thuật toán khó nhằn, khô khan, lý thuyết. --> Chỉ là chúng ta chưa học đúng cách và chưa tìm đúng thầy mà thôi.
  • Học danh sách liên kết, cây này, rừng nọ làm gì, có thấy áp dụng trong ReactJS, NodeJS gì đâu. --> Ờ, tại chưa thấy thôi, vì khi bạn thấy, lương của bạn đã là một con số khác.
  • Mấy cái này dành cho bọn giỏi nó học. --> Vậy nghĩa là bạn chấp nhận mình không giỏi? Thật ra, đây là kiến thức cơ bản mà bất kỳ lập trình viên xuất sắc nào cũng có.

Code chạy được thì ai cũng có thể viết, vậy điều gì tạo nên sự khác biệt của một lập trình viên? Đó là: Tư duy giải quyết vấn đề Đây cũng là mục tiêu quan trọng nhất của học phần này. Vì cùng một vấn đề, sẽ có nhiều giải pháp. Sự khác nhau nằm ở chỗ giải pháp nào hay và phù hợp cho dự án. Một số tiêu chí được xem xét như: độ chính xác, sự tối ưu về thời gian thực thi và bộ nhớ lưu trữ, ... Hmmm, toàn là những tiêu chí đánh giá cho một chương trình tốt. Chả trách mấy công ty công nghệ toàn test ứng viên dăm ba cái thuật toán học cả đời không hết. 😂

2. Phương pháp lập trình hướng đối tượng

Nếu "Cấu trúc dữ liệu và giải thuật" cho chúng ta tư duy giải quyết vấn đề thì "Phương pháp lập trình hướng đối tượng" (OOP) cho chúng ta tư duy hệ thống về việc tổ chức mã nguồn. Mọi người cũng hay bỏ qua hoặc học đại khái món OOP này, khiến cho việc học code gặp nhiều khó khăn vì không hiểu được bản chất đằng sau những dòng code. Và rồi, chúng ta sẽ chấp nhận làm theo như một lẽ dĩ nhiên (vì code mẫu viết thế) mà không biết vì sao phải làm như vậy.

Ví dụ như trong HTML DOM, tại sao lại là element.style.backgroundColor mà không phải là element.backgroundColor, document.getElementsByClassName('demo') có gì khác document.querySelectorAll('.demo'). Hay như trong ReactJS, tạo một component mới là quất vô cái extend liền. Nó là gì? Có bắt buộc phải có không?

Nếu không hiểu được bản chất code hoạt động thế nào, rất khó để chúng ta viết được những dòng code xịn. D&A và OOP đều là những kiến thức nền tảng, giúp chúng ta có thể đi xa trong sự nghiệp và làm chủ được công nghệ mới. Nếu mọi người đang cảm thấy còn yếu thì cố gắng dành thời gian tự học nha.

Mình đề xuất một số tài nguyên sau để các bạn có thể tìm hiểu và ôn tập nha:

Hay là, một cách đơn giản, nhanh chóng, gọn gàng, vui vẻ, hào hứng là... tham gia khóa học Tư duy lập trình nâng cao với Javascript của Kmin nhé.

Học 3 tháng offline với muôn vàn thứ hay ho, gom lại thì có mấy cái này:

  • Vận dụng thành thạo cú pháp ngôn ngữ lập trình Javascript nâng cao.
  • Hiểu sâu về lập trình hướng đối tượng, các cơ chế nâng cao của function, vấn đề bộ nhớ trong Javascript.
  • Nâng cao tư duy giải quyết vấn đề bằng thuật toán và cấu trúc dữ liệu kinh điển và hiện thực thành công bằng Javascript.
  • Các kỹ năng như trình bày code, quản lý mã nguồn, nghiên cứu, tự học, thuyết trình, …

Vừa học nền tảng mà còn code bằng Javascript nữa, dành riêng cho Web developer luôn đó nha. Gia cố nền tảng --> Gia tăng công lực --> Gia đình hạnh phúc.

Link tham khảo tại đây nhé!