Đọc tiêu đề thì có vẻ thừa, vì nhiều anh Cốt Đờ bây giờ tự tin lắm, nói tao có thể học 1 ngôn ngữ mới hay một công nghệ mới chỉ trong 3 ngày tới 1 tuần là có thể làm được dự án. Đồng ý với anh là như vậy, nhưng nếu như không có Google hay Stackoverflow thì anh có dám mạnh mồm vậy không? Vậy làm sao để giảm phụ thuộc vào Google hay Stackoverflow mà vẫn học và làm một cách hiệu quả nhỉ?Cốt Đờ chúng ta thường có một thói quen xấu là cần cái gì là Google cái đó khiến cho Google bây giờ là một động từ. Mặc dù Google rất hữu ích trong việc tìm cách giải quyết vấn đề nhưng dần già ta sẽ quá phụ thuộc vào nó mà không chịu đi sâu vào bản chất hay suy nghĩ về những thứ ta đang làm. Với Stackoverflow cũng vậy, nếu một ngày trang web này không còn nữa có lẽ không ít Cốt Đờ khóc trời như mất vợ, mất người yêu thậm chí là bạn nhậu lâu năm.Đi từ thực tế đó và kinh nghiệm nhiều năm Google cũng như tự học những thứ "mới" thì tôi có thể đưa ra được 1 số điều mà theo tôi là hữu ích cho Coder học công nghệ mới cũng như giảm sự phụ thuộc vào Google và Stackoverflow.

1. Hãy học cơ bản

Mọi ngôn ngữ, công nghệ đều xuất phát từ những điều rất cơ bản của Khoa Học Máy Tính nói chung và ngành Công Nghệ Phần Mềm nói riêng. Nếu bạn hiểu mã máy, bạn có thể viết ra mọi thứ. Tất nhiên tôi biết bạn không đủ trình độ đó, nhưng theo tôi những thứ dưới đây bạn cần "phải biết" nếu bạn là một Cốt Đơ Pờ Rồ chính hiệu. Nếu không có thì bạn chỉ có Đơ chứ chưa có Cốt đâu.

Cấu trúc dữ liệu và giải thuật: Môn học cơ bản mà bất cứ sinh viên nào học ngành IT đều phải học qua. Nếu bạn không phải sinh viên IT thì cũng nên học vì nó không chỉ là lý thuyết mà còn là thứ phát triển tư duy rất tốt. Tôi không phải là một người giỏi môn này lắm, nhưng cũng đang cố để học nó một cách bài bản.

Lập trình hướng đối tượng: Trừ mấy ngôn ngữ không hỗ trợ ra thì nếu bạn đang học (làm) một ngôn ngữ hỗ trợ OOP thì hãy học nó thật chắc ngay và luôn. OOP rất rộng và sâu, trong khi hầu hết các ngôn ngữ hiện đại đều hỗ trợ OOP thậm chí là thuần tuý OOP thì việc phải học nó là điều bắt buộc. Tôi đã từng cảm thấy cực khổ khi chuyển từ C sang Java vì tôi hoàn toàn không hiểu OOP là gì và tại sao cú pháp của Java lại như vậy.

Design Pattern: Cái này không dễ tuy nhiên nếu bạn muốn trở thành Pro thì tất lẽ dĩ ngẫu là phải học. Design Pattern là thứ chung chung và bạn có thể áp dụng được trên nhiều ngôn ngữ và công nghệ khác nhau. Cho nên nếu thành thạo Design Pattern thì bạn có thể dễ dàng bê Code và thiết kế của mình từ ngôn ngữ này sang ngôn ngữ khác một cách dễ dàng mà không gặp quá nhiều khó khăn.Tất nhiên là bạn sẽ khó mà thành thạo mấy thứ trên chỉ trong thời gian ngắn, nhưng nếu có thời gian hãy chau dồi chúng từng ngày, mưa dần thấm lâu thôi. Đấy là tôi còn chưa đi sâu vào các môn của Khoa Học Máy Tính như Logic, Toán Rời Rạc, AI… Có quá nhiều thừ và ta chỉ nên giới hạn nó để mà học.

2. Hãy đọc sách và xem các khoá học hơn là đọc TUT.

Có thể bạn nói là bạn không có thời gian đọc sách, OK vậy bạn hãy xem lại cách đọc sách của mình trước rồi hãy đọc tiếp. Bạn sẽ không thể tiến xa và trờ lên Pro nếu như bạn không đọc bất cứ cuốn sách nào. Tin tôi đi, hãy cứ gặp những người bạn thấy Pro và xin họ 1-2 đầu sách tin học, tôi tin là bạn sẽ có 1 đống. Đừng xin tôi nhé, nếu không bạn sẽ bị bội thực đó, vì tôi có quá nhiều sách. Thật đó, không đùa đâu, tôi có thể suggest cho bạn sách ở bất cứ ngôn ngữ, công nghệ nào của ngành IT.

Quảng cáo chút vậy thôi, ý tôi muốn nói là đọc sách rất quan trọng với dân IT, vì một số lý do như:

  • Sách viết đầy đủ, chi tiết
  • Sách có hệ thống rõ ràng
  • Sách nhiều khi do tác giả của ngôn ngữ, công cụ viết ra nên chắc chắn là nó sẽ bám sát ý tưởng mà ngôn ngữ và công cụ ấy được viết ra.
  • Sách chắt lọc rất nhiều kinh nghiệm của người viết, vì thường người có kinh nghiệm rất lâu và rất giỏi họ mới xuất bản sách cho các bạn đọc.

Với kinh nghiệm của tôi thì với mỗi ngôn ngữ, công nghệ bạn nên tìm vài ba quyển cùng đọc 1 lúc. Đọc nhanh mục lục, Index, nội dung chính của từng sách và đi vào đọc 1 cuốn, sau đó đọc sang các phần có liên quan ở các cuốn còn lại để xem các tác giả khác nhau viết về cùng 1 chủ đề như thế nào. Như vậy bạn sẽ có được góc nhìn đa chiều và nhiều kinh nghiệm và lời khuyên hơn. Việc đọc như vậy cũng khá nhanh và không quá khó.

Tôi nói đọc sách "hơn là" đọc TUT có nghĩa là tôi vẫn coi trọng việc đọc TUT vì một số ngôn ngữ, công nghệ mới ra chưa có sách xuất bản thì lúc nào TUT rất phát huy tác dụng. Ngoài ra thì có nhiều kinh nghiệm không quá dài để có thể viết thành sách, hoặc tác giả không muốn xuất bản sách thì TUT là một lựa chọn hợp lý. Giống như việc tôi đang ngồi đây viết cho các bạn đọc, thì cũng coi như các bạn đang đọc TUT vậy.

Ngoài Sách và TUT ra thì có một nguồn mà mọi người hay sử dụng bây giờ là các khoá học Online, trả phí có, miễn phí lại còn nhiều hơn. Tôi nghĩ rằng với các khoá học hiện giờ có thể cung cấp cho bạn 1 cái Overview rất tốt về ngôn ngữ và công nghệ mà bạn định học. Tôi có thể kể tới như Udemy, Pluralsight, Lynda, Livelessons… Đấy là các trang phần lớn phải trả phí. Ngoài ra thì trên Coursera và EDX, Khan Academy cũng có rât nhiều khoá IT miễn phí và hay, Youtube cũng cả rừng cả biển. Tí quên còn anh bạn mới nổi Udacity. 😀

3. Tìm trang chủ và tài liệu gốc

Thường thì các ngôn ngữ và công cụ đều xây dựng 1 trang Home Page mà ở đó người xem có thể tìm được rất nhiều tài nguyên. Thông thường sẽ bao gồm TUT và Document. Điểm khác nhau giữa 2 cái đó là TUT thường xây dựng theo dạng Step by Step, tức là nếu bạn làm theo TUT thì bạn sẽ xây dựng được một ứng dụng đơn giản dựa vào ngôn ngữ và công cụ đó. Tôi nghĩ các bạn làm theo các TUT ở trang chủ này vì đơn giản nó là Official và hầu như làm theo thì 100% là thành công. Thứ 2 là Document, nó là 1 mớ hổ lốn rất nhiều thứ, có thể gồm cả TUT trong đó, hoặc có thể là bảng tra cứu các hàm, lệnh, command… nhưng dù chứa cái gì thì nó cũng rất Official và bạn nên Follow vào nó để học cũng như tìm lời giải cho vấn đề mà bạn gặp phải, đơn giản như tìm 1 hàm thực hiện việc in ra màn hình chả hạn =)). Câu trả lời cuốn cùng của câu hỏi "lấy lệnh này ở đâu" luôn là "ở Document".

4. Sử dụng Cheatsheet.

Đây là một cụ vô cùng hữu ích mà tới tận khi đi làm tôi mới biết. Thực ra có rất nhiều Cốt Đơ nhiều năm kinh nghiệm nhưng cũng chả bao giờ dùng tới cái này. Nếu bạn không biết thì Cheatsheet là bảng hoặc 1 danh sách ngắn chứa thông tin như câu lệch, syntax, config… của một ngôn ngữ hay công nghệ. Thay vì phải nhớ hàng chục lệnh Git chả hạn, thì bạn hãy kiếm cái Git Command Cheatsheet, in nó ra và dán nó và chỗ mà bạn có thể nhìn thấy khi làm việc. Vậy là mỗi khi bạn cần khởi tạo một dự án bằng Git thì bạn không cần phải Google nữa mà chỉ cần nhìn vào tờ Cheatsheet ở trước mặt bạn và ồ "nó là git init". Đơn giản phải không nào.

5. Sử dụng sơ đồ tư duy.

Đây là một phương pháp hình ảnh hoá kiến thức, nó không có gì cao xa cả, chỉ là một biểu đồ dạng cây với gốc là vấn đề mà ta cần tìm hiểu hoặc giải quyết. Ở đây sẽ là ngôn ngữ và công cụ. Tôi sẽ không dậy bạn cách vẽ sơ đồ tư duy như thế nào nhưng tôi sẽ nói cho bạn biết là nó thực sự hữu ích khi bạn muốn ghi chú lại những điều mà bạn đã học được và hệ thống nó để sau này có thể xem lại cũng như nhớ được chi tiết và lâu hơn.

6. Sử dụng các Document offline

Đầy là một thứ cũng quan trọng khi bạn không có mạng Internet hoặc đơn giản là công ty của bạn cấm vào Internet trong giờ làm chả hạn… Bạn có thể tải các Document Offline của ngôn ngữ hay công cụ mà bạn học về máy và xem dần dần lúc không có mạng. Ngoài ra thì bạn có thể sử dụng DevDocs, đây là một công cụ lưu trữ tài liệu Offline trên trình duyệt Chrome (các trình duyệt khác tôi không rõ). Với DevDocs bạn có thể xem tài liệu Online hoặc tải nó về để xem Offline. Nó cung cấp rất nhiều tài liệu, TUT và cả Function, API Reference. Quả thực nó là một công cụ mà bạn không nên bỏ qua.

7. Tìm điểm chung giữa các công nghệ.

Tôi đưa phần này xuống cuối vì nó là một phần phụ thôi, nhưng tôi tin là nó sẽ giúp ích cho bạn trong việc tìm ra hướng để tiếp cận một ngôn ngữ hay công cụ mới. Theo như kinh nghiệm của tôi thì các ngôn ngữ hay công cụ mới bây giờ, và kể cả đã có từ trước cũng đều có những thứ chung được liệt kê dưới đây:

  • Syntax, Function: Cái này thì đầu tiên bạn học ngôn ngữ chắc chắn là phải biết rồi. Ngôn ngữ nào thì cũng có mấy lệnh in ra, nhập vào, xử lí chuỗi, mảng… Đọc qua 1 lượt, nắm những cái mà mình hay dùng ở ngôn ngữ đó.
  • Dependency Manager: Các công nghệ và ngôn ngữ hiện đại bây giờ đều có 1 trình "DM" cho mình. Ví dụ NodeJS có NPM, PHP có Composer, Java có Maven, Python có PIP và Ruby có Gem… Nếu bạn hay dùng DM thì khi tiếp cận công nghệ nào cũng nên tìm hiểu luôn cái "DM" của nó là gì.
  • Build Tool: Cũng giống như DM ở trên, tôi có thể liệt kê. NodeJS có Gulp, Gunt, trong Java có Ant, PHP có Phing, Ruby có Rake…
  • Database Migration: Giờ cái nào mà chả có nhỉ? PHP thì vô bờ bến, có thể kế đến như Phinx, Doctrine… Thường thì mỗi Framework cho một công nghệ sẽ có 1 cái riêng, mà không có tên để gọi.OK tạm vậy cũng thấy đủ tìm hiểu rồi. Bài viết đã quá dài và có lẽ cả người viết lẫn người đọc đều không muốn nó dài hơn nữa. Cảm ơn bạn đã cố gắng đọc tới cuối bài.