Hỏi ý kiến về Node.js, Javascript và tương lai của chúng

Chào mọi người, em hiện đang là sinh viên năm cuối và hiện tại đang muốn trở thành Backend Developer sau khi ra trường. Em đã nhận được một số ý kiến của các anh đi trước nói rằng nếu em theo Backend thì Javascript không phải một thứ tốt để chọn. Em biết NodeJS không phải là một Programming Language và chỉ là một nền tảng giúp Javascript có thể chạy ngoài trình duyệt vậy nên em muốn hỏi ý kiến mọi người về NodeJS hoặc tương lai là những thứ dùng Javascript cho Backend(Deno). Cá nhân em thấy thị trường nước mình NodeJS vẫn còn khá mới và ít hơn so với Java/PHP/.NET.

Em cảm ơn ạ.

1 Like

vậy bạn thích học gì ?

1 Like

Career path của bạn chỉ là 1 ngôn ngữ?

2 Likes

Chào em @homer,

=> Suy cho cùng JavaScript cũng chỉ là một ngôn ngữ lập trình, một công cụ sử dụng để xây dựng nên ứng dụng, mà mỗi công cụ bản thân nó đều có ưu nhược và lịch sử phát triển riêng. Em dùng nó đúng mục đích là nó sẽ hiệu quả.

Tuy nhiên ở đây anh không muốn nói sâu về ưu nhược của JavaScript, PHP, Java hay .Net.
Cái anh muốn nói là một vài lời khuyên cho em nếu em muốn đi theo con đường sự nghiệp “Backend Engineering” vì theo anh ngôn ngữ sử dụng không phải là vấn đề quan trọng nhất để em xây dựng một sự nghiệp ổn định trong ngành

① Em phải có kiến thức cơ sở ngành công nghệ thông tin.
Không cần biết quá nhiều, nhưng phải là một “ít” về cấu trúc dữ liệu, giải thuật lập trình, kiến trúc máy tính, mạng và hệ điều hành.

※ “ít” ở đây là tuỳ vào mỗi người

② Em phải có kỹ năng lập trình
Những kỹ năng như là lập trình hướng đối tượng (OOP), lập trình các cấu trúc dữ liệu hay gặp, Design Patterns, Refactoring, Clean Code.

Khi nắm vững kỹ năng lập trình, em có thể chuyển đổi ngôn ngữ, công nghệ hoặc tìm hiểu sâu hơn để khai thác ưu điểm của từng ngôn ngữ lập trình dễ dàng.

③ Có kiến thức về cơ sở dữ liệu
Dữ liệu (data) là trái tim của ứng dụng, em cần phải có kiến thức về nó.
Nền tảng nhất là hệ Relational Database (cơ sở dữ liệu quan hệ) sử dụng SQL để truy vấn dữ liệu
※ MySQL rất được ưa dùng.

Nếu đã nắm được cơ bản, thì em có thể tìm hiểu thêm về Document-oriented Database ( MongoDB nổi tiếng) hoặc dòng Graph Database (Neo4j nổi tiếng )

④ Thực hành xây dựng được một cái gì đấy!!!
Không cần quá to lớn, nhưng trước khi ra trường em phải vận dụng được kiến thức mà em hiểu biết nhiều nhất để làm được một cái gì đấy ( một website, app mobile, … ).

Cái này để giúp em biết được, tạo nên một ứng dụng là như thế nào, cấu trúc nó ra sao, ngoài ra còn là một phần để em bỏ vào CV để xin việc hoặc xin thực tập tại các công ty sau khi ra trường.

⑤ Tự thân tìm hiểu và xây dựng cho mình một con đường sự nghiệp “phù hợp” với nguyện vọng bản thân

“Backend Engineering” có thể là mong muốn của em hiện giờ, nhưng vài năm nữa thì không chắc. Sau một thời gian nữa “lửa” trong em có thể bị tắt nếu nghề nghiệp không phù hợp, thu nhập không đúng mong đợi hay sức khoẻ không đáp ứng, …
Hoặc em tìm ra một vị trí khác phù hợp hơn cho em!!

Không biết trước được!

Nhưng vào nghề một thời gian em cứ để ý sự phát triển của bản thân mỗi tháng, nếu cứ ì ạch mãi không lên thì phải luôn hỏi và tìm hiểu xem mảng mình đang làm có phù hợp không? mình sai gì? thiếu gì rồi tự định hướng bản thân lại.

“Ai cũng là thiên tài. Nhưng nếu bạn đánh giá một con cá bằng khả năng leo cây, nó sẽ sống suốt đời với niềm tin rằng nó là kẻ đần độn.” [Albert Einstein]

Anh gợi ý cho em nên tìm đọc blog của chú Hồ Sỹ Hùng (vinacode.wordpress.com), sẽ có nhiều thông tin cho em. Và tham khảo Road Map của Backend Engineering ở đây

Vậy thôi, chúc em đạt được mục tiêu của bản thân mình.

Thân,
Nguyễn Hữu Quyền

ーーーーーーー
※ Một số ý trả lời nhanh cho phần câu hỏi của em

=> Không đúng, cái này là ý kiến quá cá nhân không có cơ sở rõ ràng.

=> Không hẳn, tuỳ thị trường, tuỳ công ty gia công cho nước nào!

9 Likes

Mình từng có thời gian học Node.js, và mình nghĩ ý kiến này không sai. Vấn đề của node.js là nó quá linh hoạt, dẫn tới architecture của nó không tốt, viết code kiểu nào cũng được miễn là nó chạy.

Mà backend thì phần kiến trúc hệ thống khá quan trọng, nếu bạn không có tư duy xây dựng kiến trúc tốt thì sẽ khó phát triển sau này hơn. Tất nhiên Node.js vẫn có đất dụng võ riêng, nhưng chọn nó làm first language để theo backend thì không ổn.

Mình đã từ bỏ Node sau vài tháng tìm hiểu và chuyển qua java. Dạo gần đây nghe có Nest.js framework xử lý được vấn đề architecture của Node nên mình xem thử. Quào, y như spring boot phiên bản javascript vậy.

6 Likes

Em cảm ơn về những ý kiến đóng góp của em ạ. Suy cho cùng thì ngôn ngữ vẫn chỉ là ngôn ngữ thôi ạ, những kiến thức về Programming, Data structures and Algorithms, OOP, Databases, Design Pattern,… vẫn là những thứ không thể thiếu ạ. Em có được học Java nhưng chưa thử nhiều với Java Web em vẫn chưa tiếp cận nhiều cho lắm ạ. Road map dành cho Backend Developer 2020 như link anh gửi em đã xem qua từ hồi đầu năm và ý kiến cá nhân của tác giả là nên lựa Javascript(personal recommendation) vậy nên em thắc mắc và muốn xin mọi người ạ. Javascript là ngôn ngữ không thuần OOP lắm vậy nên sẽ có một số design pattern và em không chắc và chưa va chạm đủ nhiều để nắm rõ như vậy có tốt để bắt đầu là một BE developer không ạ.

1 Like

@homer

=> Chuẩn rồi, em suy nghĩ được như vậy là tốt. Kiến thức nền và lối suy nghĩ là cần thiết để phát triển bền vững.

Tuy nhiên, ngôn ngữ lập trình là công cụ để em thể hiện ra bên ngoài, giống như ra trận cần kiếm vậy, em cần phải thành thạo một loại vũ khí để có thể chiến đấu được.

=> Haha, em giống anh 8 năm trước. Anh cũng gốc xuất phát từ lập trình Java ra. Đầu tiên anh rất thích làm phần mềm Desktop. Sau này vì muốn chia sẽ dễ dàng đến mọi người anh mày mò rồi đi học nghề làm Java Web, trong lúc học ở Đại Học anh cũng sử dụng Java để làm hầu hết mọi bài tập lớn và đồ án.

=> NodeJS được sử dụng nhiều mà. Anh từng làm cho 2 startup sử dụng NodeJS và tới giờ vẫn đang chạy tốt và phát triển tiếp. Ngay cả một product của chính anh, anh cũng sử dụng NodeJS ^^~

Về thông tin việc làm em có thể tra cứu trên mạng, ví dụ như https://itviec.com/it-jobs/nodejs, hoặc join vào các cộng đồng thông tin việc làm của khu vực em ở hoặc khu vực em muốn đến làm việc (Đà Nẵng, Hà Nội, Sài Gòn, … )

Không, nó vẫn làm được chứ. Nhưng là làm theo phong cách của JavaScript
Em có thể tham khảo ở đây [ es6-design-patterns]

Thêm nữa, để học nhanh hơn em cần phải theo dõi và nghiên cứu source code của một vài open source framework hoặc project.

Cá nhân anh, nếu em thích về Web thì có thể follow và tìm hiểu về 2 open source dưới đây

Đầu tiên em cứ tìm hiểu cách sử dụng nó để build lên cái web, sau đó là mở source code của họ ra đọc hiểu, tìm tòi xem họ tổ chức folder, code, OOP ra làm sao.
Học vậy mới nhanh lên kỹ năng code được.

Thân,
Nguyễn Hữu Quyền

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