Bài viết Câu hỏi About RongvangIT
profile Pic
0
0
Nội dung

Đăng ngày:

  50 Lượt xem

[Backend] Mục Tiêu của Những Kỹ Sư Lập Trình [Phiên bản năm 2024]

Tiểu luậnBackendNgười mới học lập trình

Giới thiệu

Xin chào các bạn.
Tôi là người thường xuyên tham gia phát triển Frontend.

Gần đây, tôi đã có cơ hội học hỏi về phía Backend, và dần dần, tôi đã được tham gia vào công việc như thiết kế cơ sở dữ liệu và tạo API. Do đó, tôi viết bài này với mong muốn làm rõ về cảm nhận về trình độ kỹ sư của bản thân và định rõ hướng phát triển cho tương lai.

Bài viết này không chỉ dành cho tôi, mà còn dành cho những kỹ sư mới như tôi, và những người đang chuẩn bị trở thành kỹ sư ở tầm trình độ trung bình. Nếu bạn đang phân vân về hướng sự nghiệp của mình là gì, hoặc làm thế nào để phát triển kỹ năng của mình một cách hiệu quả, hãy đọc bài viết này.

Lưu ý: Bài viết dành cho kỹ sư Backend, nhưng có thể có điều gì đó hữu ích đối với kỹ sư Frontend… có thể.

Sự Cần Thiết của Chiến Lược Sự Nghiệp

Đầu tiên, chúng ta sẽ nói về tại sao cần phải có chiến lược sự nghiệp.
Nói ngắn gọn, đó là bởi vì thời gian là có hạn.

Có thể bạn có thể trở thành Kỹ sư Junior trong vòng 2~3 năm ngay cả khi bạn không có ý thức về việc phát triển kinh nghiệm lập trình. Tuy nhiên, việc chỉ đơn giản viết mã mà không suy nghĩ về nó là nhàm chán. Nếu bạn đã trở thành một kỹ sư, hãy xây dựng sự nghiệp của mình một cách logic, đặt mục tiêu và tích lũy nỗ lực theo chiều ngược lại. Tôi tin rằng quá trình đó là cần thiết.

Nó giúp bạn đến với con đường ngắn nhất để trở thành một kỹ sư như hình ảnh lý tưởng của bạn.

Quan trọng hơn, việc đặt ra mục tiêu giúp “bạn đang phải làm gì hiện tại“ trở nên rõ ràng. Đến khi bạn đọc xong bài viết này, bạn sẽ hiểu rõ những kỹ năng bạn đang thiếu sót và những kỹ năng bạn đã đạt được trong vai trò Kỹ sư Backend.

Khi đã hiểu rõ, việc còn lại chỉ là dễ dàng, bạn chỉ cần phát triển những kỹ năng bạn cảm thấy thiếu sót.

Tiền đề

Trước tiên, khi tôi nói về “Kỹ sư Junior” ở đây, hãy tưởng tượng rằng đó là “Thành viên nhóm” truyền thống.
Và cơ bản, tôi sẽ tập trung nói về Backend.

Mặc dù có ý kiến cho rằng, ngay cả khi bạn là Kỹ sư Junior, bạn cũng nên có thể làm được Frontend, hoặc bạn cần kiến thức về cơ sở hạ tầng, và có lẽ có những ý kiến về điều đó. Tuy nhiên, tôi nghĩ rằng đó là điều mà bạn cần phải có sau khi bạn đã đạt được mức độ tối thiểu cần thiết - cấp độ Junior cho Backend. Nếu bạn tự xưng là Kỹ sư Backend mà không thể thực hiện được cả một tính năng đơn giản của API, thì đó không phải là một cuộc trò chuyện. Vì vậy, trước hết, hãy đảm bảo bạn giữ được lĩnh vực chuyên môn của mình, đó là điều quan trọng.

Vậy bây giờ, hãy đi sâu vào, tôi sẽ liệt kê các công nghệ cần thiết cho Kỹ sư Junior.

Định nghĩa tổng quan

● Junior

  • Hiểu rõ cơ chế của git/GitHub và sử dụng một cách hiệu quả.
  • Có khả năng điều tra sự cố bằng cách tham khảo tài liệu (bao gồm tài liệu tiếng Anh).
  • Viết mã một cách đơn giản, dễ đọc và dễ hiểu cho người khác.
  • Có thể thực hiện các thao tác cơ bản trên Linux.
  • Hiểu biết cơ bản về web.
  • Hiểu biết cơ bản về cơ sở dữ liệu và ngôn ngữ SQL.
  • Hiểu biết cơ bản về API.
  • Có thể xử lý ít nhất một ngôn ngữ lập trình.
  • Có khả năng phát triển với ít nhất một framework.
  • Hiểu biết cơ bản về bảo mật.
  • Hiểu biết cơ bản về Docker.
  • Hiểu biết cơ bản về thiết kế.
  • Hiểu biết cơ bản về kiến trúc.
  • Mẫu thiết kế và nguyên tắc.
  • Có khả năng viết kiểm thử.

Tóm tắt mức độ yêu cầu đối với vị trí Junior

Tổng cộng các điều mà chúng tôi đã liệt kê, có thể tóm tắt một cách ngắn gọn là “Có thể thực hiện triển khai đáp ứng yêu cầu đã chỉ định sau khi hiểu biết về kiến thức xung quanh.” Đó chính là điều chúng ta muốn nói.

Điều này đã được phân loại và biểu thị một cách cụ thể trong danh sách điểm trước đó.

Kết luận

Vậy thì trong thực tế, làm thế nào chúng ta có thể đạt được điều này?
Kết luận là rất đơn giản. Hãy tự làm cho từng mục trong danh sách chi tiết mà chúng ta đã phân loại.

Nhìn vào danh sách chi tiết này, bạn đã nghĩ như thế nào về khả năng của bản thân? Bạn có thể thực hiện được bao nhiêu điểm, và có bao nhiêu điểm bạn còn thiếu sót?
Trong khi viết bài này, tôi cũng đã tự hỏi về bản thân tôi, có những điểm mà tôi nghĩ mình có thể làm được, nhưng điều này vẫn khó khăn… hay tôi đã học điều này nhưng liệu có thể làm được không… Những điều như vậy đã trực quan hóa được.

Dựa trên thông tin đã trực quan hóa đó, sau đó bạn chỉ cần học từng kỹ năng bạn cảm thấy mình đang thiếu hụt.
Việc đọc sách, đọc tài liệu chính thức hoặc học tại Udemy đều là cách tốt. Tuy nhiên, hãy nhớ rằng điều này giả định rằng bạn đang làm những việc có thể được thực hiện trong môi trường thực tế. Vì vậy, hãy chú ý đến điều này và thử nghiệm một cách có ý thức.

Và khi bạn đã học được tất cả những kỹ năng này,
“Bạn có thể triển khai đáp ứng yêu cầu đã chỉ định sau khi hiểu biết về kiến thức xung quanh.”
đó sẽ là mức độ bạn có thể đạt được một cách dễ dàng.

Cuối cùng, bạn có thể tốt nghiệp từ mức độ Junior và tiến lên bước tiếp theo.

Cụ thể làm thế nào

Bây giờ, chúng ta sẽ xem xét cụ thể làm thế nào để tiến triển. Bạn có thể sử dụng danh sách nếu muốn, nhưng nó có vẻ hơi trừu tượng.

Chúng ta sẽ đàm phán cụ thể về việc nên tham khảo sách hoặc bài viết nào, tại sao lại quan trọng và mỗi mục làm thế nào để làm sâu hơn.

Lưu ý về định nghĩa cấp độ, mọi điều không chỉ dừng lại ở việc hiểu rõ về điều kiện trong tâm trí. Đó là ở cấp độ thực tế có thể triển khai được. Đối với mục “Hiểu rõ yêu cầu”, nó được định nghĩa là “Hiểu về mức độ có thể giải thích được cho người khác”.

① Hiểu rõ cơ chế của git/GitHub và sử dụng một cách hiệu quả.

Nói một cách tự nhiên, trong môi trường phát triển, không thể không sử dụng git/GitHub. Mặc dù có vẻ như là một rào cản cho người mới học, nhưng nếu bạn nhớ được, nó không phải là điều khó khăn. Hãy học nó bằng cách thực hành.

Nếu bạn đang tìm kiếm một khóa học Git, dưới đây là khóa học tốt nhất mà tôi nghĩ có thể giúp bạn:

Git và GitHub

Khi bạn đã hiểu cơ chế và lệnh của Git, SourceTree là một công cụ GUI khuyến nghị. Với giao diện đồ họa người dùng, nó sẽ làm cho việc hiểu biết dễ dàng hơn, đặc biệt là đối với người mới học.

Hướng dẫn sử dụng SourceTree

Khi bạn quen với nó, thì thực tế là sử dụng trên VSCode sẽ nhanh chóng và thuận tiện hơn, nhưng trong quá trình làm quen, đó là một công cụ hữu ích!

Tham chiếu và sửa lỗi bằng cách tham khảo tài liệu (bao gồm tài liệu tiếng Anh)

Với những kỹ sư, vấn đề về cách giải quyết lỗi có vẻ như là một thách thức vĩnh cửu. Nếu mỗi khi gặp lỗi đều phải hỏi đàn anh, điều này không chỉ tốn thời gian của bạn mà còn làm mất thời gian của cả hai bên.

Ở giai đoạn đầu, điều này không thể tránh khỏi, nhưng để tự lập, bạn cần tự mình đọc lỗi, hiểu rõ nó và áp dụng nó vào mã nguồn của bạn. Trong những lúc như vậy, “ tài liệu chính thức “ trở nên quan trọng.

Tại sao đọc tài liệu chính thức lại quan trọng? Tóm lại, bởi vì nó đáng tin cậy. Vì nó được xuất bản bởi người viết mã hoặc những người hiểu rõ ý đồ của người viết mã, nên có thể kỳ vọng vào sự đáng tin cậy của nó.

Tuy nhiên, bạn có thể nói rằng khi bạn Google lỗi, bạn có thể tìm thấy cách giải quyết? Bạn có thể sao chép mã nguồn từ đó và chạy được nó! Nhưng điều này không giúp bạn hiểu được “ tại sao lỗi đã xảy ra “ và “ tại sao nó đã được sửa “. Nếu không hiểu được điều này, khi gặp lỗi tương tự, bạn có thể phải tìm kiếm lại, và việc sao chép mã nguồn đó có thể dẫn đến một lỗi không mong muốn khác.

Quan trọng là phải hiểu rằng việc “ Google để tìm cách giải quyết lỗi “ không phải là điều xấu, nhưng điều quan trọng là thông tin bạn nhận được từ đó có chính xác hay không. Việc này trở nên quan trọng khi bạn có thể đọc tài liệu để hiểu nguyên nhân cơ bản của lỗi từ mã nguồn của chính nhà phát triển.
<!—
Về cách đọc tài liệu chính thức, bài viết sau là một nguồn tham khảo rất tốt:

https://zenn.dev/qnighy/articles/b39ff132777758
—>
Mặc dù không liên quan trực tiếp đến chủ đề này, kỹ năng tìm kiếm tiếng Anh cũng là một kỹ năng quan trọng khi bạn đang tìm kiếm thông tin. Trong ngữ cảnh lập trình, lượng thông tin tiếng Anh trên Internet chiếm khoảng 60% so với khoảng 2% tiếng Nhật.

Viết mã đơn giản, dễ đọc và dễ hiểu cho người khác

Khác với tinh thần “Chỉ cần nó chạy được”, khi viết mã trong công việc thực tế, bạn cần viết mã với ý thức về “ mã người khác sẽ đọc “. Điều này đòi hỏi mã của bạn phải dễ hiểu. Tuy nhiên, điều “ dễ hiểu “ là gì? Làm thế nào để đạt được điều này?

Bạn cần học cách thực hiện điều này một cách đúng đắn. Bạn không muốn viết mã chỉ có thể đọc được bởi bạn mình hoặc mã logic đơn giản mà lại rối rắm và khó hiểu. Việc này là không hữu ích.

Hơn nữa, mã nguồn không chỉ được tạo ra và kết thúc mà còn được duy trì trong một thời gian dài, có thể là nhiều năm hoặc thậm chí nhiều thập kỷ. Thêm vào đó, những người phát triển thực hiện bảo trì trong khoảng thời gian đó có thể thay đổi. Khi viết mã, bạn cần phải làm cho mã của bạn dễ bảo trì với chất lượng cao và chi phí thấp.

Một cuốn sách nổi tiếng như “Clean Code” cũng là một lựa chọn tốt, nhưng cuốn sách hiện đại dưới đây cũng là một lựa chọn tốt. Nó dễ đọc, đặc biệt là đối với người mới học.
<!—
[良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方](https://www.amazon.co.jp/%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89-%E6%

82%AA%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%AD%E8%A8%88%E5%85%A5%E9%96%80-%E2%80%95%E4%BF%9D%E5%AE%88%E3%81%97%E3%82%84%E3%81%99%E3%81%84-%E6%88%90%E9%95%B7%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9-%E4%BB%99%E5%A1%B2/dp/4297127830)

https://qiita.com/taku_maru/items/4d1a5625d91edd0a0b77
—>

Có thể thao tác với các lệnh Linux cơ bản

Trong lĩnh vực lập trình, việc sử dụng lệnh Linux là rất phổ biến. Việc hiểu và thao tác được với các lệnh Linux cơ bản là rất quan trọng. Điều này không chỉ hữu ích khi phát triển cục bộ mà còn khi làm việc trên máy chủ.

Để học các lệnh Linux, bạn nên bắt đầu với các lệnh cơ bản như ls, cd, cp, mv, rm và các lệnh khác. Những lệnh này được sử dụng thường xuyên trong công việc hàng ngày và giúp bạn làm quen với thế giới Linux.

Đây là một kỹ năng không thể thiếu để thúc đẩy quá trình phát triển web mượt mà, vì vậy hãy nhớ học thuộc lòng (trên Windows là Powershell, trên macOS là các lệnh cơ bản của bash).

Nắm vững kiến thức cơ bản về Web

Việc hiểu cơ bản về Web là thiết yếu đối với mọi lập trình viên hiện đại. Hiểu rõ về chức năng và vai trò của Internet, các giao thức và quá trình gửi/nhận tin làm nền tảng quan trọng trong quá trình phát triển.

Các điểm quan trọng bao gồm:

  1. Tổng quan và vai trò của HTTP (Hypertext Transfer Protocol)
    • Hiểu cách điều khiển việc truyền nhận dữ liệu trên web.
  2. Các loại yêu cầu HTTP và vai trò của chúng
    • Hiểu về các phương thức yêu cầu như GET, POST và cách chúng được sử dụng.
  3. Tổng quan và vai trò của Client và Server
    • Hiểu cách giao tiếp diễn ra trên Internet.
  4. Tổng quan về mô hình tham chiếu OSI
    • Hiểu về các tầng mạng khác nhau trong giao tiếp mạng.
  5. Tổng quan và cách hoạt động của DNS
    • Hiểu về mối quan hệ giữa tên miền và địa chỉ IP trên Internet.

Nắm vững kiến thức cơ bản về DB và SQL

Bây giờ chúng ta sẽ chuyển sang phần thực sự làm cho bạn trở thành một nhà phát triển Backend chính hiệu.
Cơ sở dữ liệu (DB) đảm nhận vai trò trung tâm trong phát triển Backend. Việc hiểu và sử dụng DB một cách hiệu quả là không thể thiếu để quản lý dữ liệu hiệu quả và hỗ trợ các chức năng của ứng dụng.

1. Cơ bản về Cơ sở Dữ liệu và SQL

Cơ sở dữ liệu đóng vai trò quan trọng nhất trong phát triển Backend. Nó được sử dụng để cấu trúc hóa và lưu trữ dữ liệu trong ứng dụng, cũng như truy cập và duy trì dữ liệu. <!— Đầu tiên, hãy tham khảo kiến thức cơ bản qua các bài viết sau đây:

https://zenn.dev/ttskch/articles/4c1612a99b1459

https://zenn.dev/umi_mori/books/331c0c9ef9e5f0/viewer/9ba3b8
—>

2. Sự khác biệt giữa RDB và NoSQL

Cơ sở Dữ liệu Quan hệ (RDB) và cơ sở dữ liệu NoSQL là hai phương pháp quản lý dữ liệu chính. RDB sắp xếp dữ liệu dưới dạng bảng và sử dụng SQL (Structured Query Language) để thao tác dữ liệu. MySQL và PostgreSQL là những ví dụ phổ biến.

Ngược lại, cơ sở dữ liệu NoSQL không có cấu trúc và cung cấp mô hình dữ liệu linh hoạt. Nó bao gồm các loại như hướng tài liệu (ví dụ: MongoDB), key-value store (ví dụ: Redis) và cột gia đình (ví dụ: Cassandra).

3. Tổng quan về ORM (Object-Relational Mapping)

ORM là một công nghệ hỗ trợ kết nối giữa ngôn ngữ lập trình hướng đối tượng và cơ sở dữ liệu quan hệ. Nó ánh xạ bảng cơ sở dữ liệu thành các lớp và cho phép thực hiện các thao tác cơ sở dữ liệu thông qua các phương thức của lớp thay vì viết SQL trực tiếp. Điều này giúp nhà phát triển viết mã mức cao hơn và trừu tượng hóa sự phức tạp của cơ sở dữ liệu. Các ví dụ điển hình là ActiveRecord của Ruby và SQLAlchemy của Python.

Nắm vững kiến thức cơ bản về API

API (Giao diện Lập trình Ứng dụng) là một phần quan trọng của phát triển Backend, cho phép trao đổi dữ liệu giữa các ứng dụng. Đối với nhà phát triển Backend, việc thiết kế và triển khai API là kỹ năng quan trọng.

Tầm quan trọng của thiết kế API

Khi thiết kế API, nhà phát triển Backend cần xem xét các điểm sau đây:

  1. Thiết kế theo nguyên tắc RESTful

    • Thiết kế API dựa trên nguyên tắc của REST (Representational State Transfer) là một phương pháp tiêu chuẩn trên web. Sử dụng kiến trúc hướng nguồn tài nguyên và sử dụng HTTP Methods (GET, POST, PUT, DELETE) một cách chính xác là rất quan trọng.
  2. Định nghĩa và tài liệu hóa điểm cuối (Endpoint)

    • Xác định rõ vai trò của mỗi điểm cuối API và tài liệu hóa cách sử dụng sẽ giúp những người phát triển Frontend và người dùng khác dễ hiểu và sử dụng API.
  3. Bảo mật và xác thực

    • Bảo mật của API là rất quan trọng. Việc triển khai các biện pháp xác thực đúng cách giúp đảm bảo an toàn cho dữ liệu.
  4. Hiệu suất và khả năng mở rộng

    • Cần chú ý đến hiệu suất của API để có thể xử lý hiệu quả một lượng lớn các yêu cầu.

Bắt đầu từ việc hiểu sâu về API này, cuốn sách sau đây từ Oreilly Japan là một tài liệu tốt. Mặc dù chủ yếu nói về thiết kế API, nhưng nó cũng giải thích về API nói chung một cách rất rõ ràng.

Ngoài ra, việc sử dụng các công cụ như OpenAPI (Swagger) để tạo và quản lý tài liệu API là quan trọng. Dưới vai trò Backend, API có thể coi là “gương mặt” của hệ thống. Do đó, kiến thức sâu rộng và kinh nghiệm vững về mọi khía cạnh liên quan đến API, từ thiết kế đến triển khai, kiểm thử và tài liệu hóa, đều là điều quan trọng.

Kiến thức về Xác thực và Ủy quyền

Với những người phát triển Backend, Xác thực (Authentication) và Ủy quyền (Authorization) là hai khía cạnh quan trọng của thiết kế API. Xác thực là quá trình xác minh danh tính người dùng, trong khi Ủy quyền quản lý quyền truy cập vào các tài nguyên cụ thể. Để thiết kế một API an toàn, bạn cần hiểu rõ những khái niệm này và triển khai chúng một cách đúng đắn.

Có nhiều cách để xác thực, bao gồm cơ bản, OAuth, xác thực dựa trên token, và nhiều hơn nữa. Khi chọn cơ chế xác thực, bạn cần xem xét độ an toàn, dễ triển khai và trải nghiệm người dùng. <!— Để biết thêm thông tin chi tiết, bạn có thể tham khảo tại đây:

https://zenn.dev/akfm/articles/authentication-with-security —>

JSON Web Tokens (JWT)

JWT là một phương pháp phổ biến để trao đổi thông tin giữa các bên một cách nhẹ và an toàn, sử dụng đối tượng JSON. Đặc biệt, trong ứng dụng web, JWT thường được sử dụng để lưu trữ thông tin xác thực người dùng. JWT làm cho việc truyền đổi thông tin xác thực và thông tin khác giữa máy khách và máy chủ trở nên đơn giản, cung cấp một cơ chế xác thực không lưu trạng thái (stateless).

Ưu điểm của JWT là sự tự chứng thực, tức là JWT chứa tất cả thông tin cần thiết và không yêu cầu truy vấn cơ sở dữ liệu hay hệ thống khác. Điều này làm cho nó rất hữu ích trong các hệ thống phân tán và kiến trúc dịch vụ nhỏ (Microservices). <!— Để biết thêm chi tiết về JWT, bạn có thể tham khảo tại đây:

https://zenn.dev/nameless_sn/articles/the_article_of_jwt —>

Thành thạo ít nhất một ngôn ngữ lập trình

Cuối cùng thì chúng ta đã đến phần này rồi. Làm web engineer, nếu không biết lập trình thì chẳng có gì để nói cả. Hiện nay, có nhiều ngôn ngữ lập trình được sử dụng rộng rãi trong phát triển Backend, và để lựa chọn ngôn ngữ nào phù hợp là tùy thuộc vào mục tiêu cụ thể của bạn. Dưới đây là mô tả về 3 ngôn ngữ mà đối với người mới học có thể là lựa chọn tốt: Node.js, PHP, Ruby.

Node.js

Node.js là môi trường chạy để thực thi JavaScript ở phía server. Nó vượt trội trong việc xử lý không đồng bộ và áp dụng mô hình sự kiện. Điều này giúp xây dựng ứng dụng mạng hiệu quả và có khả năng mở rộng cao. Đặc biệt, nó thích hợp cho việc xây dựng ứng dụng thời gian thực và Backend của Single Page Application (SPA).

Việc học Node.js có lợi thế là bạn có thể tận dụng kiến thức JavaScript phổ biến ở phía Frontend. Điều này mở rộng con đường phát triển Full-Stack.

PHP

PHP là ngôn ngữ kịch bản được tối ưu hóa cho phát triển web, từ các trang blog đơn giản đến các ứng dụng web phức tạp. Đặc biệt, hệ thống quản lý nội dung (CMS) như WordPress thường sử dụng PHP, đánh dấu sự quan trọng của nó trong lĩnh vực này.

Ưu điểm của PHP là độ dốc học thấp và tài liệu phong phú. Ngoài ra, cài đặt trên các môi trường hosting chung cũng đơn giản, với nhiều dịch vụ hosting web hỗ trợ PHP.

Ruby

Ruby là ngôn ngữ hướng đối tượng với cú pháp đơn giản và dễ đọc. Sử dụng framework mạnh mẽ Ruby on Rails (Rails), bạn có thể nhanh chóng xây dựng ứng dụng và prototype hiệu quả. Rails theo nguyên tắc “Convention over Configuration,” giúp tăng tốc quá trình phát triển bằng cách tập trung vào quy ước thay vì cấu hình.

Ruby, đặc biệt là cùng Rails, được ưa chuộng trong các start-up và các nhóm phát triển nhỏ nhờ vào chu kỳ phát triển nhanh và dễ bảo trì.

Bây giờ, tùy thuộc vào mục tiêu cụ thể của bạn, hãy chọn một ngôn ngữ để học và bắt đầu hành trình phát triển của mình!

Phát triển sử dụng Framework

Việc nắm vững các Framework là không thể thiếu để phát triển Backend hiệu quả. Framework cung cấp cấu trúc cho ứng dụng và chuẩn hóa quy trình phát triển. Điều này giúp đơn giản hóa nhiệm vụ chung như bảo mật, thao tác cơ sở dữ liệu, quản lý phiên, và tăng cường hiệu suất phát triển.

NestJS

NestJS là một Framework của Node.js sử dụng TypeScript, lấy ảnh hưởng từ triết lý thiết kế của Angular. Framework này cung cấp một hệ thống Dependency Injection mạnh mẽ để thực hiện kiến trúc ứng dụng hiệu quả. Đặc biệt, NestJS thích hợp cho phát triển ứng dụng doanh nghiệp lớn, với cấu trúc được modularize, giúp đội ngũ phát triển lớn làm việc hiệu quả.

Laravel

Laravel là một Framework hiện đại được viết bằng ngôn ngữ PHP. Nó tích hợp nhiều tính năng mạnh mẽ như Eloquent ORM, Blade Template Engine, Middleware, Routing, và quản lý phiên. Những tính năng này giúp phát triển ứng dụng web nhanh chóng và hiệu quả.

Ruby on Rails

Ruby on Rails là một Framework dựa trên ngôn ngữ Ruby, áp dụng nguyên tắc “Convention over Configuration,” giúp nhà phát triển tập trung vào việc xây dựng ứng dụng thay vì thiết lập cấu hình. Rails sử dụng kiến trúc MVC (Model-View-Controller), giúp tách biệt các phần xử lý cơ sở dữ liệu, logic kinh doanh, và giao diện người dùng.

Kiến thức cơ bản về Bảo mật

Việc duy trì và bảo dưỡng dịch vụ đã phát triển cũng là một trong những nhiệm vụ của một Backend Engineer. Hiểu biết đúng đắn về bảo mật giúp bạn vận hành dịch vụ một cách an toàn.

Hãy nắm vững các điểm lưu ý khi triển khai dịch vụ và ứng dụng web. <!— Bạn có thể tìm hiểu một cách hệ thống qua cuốn sách:

“Taisysuru 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践” - Mua tại đây

Nếu bạn muốn đọc các bài viết, dưới đây là một số liên kết có thể tham khảo:

https://qiita.com/kurogoma939/items/3f763189ca8f29f753e4

https://qiita.com/shimada_slj/items/a8ebc171154568f49586 —>

11. Kiến thức cơ bản về Docker

Máy tính mà nhà phát triển sử dụng có thể khác nhau như Mac OSX, Windows, và mỗi người cài đặt các phần mềm khác nhau. Việc chia sẻ môi trường thực thi không dễ dàng.

Do đó, việc sử dụng máy ảo để tạo máy chủ ảo, và chia sẻ cấu hình máy ảo đó có thể là một giải pháp. Tuy nhiên, ở các mô hình ảo truyền thống, chúng thường nặng và tập tin chia sẻ không nhẹ.

Ngược lại, việc sử dụng Docker với kiểu ảo hóa container giúp tạo ra các môi trường nhẹ và chia sẻ cấu hình dễ dàng hơn. Docker là một cách quản lý môi trường chạy ứng dụng và có các dịch vụ như DockerHub để chia sẻ cấu hình.

Việc sử dụng Docker mang lại lợi ích chính là “quản lý môi trường chạy ứng dụng một cách dễ dàng và có thể chia sẻ với bất kỳ máy tính nào.”

12. Kiến thức cơ bản về Thiết kế

Dù khi mới bắt đầu, việc tham gia vào việc thiết kế không phải lúc nào cũng xảy ra, nhưng đọc hiểu tài liệu thiết kế và học kiến thức cơ bản là quan trọng.

Thiết kế Cơ sở dữ liệu (DB)

Thiết kế Cơ sở dữ liệu là quy trình xác định cách dữ liệu được lưu trữ trong cơ sở dữ liệu. Một thiết kế DB tốt đảm bảo tính nhất quán dữ liệu, truy cập dữ liệu hiệu quả và khả năng mở rộng.

Hãy chuẩn bị sẵn sàng cho việc tham gia vào công việc thiết kế khi cần thiết.

API Thiết kế

Trong phần vừa rồi, đã nói đến Thiết kế API đúng không? Hãy học cách nào để thiết kế một cách có ý thức chi tiết là gì.

Sơ đồ ER

Sơ đồ ER (Entity-Relationship Diagram) là một hình vẽ mô phỏng các mối quan hệ giữa các thực thể trong cơ sở dữ liệu. Bằng cách tạo sơ đồ ER, bạn có thể hiểu cấu trúc cơ sở dữ liệu một cách trực quan và hỗ trợ quá trình thiết kế.

13. Kiến thức cơ bản về Kiến trúc

Kiến trúc, thông thường, đề cập đến khái niệm về thiết kế và xây dựng hệ thống hoặc cấu trúc. Thường được gọi là “kiến trúc phần mềm,” nó chỉ đến các mô hình về cấu trúc của hệ thống phần mềm. Việc chọn một kiến trúc phù hợp giúp đảm bảo các thuộc tính chất lượng quan trọng như mở rộng, bảo trì, hiệu suất và bảo mật và đóng một vai trò quan trọng để đảm bảo sự thành công của dự án phần mềm dài hạn.

Kiến trúc Sạch sẽ (Clean Architecture)

Kiến trúc phần mềm định nghĩa cấu trúc cơ bản của hệ thống và xác định mối quan hệ giữa các thành phần, vị trí, giao tiếp và cơ chế hoạt động. Kiến trúc sạch sẽ là một phương pháp xây dựng hệ thống chất lượng cao bằng cách phân tách lớp phần mềm thành các lớp riêng biệt.

Kiến trúc Dịch vụ Micro

Kiến trúc Dịch vụ Micro chia ứng dụng thành các dịch vụ nhỏ và độc lập, mỗi dịch vụ có thể phát triển, triển khai và vận hành độc lập. Kiến trúc này cải thiện khả năng mở rộng và tính linh hoạt của hệ thống.

BFF (Backend for Frontend)

BFF là một mô hình kiến trúc, cung cấp các dịch vụ backend được tối ưu hóa cho một frontend cụ thể. Phương pháp này cung cấp các API phù hợp với nhu cầu của frontend, cải thiện trải nghiệm người dùng.

14. Viết kiểm thử

Việc viết kiểm thử có thể thay đổi tùy thuộc vào dự án. Trong các dự án nhỏ, có vẻ không chú trọng nhiều vào việc viết kiểm thử, nhưng hãy học cách làm để viết kiểm thử.

Nhìn chung về sự cần thiết của việc kiểm thử và chiến lược kiểm thử.

15. Khác

Một chút ngoại lệ, nhưng hiểu biết về các phương pháp phát triển như TDD hoặc DDD cũng là một điều tốt.

Kết luận

Đến đây, chúng ta đã đi sâu vào những kỹ năng cần thiết cho một Kỹ sư Backend ở cấp độ Junior. Tất nhiên, thế giới lập trình rất phức tạp, vì vậy có thể có những ý kiến như “Điều này cũng quan trọng” hoặc “Còn điều này nữa chứ?”.

Những nội dung trên đây đều là những kỹ năng được mô tả dựa trên việc đọc bài viết và hiểu biết từ thực tế của người khác. Hy vọng rằng nó sẽ giúp ích cho các Kỹ sư mới bắt đầu có thêm sức mạnh cho sự nghiệp của họ.

dev_pro_it
Đang làm IT tại Japan

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic