Đồng nghiệp vừa biết rằng tôi sẽ rời khỏi công ty. Đa phần ai cũng hiểu lý do vì sao tôi lại nghỉ việc.
Điều khiến họ khó chịu đó là trong khi công ty là cửa hàng Windows nhưng họ lại viết code trong môi trường C#.net. Còn tôi, tôi được chuyển sang phát triển môi trường Linux – bộ phận mà ngôn ngữ lập trình chính lại là Java. Sự thay đổi trong ngôn ngữ này khiến tôi cảm tưởng rằng mấy năm kinh nghiệm của mình đều "vứt".
Ai cũng đồng ý với điều đó.
Hiện nay có hàng trăm ngôn ngữ lập trình. Vài trong số đó rất phổ biến như Java, C#, PHP, Ruby, Python và JavaScript; một số khác lại đang mất dần vị thế hoặc còn khá mới như Al, Go, Julia hay Rust. Thế nên, tôi bắt đầu tự hỏi mình rằng liệu chúng ta – các coder có thực sự cần học nhiều hơn một ngôn ngữ?
1. Có nhiều cách để giải quyết cùng một vấn đề và việc biết nhiều ngôn ngữ khác nhau sẽ cho bạn khá nhiều lựa chọn. Sau cùng, khi bạn có "một chiếc búa" thì mọi thứ chỉ là "cái móng tay" mà thôi.
2. Bạn phù hợp với nhiều vị trí hơn nên bạn có nhiều cơ hội nghề nghiệp hơn. Đôi khi, học thêm một ngôn ngữ mới có thể giúp bạn tăng gấp đôi số lượng công việc mà bạn có thể ứng tuyển. Tuy nhiên, điều này còn tùy thuộc vào ngôn ngữ bạn lựa chọn để học. Nói chung, dù bằng cách này hay cách khác thì việc biết nhiều ngôn ngữ cũng sẽ giúp bạn mở rộng khả năng của mình để nắm bắt được nhiều cơ hội hơn nữa.
3. Bạn có khả năng lĩnh hội nhiều ngôn ngữ mới. Nhà tuyển dụng sẽ hiểu bạn là người ham học hỏi, không cứng nhắc và rất linh hoạt.
4. Thú vị. Học một thứ gì đó khác như thể bộ não của bạn được "thổi vào một làn gió mới". Khi đã hăng say với nó, bạn sẽ tăng trưởng nhanh hơn và phát triển khả năng của mình tốt hơn nữa.
5. Cập nhật nhanh chóng các xu hướng công nghệ. Khi tiếp cận với một ngôn ngữ khác, đặc biệt là các ngôn ngữ mới, bạn sẽ biết được mọi người đang quan tâm điều gì, công nghệ đang phát triển theo hướng nào và liệu cơ hội của bạn sẽ ra sao? Kỹ năng của bạn sẽ không bị lạc hậu.
6. Nó gợi nhắc bạn những hạn chế của ngôn ngữ đang sử dụng và tìm hiểu làm thế nào để cải thiện nó tốt hơn. Thử một điều mới sẽ cho bạn cái nhìn khác hơn về những thứ quen thuộc vẫn làm, thoát khỏi các ràng buộc vốn có và cởi mở hơn với những điều mới lạ.
7. Trở thành một lập trình viên giỏi hơn. Học thêm một ngôn ngữ mới sau khi đã nắm chắc ngôn ngữ hiện tại sẽ giúp bạn cải thiện các kỹ năng, đồng thời dễ dàng thích nghi khi chuyển sang làm việc trong một môi trường mới, chẳng hạn như thiết kế và xây dựng các thuật toán hay kiểm soát các cấu trúc dữ liệu khác nhau.
8. Bạn có thể sử dụng các công cụ tốt nhất cho công việc. Không hề có một ngôn ngữ nào hoàn hảo cả. Trong một số dự án đặc biệt, chỉ xảy ra tình huống một số ngôn ngữ có thể phù hợp hơn số còn lại mà thôi. Do vậy, biết thêm một ngôn ngữ sẽ cho bạn thêm một lựa chọn để tìm được đúng công cụ tốt nhất cho công việc hiện tại.
9. Biết thêm một ngôn ngữ cũng cho thấy bạn là người tiếp thu nhanh và thông minh.
1. Chinh phục một ngôn ngữ dễ dàng hơn rất nhiều. Thường, người được gọi là "bậc thầy" dành toàn bộ sự tập trung của họ chỉ vào một mối quan tâm duy nhất. Nếu liên tục chuyển đổi giữa nhiều ngôn ngữ thì bạn sẽ mất nhiều thời gian hơn để thành thạo chúng. Do vậy, toàn tâm toàn ý với một thứ sẽ giúp bạn có được sự tập trung cao độ.
2. Đa phần mọi người chỉ cần duy nhất một công việc và phần lớn các công ty cũng chỉ sử dụng duy nhất một ngôn ngữ. Sau khi đã trúng tuyển vào làm công ty mơ ước thì biết nhiều ngôn ngữ chưa hẳn sẽ giúp ích gì nhiều cho bạn.
3. Chỉ với một ngôn ngữ thôi thì bạn cũng đã có đủ thứ để phải học rồi chứ chưa nói gì đến học thêm hai hay ba ngôn ngữ nữa.
4. Các chuyên gia yêu cầu một mức lương cao hơn trong hầu hết các trường hợp bởi vì mọi người sẵn sàng trả nhiều hơn để thuê họ. Nếu chỉ tập trung vào một ngôn ngữ, bạn sẽ trở thành chuyên gia về ngôn ngữ đó nhanh hơn là học nhiều thứ cùng lúc.
5. Ngay cả khi chỉ biết một ngôn ngữ duy nhất, bạn vẫn có thể trở thành một developer xuất sắc bởi lẽ để đạt được cấp độ này hoàn toàn không liên quan gì đến việc bạn giỏi bao nhiêu ngôn ngữ cả. Điều quan trọng ở đây là những thứ bạn tạo ra tốt đến mức nào. Chỉ biết một ngôn ngữ sẽ giúp bạn có nhiều thời gian để chăm chút cho các dự án hiện tại.
6. Bạn chỉ cần một số lượng nhất định các công cụ hỗ trợ phát triển phần mềm và một ngôn ngữ cũng chỉ cần thế là đủ. Thường, chuyển đổi ngôn ngữ cũng có nghĩa là bạn phải chuyển đổi công cụ sử dụng. Do vậy, khi chỉ biết một, bạn có thể nhanh chóng thành thạo các công cụ cần thiết. Nhờ đó, bạn cũng làm việc hiệu quả hơn.
7. Dễ dàng hơn để "marketing" bản thân bạn. Bởi vì, chỉ biết một ngôn ngữ nghĩa là bạn đã tìm ra "thị trường ngách" của mình.
8. Bạn có thể giải quyết tất cả các vấn đề liên quan đến phần mềm trong bất kỳ một ngôn ngữ nào. Nếu tạo ra mọi thứ là mục tiêu của bạn (nên như vậy) thì biết nhiều hơn một ngôn ngữ, về cơ bản, sẽ không giúp ích gì cho bạn cả.
9. Biết rõ một thứ còn hơn là biết nhiều thứ nhưng không hề rõ!
Câu hỏi này dễ tạo ra sự nhầm lẫn. Giống như phần lớn các vấn đề khác, giải pháp tốt nhất ở đây là một thứ gì đó nằm ở giữa. Điều bạn cần nhớ là luôn luôn có một mảng màu xám bên cạnh những mảng màu đen và trắng. Nếu là người mới bắt đầu, dễ nhất là chỉ học một ngôn ngữ và áp dụng nó để viết các dự án đầu tiên. Sau đó, tôi đề xuất bạn hãy nỗ lực để trở thành một "T-Shaped Devloper".
Một Developer được xếp là "T-Shaped" khi anh ta có kiến thức sâu sắc về một lĩnh vực cụ thể và là chuyên gia về ngôn ngữ đó. Điều này được thể hiện bởi đường thẳng đứng của chữ "T". Sau khi đã đạt được một cấp độ đỉnh cao về lĩnh vực yêu thích của mình thì anh ta sẽ tiếp tục mở rộng ra các kỹ năng khác – được thể hiện bằng đường gạch ngang của ký tự này.
Vậy thì khái niệm này có liên quan gì đến công việc phát triển phần mềm và, cụ thể hơn, là học các ngôn ngữ lập trình? Tôi đề nghị rằng bạn nên học thật chắc một ngôn ngữ. Hãy biến nó trở thành thứ thiết yếu để kiếm kế sinh nhai của bạn, là thứ gắn chặt với bạn không thể tách rời, là ngôn ngữ mà bạn lựa chọn để giải quyết tất cả các vấn đề. Do vậy, hãy nỗ lực hết mình để chinh phục nó.
Sau khi đã đạt được điều trên, hãy bắt đầu học ngôn ngữ thứ hai hoặc kỹ năng khác phù hợp nhất với nghề bạn theo đuổi.
Một T-shaped Developer biết rất nhiều thứ nhưng xuất sắc và thông thạo thì chỉ một.
Để trở thành một con người như vậy, bạn cần có sự linh hoạt trong việc tiếp cận các kỹ năng khác trong khi vẫn phải tối đa hóa các lợi thế khi trở thành chuyên gia trong một lĩnh vực nhất định.
Một câu hỏi rất phổ biến trong những người bắt đầu tiếp cận với lập trình đó là nên chọn ngôn ngữ nào để học đầu tiên hoặc kể cả những người đã hiểu về lập trình thì chưa chắc cũng đã nắm được liệu mình nên trở thành chuyên gia về thứ gì.
Theo tôi, bạn nên lựa chọn ngôn ngữ được sử dụng trong nhiều lĩnh vực, có một cộng đồng lớn những người sử dụng và các công cụ phát triển. Java, C#, Ruby, Python và Swift là vài trong số các ngôn ngữ đáp ứng những tiêu chuẩn này.
Lưu ý: Tiobe là phần mềm cung cấp một danh sách để theo dõi mức độ phổ biến của các ngôn ngữ lập trình dựa trên các tiêu chuẩn trên. Bạn có thể theo dõi danh sách đầy đủ các ngôn ngữ tại đây và nó sẽ được cập nhật hàng tháng. Mặc dù có rất nhiều ngôn ngữ, nhưng top 20 vẫn là những sự lựa chọn tuyệt vời nhất.
Chân thành mà nói, khi quyết định liệu có nên học thêm một ngôn ngữ nữa hay không thì không hề có câu trả lời đúng hay sai. Sự lựa chọn luôn là của bạn.