Để trở thành Back-end Developer nên bắt đầu học ngôn ngữ lập trình nào?

  1. Lập trình

  2. Công nghệ thông tin

  3. Hướng nghiệp

Theo em được biết để trở thành Back-end developer thì cần biết nhiều ngôn ngữ phía Server cũng như biết thao tác với cơ sở dữ liệu. Ví dụ như:

  • Ngôn ngữ server-side để viết back-end: C#, Java, Python, Ruby, ….
  • Kiến thức về database SQL: MS SQL Server, MySQL, …
  • Kiến thức về web nói chung, cách viết Web Service, cách đăng nhập và phân quyền.
  • Kiến thức về 1 số CMS: WordPress, Joomla, Umbraco, ….

Nhưng đối với một sinh viên mới ra trường như em, thì nên tập trung vào phát triển kiến thức nào trước làm nền tảng và nếu được thì anh chị hãy chia sẻ cho em về lộ trình học rất nhiều thứ ở trên với ạ ?

Từ khóa: 

tech job

,

nghề nghiệp

,

lập trình

,

công nghệ thông tin

,

hướng nghiệp

Anh thì thấy có 2 hướng phát triển từ anh và chính bạn bè anh:

- Hướng thứ nhất: là cái gì cũng làm, cái gì cũng học, công nghệ gì cũng chơi, làm dự án vài tháng là vọt qua dự án khác. Nếu em đi theo hướng này thì em sẽ biết được rất nhiều công nghệ nhưng chắc chắn một điều đó là em không biết sâu một công nghệ nào hết nếu nhảy liên tục như vậy. Về lợi ích đó là em biết nhiều công nghệ và có thể là tìm ra được công nghệ mình thích hoặc ngôn ngữ mình thích hoặc là một mảng mà lâu nay em thích nhưng giờ mới bik chẳng hạn, anh ví dụ: trước em thích mobile nhưng làm một thời gian em lại thấy thích làm web hơn, bla bla

- Hướng thứ 2: là biết mình thích cái gì rồi thì đào sâu vào cái đó. Ví dụ như anh là back-end developer (công việc chính) nhưng anh cũng biết làm front-end (một ít kiến thức về angular), hướng xác định này anh đi sâu hẳn về phía back-end luôn, nhắm đến các mục tiêu như design system, tối ưu hóa, thiết kế api, giải quyết logic nghiệp phụ, bla bla. Tóm lại đây là hướng đi sâu vào cái em đã thích, một mảng em thích nó có rất nhiều khía cạnh để khai thác, anh ví dụ: ban đầu đi làm chỉ cần code xong task là em rất vui rồi, nhưng code xong chưa phải là xong, code em xấu em phải có kĩ năng tự review, code em chậm thì em phải thêm kỹ năng optimize, quy trình deploy cùi thì em phải tìm cách thực hiện CI/CD, kiến trúc dở thiếu phù hợp thì em phải xây dựng kiến trúc, viết api xong còn phải document lại cho người khác sài, nếu em public ra ngoài thì phải gửi tài liệu cho người khác intergrate vào... rất nhiều thứ để học sâu về một mảng và mở rộng ra mấy cái liên quan hỗ trợ mảng đó.

Lời khuyên:

- Mới ra trường thì cứ trải nghiệm công việc tầm 1 năm đi nhưng điều anh nói trên có thể là rất nhiều người nói rồi nhưng em chưa trải nghiệm qua khó khăn đó em sẽ không nhớ và không hiểu được. Kiến thức nên tảng ở thời đại học rất quan trong, đôi khi cái nó chính là cái ý tưởng để em giải quyết công việc.

Anh ví dụ: Một bảng có vài trăm cột thì làm sao query cho nhanh, đại học dạy em răng: muốn nhanh thì chỉ cần lấy những cột em cần ra là được, đừng cố select hết tất cả => từ đấy em có ý tưởng viết câu query generate ra những cột em cần theo config truyền vào. Một ý tưởng đơn giản nhưng cải thiện hiệu xuất query rất nhiều.

Các nguyên tắc được học như OOP, SOLID hay các principle là cực kì quan trong, nếu em muốn trở thành một developer xịn xò thì các nguyên tác là thứ không thể bỏ qua. Nguyên tắc không phải là chân lí, có nhiều trường hợp nguyên tắc không phù hợp, nếu không phù hợp thì phải học tiếp bổ xung thêm nguyên tác khác vào. Tất nhiên không phải ai cũng quan tâm đến nguyên tắc, có những người họ làm rất máy móc và rút ra từ kinh nghiệm sai lầm, nhưng làm như vậy thì rất slow growth, em phải thưởng xuyên đọc tech, refactor code của bản thân, lần sau phải code ok hơn lần trc, kiếm một khía cạnh nào đó mà đào sâu vào như vậy mới tiến bộ được. Đi làm lâu sẽ thấy những cái dạy ở thời đại học là chân lí cả đấy. Vận dụng được hết em sẽ cải thiện công việc của mình rất nhiều. Trải nghiệm rồi em sẽ hiểu. Roadmap trên mạng rất nhiều, nhưng cứ phải xác định cái mình muốn cái đã

Trả lời

Anh thì thấy có 2 hướng phát triển từ anh và chính bạn bè anh:

- Hướng thứ nhất: là cái gì cũng làm, cái gì cũng học, công nghệ gì cũng chơi, làm dự án vài tháng là vọt qua dự án khác. Nếu em đi theo hướng này thì em sẽ biết được rất nhiều công nghệ nhưng chắc chắn một điều đó là em không biết sâu một công nghệ nào hết nếu nhảy liên tục như vậy. Về lợi ích đó là em biết nhiều công nghệ và có thể là tìm ra được công nghệ mình thích hoặc ngôn ngữ mình thích hoặc là một mảng mà lâu nay em thích nhưng giờ mới bik chẳng hạn, anh ví dụ: trước em thích mobile nhưng làm một thời gian em lại thấy thích làm web hơn, bla bla

- Hướng thứ 2: là biết mình thích cái gì rồi thì đào sâu vào cái đó. Ví dụ như anh là back-end developer (công việc chính) nhưng anh cũng biết làm front-end (một ít kiến thức về angular), hướng xác định này anh đi sâu hẳn về phía back-end luôn, nhắm đến các mục tiêu như design system, tối ưu hóa, thiết kế api, giải quyết logic nghiệp phụ, bla bla. Tóm lại đây là hướng đi sâu vào cái em đã thích, một mảng em thích nó có rất nhiều khía cạnh để khai thác, anh ví dụ: ban đầu đi làm chỉ cần code xong task là em rất vui rồi, nhưng code xong chưa phải là xong, code em xấu em phải có kĩ năng tự review, code em chậm thì em phải thêm kỹ năng optimize, quy trình deploy cùi thì em phải tìm cách thực hiện CI/CD, kiến trúc dở thiếu phù hợp thì em phải xây dựng kiến trúc, viết api xong còn phải document lại cho người khác sài, nếu em public ra ngoài thì phải gửi tài liệu cho người khác intergrate vào... rất nhiều thứ để học sâu về một mảng và mở rộng ra mấy cái liên quan hỗ trợ mảng đó.

Lời khuyên:

- Mới ra trường thì cứ trải nghiệm công việc tầm 1 năm đi nhưng điều anh nói trên có thể là rất nhiều người nói rồi nhưng em chưa trải nghiệm qua khó khăn đó em sẽ không nhớ và không hiểu được. Kiến thức nên tảng ở thời đại học rất quan trong, đôi khi cái nó chính là cái ý tưởng để em giải quyết công việc.

Anh ví dụ: Một bảng có vài trăm cột thì làm sao query cho nhanh, đại học dạy em răng: muốn nhanh thì chỉ cần lấy những cột em cần ra là được, đừng cố select hết tất cả => từ đấy em có ý tưởng viết câu query generate ra những cột em cần theo config truyền vào. Một ý tưởng đơn giản nhưng cải thiện hiệu xuất query rất nhiều.

Các nguyên tắc được học như OOP, SOLID hay các principle là cực kì quan trong, nếu em muốn trở thành một developer xịn xò thì các nguyên tác là thứ không thể bỏ qua. Nguyên tắc không phải là chân lí, có nhiều trường hợp nguyên tắc không phù hợp, nếu không phù hợp thì phải học tiếp bổ xung thêm nguyên tác khác vào. Tất nhiên không phải ai cũng quan tâm đến nguyên tắc, có những người họ làm rất máy móc và rút ra từ kinh nghiệm sai lầm, nhưng làm như vậy thì rất slow growth, em phải thưởng xuyên đọc tech, refactor code của bản thân, lần sau phải code ok hơn lần trc, kiếm một khía cạnh nào đó mà đào sâu vào như vậy mới tiến bộ được. Đi làm lâu sẽ thấy những cái dạy ở thời đại học là chân lí cả đấy. Vận dụng được hết em sẽ cải thiện công việc của mình rất nhiều. Trải nghiệm rồi em sẽ hiểu. Roadmap trên mạng rất nhiều, nhưng cứ phải xác định cái mình muốn cái đã

Đối với sinh viên mới ra trường thì mình nên nghĩ chọn 1 ngôn ngữ Backend trước rồi học 1 framework kèm theo (như Ruby-Ruby On Rails, Python-Django, Java-Spring...), song song đó là học về SQL nói chung. (Nếu bạn chọn Nodejs làm ngôn ngữ backend thì nên học NoSQL). Vì hầu hết các framework backend đều đi kèm ORM nên việc truy vấn database sẽ đơn giản hơn. Sau đó làm 1 trang web có đầu đủ phân quyền, đăng nhập... Rồi thử sức với API, Caching... (mình không nghĩ Back-end developer cần biết về CMS).

Ps: Dưới đây là bài viết khá hay về con đường của lập trình viên Backend: Mordern Backend Developer in 2018:

https://medium.com/tech-tajawal/modern-backend-developer-in-2018-6b3f7b5f8b9

Xem thêm cách dùng mấy cái realtime database của các dịch vụ như firebase:


Làm FullStack luôn đi bạn, khỏi cần phân biệt Back vs Front :D

Những thứ bạn kể, ý kiến của mình là:

+ Học Java hoặc C#

+ Tham gia làm 1 sản phẩm đóng gói hoàn chỉnh

Nếu có thể bạn hãy chọn assembly