Nội dung bài viết
Video học lập trình mỗi ngày
Chủ đề tuần này: "Ngôn ngữ nào tiếp theo trong hành trình lập trình viên" được thảo luận trên Reddit. Bạn có thể xem chi tiết dưới bài viết.
Hai quan điểm được đưa ra, nó tuỳ thuộc vào nhận thức quan điểm và ngành nghề mỗi quốc gia, ví dụ ở HCM thì tôi nghĩ java, go, nodejs là trọng điểm.
Bạn có thể xem phần thảo luận quan điểm cá nhân: Tại sao lại là go và java mà không phải nodejs?
Lộ trình Backend (go, java, nodejs)
Two: Lộ trình cao cấp Go Backend
Three: Lộ trình cao cấp Java Backend
Ngôn ngữ tiếp theo sau Javascript
Tôi bắt đầu lập trình bằng javascript cách đây 6 tháng và đây là ngôn ngữ duy nhất tôi biết cho đến nay. Tôi không thực sự hứng thú với frontend và tôi đã quen thuộc với các công nghệ được sử dụng để phát triển phía backend. Tôi muốn ngôn ngữ tiếp theo của mình là ngôn ngữ được sử dụng rộng rãi cho phát triển backend chủ thuần túy trong ngành và tôi không thể quyết định giữa JAVA, Go, C#, PHP, python. Ngôn ngữ nào có thể mang lại cho tôi nhiều cơ hội nhất để bắt đầu hành trình của mình trong những năm tiếp theo của lập trình viên.
Quan điểm 1: Vẫn bước tiếp với javascript.
Vì bạn đã bắt đầu sử dụng Javascript, tôi khuyên bạn nên tiếp tục sử dụng nó và bắt đầu học phát triển backend. Sự thật là nếu bạn bắt đầu học backend ngay bây giờ, bạn sẽ phải học cách mọi thứ hoạt động, một chút về mạng, một chút về hệ điều hành, v.v.
Do đó, tôi khuyên bạn nên sử dụng JS và bắt đầu xây dựng các API đơn giản với Express.js hoặc Fastify .
JS phía máy chủ hiện nay tốt hơn bao giờ hết. Node.js không phải là JS thời gian chạy phía máy chủ duy nhất (xem Bun , Deno cũng như WinterCG và vai trò của nó), có rất nhiều khuôn khổ tối giản (ExpressJS, Fastify) cũng như nhiều ý kiến hơn cho các ứng dụng quy mô lớn ( NestJS , AdonisJS ).
Quay trở lại với Node.js, sau cuộc cạnh tranh với runtime mới (Bun), các phiên bản cuối cùng có vẻ trở nên phong phú hơn về những gì thư viện chuẩn cung cấp. Vì vậy, trước khi bạn bắt đầu, hãy thử khởi động một máy chủ để hiểu Yêu cầu/Phản hồi và cách Mạng đóng vai trò trong việc này. Rõ ràng là HTTP rất quan trọng nhưng sau khi chơi với nó một chút, hãy chuyển sang Websockets và cố gắng hiểu cách làm cho nó hoạt động bằng cách sử dụng thư viện chuẩn và xem những vấn đề nào chúng giải quyết được.
Sau tất cả những điều này, bạn có thể sử dụng một chút Typescript, về bản chất là JS có các kiểu dữ liệu nhưng vẫn cần phải học thật kỹ để thành thạo nhưng tin tôi đi, bạn sẽ không hối hận đâu.
Từ đó trở đi, tất cả những gì quan trọng là bạn muốn tập trung vào đâu trong hành trình của mình. Nếu bạn muốn đi theo cách kết nối mạng thuần túy, hãy xem thư viện uWebSocketsJS (dự án rất tuyệt) và tạo ra thứ gì đó với nó, nó cung cấp rất nhiều thứ ngay từ đầu.
Sau đó, một thứ mới hấp dẫn trong hệ sinh thái này là Effect-ts với mô hình lập trình chức năng, mặc dù còn khá mới nhưng đã có rất nhiều dự án mới sử dụng nó, đặc biệt là vì khả năng chịu lỗi và hỗ trợ đồng thời rất tốt mà nó cung cấp.
Cuối cùng nhưng không kém phần quan trọng, nếu bạn muốn xây dựng API trong các khuôn khổ tối giản hiện đại và tiên tiến hơn, hãy xem qua ElysiaJS , HonoJS hoặc Hattip .
Tóm lại, tôi tin rằng bạn nên tiếp tục với JS và chuyển sang Node.js trước, sau đó xem bạn muốn đi đâu và đây sẽ là hướng dẫn thực sự của bạn. Ngoài ra, Hệ sinh thái Node.js cung cấp mọi thứ để giúp bạn bắt đầu trong doanh nghiệp cũng như theo cách nhẹ nhàng và không cần quan tâm hơn, vì vậy tùy thuộc vào bạn.
Chúc bạn may mắn, mọi điều tốt đẹp nhất và hy vọng bạn sẽ tiếp tục gắn bó với Hệ sinh thái Node.js.
Quan điểm 2: Nên chuẩn bị cho JAVA.
Trước khi trả lời câu hỏi của bạn, tôi muốn bắt đầu với trình độ của mình. Tôi có bằng Khoa học máy tính và đã từng được thuê làm nhà phát triển phần mềm cho Accenture, Amazon, Bank of America và Nike. Tôi cũng là người đam mê ngôn ngữ lập trình và thích học ngôn ngữ mới. u/vlahunter đã đưa ra một câu trả lời rất hay, nhưng tôi không đồng ý với câu trả lời đó.
Đúng vậy, hệ sinh thái Node là một lựa chọn và là lựa chọn phổ biến cho các dự án nhỏ (ví dụ, tôi đã xây dựng trang web sea-air-towers bằng Node, mã nằm tại https://github.com/JohnReedLOL/Sea-Air-Towers-App-2 mà tôi đã xây dựng bằng cách sửa đổi https://github.com/microsoft/TypeScript-Node-Starter ). Tôi đã triển khai nó lên Heroku, https://www.heroku.com/ , trong trường hợp bạn muốn sao chép dự án của tôi. Nếu bạn không muốn TypeScript, một lựa chọn khác để xây dựng trên là trình khởi chạy Node Hackathon thông thường, https://github.com/sahat/hackathon-starter , hiện đã cập nhật hơn phiên bản TypeScript. Nếu bạn muốn gắn bó với JavaScript, bạn có thể và bạn có thể xây dựng thứ gì đó bằng cách sử dụng chúng và đưa vào sơ yếu lý lịch của mình.
Nói như vậy, JavaScript sẽ không phải là lựa chọn đầu tiên của tôi để có được một công việc back-end. Hầu hết các công việc JavaScript trong thế giới thực vẫn là front-end. JavaScript sử dụng nhiều Promises, với các hàm .thenvà .andThen. Promises là một triển khai của mẫu thiết kế Monad trong lập trình chức năng. Hầu hết các lập trình viên không quen thuộc với phong cách lập trình lambda/callback nặng nề này và họ bị nhầm lẫn bởi việc sử dụng nhiều asyncvà awaitđược thấy trong mã JavaScript back-end. Cuối cùng, nó trở thành một vấn đề trong ngành công nghiệp chuyên nghiệp, nơi mọi người đều phải đạt tiêu chuẩn. Java back-end phổ biến hơn nhiều trong ngành công nghiệp chuyên nghiệp, như tại các công ty lớn với cơ sở mã lớn. Amazon và Amazon Web Services (AWS) được xây dựng trên Java.
Giống như JavaScript ở backend, PHP cũng phổ biến đối với các cơ sở mã backend nhỏ hơn. PHP phổ biến hơn nhiều đối với các cơ sở mã monolithic tập trung so với các cơ sở mã microservices nhóm phân tán (trong đó mỗi microservice được một nhóm gồm khoảng 10 lập trình viên xử lý và hệ thống được tạo thành từ một loạt các microservice khác nhau giao tiếp với nhau). Bạn thấy rất nhiều WordPress và Laravel cho các cơ sở mã backend nhỏ hơn. Tôi khá chắc chắn rằng PHP là lựa chọn phổ biến hơn cho backend thực tế so với JavaScript. Rất nhiều trang web được xây dựng trên PHP, đặc biệt là các trang web nhỏ hơn như blog (WordPress), diễn đàn, cửa hàng, trang web cho luật sư, nền tảng thương mại điện tử vừa và nhỏ, một số công ty khởi nghiệp giai đoạn đầu, những thứ tương tự như vậy. Các nhà tuyển dụng công nghệ tuyển dụng JavaScript chủ yếu sẽ liên hệ với bạn trên LinkedIn về JavaScript frontend thay vì JavaScript backend, vì vậy tôi không khuyên bạn nên sử dụng JavaScript nếu bạn không muốn có việc làm frontend. Nói về LinkedIn, có một LinkedIn tốt là điều quan trọng để có được việc làm.
Dù sao đi nữa, điều cuối cùng bạn đề cập đến là Python. Python phổ biến nhất trong không gian Khoa học dữ liệu (xem r/DataScience ), Phân tích dữ liệu và Kỹ thuật dữ liệu. Ví dụ, một số Kỹ sư dữ liệu sử dụng cơ sở dữ liệu phân tích Apache Spark với Python. Rất nhiều Nhà khoa học dữ liệu triển khai Học máy hoặc ML (xem r/MachineLearning ) bằng Python. Giống như xe tự lái AI/ML của Tesla sử dụng Python. Cá nhân tôi không khuyên dùng nó cho phần phụ trợ. Cơ sở mã phần phụ trợ có xu hướng lớn và Python là ngôn ngữ lập trình động hơn, không được gõ tĩnh, không phù hợp lý tưởng với cơ sở mã lớn. Python đã có một số cải tiến trong lĩnh vực này gần đây với gợi ý kiểu và mypi nhưng theo truyền thống, nó không lý tưởng. Những người tuyển dụng Python, như trên LinkedIn, sẽ không liên hệ với bạn chủ yếu để xin việc ở phần phụ trợ. Đừng hiểu lầm tôi, Python là một ngôn ngữ lập trình rất phổ biến, tôi thậm chí còn thấy nó được sử dụng trong DevOps (Hoạt động của nhà phát triển, như thiết lập máy chủ, triển khai và mở rộng quy mô) và công cụ hack mạng, nhưng phần phụ trợ không phải là lĩnh vực thích hợp của nó.
Hãy xem danh sách việc làm tại địa phương của bạn trên Dice, https://www.dice.com/ hoặc một số trang web khác có việc làm về công nghệ và xem những gì phổ biến cho backend và chọn những gì phổ biến. Java khá phổ biến cho các hệ thống backend lớn và PHP khá phổ biến cho các hệ thống backend nhỏ. C# cũng là một lựa chọn, nó giống với Java hơn, đây là ngôn ngữ lập trình của Microsoft nên nó hoạt động tốt với Windows. Dù sao thì cũng có một lộ trình về những gì cần học cho backend tại https://roadmap.sh/backend , đáng để học những thứ đó. Đối với Java, Spring, giống như Spring Boot, khá phổ biến cho backend. Có một chuyên ngành về Java Spring trên Coursera tại https://www.coursera.org/specializations/spring-framework . Bạn cũng có thể muốn lấy chứng chỉ Coursera dành cho nhà phát triển backend, ví dụ như một trong những chứng chỉ được liệt kê trên https://www.coursera.org/certificates/computer-science-it
Một điều tuyệt vời về Coursera là nếu bạn trả tiền, bạn có thể nhận được một chứng chỉ hoàn thành nhỏ và đưa nó vào LinkedIn của bạn. LinkedIn rất phù hợp với những người tuyển dụng công nghệ. Tôi cũng thích đọc sách về công nghệ trên Amazon. Nhưng vâng, nếu bạn có bất kỳ câu hỏi nào, hãy thoải mái gửi cho tôi yêu cầu trò chuyện.
Quan điểm của Tôi
Tất nhiên hai quan điểm được đưa trên rất hay và cá tính. Tôi thích câu trả lời đầu tiên, vì nhiều cuộc thảo luận tôi cũng đã đưa ra. Hay tận dụng kỹ năng quen thuộc của mìng viết tiếp chặng đường, khi đó trên con đường của mình sẽ gặp nhiều người và có thể chúng ta sẽ đi sang một con đường khác ngắn hơn và mất ít thời gian hơn. Bạn có thể xem phần thảo luận: Tại sao lại là go và java mà không phải nodejs?
Nguồn thảo luận: Chọn ngôn ngữ nào tiếp theo?