Bài viết này không chỉ dành cho người mới bắt đầu học, đây cũng là kinh nghiệm theo thời gian của mình tôi dành cho những người anh em đi sau đang bắt đầu công việc đào tạo của mình. Hi vọng bài viết này sẽ giúp cả 2 đối tượng giảm được đáng kể thời gian học tập, tìm tòi phương pháp đào tạo hơn so với tôi vì chi phí cho thời gian và tuổi thanh xuân rất đắt giá. Mặc dù bài viết này tôi tập trung với các ví dụ về 2 phương pháp học lập trình nhưng nếu bạn là 1 nhà đào tạo hay người học đều có thể tham khảo.

Tôi không đề cập đến khía cạnh chi phí trong đào tạo nhiều và giả sử ta đã đạt được thỏa thuận tốt nhất làm thỏa mãn được đối tượng người học lẫn nhà đào tạo, điều còn lại là lựa chọn phương pháp đào tạo phù hợp.

Các phương hướng học tập nói chung hay học lập trình nói riêng đều có sự hiện diện của 2 cách thức tiếp cận cơ bản tuy trái ngược nhau nhưng lại có thể bổ sung cho nhau, 2 phương pháp này bao gồm:

  • Học theo ứng dụng: hay còn được biết là học từ trừu tượng đến chi tiết, các biến thể mang tính thực tiễn cao như học bằng ví dụ (case-study), học theo chiều từ dễ đến khó, từ ứng dụng cụ thể đến nền tảng, nguyên lý. Trong trường hợp của chúng ta là học sử dụng công nghệ cao, các thành phần có sẵn để tạo thành sản phẩm.
  • Học nền tảng, nguyên lý: hay còn được biết là học từ chi tiết đến trừu tượng, biến thể như học từ căn bản, nền tảng cho đến ứng dụng. Bạn thường nghe nói đến C/C++, giải thuật, kiến thức mạng máy tính, … được coi như nền tảng của lập trình.

Mỗi hướng học lập trình nêu trên lại thể hiện ra các nhược điểm và ưu điểm khác nhau, do đó cần nhìn nhận diện vấn đề để bạn có thể loại bỏ các nhược điểm đó, mang lại hiệu quả học tập tốt nhất. Các đối tượng cũng phù hợp với 1 phương pháp, tùy vào các thời điểm, kinh nghiệm, kiến thức khác nhau mà họ cảm nhận phù hợp với phương pháp học tập nào hoặc đôi lúc kết hợp linh động cả 2.

Sau đây là 1 số đặc điểm của 2 hướng tiếp cận đối với người học và đối với nhà đào tạo.

Phương pháp học theo ứng dụng

Với phương pháp này, ta cần có các ví dụ có tính ứng dụng và dùng nó đề dạy và học.

  • Do người học chưa có kiến thức nền tảng để tạo ra các ứng dụng đó ngay nên các nhà đào tạo phải lựa chọn các công cụ có sẵn (framework, engine, tool), các thành phần (component) hoặc thậm chí cả 1 sản phẩm đã thành hình để người học có thể tiếp cận lắp ráp, điều chỉnh (trường hợp bạn sử dụng WordPress để phát triển website là 1 ví dụ tốt).
  • Con đường cho nhà đào tạo đi từ nền tảng để chế tạo, lựa chọn các ý tưởng, công cụ, và tạo ra sản phẩm mẫu để việc học sinh động, dễ nhìn thấy tính ứng dụng.
  • Về phía người học có được các ví dụ cụ thể sẽ có được cảm hứng học tập, nhanh chóng nhìn thấy tính thực tiễn, tuy nhiên ở phương pháp này bạn không thể đòi hỏi hơn việc hiểu được nguyên lý cấu thành nên các thành phần mà người đào tạo đã trao cho bạn, vì nguyên lý đó lại nằm ở phương pháp đào tạo từ nền tảng.
  • Cách học này phù hợp với phần đông người, dễ dàng phổ cập và dễ học hơn.

Các ví dụ

Học sinh ở các cấp học như tiểu học sử dụng Lego hoặc lập trình Scratch.
Ngôn ngữ lập trình Python, JavaScript chứa nhiều thành phần cao hỗ trợ thao tác ra kết quả cụ thể nhanh hơn C/C++. Nếu bạn đã từng tiếp cận HTML bạn sẽ càng thấy rõ điều này.

Phương pháp học nền tảng, nguyên lý

Phương pháp này nhận được sự ủng hộ từ nhiều người có kinh nghiệm khi đề cao việc học lập trình từ nền tảng – có căn bản vững chắc sẽ dễ dàng học tập lên phía trên hoặc tăng khả năng tự học, tự nghiên cứu. Tuy nhiên không hẳn tất cả mọi người đều cần thiết phải đi sâu về nguyên lý, có thể theo hướng học tập ứng dụng để dễ dàng tiếp cận người dùng.

Cũng như phương pháp trên, phương pháp này có các đặc điểm sau:

  • Tốn nhiều công sức cho đào tạo và học tập.
  • Thời gian rèn luyện lâu dài, tốn nhiều công sức cho việc rèn luyện tư duy, logic.
  • Không nhìn thấy kết quả mang tính ứng dụng sớm.
  • Học cách xây dựng mọi thứ từ đầu.
  • Phù hợp với những ai có hứng thú về việc trả lời các câu hỏi “tại sao”.
  • Công việc phù hợp với việc tối ưu các hệ thống lớn khi nắm bắt được nguyên lý.

Chỉ phù hợp với những người có niềm đam mê trước đó.

Các ví dụ

  • Đôi lúc bạn có những thắc mắc về các công cụ như Photoshop, Word hay trình biên dịch được tạo ra như thế nào, với nguyên lý bạn có thể phần nào làm rõ hơn bức tranh đó.
  • Khi xây dựng ứng dụng, có những lỗi mà công nghệ cao để lại, bạn có thể chủ động hơn trong việc chỉnh sửa nó.

Không có phương pháp nào là tốt nhất, mà chỉ có phương pháp phù hợp tại thời điểm cụ thể, chính các doanh nghiệp cũng cần cả 2 loại trên hoặc sẽ sắp xếp các kỹ sư vào vị trí phù hợp. Bạn cũng không cần lo lắng rằng nếu học nền tảng sẽ không có được khả năng đáp ứng công nghệ mới hoặc lo lắng rằng bạn chỉ sử dụng công nghệ tốt nhưng không hiểu về nguyên lý. Con người sinh ra có được tính tò mò, khi đã đủ hiểu biết trong "phân khúc kiến thức" của mình sẽ tự khai phá lên phía trên, hoặc đào sâu xuống phía dưới để tiếp tục thỏa mãn nhu cầu học hỏi và phát triển bản thân. Điều quan trọng lúc này là bạn phải BẮT ĐẦU.

Khi lựa chọn 1 hướng học tập, bạn cũng dễ dàng lựa chọn sai hướng tiếp cận phù hợp với bản thân và dẫn đến tốn kém thời gian và tiền bạc. Do đó, bạn cần tìm kiếm những người có kinh nghiệm để được tư vấn, kiểm tra năng lực trước để có phương hướng học phù hợp hơn.

Hi vọng với những năm tháng đào tạo lập trình và phát triển sản phẩm tại STDIO của tôi có thể làm đòn bẩy giảm thiểu thời gian cho các bạn.

Tác giả bài viết - La Kiến Vinh