Tin lập trình
nên học 1 hay nhiều ngôn ngữ

Nên học "Một" hay "Nhiều" ngôn ngữ

Gần đây nhận được một số câu hỏi về chuyện “Nên tập trung vào 1 ngôn ngữ hay là học nhiều ngôn ngữ”. Đây là một vấn đề gây khá nhiều tranh cãi trong cộng đồng lập trình viên.
Thật ra, không có câu trả lời đúng cho câu hỏi này! Trong nội dung bài viết, mình sẽ phân tích những điểm lợi/hại của mỗi lựa chọn. Tuy nhiên, lựa chọn cuối cùng vẫn là do bản thân các bạn nhé.
Thật ra, ngay từ đầu các bạn đã đặt sai câu hỏi! Thay vì hỏi “nên học một hay nhiều ngôn ngữ”, các bạn nên hỏi là “nên phát triển bản thân theo chiều rộng (generalist) hay chiều sâu (specialist)?”.
 

Thế nào là biết rộng? Biết rộng thì được gì?

Nhiều bạn lầm tưởng rằng chỉ biết sử dụng nhiều ngôn ngữ/công nghệ, mình sẽ thành người biết rộng. Điều này chỉ đúng một phần thôi. Học rộng có nghĩa là: ngoài việc biết sử dụng nhiều ngôn ngữ/công nghệ, bạn còn phải biết một số thứ ngoài lề khác (lấy requirement, thiết kế giao diện, cài đặt server). Nói cho oách là siêu nhân ôm đủ việc, nói mỉa mai tức thì là ku-li gì cũng làm.
Các cụ có câu “một nghề cho chín còn hơn chín nghề”, nhưng câu này có vẻ không đúng lắm với ngành IT. Khi xây dựng một hệ thống phần mềm, nếu có kiến thức rộng, ta sẽ dễ nắm được cách toàn bộ hệ thống vận hành, giú dễ bảo trì, sửa chữa khi có lỗi xảy ra hơn. Ngoài ra, nếu biết rộng, bạn sẽ có nhiều cơ hội việc làm hơn.

Hiện tại, biết rộng đang dần trở thành xu hướng. Bên cạnh Front-end developer, Back-end developer, nay ta có thêm Full-stack developer. Trước kia Dev (phát triển phần mềm) và Operation (vận hành, bảo trì sản phẩm) được tách riêng ra. Gần đây thì lại gộp luôn là DevOps, developer ngoàiviệc code còn phải biết thêm về setup hệ thống.
 

Thế nào là biết sâu? Biết sâu thì được gì?

Nhiều bạn biết sâu tức là tập trung thời gian vào 1 ngôn ngữ, không học những thứ khác. Thật ra, biết sâu yêu cầu cao hơn nhiều! Biết sâu tức là biết tường tận tường tận mọi ngóc ngách của ngôn ngữ/công nghệ/lĩnh vực nào đó.

Lấy ví dụ JavaScript, biết rộng tức là bạn có thể sử dụng nhiều framework như AngularJS, VueJS, React, … Biết sâu thì đòi hỏi cao hơn. Ngoài việc học/sử dụng framework, bạn còn phải biết về các khái niệm execution stack, lexical scope, closure,… trong Javascript, cách tổ chức code cho 1 project JS lớn, cách optimize khi code chạy chậm.

Nếu thật sự chuyên sâu một ngôn ngữ/công nghệ nào thì bạn sẽ được nhiều công ty săn đón, với lương khá cao. Cứ hỏi mấy bác senior C++ 5-10 năm trở lên xem lương bao nhiêu là biết.

Tại sao lại vậy? Hãy tưởng tượng bạn đang thèm ăn bò bít tết, bạn sẽ chọn nhà hàng A “Phục vụ đầy đủ các món Á Âu”, hay nhà hàng B “Chỉ chuyên bò bít tết”. Dĩ nhiên là nhà hàng B phải không. Nếu cần tuyển chuyên gia cho 1 mảng nào đó, các công ty sẽ ưu tiên người biết sâu hơn.

Tất nhiên bạn cũng sẽ có gặp một số rủi ro. Do chỉ chuyên sâu một ít ngôn ngữ nên có thể bạn sẽ khó tìm được công việc như ý hơn. Ngoài ra, nếu ngôn ngữ/công nghệ của bạn… tử ẹo thì bạn phải bỏ thời gian ra học và chuyên sâu thứ khác.

Ví dụ, các bác chuyên gia Flash và Silverlight (2 công nghệ đã tử ẹo) sẽ rất khó tìm việc, nhưng nếu tìm được thì lương khá cao vì bây giờ ít người rành 2 cái đấy.
 

Vậy người coder phải làm sao?

Như mình đã nói, bài viết chỉ phân tích và định hướng chứ không thể trả lời cho bạn được. Lời khuyên hữu ích nhất mà mình có thể đưa ra là: Hãy phát triển kiến thức theo hình chữ T. Học rộng trước, sau đó mới chuyên sâu vào một lĩnh vực.
Với các bạn sinh viên, ở giai đoạn đầu, bạn sẽ không biết mình giỏi cái gì, yếu cái gì, cần tập trung vào thứ gì. Vậy thì cứ học rộng trước đi đã. Khi đã có chút kinh nghiệm với nhiều ngôn ngữ/công nghệ, bạn sẽ dễ lựa chọn hướng phát triển cho bản thân hơn.
chu t

Một điều cần lưu ý nữa là nếu bạn đam mê startup thì nên ưu tiên “biết rộng”. Ở giai đoạn đầu khởi nghiệp, nhân sự ít, lập trình viên phải có khả năng đa nhiệm, làm đủ việc. Phát triển sản phẩm startup đòi hỏi bạn phải thông tuệ nhiều thứ để vận hành hệ thống trơn trụ. Ngược lại, nếu đầu quân cho các công ty lớn, họ sẽ ưu tiên người có kiến thức tập trung, hiểu sâu vấn đề.
 

Nguồn tin: sưu tầm:

aptech buon ma thuot dao tap lap trinh vien quoc te

 

Ý kiến bạn đọc

Tham gia thảo luận

Mã an toàn Mã bảo mật   

Những tin mới hơn

Ngôn ngữ lập trình C năm 2019. Có nên học hay không?
Điểm khác nhau giữa sinh viên và nhân viên Ngành Lập trình?
Kỹ thuật phần mềm là gì? Có nên học kỹ thuật phần mềm hay không?
Lộ trình học quản trị mạng tại Aptech Buôn Ma Thuột như thế nào?
8 Project bạn có thể Code luyện kỹ năng ngành Lập trình

Những tin cũ hơn

Bốn sai lầm các bạn sinh viên / Lập trình viên hay mắc phải khi mới đi làm
Giải mã: Các hiểu lầm về Lập trình
Developer là gì? Mức độ hiểu biết của bạn về Developer như thế nào?
Top 10 Code Editor - trình soạn thảo code tốt nhất 2019
Những ưu điểm vượt trội của khóa học Lập trình viên Quốc tế ACCP