Em có biết tí về python cơ bản và muốn đi theo hướng Back-end, vậy ngoài python ra còn phải học thêm ngôn ngữ nào khác khi làm về Back-end nữa không ạ ?
Học Back-end có nên học nhiều ngôn ngữ
bạn có bao giờ nghe ai nói là không nên học nhiều ngôn ngữ lập trình chưa?
Có bài viết của toidicodedao, cũng có nói về vấn đề này
Còn quan điểm của mình thì có nhiều thời gian thì học nhiều ngôn ngữ nhưng không tốt bằng học sâu một ngôn ngữ. Các cụ mình xưa vẫn có câu “một nghề cho chín còn hơn chín nghề” mà
vậy em có biết chút ít về python r thì nên học sâu python hả a
học sâu một ngôn ngữ là tất yếu bạn ạ
có lẽ bác này sẽ có những lời chia sẻ đúng đắn hơn mình @library ( mình xin mạn phép tag bác nhé)
không và không, ở ĐH mình học quá nhiều ngôn ngữ dẫn đến chả giỏi cái gì mà công ty cần 1 người master 1 thứ gì đó, cái ngôn ngữ mình tự tin nhất là js thì do mình tự học ở nhà
Cảm ơn @vmd2113 vì đã nhớ tới tớ nha
Có chứ cậu Có rất nhiều vấn đề xảy ra khi cậu làm việc bên back-end, mà 1 ngôn ngữ không thể giúp cậu giải quyết tất cả vấn đề đó.
Ngôn ngữ lập trình là một công cụ để giải quyết vấn đề. Càng nhiều hiểu biết về các ngôn ngữ khác nhau, cậu càng có:
- Nhiều cách để giải quyết các vấn đề khác nhau, với phạm vi rộng hơn.
Ví dụ, cậu đã biết python, điều đó giúp cậu có thể tạo ra các script nhỏ để giải quyết rất nhiều task con, như chuyển dữ liệu giữa các DB/server, invalidate stale cache, etc…, cũng như cậu có thể nhanh chóng tạo ra một trang portal nho nhỏ giải quyết vấn đề điều khiển các job batch, bằng cách sử dụng Flask. Đó là một vài vấn đề xảy ra trong quá trình cậu làm việc (như xây dựng hệ thống nào đó).
Nếu cậu biết thêm javascript, cậu có thể viết các script sử dụng trong postman để làm những thứ mà không user cơ bản nào có thể tưởng tượng, hay nếu cậu biết golang, cậu có thể làm rất nhiều task với Kubernetes.
Con người là loài sử dụng tool. Cậu càng biết nhiều tool, cậu càng có thể giải quyết được nhiều vấn đề hơn. - Cậu sẽ biết nhiều concept hay ho từ một ngôn ngữ, thứ có thể áp dụng khi cậu chuyển sang ngôn ngữ khác.
Nếu cậu học Haskell/Clojure/Lisp, cậu sẽ biết functional programming và sức mạnh của nó. Khi cậu chuyển sang các ngôn ngữ khác, đôi khi cậu sẽ là người xây dựng ra các high-order function nho nhỏ để tiện cho việc tái sử dụng code, giúp tiết kiệm công sức của cả team.
Biết nhiều rất có ích đúng không?
Tuy nhiên, có một cạm bẫy cho cậu. Ở giai đoạn mới bắt đầu, nếu cậu dành quá nhiều thời gian để học rất nhiều ngôn ngữ mới, cậu sẽ rơi vào pitfall.
- Cậu biết nhiều thứ không có nhiều tác dụng trong công việc của cậu.
Nếu cậu muốn làm back-end engineer, nhưng lại đi học HTML và CSS, thậm chí là C vì nghe ai đó nói back-end engineer nên biết thứ này. Kết quả là cậu biết một thứ gần như vô dụng để giải quyết các vấn đề khi làm back-end. - Cậu biết nhiều thứ ở mức rất cơ bản, nhưng không giỏi cái nào cả. A.k.a cậu quá sa đà vào học các ngôn ngữ mới, hơn là mài dũa kỹ năng với 1 ngôn ngữ.
Điều này khiến cho cậu thiếu hiểu biết về 1 công cụ để có thể giải quyết các vấn đề thực sự phức tạp. Cậu đánh giá 1 kỹ sư rất giỏi về Scala, có thể xây dựng một hệ thống phức tạp bằng ngôn ngữ này, tốt hơn hay kém hơn một kỹ sư có hiểu biết cơ bản về 20 programming language ở mức viết được một app cơ bản như quản lý sinh viên?
Vậy nên
Học back-end có nên học nhiều ngôn ngữ
Câu trả lời là cậu nên học những ngôn ngữ giúp cậu giải quyết các vấn đề mà cậu gặp phải khi làm back-end, nhưng nên học sâu về 1 ngôn ngữ trước khi học các ngôn ngữ khác (học những khía cạnh về practice của ngôn ngữ, các công nghệ đi cùng ngôn ngữ đó,…).
Đừng học thứ gì đó mà cậu không có cơ hội, hoặc không có dự định dùng nó trong công việc (trừ khi nó cho cậu rất nhiều ý tưởng cho công việc của cậu). Điều đó rất lãng phí đấy!
Trong TH của cậu:
- Nếu cậu thích python, và dự định sử dụng python trong công việc back-end sau này, cậu nên học thật tốt Python, sử dụng nó như primary language của cậu, và tập làm thật nhiều back-end app sử dụng nó.
- Trong quá trình cậu làm, cậu sẽ sớm nhận ra có những task phức tạp mà sử dụng Python rất khó xử lý, lúc đó, học các ngôn ngữ khác chuyên xử lý vấn đề đó (well, cậu phải làm tương đối nhiều mới tới được mức này, vì đa số các vấn đề đơn giản đều có thể xử lý bằng python).
Lúc đó, cậu nên học ngôn ngữ mới intensively. - Nếu như cậu chưa biết cậu thích ngôn ngữ gì, nhưng vẫn muốn làm back-end, cậu nên học 1 ngôn ngữ mainstream cho back-end. Java/C#/etc… có thể là ứng cử viên tốt cho cậu.
- Sau khi cậu biết tương đối nhiều về primary language của cậu, cậu nên pick secondary language cho mình. Cố gắng đừng chọn secondary language tương tự như primary language (ví dụ như nếu cậu biết python, thì cậu không nên học thêm Ruby, trừ khi cậu có lý do đặc biệt), mà cậu nên chọn một ngôn ngữ giúp cậu cover nhiều task hơn.
Chẳng hạn, nếu cậu biết Java/C# - 2 ngôn ngữ rất mạnh với lượng thư viện hùng hậu, nhưng không tiện lợi để viết script, thì cậu nên học thêm 1 scripting language khác như Python. Nó sẽ giúp cậu giải quyết được rất nhiều vấn đề khi cậu làm việc.
Cậu cũng có thể chọn nhiều secondary language, và phụ thuộc vào thứ mà cậu muốn/đang làm việc cùng, cậu sẽ chọn nó. Chẳng hạn, nếu cậu làm việc nhiều với Redis, cậu nên học Lua script, hay nếu cậu làm việc nhiều với Emacs, cậu nên học Lisp. - Nếu cậu muốn trở thành programming language master, và sau này đi dạy học chẳng hạn, cậu nên học nhiều ngôn ngữ nhất có thể
Thực ra, sẽ không quá khó để cậu học 1 ngôn ngữ nào đó, nhưng sẽ rất khó để cậu học sâu sắc một ngôn ngữ. Vậy nên, tớ highly recommend cậu nên chắc chắn primary language của cậu, và mở rộng các secondary language liên quan tới các vấn đề mà cậu quan tâm
Hope it helps!
Vọc sâu 1 ngôn ngữ để hiểu thuật toán với tư duy là chính bác ơi, sau vào CV thì sếp bẩu cần join dự án dùng gì thì học chuyển ngữ cái ấy nhanh thôi
Bạn mới biết python cơ bản thôi nên có thể dành thêm thời gian học sơ qua các ngôn ngữ backend khác nữa, vd Java, C#, PHP chẳng hạn. Rồi mới chọn ngôn ngữ mình thích nhất để chuyên sâu vào nó (đừng vì chỉ biết python nên mới chuyên sâu python).
Sau khi chuyên sâu đủ thời gian, bạn hiểu được ngôn ngữ bạn chọn có hạn chế gì, thì bạn mới học thêm một ngôn ngữ khác cover phần yếu đó. Ví dụ mình học Java backend, làm thời gian thấy nó ăn bộ nhớ, cpu ghê quá, lại nghe thiên hạ đồn golang chạy nhanh, nhẹ và simple nên mình học thêm golang.