Bài viết guest post của bạn Thành Nguyễn

Học xong vòng lặp, xâu chuỗi ký tự str, list, hàm các kiểu rồi, học gì nữa bây giờ?

Đầu tiên cần xác định Python chỉ là một phần trong các môn học, và ở góc độ vĩ mô hơn thì nó giống như hạt cát vậy.

Hãy học các môn học nền tảng cho tốt đã:

Kiến trúc máy tính:

Năm nào cũng có câu hỏi từ thời tiền sử là tại sao 0.1 cộng 0.2 không bằng 0.3. Ngôn ngữ lập trình nào thì cũng bị thôi, vì nó là góc độ kiến trúc máy tính, tìm hiểu thêm về IEEE754 là hiểu rõ. Tốt hơn thì tìm hiểu thêm về tràn số, xử lý trên bit.

Lập trình Hướng đối tượng (OOP):

Tìm hiểu về class, method, static, private public, kế thừa các kiểu kèm với 4 nguyên lý. Bạn Thành đánh giá OOP chưa được vận dụng nhiều khi làm với Python (mặc dù ở bên dưới mọi thứ đều là object/class). Điều quan trọng là học OOP để lĩnh hội được tư duy, triết lý để sau này áp dụng cho tất cả mọi thứ, ví dụ như khả năng tổng quát hóa, gom nhóm, phân rã vấn đề, xây dựng quan hệ giữa các đối tượng ==> mindset tốt khi cần module hóa, project phình to lên.

Cấu trúc Dữ liệu và giải thuật:

Phù hợp với những bạn học đội tuyển Tin, lập trình thi đấu các kiểu. Học ở góc độ vận dụng xoay quanh dictionary/map, set, hàng đợi queue, ngăn xếp stack, các thể loại list (array, linked…), mấy cái này Python hỗ trợ tốt. Dĩ nhiên bạn nào học Đại học thì học sâu hơn ở góc độ lý thuyết & cài đặt càng tốt.

Xong nền tảng thì tiếp theo là cái gì? Tùy vào định hướng:

Nếu muốn nâng cao hơn về kỹ thuật và ngôn ngữ python:

Học về cài đặt package; đệ quy; structural pattern matching; reference/pointer; list/set/dict… comprehension; exception; tính chất mutable và immmutable; advanced collections; context manager protocol; decorators; virtual environment; về hàm thì có args và kwargs, type hint; về string thì có f-string, format string, encoding; về file thì có file nhị phân, shutil; bổ trợ thêm cho OOP thì có magic methods, metaclass; về functional thì có lambda, map, filter, reduce, iterator, generator, itertools; tìm hiểu về Jupyter Notebook…

Nếu muốn nâng cao hơn về mật phần mềm hoặc là hướng viết tool tự động hóa:

Nên học về multithreading, multiprocessing và các kỹ thuật đi kèm nhất là đồng bộ hóa synchronization; làm web thì HTTP REST, Flask hoặc Django; database; Selenium; crawl cào dữ liệu, thu thập dữ liệu; các lệnh về process và xử lý thư mục/file, gọi lệnh shell & lấy giá trị trả về; i meo i mủng… Nói về GUI thì có tkinter và pyqt, học những control widget cơ bản là đủ dùng. Nói về game thì có pygame là nổi tiếng nhưng bạn Thành cho rằng dùng Python để làm game là không phù hợp, nếu có rèn luyện thì nên tập trung vào tư duy và xử lý đồ họa, sâu hơn thì hiểu cơ chế double buffer càng tốt.

Nếu muốn làm về mảng khoa học như AI, Machine Learning, Data Science:

Theo hướng này kiểu gì cũng nên nắm chặt “tam trụ” gồm numpy, matplotlib và pandas, đều là những thư viện cực phổ biến cho Python. Bạn sẽ học hằng hà sa số các nội dung chuyên môn, lý thuyết nền tảng, Toán (nhất là Xác suất thống kê và Đại số tuyến tính), các mô hình, regex (sẽ tốt nếu làm về xử lý văn bản)… Mỗi một chuyên môn sẽ có lộ trình riêng, ví dụ như theo nghề Data Analyst thì modeling, truy vấn dữ liệu SQL và NoSQL, kể ra một câu chuyện và visualize, Excel, PowerBI, Tableau, v.v…

Có 3 ý quan trong nên nhớ:

  • Học Python thì dễ nhưng học sâu Python thì khó.
  • Tùy vào mục tiêu, lựa chọn nội dung để học cho hợp lý (đừng có học hết mấy cái bạn Thành liệt kê ở trên), nếu đã học thì xác định học để vận dụng hay học ở mức độ sâu hơn về lý thuyết.
  • Làm gì thì làm cũng phải có project đi kèm. Làm ra sản phẩm hay cái gì đó lớn lớn thì mới đánh dấu cột mốc trên quá trình phát triển. Học hàng tấn lý thuyết mà chưa ra được một sản phẩm gì thì chưa thật sự lĩnh hội được kiến thức.

Trên đây là phần chia sẻ của bạn Thành - một người không có chuyên môn về Python, công việc hàng ngày không đụng gì đến Python, chỉ đơn giản là bạn Thành vận dụng tốt Python phục vụ mục đích cá nhân. Do đó bạn chỉ nên tham khảo, tin tưởng một ít thôi nhé.