Ngôn ngữ lập trình nào là tốt nhất cho cơ hội nghề nghiệp, lương bổng trong 10 năm tới?

Đây là câu hỏi có 1 câu trả lời rất thú vị của 1 kỹ sư tại Google mà mình vừa đọc được trên Quora tại:

https://www.quora.com/Which-programming-language-has-the-best-career-salary-opportunities-over-the-next-decade

Mình tạm dịch câu trả lời như thế này:

Ngôn ngữ lập trình bạn chọn gần như không ảnh hưởng gì tới cơ hội nghề nghiệp và thu nhập của bạn trong 10 năm tới.

Khi bạn đã học được cách cấu trúc 1 chương trình thì việc học thêm các ngôn ngữ lập trình khác là khá đơn giản. Ngôn ngữ lập trình đầu tiên tôi học là GW BASIC, đó là 1 ngôn ngữ lập trình kinh khủng nhưng nó đã dạy cho tôi những kỹ năng cơ bản để có thể áp dụng vào các ngôn ngữ lập trình khác. Bạn không cần phải gắn mình vào một ngôn ngữ lập trình nào và khi ngôn ngữ lập trình bạn đang sử dụng hiện tại không còn phù hợp cho công việc của bạn thì bạn hoàn toàn có thể dùng cái khác.

Lập trình viên (developer) là những chuyên gia trong việc học các ngôn ngữ lập trình khi cần thiết. Có thể bạn là 1 web developer nhưng khi công ty bạn đang làm quyết định chuyển hướng làm mobile thì bạn phải học thêm Java cho Android hoặc Objective C cho iOS chẳng hạn. Hoặc có khi bạn phải nhúng thêm RoR vào backend của bạn trong khi bạn không dùng RoR trước đó. Trong vòng 30 năm tôi đã học gần 30 ngôn ngữ lập trình. Có thể nói là tôi học mọi công cụ có thể phục vụ cho công việc của tôi.

Hãy nhìn vào số liệu mà các nhà tuyển dụng đưa lên mạng. Các công việc gắn liền với 1 ngôn ngữ lập trình thì 99% thu nhập chênh nhau khoảng 10% thôi, trong khi kinh nghiệm chênh nhau 10 năm (1 thập kỷ) có thể chênh nhau 100%. Do đó, việc bạn dùng ngôn ngữ lập trình nào không quan trọng bằng việc bạn có bao nhiêu kinh nghiệm.

Những công ty như Google không thuê các lập trình viên có những kỹ năng cố định. Google luôn sẵn sàng đào tạo lại nhân viên mới vào. Họ sẵn sàng thuê 1 lập trình viên Perl (ngôn ngữ lập trình đã bị “ban”) hơn là thuê một lập trình viên C++ hạng vừa vừa. Trong thực thế là khi phỏng vấn ứng viên, tôi thường để họ sử dụng ngôn ngữ lập trình nào mà họ thấy thoải mái nhất.

13 Likes

Nhưng những công ty tại VN thì lại lại thuê rất cố định và cụ thể. Họ cần thuê C++ mà mình vào nói là biết Perl và có thể tự học C++ sau thì họ sẽ mời mình biến trong 2 nốt nhạc :slight_smile:

10 Likes

Đó là bạn đang nhìn thấy những công việc dành cho junior thôi. Theo mình tìm hiểu thì ở VN hiện tại, các công việc dành cho senior với mức lương trung bình 1000$ trỡ lên thì họ có yêu cầu thêm hàng tá kỹ năng khác ngoài việc yêu cầu rành 1 ngôn ngữ lập trình cụ thể.

Nhưng đa số vẫn mong tìm được người có hàng tá kỹ năng và quan trọng hết là có sẵn luôn kỹ năng ngôn ngữ họ đang cần. Vì họ không sẵn sàng train lại nhân viên mới. Train một nhân viên mới rất tốn kém. Level của nhân viên này càng cao, chi phí training càng lớn. Họ không có đủ tiền để train một nhân viên mới trừ phi người đó quá xuất chúng. Điều này cũng đúng với nhiều nước khác chứ không phải chỉ VN không.

Google họ có đủ tiền, thời gian, nhân lực để train và quan trọng hơn hết là họ có hàng triệu applicant để chọn, hệ thống tuyển dụng rất khắc khe. Họ đảm bảo thà bỏ sót chứ không tuyển nhầm.

Nói về các công ty khác với Google và các công ty cực lớn như Google thì họ có thể train 3 freshers với giá 7tr * 3tháng = 21tr, train trong 3 tháng là có được 3 người để xài.
Nhưng đối với người có lương 1k USD => 22tr * 2tháng = 44tr, giả dụ người này làm tốt hơn 3 người kia và chỉ cần train trong 2 tháng là được.

Nhưng làm việc này sẽ tạo ra một rủi ro bởi vì khi tuyển người có kinh nghiệm, họ mong đợi người này lead team hoặc làm key member, 2 tháng không nhiều, nhưng sẽ là một rủi ro đối với project nếu người này failed sau 2 tháng.

Đứng ở cương vị người tuyển dụng hoặc project manager, muốn tuyển người giỏi và đồng ý train thì phải có plan từ rất sớm để giảm rủi ro và phải có được approval từ người cung cấp tiền.(Project holder/CEO/COO/Boss các kiểu)


Đạt rất thích idea train lại nhân viên giỏi, nhưng vấn đề là sẽ khó tìm được nhân viên giỏi để train. Cho nên thà bỏ sót chứ không tuyển nhầm.

6 Likes

Tóm lại là cứ học sâu một ngôn ngữ đang thịnh hành thì sẽ có cơm ăn, không cần dự đoán tương lai, không cần bám víu quá khứ. Sẵn sàng học ngôn ngữ mới để đáp ứng yêu cầu.
Không thể dự đoán được 10 năm tới, nhưng C++ cũng đã sống mấy chục năm nay và vẫn phát triển tốt; Java và C# hẳn cũng sẽ sống dai.
Ở VN, việc đào tạo người mới rủi ro rất lớn bởi thị trường nhân sự rối ren, người lao động muốn nghỉ thì sẽ mất công đào tạo, nên thường ăn xổi, mua cái có sẵn khỏi cần gọt dũa.
Với Google, nó quá lớn và tiếng tăm, đa số ứng viên muốn làm cho nó trọn đời. Ngoài việc nó giàu để chịu chi phí training như anh Đạt đưa ra thì nó còn có danh tiếng và rủi ro rất thấp về việc ứng viên nghỉ sau một thời gian ngắn, không kịp thu hồi chi phí đào tạo.

1 Like

Quan điểm về việc đào tạo lại theo kinh nghiệm cá nhân của mình hơi khác chút.

Mình có 1 cty nhỏ, nguồn nhân lực chính là các founder. Kinh phí cho nhân sự chưa nhiều nên chưa thể tuyển các bạn senior.

Do đó, khi tuyển dụng web developer chẳng hạn. Mình sẽ rất quan tâm những bạn đã từng làm các dự án cá nhân, bất kể dùng ngôn ngữ gì và mình chỉ cần kiểm tra 1 chút về tư duy lập trình, nếu thấy ok thì mình sẵn sàng đào tạo (Python hoặc PHP chẳng hạn) để cùng làm.

Còn vấn đề nhân sự ra đi thì theo cá nhân mình, trách nhiệm đầu tiên thuộc về người quản lý. Không thể trách nhân viên được.

Dĩ nhiên nếu mình là người có quyền quyết định thì việc chọn nhân viên tốt, sẵn sàng học cái mới thì Đạt hoàn toàn đồng ý với ý kiến train hơn là chọn người đúng với kỹ năng.

Đạt theo quan điểm ngôn ngữ nào không quan trọng, kiến thức chung về lập trình quan trọng hơn.

Tuy nhiên, ở VN và cũng như nhiều nơi khác, không tính start-up and fast growing companies, thì họ vẫn chọn cách an toàn là tuyển hẳn người đã biết công nghệ/ngôn ngữ mà họ cần. Thay vì tốn tiền train lại.

Câu này mình hoàn toàn đồng ý. Mình cũng đã không đề cập đến vấn đề nhân viên ra đi trong trả lời trước của mình.

2 Likes

Trái lại bạn ơi.
Tuyển Junior thì có thể xuề xòa, yêu cầu nó biết C++ nhưng nó biết C hay C# thôi thì mình cũng vẫn xem xét, thậm chí chả cần nó phải rành ngôn ngữ nào, cho viết pseudo-code, thấy tư duy ổn là ok.
Tuyển Senior thì phải yêu cầu nghiêm ngặt hơn, tôi muốn tuyển anh viết C++ thì anh phải tốt C++. Anh giỏi C#, tốt, nó là điểm cộng, nhưng chỉ có nghĩa khi những thằng ứng viên còn lại trình C++ ngang hoặc thấp hơn anh, còn họ tốt C++ hơn anh nhiều thì chắc chắn phải chọn họ cho vị trí này. Cơm áo không đùa với khách thơ, dự án và khách hàng không đợi bạn học xong rồi mới làm đâu.

Nói chung ở VN là vậy,thực ra hầu hết công ty là vậy. Còn mình thì rất kết cách của Google, ví dụ tuyển Embedded Software Engineer thì nhẹ nhàng vầy thôi, không cần ghi yêu cầu lan man nhiều :v
Experience with embedded Linux.
Experience with embedded systems.
Experience with one or more general purpose programming languages including but not limited to: Java, C/C++, C#, Objective C, Python, JavaScript, or Go.

4 Likes

Mấy công ty ghi yêu cầu đơn giản thường là để dụ cho nhiều ứng viên đến, sau đó sàng như sàng gạo vậy đó :smiley:

1 Like

Xin việc khó thật :frowning:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?