Chào các bạn,
Như bạn đã biết thì công nghệ đang thay đổi một cách chóng mặt, cứ vài bữa là lại có một framework mới hoặc một ngôn ngữ lập trình mới ra đời. Ví dụ như Javascript, cách đây khoảng 10 năm người ta biết đến javascript như là một ngôn ngữ lập trình chạy trên các trình duyệt web, có tác dụng "làm màu" là chủ yếu, có ai nghĩ rằng Javascript bây giờ ngoài dùng để lập trình cho frontend, nó còn để lập trình cho backend (Nodejs), app mobile (React Native). Hay như cuộc chiến giữa các framework PHP, trước kia CodeIgniter, Zend, CakePHP chiếm được rất nhiều tình cảm của các anh em web developer, còn bây giờ Laravel mới thật sự là nhất.
Với sự thay đổi nhanh chóng như vậy, buộc các developer như chúng ta phải thường xuyên update công nghệ thì mới đáp ứng được nhu cầu của xã hội. Nhưng khổ đã 8 tiếng đi làm mỗi ngày (chưa kể OT) thì lấy thời gian đâu ra để mà đuổi theo công nghệ đây, hoặc với những bạn developer với vào nghề muốn học thêm một công nghệ mới nhưng lại loay hoay không biết bắt đầu từ đâu. Biết nhiều bạn gặp phải tình trạng như vậy, thế nên mình mới viết bài viết này với mục đích chia sẻ với các bạn cách để học một công nghệ mới sao cho nhanh và hiệu quả.

Tìm trang chủ

Công nghệ nào thì cũng sẽ có một website chính thức (gọi là trang chủ). Ví dụ Laravel thì có trang laravel.com, Vuejs thì có vuejs.org, Nuxtjs thì có nuxtjs.org... Thế cho nên, bước đầu tiên để tìm hiểu về một công nghệ mới là bạn phải tìm được trang chủ của nó. Đương nhiên bước này không khó, thế nhưng lại hay bị bỏ qua, đặc biệt là đối với các bạn mới học.
Tại trang chủ, bạn sẽ tìm thấy được những thông tin tổng quan nhất về công nghệ bạn muốn học. Thường thì sẽ có một trang giới thiệu công nghệ đó là gì, công nghệ đó làm gì, tại sao bạn lại cần công nghệ đó và một trang tài liệu chi tiết về cách sử dụng.
Nếu khai thác được hết nội dung trên trang chủ, có thể bạn sẽ không cần phải tham khảo thêm bất kỳ tài liệu nào khác.

Nó là gì và nó làm gì?

Nó ở đây chính là cái công nghệ mới mà bạn muốn tìm hiểu. Việc hiểu nó là gì và nó làm gì, sẽ giúp bạn đánh giá được tầm quan trọng của công nghệ này đối với bản thân. Liệu bạn có thật sự cần nó trong dự án sắp tới của mình hay không? Bởi có rất nhiều các thư viện, framework có tính năng tương tự nhau, nếu bạn đã biết một cái tương tự rồi, thì cũng có thể cân nhắc bỏ qua công nghệ này. Ví dụ như mình biết sử dụng Vuejs thì mình sẽ thôi tìm hiểu Reactjs, đã biết PHP thì sẽ thôi tìm hiểu Asp.net, biết Laravel rồi thì thôi tìm hiểu CackePHP,...
Việc bỏ qua một công nghệ không có gì là xấu đâu nhé, nó cũng không thể hiện bạn là một người lười không chịu tìm hiểu, mà nó thể hiện bạn là một người thông minh, biết học một cách có chọn lọc.
Nhưng nếu đây là một công nghệ mới tinh với bạn, và bạn biết bạn cần nó, thì không có lý do gì để bạn bỏ qua cả.

Cộng đồng developer nói gì về nó

Nếu như bạn đọc các thông tin được giới thiệu trên trang chủ, bạn sẽ chỉ tìm thấy những ưu điểm của công nghệ đó. Đương nhiên rồi, chẳng ai làm ra mà lại đi chê sản phẩm của mình cả. Vì vậy bạn phải tham khảo thêm ý kiến của các developer khác thì mới có được đánh giá khách quan nhất.
Để tìm kiếm được ý kiến của cộng đồng developer thì không khó, nếu công nghệ bạn đang tìm hiểu có một repo trên github thì hãy xem lượt star có nhiều không, lượng issues open có nhiều không, stackoverflow có nhiều câu hỏi không,.. hoặc bạn có thể đặt câu hỏi trên các diễn đàn về lập trình, các group facebook cho developer, tham khảo các bài viết đánh giá trên google,... Như hồi nodejs mới nổi nên, mình thường hay google các từ khóa như "so sánh nodejs với PHP", "đánh giá nodejs"... nhờ việc tìm hiểu như vậy nên mình biết được cộng đồng nodejs chưa lớn lắm ở Việt Nam (năm 2015) nên lúc đấy mình tạm ngưng chưa học nodejs vội, mà đợi nó phát triển thêm đã rồi mới học.
Khi bạn tham khảo ý kiến từ cộng đồng, chắc chắn sẽ có hai luông ý kiến: 1 là ủng hộ, 2 là không ủng hộ. Bước này, bạn phải thật sáng suốt để biết được nên nghe theo phe nào.

Tìm tài liệu Tiếng Việt

Là một developer, mình khuyên bạn nên có khả năng đọc tài liệu Tiếng Anh. Tuy nhiên nhiều developer có rất tâm, họ thường dịch các tài liệu về công nghệ sang Tiếng Việt, để các developer mờ Tiếng Anh khác (như mình) có thể hiểu được. Chưa kể đến nếu công nghệ bạn tìm hiểu là một công nghệ đã có từ lâu như PHP, mySQL, Laravel, Wordpress thì các tài liệu Tiếng Việt luôn có sẵn, có điều chúng thường cũ hơn so với tài liệu hiện tại, nhưng vẫn đủ dùng nếu bạn mới bắt đầu tìm hiểu.
Công thức để tìm tài liệu Tiếng Việt, đó là google với các từ khóa:
  • Hướng dẫn học xxx cho người mới bắt đầu
  • Học xxx
  • Tìm hiểu về xxx
  • Ebook xxx
Với xxx là tên công nghệ bạn muốn tìm hiểu.

Tìm tài liệu Tiếng Anh

Nếu không thỏa mãn với các tài liệu Tiếng Việt tìm thấy, thì hãy thử tìm tài liệu Tiếng Anh. Bạn biết đấy, số lượng người nói Tiếng Anh trên thế giới nhiều hơn số lượng người nói Tiếng Việt rất nhiều, thế nên tài liệu Tiếng Anh cũng sẽ có nhiều hơn tài liệu Tiếng Việt. Đặc biệt với các công nghệ mới, thì tài liệu Tiếng Việt gần như là không có. Thế nên hãy cố gắng học cách đọc Tiếng Anh nhé.
Việc đọc từ tài liệu Tiếng Anh tuy có hơi khó hiểu, nhưng bù lại thông tin bạn nắm được là thông tin chính xác nhất bởi vì các tài liệu dịch sang Tiếng Việt có thể bị sai, hoặc không truyền đạt được hết ý nghĩa của tài liệu gốc.
Từ khóa để tìm kiếm tài liệu Tiếng Anh là:
  • Learn xxx for beginner
  • XXX tutorial
  • How to learn xxx

Thực hành một demo nhỏ

Nếu như bạn cứ loay hoay mãi với đống lý thuyết, thì chắc chắn bạn sẽ không thể học nổi. Thay vào đó, hãy bắt tay vào thực hiện một demo nhỏ, nó sẽ giúp bạn hiểu rõ hơn về công nghệ bạn đang học. Gì chứ đối với lập trình, thì cứ phải lập trình mới ra vấn đề. Một vài demo kinh điển để thực hiện có thể là:
CURD: Là viết tắt của Create Update Read Delete, tức là một demo có các tính năng Thêm, Sửa, Xóa, Liệt kê một đối tượng nào đấy, ví dụ như CURD sản phẩm, CURD nhân viên, CURD tin tức,... Đây là một loại demo rất hay bởi vì bạn sẽ học được tất cả các thao tác insert, update, query, delete - đều là những thao tác cơ bản trong bất kỳ dự án lớn nhỏ nào.
Đăng ký / Đăng nhập / Quên mật khẩu: Đây là những tính "quốc dân" có mặt trên hầu hết các sản phẩm phần mềm, thế nhưng với sự giúp đỡ của các thư viện hay cms, thì ngày nay các developer ít phải "động tay" tới tính năng này, cho dù nó là tính năng rất phổ thông. Nếu bạn chưa bao giờ tự tay xây dựng tính năng đăng nhập / đăng ký / quên mật khẩu, thì hãy thử làm ít nhất một lần nhé. Sẽ có rất nhiều cái hay đấy.
Chat / Nhắn tin: Hằng ngày chúng ta nhắn tin trên điện thoại, chat trên messenger, chat trên zalo, bình luận trên facebook,... Nói chung là chúng ta tiếp xúc với dạng tính năng này rất nhiều, vậy thì bạn cũng nên tìm hiểu về cách tạo một ứng dụng chat / nhắn tin như thế nào chứ nhỉ.
Todo list: Đây là một dạng demo được rất nhiều các developer trên thế giới yêu thích, bởi tính đơn giản, dễ hiểu, nhưng lại áp dụng được nhiều khía cạnh của công nghệ. Chính vì thế mà có hẳn một trang web todomvc.com - cung cấp sẵn các demo todo list nhưng lại thực hiện bằng các công nghệ khác nhau, nhờ có vậy mà developer có thể dễ dàng tiếp cận, cũng như so sánh công nghệ mình đang tìm hiểu với các công nghệ còn lại.

Chọn một người thầy

Thầy ở đây không nhất thiết phải là người đứng trên bục giảng, giảng bài cho bạn nghe. Thầy ở đây có thể là một người bạn, người anh, đồng nghiệp hoặc chỉ đơn giản là một người bạn quen biết trên mạng xã hội. Chỉ cần họ nhiệt tình với bạn, giúp bạn trả lời những thắc mắc, đưa ra cho bạn từ khóa, hướng giải quyết khi bạn gặp khó khăn là đủ. Chứ đừng làm phiền họ đến mức phải team view cho bạn, gửi tài liệu cho bạn, rồi phải trả lời những câu hỏi mà chỉ cần google 15s là ra. Và cũng đừng quên nói lời cảm ơn sau mỗi lần được giúp đỡ nhé.
Lúc đầu, câu hỏi của bạn sẽ được "thầy" giải đáp một cách rất nhanh chóng, nhưng càng về sau "thầy" trả lời càng chậm lại, vì lúc này câu hỏi của bạn đã khó hơn, thậm chí khó tới mức "thầy" cũng không biết. Nếu tới mức như vậy, thì chứng tỏ bạn đã có tiến bộ, đã đạt được một cảnh giới nhất định, chứng tỏ bạn đã nắm được phần nào về công nghệ bạn học.
Mình đã từng áp dụng cách này hồi mới chập chững học lập trình, và thấy rất hiệu quả. "Thầy" của mình là một người bạn trên facebook, tụi mình chẳng quen biết nhau ngoài đời thực, chỉ chat với nhau qua messenger. Thế nhưng bạn ý rất nhiệt tình trả lời các câu hỏi của mình, đưa ra cho mình nhiều khái niệm mới, nhờ có vậy mà mình tiết kiệm được rất nhiều thời gian so với việc từ tìm hiểu.

Tìm một khóa học

Nếu bạn không phải là một người có nhiều thời gian hoặc có khả năng tự tìm hiểu, thì cách tốt nhất là hãy tìm lấy một khóa học. Ngày nay có rất nhiều các trung tâm đào tạo lập trình, hình thức học online có, hình thức học offline có, trả phí có, miễn phí có, chất lượng tốt có mà chất lượng... tồi cũng có.
Theo học một khóa bài bản, có thể không phải là cách nhanh nhất, nhưng là cách tốt nhất để bạn biết về công nghệ bạn muốn học.

Lời kết

Trên là một số cách mà bản thân mình trải qua và tự đúc kết, hy vọng sẽ giúp được các bạn đang vướng mắc trong việc học công nghệ mới. Qua đây, mình cũng muốn nhắn nhủ rằng "công nghệ update, thì bạn cũng phải update", nếu không một ngày nào đó bạn sẽ bị thụt lùi so với mọi người, và bị xem là "tối cổ công nghệ".
Trong lập trình, chỉ có một hằng số không bao giờ thay đổi. Đó là "Sự thay đổi".
(*) Github: là một nền tảng giống như một mạng xã hội cho các developer, tại đây mọi người có thể chia sẻ các dự án với nhau, mỗi một dự án chia sẻ trên Github được gọi là 1 repository (gọi tắt là repo)
(*) Github star: giống như facebook thì có nút like để đánh giá độ quan tâm của người dùng, thì Github star là tiêu chí đánh giá repo đó có tốt hay không.
(*) Github issues: giống như một nơi để lại các feedback của người sử dụng repo, thường nó là nơi để đặt câu hỏi, báo lỗi cho repo đó.
(*) Stackoverflow: là nền tảng hỏi đáp dành cho các developer, đây là một nền tảng rất nổi tiếng, các developer thường nói "Nếu Stackoverflow không trả lời được, thì cũng không ai trả lời được".
Tham gia FB group thảo luận lập trình với mình nhé