Biết nhiều ngôn ngữ lập trình chưa chắc đã là giỏi!

 Chắc hẳn khi bắt đầu tìm hiểu về công nghệ thông tin (CNTT), ai cũng đã có lúc băn khoăn không biết nên học ngôn ngữ nào bây giờ, học framework này liệu có hợp lý không. Tưởng như đơn giản, nhưng cũng giống như “hôm nay ăn gì”, việc tìm đáp án cho câu hỏi này nhiều khi cũng khá là đau đầu.



- Tuy nhiên, việc quá tập trung vào chuyện “học gì” có thực sự quan trọng đến thế?

Cũng giống như việc ngoài chợ có quá nhiều thứ để chọn, thì ngành CNTT cũng có quá nhiều ngôn ngữ lập trình, thư viện và framework có thể học.


Nhắc đến ngôn ngữ lập trình thì phải kể đến Python, JavaScript, Java, C#… là những ngôn ngữ phổ biến nhất hiện nay. Dựa trên chúng, hàng loạt các thư viện và framework được sinh ra, ví dụ Python có Flask, Django, TensorFlow; JavaScript thì có React, Angular, Vue; hay như Java thì là Spring và Struts.


Đấy mới chỉ là những thứ được biết đến nhiều nhất. Hàng ngày còn rất nhiều công cụ khác được tạo ra mà chúng mình không thể nào biết hết được. Mỗi công cụ lại có những điểm mạnh và điểm yếu riêng. Python, JavaScript hay những ngôn ngữ kịch bản (scripting languages) khác thường được chọn vì cú pháp đơn giản dễ dùng, nhưng có nơi lại dựa trên Java, C# để xây dựng các hệ thống lớn. Ngoài ra R, Matlab thường xuyên được dùng trong Data Science, còn trong lập trình nhúng thì C hay C++ được sử dụng rất nhiều.


Mỗi lĩnh vực CNTT lại cần đến một hệ sinh thái riêng. Nhưng thật ra, việc chọn công nghệ nào để phát triển sản phẩm lại nên là vấn đề với các senior developers và doanh nghiệp. Còn đối với các bạn sinh viên sắp và mới ra trường, định hướng mới nên là mối quan tâm hàng đầu. Bạn muốn trở thành một AI Engineer, một Web Developer, hay làm gì cũng được miễn là có tiền?


Có những bạn bắt đầu học lập trình thì bị ngợp bởi những băn khoăn như thế này:

A: Mình sẽ chọn học C, vì C hay được dạy ở trường!

B: Không, chọn Golang hay hơn vì nghe nói lập trình ngôn ngữ này được trả lương cao!

C: Sao không chọn PHP, Python vì nhiều công ty đang tuyển developer ở vị trí này (như Got It chẳng hạn)?


Mình đã từng đọc một bài viết khá hay của bạn Phạm Huy Hoàng (toidicodedao) về vấn đề lựa chọn ngôn ngữ, trong đó tác giả có nhắc đến việc nhiều người đang coi ngôn ngữ như một thứ tôn giáo. Chính vì các bạn đó lúc nào cũng nghĩ lựa chọn của mình là tốt nhất dẫn đến việc chia phe phái và tranh cãi một cách thiếu tôn trọng nhau (bạn nào cũng đang làm thế thì hãy suy nghĩ lại xem liệu có nên hay không nhé).


- Hay ta cứ học mỗi thứ một ít, thay vì bận tâm chuyện “học gì”?

Cũng có một số bạn thay vì băn khoăn không biết nên học gì thì lại chọn học mỗi thứ một ít. Việc này mặc dù đem đến một cái nhìn tổng quan hơn về các công cụ khác nhau, nhưng ngược lại, cũng có những mặt trái nhất định.


Đầu tiên phải kể đến việc sử dụng một cách thiếu hiệu quả tài nguyên cá nhân, ở đây có thể hiểu là công sức, thời gian, và tiền bạc.


Thật ra, việc đánh giá công sức bỏ ra là tương đối khó, vì khả năng học và tiếp thu của mỗi người là khác nhau. Nhưng thời gian thì khác. Mỗi người đều chỉ có 24 tiếng một ngày. Nếu bạn dành thời gian để học nhiều công cụ thì đương nhiên sẽ có ít thời gian để đào sâu, nắm chắc được bất cứ một thứ cụ thể nào. Thêm vào đó, nếu bạn có ý định đầu tư cho những khoá học thì nên cân nhắc xem liệu có nên bỏ chi phí để tìm hiểu nhiều công cụ khác nhau, trong khi rất có thể là sau này bạn sẽ chỉ sử dụng duy nhất một trong số chúng.


Bên cạnh đó, điều nguy hiểm hơn chính là việc biết nhiều công cụ nhưng lại không thực sự hiểu sâu cái nào. Có lẽ tình trạng các bạn sinh viên mới ra trường liệt kê rất nhiều kỹ năng trong CV không phải là hiếm. Thế nhưng, việc cố gắng học thật nhiều ngôn ngữ và frameworks chỉ để làm đẹp CV đôi khi lại vô tình khiến các bạn trở nên “tự tin thái quá” khi nghĩ rằng cái gì mình cũng biết.


Không những thế điều này còn là con dao hai lưỡi, có thể hại lại chính bạn trong một buổi phỏng vấn. Việc để nhiều từ khoá vào trong CV càng khiến cho nhà tuyển dụng có nhiều thứ để hỏi, và khi không nắm chắc kiến thức thì hỏi đâu cũng là đánh vào điểm yếu. Giả dụ vào một ngày đẹp trời bạn có may mắn được nhận, thì việc mà bạn không hiểu rõ cái mình đang làm rất có thể sẽ gây tổn thất lớn cho cả bạn và công ty.


- Vậy nên chọn công cụ để học như thế nào cho hiệu quả?

Chắc hẳn các bạn đã nghe đến câu “nhất nghệ tinh, nhất thân vinh”, hay “một nghề cho chín còn hơn chín nghề”, mình thấy rất thích hợp để áp dụng trong trường hợp này. Nói một cách đơn giản hơn, bạn chỉ cần tập trung vào một ngôn ngữ lập trình hay framework, dành thời gian thành thạo công cụ đó, thì những sản phẩm bạn làm ra sẽ có chất lượng và được đánh giá cao hơn. Theo mình, để chọn được công cụ thích hợp, bạn nên lưu ý hai điều sau:


+ Đầu tiên, hãy chọn cái giúp bạn thực hiện tốt việc cần làm.

Bất cứ ngôn ngữ, thư viện, hay framework nào thì cũng đều là công cụ, mà công cụ là để đạt được mục đích. Ví dụ nếu bạn muốn phát triển game, hãy chọn công cụ có hiệu năng tốt, tốc độ cao. Còn khi hiệu năng không phải là ưu tiên hàng đầu, chẳng hạn như khi phát triển một ứng dụng web, thì bạn có thể cân nhắc những công cụ dễ dùng, có tính mở rộng và bảo trì cao.


+ Tiếp theo, bạn nên cân nhắc việc chọn một công cụ phổ biến.

Những công cụ như thế thường sẽ có tài liệu hướng dẫn tốt, đầy đủ, và sẵn nhiều câu hỏi cụ thể trên Stack Overflow, điều này sẽ giúp thời gian học của bạn được rút ngắn.

Ví dụ như Python, ngôn ngữ chính được sử dụng trong hệ thống Backend ở Got It. Chính nhờ việc có rất nhiều tài liệu tốt, nên HR Lead của Got It mới đây cũng đã xuất sắc hoàn thành khoá học Python chuyên sâu của Coursera. Những công cụ phổ biến còn có điểm mạnh là được cập nhật thường xuyên, tức là lỗi sẽ nhanh chóng được sửa và hiệu năng thì càng ngày càng được cải thiện.


+ Cuối cùng, hãy chọn những công cụ xuất hiện nhiều trong các bản mô tả công việc.

Việc tập trung vào học những công cụ đó sẽ giúp bạn: có lợi thế ở vòng CV screening, tăng khả năng được gọi phỏng vấn; không ngại những câu hỏi chuyên sâu và hóc búa ở vòng kỹ năng cứng (nhờ đã nắm chắc kiến thức); ghi thêm điểm ở vòng kỹ năng mềm (nhờ thái độ học tập tốt)


Bạn cũng nên dành thời gian cho những mảng khác trong ngành, ví dụ như rèn luyện thuật toán để tối ưu code, nghiên cứu DevOps để có thêm kiến thức về quá trình triển khai và giám sát hệ thống, hay tìm hiểu thêm những xu thế công nghệ mới như AI.

Ngoài ra, các kỹ năng mềm như tiếng Anh, giao tiếp, thuyết trình, làm việc nhóm… cũng vô cùng quan trọng, nhất là khi bạn đã đi làm. Đừng nghĩ rằng làm dev chỉ cần biết code nhé, vì chính suy nghĩ đó sẽ ghìm chân bạn trước những cơ hội thăng tiến và phát triển bản thân đấy!

Ntech Developers

Programs must be written for people to read, and only incidentally for machines to execute.

Post a Comment

Previous Post Next Post