Tiếp cận công nghệ, ngôn ngữ mới cho Cốt Đờ
Đọ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 ...
Đọ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.
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.
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.