Là một lập trình viên, bạn có bao giờ tự hỏi mình nên tập trung làm một công nghệ duy nhất hay thử và làm nhiều công nghệ khác nhau?

Học sâu (specialist) ở đây nghĩa là chỉ tập trung làm một việc duy nhất. Ví dụ như chỉ tập trung vào một trong các mảng: Frontend, Backend, Mobile App (gần đây thì có một số lĩnh vực mới nổi như Data Analytic, AI Engineer…). Cụ thể hơn nữa là chỉ tập trung vào một framework hay một ngôn ngữ, ví dụ như làm chuyên gia ReactJS, chuyên gia VueJS, Ruby on Rails, vv.

Ngược lại, học rộng (generalist) nghĩa là bạn làm nhiều thứ, có thể tất tần tật từ Frontend, Backend, Mobile App, cái gì cũng chơi tuốt. Người ta vẫn gọi những người như thế là Full Stack Developer.

Vậy cái nào tốt hơn, học rộng hay học sâu? Học một ngôn ngữ hay nhiều ngôn ngữ?

Bản thân mình khi mới ra trường cũng rất băn khoăn câu hỏi này.

Vậy hãy cùng phân tích lại lợi hại của 2 phương pháp:

Học sâu

(chỉ tập trung 1 ngôn ngữ hoặc 1 framework)

Ưu điểm:

  • Tốn ít thời gian hơn, do vậy có thể dành thời gian để làm những thứ khác như chơi game, dành thời gian cho gia đình, du lịch, học nấu ăn, chơi piano…
  • Dễ dàng trở thành chuyên gia về ngôn ngữ lập trình/framework mà mình chọn.

Nhược điểm:

  • Suy nghĩ bị bó buộc trong phương pháp và cách thức của ngôn ngữ và framework
  • Đôi khi khó tìm việc vì ngôn ngữ/ framework không còn được phổ biến, nhu cầu không cao

Học rộng

(Làm nhiều ngôn ngữ, nhiều framework)

Ưu điểm:

  • Biết nhiều thứ nên có nhiều cách nhìn khác nhau với một vấn đề để tìm ra cách giải quyết thích hợp nhất
  • Làm việc với nhiều công nghệ mới sẽ có hứng thú hơn
  • Dễ tìm việc mới, dễ dàng thích nghi với môi trường mới, có thể tham gia nhiều dự án khác nhau.

Nhược điểm:

  • Tốn nhiều thời gian hơn vì phải học và cập nhật kiến thức của nhiều ngôn ngữ, framework cùng 1 lúc
  • Dễ lâm vào tình trạng cái gì cũng biết nhưng không cái gì biết sâu. Ông cha ta vẫn có câu “Một nghề cho chín còn hơn chín nghề”

Full Stack Developer

Trong một thời gian dài mình luôn băn khoăn không biết nên đi theo hướng nào? Specialist or Generalist?

Cách đây khoảng 2 năm, mình nói chuyện với một anh bạn đầu tư chứng khoán. Sau đó mình nhận ra việc đầu tư chứng khoán và công nghệ không khác nhau là mấy.

Khi đầu tư chứng khoán, chúng ta không chỉ mua cổ phiếu của một công ty duy nhất. Vì nếu đầu tư tất cả vào cổ phiếu của 1 công ty, chẳng may công ty làm ăn thua lỗ, chúng ta sẽ mất tất cả. Không ai có thể biết trước ngày mai xảy ra điều gì. Như hồi năm 2007-2010, thời kỳ hoàng kim của Nokia và Yahoo, không ai có thể ngờ bây giờ đây họ phải bán mình hoặc chỉ còn là cái bóng của chính mình trong quá khứ.

Do vậy, các nhà đầu tư chứng khoán thường đầu tư vào nhiều mã cổ phiếu khác nhau. Cũng như khi đầu tư mua coin, họ không chỉ mua Bitcoin mà còn mua ETH, LTC. Việc làm này dân gian đã đúc kết kinh nghiệm và gọi là “Không bỏ trứng vào cùng một giỏ”.

Invest in multiple cryptocurrencies

Tương tự như vậy, khi đầu tư thời gian, công sức vào công nghệ mình nghĩ không chỉ nên tập trung vào một framework hay một ngôn ngữ duy nhất, mà nên học nhiều thứ. Chẳng may ngày mai công nghệ đang sử dụng có lỗi thời thì chúng ta có thể dễ dàng chuyển qua làm công nghệ khác. Tất nhiên cũng có rủi ro như khi mua cổ phiếu, nếu công nghệ bạn chọn trở nên hot trong tương lai, bạn là những người đi đầu thì chắc chắn sẽ có nhiều lợi thế. Còn nếu công nghệ bạn chọn lụi tàn, thì coi như mất thời gian và công sức.

Kết luận:

Tóm lại theo mình thì nên học nhiều thứ, đa dạng khả năng của bản thân. Tuy nhiên khi học thì nên học đến nơi đến chốn, hiểu bản chất của vấn đề rồi mới chuyển sang học cái tiếp theo. Không nên học theo kiểu cưỡi ngựa xem hoa vì rất lãng phí thời gian!

Happy coding!