Khả năng của NodeJS đến đâu so với các ngôn ngữ khác?
Ae cho hỏi NodeJS có thể đảm nhiệm toàn bộ phần backend của 1 dự án lớn kiểu facebook, amazon được hay không?
Mình thấy core của các web lớn rất ít khi được xây dựng bằng NodeJS. Thường chỉ dùng NodeJS để xây dựng API rồi tích hợp vô. Là do NodeJS không thể làm được hay vì có nhược điểm gì đó mà họ không chọn?
Các Job ở VN về NodeJS cũng ít nữa, lương so với PHP, .NET và JAVA cũng thấp hơn luôn, nên mình đang phân vân không biết có nên học hay không?
Mình muốn tập trung học 1 ngôn ngữ backend có tính đa dụng tốt, có thể build những web nhỏ đến siêu to khổng lồ.
Căn bản là giờ học ngôn ngữ thôi chưa đủ, đa phần toàn dùng lib và framework, hiểu cách hoạt động là chưa đủ. Vẫn phải nhớ rất nhiều các nguyên tắc của framework đó. Mình muốn tìm 1 ngôn ngữ backend đa dụng, giải quyết được nhiều vấn đề để tập trung học cho giỏi,
Không có ngôn ngữ nào là giải pháp tốt nhất để giải quyết mọi vấn đề nhưng mình không cần tốt nhất, miễn làm được ra sản phẩm là được. Dù gì người dùng cũng chẳng quan tâm mình sử dụng công nghệ nào.
Mình chỉ muốn câu trả lời CÓ hoặc KHÔNG trước khi bắt đầu học chuyên sâu về backend NodeJS, mình có nền tảng với JS, C#, PHP, C++ (trong đó chuyên sâu nhất về JS). Mình đang làm front end với VueJS và giờ muốn học nốt phần backend và DevOps để lên fullstack.
Vì có sẵn nền tảng khá chắc về JS nên muốn tận dụng luôn để học NodeJS cho nhanh. Nếu NodeJS lại còn đa năng nữa thì tuyệt, chỉ cần học sâu về nó là có thể làm được nhiều thứ. Ý mình là như vậy
Ae backend nào chuyên sâu về ngôn ngữ khác mà tự tin mình có thể cân được mọi loại web thì giới thiệu cho mọi người cùng học với nhé.
Cảm ơn ae nhiều.
2 CÂU TRẢ LỜI
mình nghĩ là chẳng ai có thể đưa ra câu trả lời chắc nịch là CÓ hay KHÔNG cho bạn được.
Ae backend nào chuyên sâu về ngôn ngữ khác mà tự tin mình có thể cân được mọi loại web thì giới thiệu cho mọi người cùng học với nhé.
Cũng chẳng có ai tự tin mà khẳng định như vậy. càng làm nhiều lại càng ko dám khẳng định điều đó
Mình phải công nhận 1 sự thật đó là các system lớn, performance cao họ thường dùng các ngôn ngữ bậc thấp (C, C++) hay các ngôn ngữ đã phát triển từ lâu đời và có hệ sinh thái cực khủng như Java, .NET. Hệ sinh thái của các ngôn ngữ đó (VD: Java Spring) vô cùng lớn mạnh, enterprise, gần như cái gì cũng có package/lib có thể giải quyết đc vấn đề của bạn, chả cần nghĩ ngợi nhiều, cái gì cũng có lib xử lý.
Mình đi làm từ đầu tới giờ hầu hết chỉ focus vào JS, React/vue/angular, backend thì NodeJS. Mình cũng công nhận là về thực tế "có vẻ" NodeJS hơi lép vế khi ta phải build system lớn hoặc các ứng dụng enterprise. bởi vì NodeJS sinh cũng sau hơn các ngôn ngữ khác (c, cpp, java...) hệ sinh thái về system/enterprise cũng chưa có nhiều (mặc dù số lượng npm packages cũng vô cùng kinh khủng). nhưng điều đó chẳng nói lên rằng NodeJS ko thể build đc các app lớn, mọi ngôn ngữ theo lý thuyết đều có thể làm được (theo mình nghĩ như vậy). Và đó là lí do mình vẫn làm NodeJS tới giờ, đó là cái mình focus chính, còn đi làm thì các cty muôn hình vạn trạng, cần backend gì thì mình làm cái đó. Mình đâu thể join vào cty và cứ đòi làm cái ngôn ngữ mình thích. Mình có quen mấy a chị làm ở FB, GG, Twitter họ bảo trong đó vẫn có đầy dự án lớn dùng NodeJS (trên blog engineering của các cty đó cũng có rất nhiều bài giới thiệu về các system/app của họ dùng Node)
Mình nghĩ vấn đề của bạn là bạn đang cố gắng tìm ra 1 thứ có thể cân cả thế giới, nếu ai cũng như vậy, thì chắc đã ko có sự tồn tại của NodeJS/Rust/Ruby/Python... hay Go (1 trong nhữ ngôn ngữ rất hot bây giờ), mọi người cứ tập trung cho C, Cpp hay Java... cho nó cực kì kinh khủng là được, và như thế thì thế giới lập trình cũng buồn chán đi bao nhiêu. Cộng thêm bạn có chắc chắn là bạn làm được 1 ngôn ngữ cả đời ko? , bạn có chắc công ty tiếp theo bạn apply họ thích ngôn ngữ mà bạn chọn (vì bạn nghĩ nó cân đc cả thế giới). Và nó có thể làm bạn lỡ đi rất nhiều cơ hội., cũng làm cho bản thân bạn (có thể) cũng kém sáng tạo đi rất nhiều, vì cái gì cũng có rồi, chả cần nghĩ nhiều nữa. Làm như vậy thì sẽ hình thành tâm lý "ko cần nodejs, python... Cứ phang ngôn ngữ X của tôi, đỡ phải nghĩ, có hết rồi" (nghe đã thấy tẻ nhạt rồi ), 1 ví dụ thực tế là giờ rất nhiều người dùng React bởi vì nó to nhiều người dùng mà quên đi Vue + Angular cũng là những sự lựa chọn rất tuyệt vời, xong làm web nào cũng vậy ko cần biết app bé như con kiến hay app to, cứ phang React, bởi vì "quen" rồi.
Không có ngôn ngữ nào là giải pháp tốt nhất để giải quyết mọi vấn đề nhưng mình không cần tốt nhất, miễn làm được ra sản phẩm là được. Dù gì người dùng cũng chẳng quan tâm mình sử dụng công nghệ nào.
Chính xác, chẳng user nào người ta biết được tới bạn dùng công nghệ nào để phát triển nhưng bạn nói thế này thì ....
Câu chuyện chọn ngôn ngữ nào luôn là vấn đề muôn thuở mà mình thấy các bạn mới rất hay băn khoăn và mất thời gian vì nó. Chẳng ai dám tự tin khẳng định cái này hoặc cái kia tốt hơn mọi thứ, nó có thể góp phần tác động vào quan điểm/định hướng của người khác và làm cộng đồng kém phát triển đi. Bạn hãy chọn lấy 1 cái và làm nó, theo đuổi, kiên trì làm nó thật tốt nâng cao giá trị của bản thân, thay vì tự hỏi tìm ra 1 thứ vi diệu 1 cho tất cả.
Nhiều khi cũng phải take challenge thì bản thân mới có thể phát triển được phải ko
bạn trả lời hay quá, cơ mà muốn làm app bé thì nên làm React vì nó chỉ là UI Lib, chứ Vue hay Angular nó cả là framework mà hihi
@cuong_nguyen nếu bạn nói về size, thì React to hơn rất nhiều so với Vue đó bạn. Từ "library" ko làm cho React nhỏ hơn Vue đâu bạn, mặc dù Vue là framework -->> ko phải cứ framework là to khủng bố đâu bạn
Mình nghĩ bạn nên cân nhắc lại cách đặt vấn đề: Chọn 1 cái để học giỏi hay là học làm sao để giỏi
90%(mình nghĩ vậy?) chúng ta khi đi làm, thì sẽ học những gì Công ty cần chúng ta làm. Ngay cả khi bạn chủ động lựa chọn, join vào được Công ty mong muốn.
Nếu không thể có 1 công việc , 1 dự án đủ lớn thì việc học sâu vào 1 ngôn ngữ đến mức đủ để cân "mọi thứ" là điều gần như không thể. Vì "mọi thứ" chỉ phát sinh trong dự án thực tế.
Cho nên các nhà Giáo dục sẽ đào tạo thiên về tư duy lập trình và nền tảng căn bản hơn là dạy sâu hẳn về 1 loại ngôn ngữ.