Home Blog Page 33

[Update] Bắt nhịp 8 xu hướng tuyển dụng IT nổi bật trong năm 2023 – 2025

Bắt nhịp 8 xu hướng tuyển dụng IT nổi bật trong năm 2023 – 2025

Năm 2023, các doanh nghiệp phải đối mặt với muôn vàn thách thức do tác động từ tình trạng suy thoái kinh tế, đại dịch covid vẫn đang tiếp diễn và xung đột vũ trang ngày càng gay gắt. Những thay đổi mạnh mẽ về mặt xã hội cũng đã ảnh hưởng rất nhiều đến nhu cầu tìm việc của các nhân sự ngành IT. Vậy nên, để tuyển dụng được nhân tài chất lượng, nhà tuyển dụng cần “đón đầu” xu hướng để lên kế hoạch tuyển dụng phù hợp, thay đổi và thích nghi với thị trường đầy biến động như hiện nay.

Bài viết này TopDev sẽ cho bạn góc nhìn tổng thể về những xu hướng tuyển dụng IT nổi bật nhất trong 3 năm tới. Bắt đầu thôi nào!

Những thách thức trong thị trường việc làm IT

Ngành CNTT đang đứng trước vô vàn thách thức, theo Báo cáo thị trường IT Việt Nam năm 2023 do TopDev phát hành, có 4 thách thức mà ngành IT cần phải vượt qua:

1. Suy thoái kinh tế

Những thách thức trong thị trường việc làm IT

  • Tuyển dụng đóng băng và mất việc làm: Nhiều tổ chức đã tạm ngưng kế hoạch tuyển dụng hoặc giảm lượng nhân viên thông qua việc sa thải, điều này dẫn đến giảm cơ hội việc làm trong lĩnh vực CNTT khi các công ty ưu tiên các biện pháp cắt giảm chi phí và tập trung vào việc duy trì sự ổn định tài chính.
  • Giảm ngân sách CNTT: Các tổ chức thắt chặt ngân sách và giảm chi tiêu cho các dự án và sáng kiến CNTT. Điều này dẫn đến giảm nhu cầu về chuyên gia CNTT khi các công ty thu hẹp quy mô triển khai, nâng cấp hoặc mở rộng công nghệ mới.
  • Dự án CNTT bị trì hoãn hoặc bị hủy bỏ: Sự bất ổn về kinh tế có thể khiến các công ty trì hoãn hoặc hủy bỏ các dự án CNTT đã lên kế hoạch. Các dự án quy mô lớn đòi hỏi đầu tư đáng kể có thể bị tạm dừng cho đến khi điều kiện kinh tế được cải thiện.
  • Tăng cường cạnh tranh việc làm: Thị trường việc làm CNTT đã trở nên cạnh tranh hơn khi số lượng vị trí công việc sẵn có giảm đi trong khi số lượng người tìm việc có khả năng tăng lên. Điều này có thể dẫn đến mức độ cạnh tranh cao hơn cho các vị trí CNTT hiện có, khiến các lập trình viên gặp khó khăn hơn trong việc đảm bảo cơ hội việc làm mới.

2. Cần nhiều lập trình viên có chuyên môn cao hơn

Trong tình hình khó khăn với quỹ lương eo hẹp hơn và yêu cầu hoạt động kinh doanh ngày càng tối ưu hơn, nhu cầu về các lập trình viên chuyên môn cao và giàu kinh nghiệm sẽ tăng lên để đẩy nhanh các quy trình và đảm bảo phát triển các sản phẩm chất lượng cao. Điều quan trọng cần lưu ý là việc trở thành một lập trình viên cấp cao không chỉ được quyết định bởi số năm kinh nghiệm mà còn là sự kết hợp của nhiều yếu tố khác nhau.

Mặc dù có rất nhiều lập trình viên trẻ, tài năng ở Việt Nam nhưng nhiều người vẫn thiếu các kỹ năng mềm cần thiết để làm việc hiệu quả như giao tiếp, làm việc nhóm, kỹ năng tự tổ chức và giải quyết vấn đề. Một thách thức khác là rào cản ngôn ngữ. Nhiều lập trình viên Việt Nam có thể chưa có trình độ thành thạo cần thiết để làm việc với khách hàng quốc tế hoặc cộng tác với các nhóm lập trình ở quốc gia khác.

  Top 6 công việc IT phát triển nhanh nhất tại Việt Nam

  Tổng quan mức lương lập trình viên Việt Nam 2023

3. Giữ chân nhân viên & sự kỳ vọng cao về lương

Thông thường các công ty phần mềm tuyển người, đào tạo họ nhưng phải chứng kiến việc họ rời khỏi khi họ đã có đủ kinh nghiệm trong công việc. Bất kỳ công ty nào cũng cần đầu tư để nhân viên thích ứng với quy trình làm việc.

Giữ chân nhân viên & sự kỳ vọng cao về lương
Biểu đồ lương nhân sự IT

Trong vài năm qua, ngành công nghệ đã chứng kiến mức lương trung bình tăng đáng kể. Các vai trò cấp quản lý thường được trả mức lương cao nhất, trong khi các lập trình viên Web và lập trình viên theo đuổi các xu hướng mới đã trải qua mức tăng đáng kể nhất. Trong thị trường việc làm cạnh tranh ngày càng cao, người tìm việc có quyền lựa chọn những nhà tuyển dụng đáp ứng được mức lương mong đợi của họ. Đó là lý do tại sao doanh nghiệp nên đưa ra chính sách lương công bằng và minh bạch, đáp ứng nhu cầu của lực lượng lao động của mình.

4. Sự trỗi dậy của trí tuệ nhân tạo (AI)

  • Tự động hóa các tác vụ thường xuyên: Nhu cầu tuyển dụng các công việc liên quan đến nhập dữ liệu thủ công, phân tích cơ bản hoặc ra quyết định dựa trên quy tắc có thể giảm đi.
  • Thay đổi về yêu cầu kỹ năng: Nhu cầu ngày càng tăng đối với những cá nhân có thể phát triển, triển khai và duy trì các hệ thống và thuật toán AI.
  • Chuyển đổi vai trò công việc hiện tại: Tạo ra các vị trí mới tập trung vào việc quản lý và bảo trì hệ thống AI.
  • Tăng cường tập trung vào các kỹ năng đặc trưng của con người: Ngày càng chú trọng vào các kỹ năng đặc trưng của con người, chẳng hạn như tính sáng tạo, tư duy phản biện, giải quyết vấn đề, trí tuệ cảm xúc và ra các quyết định phức tạp.
  • Nhu cầu quản lý và phân tích dữ liệu: Nhu cầu về Data Engineer, Data Analyst và Data Scientist đang có xu hướng tăng cao để đảm bảo chất lượng và độ chính xác của dữ liệu được sử dụng trong các hệ thống AI.

Tham khảo việc làm AI hấp dẫn, lương cao trên TopDev

Xu hướng tuyển dụng IT tại Việt Nam 2023 – 2025

1. Nhu cầu nhân tài công nghệ vẫn tăng

Nhu cầu nhân tài công nghệ

Nhu cầu về nhân tài công nghệ tiếp tục tăng trong rất nhiều ngành kinh tế số lẫn truyền thống. Các doanh nghiệp đang ngày càng dựa vào công nghệ để thúc đẩy đổi mới, nâng cao hiệu quả và duy trì tính cạnh tranh, dẫn đến nhu cầu cao hơn về các nhân tài công nghệ.

2. Tuyển dụng dựa trên kỹ năng & upskill/reskill

Các nhà tuyển dụng đang chú trọng hơn vào các kỹ năng thay vì chỉ dựa vào bằng cấp truyền thống. Tuyển dụng dựa trên kỹ năng bao gồm việc đánh giá ứng viên dựa trên kỹ năng thực tế, kinh nghiệm đã được chứng minh và khả năng thích ứng với công nghệ mới. Các công ty cũng đang đầu tư vào các chương trình nâng cao và đào tạo lại kỹ năng để phát triển lực lượng lao động hiện có và thu hẹp khoảng cách kỹ năng.

3. Tuyển dụng dựa trên AI

Các công cụ và nền tảng hỗ trợ AI đang ngày càng được sử dụng nhiều hơn trong quá trình tuyển dụng công nghệ. Những công cụ này giúp hợp lý hóa việc tìm nguồn ứng viên, sàng lọc sơ yếu lý lịch và đánh giá ứng viên bằng cách tận dụng các thuật toán máy học và xử lý ngôn ngữ tự nhiên. Các công cụ tuyển dụng dựa trên AI nhằm mục đích nâng cao hiệu quả, giảm sự thiên vị và xác định những ứng viên phù hợp nhất.

4. Employer Branding và trải nghiệm ứng viên

Employer Branding và trải nghiệm ứng viên

Các tổ chức đang tập trung vào xây dựng thương hiệu nhà tuyển dụng để thu hút nhân tài công nghệ hàng đầu. Họ tập trung nêu bật văn hóa, giá trị và cơ hội phát triển – học hỏi của công ty. Cải thiện trải nghiệm của ứng viên trong suốt quá trình tuyển dụng đã trở thành ưu tiên hàng đầu của các công ty nhằm cung cấp trải nghiệm tích cực và cá nhân hóa cho ứng viên.

5. Kỹ năng mềm và sự phù hợp về văn hóa

Bên cạnh các kỹ năng cứng về công nghệ, nhà tuyển dụng cũng bắt đầu chú trọng nhiều hơn đến các kỹ năng mềm và sự phù hợp với văn hóa. Khả năng giao tiếp, làm việc nhóm, giải quyết vấn đề, khả năng thích ứng và lãnh đạo hiệu quả được đánh giá cao ở các chuyên gia công nghệ.

6. GIG Economy & Freelancer

GIG Economy & Freelancer

Gig economy đang thu hút được sự quan tâm trong ngành công nghệ. Các công ty ngày càng tuyển dụng freelancer hoặc nhà thầu bên ngoài để thực hiện các dự án ngắn hạn hoặc các nhiệm vụ chuyên môn cụ thể. Điều này cho phép các tổ chức tiếp cận chuyên môn cụ thể và điều chỉnh quy mô lực lượng lao động của họ khi cần thiết.

7. Ra quyết định dựa trên dữ liệu

Các công ty đang tận dụng phân tích dữ liệu và sự thấu hiểu (insight) để đưa ra quyết định tuyển dụng chính xác hơn. Dữ liệu đang được sử dụng để xác định xu hướng, tối ưu hóa quy trình tuyển dụng và đánh giá hiệu quả của chiến lược tuyển dụng.

8. Học tập và phát triển liên tục

Với những tiến bộ công nghệ nhanh chóng, các nhà tuyển dụng đang ưu tiên các cơ hội học tập và phát triển liên tục cho đội ngũ công nghệ của họ. Các chương trình đào tạo, sáng kiến cố vấn và quyền truy cập vào các nền tảng học tập trực tuyến được cung cấp để hỗ trợ nâng cao kỹ năng liên tục và phát triển nghề nghiệp.

Tóm lại

Những xu hướng tuyển dụng IT đang dần thay đổi để đáp ứng với sự phát triển nhanh chóng của ngành. Điều quan trọng là các doanh nghiệp và tổ chức phải thích nghi với những thay đổi này và áp dụng các chiến lược tuyển dụng phù hợp để thu hút và giữ chân nhân tài. Bên cạnh đó, những người đang làm việc trong ngành CNTT cũng cần phải phát triển kỹ năng và kiến thức của mình để thích nghi với môi trường làm việc thay đổi liên tục.

Bạn có thể tìm hiểu toàn cảnh thị trường IT cũng như những chỉ số chi tiết về thị trường IT thông qua Vietnam IT Market Report 2023 – Vietnam Tech Talents Report do TopDev phát hành.

Xem thêm:

Xem thêm các vị trí công việc khác tại TopDev

Quy tắc đặt tên biến trong Python đúng chuẩn 2024

Quy tắc đặt tên biến trong Python đúng chuẩn 2023

Đặt tên biến thường là vấn đề nhức nhối không chỉ của anh em Junior mới vào nghề mà còn cả những ông Senior lão làng. Chỉ là đặt tên thôi nhưng chưa bao giờ là chuyện đơn giản, bởi tất cả đều có quy tắc riêng.

Quy tắc ở đây không phải là quy tắc cứng nhắc, chỉ đơn giản là những cách thức đặt tên phổ biến. Với những cách đặt tên này, nếu anh em tuân theo sẽ tốt hơn khi viết hoặc maintain code.

Quy tắc đặt tên biến trong PythonChỉ là cái tên cũng đủ để anh em nhức đầu

Bài viết này cung cấp một số quy chuẩn thường được dùng để đặt tên biến. Mời anh em đón đọc

1. Đặt tên trong python

Đối với ngôn ngữ lập trình Python nói riêng và các ngôn ngữ lập trình khác nói chung. Tất cả đều quy định rất rõ các yêu cầu phải có khi đặt tên biến. Cụ thể đối với ngôn ngữ Python, ta có:

    • A variable name must start with a letter or the underscore character – Biến không thể bắt đầu với ký tự hoặc gạch chân.
    • A variable name cannot start with a number – Biến không thể bắt đầu với số.
    • A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ ) – Biến chỉ có các ký tự từ A-z và 0-9 hoặc gạch dưới.
    • Variable names are case-sensitive (age, Age and AGE are three different variables) – Trường hợp viết thường, viết hoa hoặc viết hoa một phần, các biến được hiểu là khác nhau.

# Đặt tên biến hợp lệ
myvar = "John"
my_var = "John"
_my_var = "John"
myVar = "John"
MYVAR = "John"
myvar2 = "John"

#Tên biến không hợp lệ:
2myvar = "John"
my-var = "John"
my var = "John"

Quy định là vậy nhưng thông thường anh em developer sẽ đặt như thế nào?

Đây, có ngay đây!

  Người dùng nhập liệu với hàm input() trong Python

2. Naming convention

Việc đặt tên biến giúp cho chương trình hoặc code anh em viết ra dễ hiểu và dễ bảo trì. Đối với class, methods, interface hay packages. Tất cả đều có quy chuẩn riêng cho việc đặt tên. Variables cũng không phải là điều ngoại lệ.

Có 3 tiêu chí anh em cần hết sức lưu ý khi đặt tên biến (Python nói chung và các ngôn ngữ khác nói riêng):

    • Variable names should be short yet meaningful – Tên biến nên ngắn gọn và ý nghĩa
    • Common names for temporary variables are ijkm, and n for integers; cd, and e for characters. – Với các biến lặp thường nên sử dụng các biến được quy chuẩn với nhau như i,j,k,m và n
    • Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed – Biến không nên bắt đầu với gạch dưới hoặc dấu $ (ngoại trừ ngôn ngữ php)

Naming convention

Đối với ngôn ngữ lập trình Python, tên biến nên áp dụng convention tương tự như function. Cụ thể ở đây là việc ký tự đầu tiên luôn viết thường.

Dưới đây là một số loại convention khác thường sử dụng khi đặt tên biến.

  Quy tắc đặt tên biến trong Python đúng chuẩn 2024
Phần 2 : Cú pháp thông dụng”]

3. Rules cho Python

Đầu tiên, nhắc luôn với anh em rules đây không được hiểu theo nghĩa cứng nhắc. Tức là bắt buộc phải đặt tên theo như vậy.

Rules cho PythonĐể mà code chạy được, compiler được thì anh em chỉ cần apply rule đặt tên ở phần 1 đã nêu là được rồi. Tuy nhiên rules này được define theo nhiều người khác đã và đang code Python. Nếu anh em theo rules này, code của anh em sẽ dễ dàng để maintain, dễ đọc, dễ hiểu không chỉ với bản thân mình mà còn cho người khác nữa.
Cụ thể như sau:

    • Variables should always start with a lower-case character – Biến nên thường bắt đầu với ký tự viết thường
    • Use underscores instead of spaces to separate words – Chia tách các từ bằng gạch dưới thay vì khoảng trắng
    • Don’t use upper-case characters – Đừng sử dụng ký tự viết hoa
    • Starting with underscores is ok, but is used for a special purpose – Bắt đầu với viết hoa cũng ok, nhưng phải có mục đích đặc biệt

Mục đích đặc biệt ở đây anh em hiểu là biến đó sử dụng cho mục đích cá biệt, khác với các biến khác.

4. Pascal Case

Loại này xuất phát từ ngôn ngữ lập trình pascal. Với loại này, chữ cái đầu tiên trong biến luôn được viết hoa. Ví dụ dưới đây cho anh em hiểu về 2 biến tạo với Pascal Case

    • ThisIsPascalCase
    • AnotherPascalCaseExample

Với tiên biến được đặt kiểu này, ưu điểm là dễ đọc, dễ hiểu mục đích của biến sử dụng. Thông thường như anh em làm Java thì classes bắt buộc phải theo kiểu Pascal Case.

Tuyển dụng Python mọi cấp độ tại đây

5. Cammel Case

Cammel case tương tự với Pascal case nhưng chữ cái đầu tiên không được viết hoa. Ưu điểm là cách viết nhanh nhẹn. Anh em cũng dễ dàng phân biệt giữa class và variable trong quá trình sử dụng.

Cammel CaseThông thường, mặc định khi thấy chữ cái đầu tiên không viết hoa sẽ là Cammel Case và nó là biến (variable). Ví dụ

    • thisIsPascalCase
    • anotherPascalCaseExample

Như hình ảnh phía tren, do chữ C viết hoa to hơn như bướu lạc đà, nên họ gọi là camelCase

Tuyển dụng Python Hà Nội mọi cấp độ tại đây

6. Snake Case

Snake case là cách viết cho việc đặt tên biến nhưng luôn có gạch dưới (underscore) để tách bạch từng từ. Ví dụ:

    • this_is_snake_case
    • THIS_IS_SCREAMING_SNAKE_CASE

Snake Case
Nguồn ảnh / Source: juniortoexpert.com
Cách đặt tên biến kiểu này thường ít khi sử dụng, nhưng tuỳ vào mục đích và ngôn ngữ anh em vẫn có thể bắt gặp các biến được đặt tên kiểu này.

7. Tham khảo

Cảm ơn anh em đã đọc bài – Thank you for your attention – Happy coding!

Tác giả: Kiên Nguyễn

Top IT jobs hot dành riêng cho Top Developers tại TopDev!

Solution Architect là gì? Những kỹ năng cần có của một Solution Architect

Solution Architect là gì? Mô tả công việc và những kỹ năng cần có

Khi xây dựng một hệ thống lớn dành cho các tổ chức, công ty thì việc thiết kế, phát triển và quản lý được một giải pháp kiến trúc để vận hành là một công việc đòi hỏi những kỹ năng chuyên môn cao. Vì thế mà vị trí Solution ArchitectKiến trúc sư giải pháp thường được đảm nhiệm bởi các kỹ sư có nhiều năm kinh nghiệm cùng với những hiểu biết sâu sắc về các công nghệ liên quan. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về Solution Architect là gìnhững kỹ năng cần có của một Solution Architect nhé.

Solution Architect là gì?

Khi một tổ chức, công ty hay doanh nghiệp đối mặt với nhu cầu chuyển đổi các quy trình và hệ thống để có thể đáp ứng được các yêu cầu kinh doanh mới; họ sẽ cần tìm ra được một danh sách các hoạt động cần phải làm theo trình tự từ thiết kế, mô tả, triển khai đến vận hành và quản lý; nó được gọi là một kiến trúc giải pháp – Solution Architecture. Và để đưa ra được giải pháp phù hợp với tình hình của doanh nghiệp và đáp ứng được yêu cầu của thị trường; chúng ta cần một người được gọi với vai trò là Solution Architect.

Kiến trúc sư giải pháp – Solution Architect là người chịu trách nhiệm dẫn dắt thực hành và đưa ra tầm nhìn kỹ thuật tổng thể cho một giải pháp cụ thể. 

Solution Architect là gì?

Gần đây chúng ta rất thường nghe từ khóa “chuyển đổi số”, và để một tổ chức, doanh nghiệp thực hiện được việc chuyển đổi số thì luôn cần những giải pháp kiến trúc đồng bộ bao gồm cả các quy trình về vận hành, kinh doanh kết hợp với công nghệ. Ngoài ra có thể kể đến một số ví dụ khác khi nhắc đến kiến trúc sư giải pháp như việc phát triển cơ sở hạ tầng cloud cho doanh nghiệp, triển khai các microservices cho thương mại điện tử hay áp dụng các biện pháp bảo mật cho dữ liệu, hệ thống, an ninh mạng.

  Câu hỏi phỏng vấn Solution Architect không nên bỏ lỡ

  Đâu là điểm khác biệt giữa Solution Architect và Software Architect?

Công việc của một Solution Architect

Công việc của một kiến trúc sư giải pháp tập trung vào các quyết định về giải pháp và phân tích tác động của chúng đối với các mục tiêu và kết quả kinh doanh tổng thể; hay nói cách khác Solution Architect sẽ phải tập hợp các giải pháp công nghệ và đưa ra chiến lược để thực hiện chúng.

Cụ thể chi tiết công việc bao gồm:

  • Tham gia vào quá trình phân tích nghiệp vụ để định hướng, đề xuất về giải pháp áp dụng hoặc gợi ý điều chỉnh nghiệp vụ giúp tăng tính khả thi của phần mềm
  • Đưa ra các giải pháp kiến trúc đáp ứng nhu cầu của khách hàng, yêu cầu của dự án về mặt chức năng (functional) và phi chức năng (non-functional)
  • Phân tích, đánh giá các giải pháp, ghi nhận các ý kiến đánh giá giải pháp từ các bên liên quan; sau đó lựa chọn giải pháp phù hợp, tối ưu nhất
  • Truyền đạt, giải thích và tài liệu hóa chi tiết về giải pháp, kiến trúc đã lựa chọn và chuẩn bị xây dựng cho các bên liên quan, nhất là team phát triển
  • Tạo prototype cho giải pháp; tham gia trực tiếp vào quá trình phát triển, coding phần core, xử lý khó và phức tạp nếu cần. Sau đó chuyển giao lại cho team phát triển để thực hiện giai đoạn tiếp theo của dự án
  • Hỗ trợ quản lý dự án về mặt công nghệ, kiểm soát quá trình triển khai giải pháp và xử lý phát sinh nếu có.

Công việc của một Solution Architect

Tham khảo thêm các vị trí tuyển dụng Solution Architect lương cao tại Topdev

Những kỹ năng cần có của một Solution Architect

Kiến trúc sư giải pháp là một vị trí đòi hỏi nhiều kỹ năng liên quan đến kỹ thuật, sự hiểu biết về mặt công nghệ cũng như phải thường xuyên cập nhật các xu hướng công nghệ mới. Ngoài ra, kinh nghiệm và sự thấu hiểu về doanh nghiệp, mô hình kinh doanh liên quan đến giải pháp kiến trúc sắp tới cũng là một yếu tố quan trọng. Cùng liệt kê các kỹ năng quan trọng nhất của một Solution Architect (SA) nhé:

  • Kỹ năng giao tiếp: SA là vị trí có vai trò trung tâm, thường xuyên phải giao tiếp và giúp các bên liên quan hiểu được, hiểu đúng giải pháp cần triển khai; vì thế giao tiếp là một kỹ năng không thể thiếu của SA.
  • Kỹ năng quản lý dự án và nguồn lực: mặc dù không tham gia trực tiếp vào quá trình phát triển dự án, SA vẫn cần đảm bảo rằng các nguồn lực của dự án được sử dụng một cách có hiệu quả theo từng giai đoạn triển khai.
  • Kỹ năng phân tích chuyên sâu: một giải pháp kiến trúc có ảnh hưởng đến cả phần mềm, phần cứng với nhiều chi tiết nhỏ hoạt động cùng nhau. SA phải là người ghi nhớ tất cả các chi tiết của dự án và phân tích chuyên sâu để thực hiện một cách chính xác nhất.
  • Kỹ năng nhận dạng và phân tích rủi ro: các rủi ro luôn luôn tồn tại trong quá trình phát triển hay triển khai của dự án; công việc của SA đòi hỏi nhận dạng, phân tích được chúng ta đưa ra được các biện pháp phòng ngừa.
  • Kỹ năng công nghệ: Đây là kỹ năng cơ bản, thiết yếu nhất của SA; thông thường một kỹ sư công nghệ có hiểu biết về cả phần mềm và phần cứng với kinh nghiệm làm việc từ 8-10 năm trong ngành thì bắt đầu đảm nhiệm được vị trí của một SA.

Những kỹ năng cần có của một Solution Architect

Cùng với việc trang bị các kỹ năng trên, để trở thành một Solution Architect được công nhận bởi khách hàng và các tổ chức; kiến trúc sư giải pháp cũng nên trang bị một số các chứng chỉ quan trọng của nghề như:

  • AWS Certified Solutions Architect
  • The Open Group Certified Architect (Open CA)
  • Google Professional Cloud Architect

Kết bài

Như vậy chúng ta vừa cùng nhau tìm hiểu về vị trí Solution Architect, một người có vai trò quan trọng quyết định lớn đến sự phát triển của dự án nói riêng và các hoạt động trong tổ chức, doanh nghiệp nói chung. Đây là một vị trí có trách nhiệm lớn cùng việc đòi hỏi nhiều kỹ năng liên quan đến công nghệ, cũng vì thế là vị trí mà nhiều anh em IT hướng tới trong sự nghiệp. Hy vọng bài viết hữu ích dành cho bạn, hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Lodash – Tiện ích dắt túi của dân lập trình Javascript

Lodash là gì – Tiện ích dắt túi của dân lập trình Javascript

Bài viết được sự cho phép của tác giả Sơn Dương

Bạn có nhận thấy là công việc lập trình cũng chỉ quanh quẩn các thao tác xử lý Mảng, Object… đúng không? Bản thân các ngôn ngữ lập trình hiện đại như Javascript cũng đã có sẵn nhiều hàm, công cụ mạnh mẽ để giúp bạn làm việc với Mảng, Object hiệu quả.

Lodash là một trong những thư viện tuyệt vời, cung cấp nhiều công cụ giúp bạn thao tác với mảng, object… đơn giản hơn rất nhiều.

Có thể bạn cũng đã biết tới thư viện Lodash này rồi. Tuy nhiên, qua bài viết này mình sẽ tổng hợp một số hàm nổi bật lodash mà các bạn rất hay sử dụng trong mọi dự án.

Lodash là gì?

Lodash là một thư viện Javascript cung cấp sẵn các hàm để thao tác với Array, Object, String, Function… được đơn giản hơn. Lodash là một nhánh được tách ra từ thư viện nổi tiếng một thời underscore.js.

Một khi đã thử dùng qua một vài hàm của Lodash, đảm bảo bạn sẽ bị nghiện và không thể thiếu nó trong các dự án sau này.

Thư viện Lodash javascript có rất nhiều tính năng, được chia thành các nhóm như: Array, Object, Function, Date, Number…

Một số hàm lodash hay sử dụng nhất

Phần này, mình sẽ tổng hợp một số hàm của lodash mà mình thường xuyên sử dụng trong các dự án.

Để cài đặt lodash, bạn có nhiều cách như cài qua theo kiểu module bằng NPM, hoặc import qua CDN. Ví dụ, với dự án html đơn giản là mình import thư viện qua CDN trong thẻ head như sau:

<head>
...
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
...
</head>

Cách sử dụng rất đơn giản, bạn chỉ cần gọi lodash bằng ký tự gạch dưới _ sau đó là tên hàm.

Cú pháp:

_.<tên hàm>(tham số)

  Import lodash như thế nào mới đúng

  debounce, throttle và once - ba hàm thêm cách giải quyết logic người dùng!

orderBy

Như tên của hàm đã nói lên tác dụng của nó. Hàm này có chức năng sắp xếp các phần tử trong mảng theo tiêu chí nào đó.

Ví dụ: sắp xếp mảng dưới đây với các item giá tăng dần

const items = [
  { name: 'Item A', price: 2 },
  { name: 'Item B', price: 8 },
  { name: 'Item C', price: 5 },
  { name: 'Item D', price: 4 }
];

const result = _.orderBy(items, ['price'], ['asc']);
console.log(result)

chunk

Cắt một mảng thành nhiều mảng con với kích thước tùy ý.

const array = [ 1, 2, 3, 4 ];

const result = _.chunk(array, 2);
console.log(result)
// KQ => [[1, 2], [3, 4]]

Ứng tuyển việc làm Javascript lương cao trên TopDev

flatten

Làm phẳng một mảng có nhiều mảng con lồng trong đó.

const array = [1, [2, [3, [4]], 5]];

const result = _.flatten(array);
console.log(result)
// => [1, 2, [3, [4]], 5]

Hàm này mới chỉ làm phẳng được một level, nếu bạn muốn kết quả là một mảng phẳng hoàn toàn, không còn mảng con lồng trong nữa thì sử dụng flattenDeep()

const array = [1, [2, [3, [4]], 5]];

const result = _.flattenDeep(array);
console.log(result)
// => [1, 2, 3, 4, 5]

Bạn thấy khoái chưa! Nếu mà làm phẳng kiểu thủ công chắc cũng hết hơi.

take

Tạo một mảng mới được trích xuất từ một mảng với kích thước tùy ý.

const array = [1, 2, 3];
const result = _.take(array, 2);
console.log(result)
// result => [1, 2]

difference

Tạo một mảng gồm các phần tử không xuất hiện trong các mảng đã cho (được truyền thông qua tham số).

const result = _.difference([1, 2, 3], [2, 3, 4]);
console.log(result)
// result => [1]

isEmpty

Hàm này nghe có vẻ đơn giản, nhưng lại rất hay sử dụng để kiểm tra và tránh những lỗi crash không đáng có. Hàm này có tác dụng kiểm tra một object, collection, map, hay set có bị rỗng hay không.

_.isEmpty({});
// => true
_.isEmpty({ name: 'John Doe' });
// => false
_.isEmpty([])
// => true

throttle

Hàm này có tác dụng tương tự như hàm setInterval mặc định của JS vậy. Có tác dụng tạo một hàm để chỉ gọi một hàm truyền vào nhiều nhất một lần trong khoảng thời gian được chỉ định.

const throttled = _.throttle(() => {
 console.log('Throttled after 50ms!');
}, 50);

window.addEventListener('resize', throttled);

debounce

Tương tự như hàm setTimeout mặc định của JS.

const debounced = _.debounce(() => {
 console.log('Debounced after 400ms!');
}, 400);

window.addEventListener('resize', debounced);

merge

Hàm này mới thực sự đáng giá. Có tác dụng mà gộp nhiều object vào làm một.

const firstObject = { 'A': [{ 'B': 1 }, { 'C': 2 }] };
const secondObject = { 'A': [{ 'B': 3 }, { 'D': 4 }] };
const result = _.merge(firstObject, secondObject);
console.log(result)
// result => { A: [{ B: 3 }, { C: 2, D: 4 }] }

clone

Như bạn cũng biết, JS cũng tương tự như Java, cũng có kiểu dữ liệu tham chiếu và tham trị. Do đó, khi bạn gán một biến cho một biến khác thông qua dấu =, thực chất là chỉ truyền địa chỉ vùng nhớ của biến đó thôi.

Do đó, khi một biến thực hiện thay đổi giá trị là biến còn lại cũng bị thay đổi theo.

Ví dụ về việc thay đổi vùng nhớ khi gán biến.

const website = {website: "VNTALKING.COM", age: 10}
const newwebsite = website;
newwebsite.age = 20;
console.log(website)
// {website: "VNTALKING.COM", age: 20}

Để giải quyết vấn đề này, chúng ta cần phải clone cả vùng nhớ chứ không chỉ là mỗi địa chỉ vùng nhớ.

const website = {website: "VNTALKING.COM", age: 10}
const newwebsite = _.clone(website);
newwebsite.age = 20;
console.log(website)
// {website: "VNTALKING.COM", age: 10}

Trên đây là những hàm mình hay sử dụng nhất của lodash javascript. Ngoài ra, còn nhiều hàm khác nữa, vì phạm khuôn khổ bài viết có hạn, bạn có thể vào trang tài liệu chính thức của lodash để khai phá thêm nhé. https://lodash.com/docs

Bài viết gốc được đăng tải tại vntalking.com

Có thể bạn quan tâm:

Xem thêm việc làm công nghệ hấp dẫn trên TopDev

Tạo RESTful API đơn giản bằng Nodejs + MongoDB

Tạo RESTful API đơn giản bằng Nodejs + MongoDB

Bài viết được sự cho phép của tác giả Sơn Dương

Phần tiếp theo của khóa học Lập trình Node.js cơ bản, mình sẽ hướng dẫn các bạn học cách kết hợp Nodejs với cơ sở dữ liệu, nổi bật nhất là MongoDB. Để các bạn dễ hình dung, chúng ta sẽ cùng nhau tạo RESTful API đơn giản bằng Nodejs + MongoDB.

Khi chúng ta xây dựng ứng dụng Web hay các ứng dụng phía server, việc tạo RESTful API để tương tác với client trở lên vô cùng phổ biến.

Ở bài viết này, mình sẽ tạo RESTful API hỗ trợ đủ 4 actions: CRUD ( Create – Read – Update – Delete).

OK, sau khi môi trường lập trình đã sẵn sàng, chúng ta bắt tay vào tạo RESTful API thôi!

#Tạo RESTful API

Tạo RESTful API là một kiểu thiết kế ứng dụng trong đó quy định định dạng của địa chỉ URL và phương thức HTTP sử dụng để quản lý tài nguyên trên server.

Tài nguyên trên Server trong bài viết này mình giả sử là danh sách person trong Database.

Việc thiết kế REST cũng khá đơn giản, chúng ta sẽ định nghĩa 4 hàm xử lý 4 actions:

  • Tạo mới tài nguyên (ví dụ thêm một person).
  • Chỉnh sửa tài nguyên có sẵn (ví dụ cập nhập thông tin của một person).
  • Lấy về dữ liệu của tài nguyên (xem thông tin của một person/hoặc nhiều person)
  • Xóa tài nguyên (Xóa thông tin của một person)

Cụ thể trong bài viết này thì mình sẽ thiết kế như sau:

Thiết kế REST API đơn giản

  Giới thiệu về GraphQL. Cách giải quyết những hạn chế của RESTful API

  Giới thiệu Swagger – Công cụ document cho RESTfull APIs

#Cấu hình Node.js với Express framework

Để bắt đầu, chúng ta sẽ tạo mới một dự án với các dependencies cần thiết. Từ cửa sổ lệnh, chúng ta thực hiện các lệnh sau:

npm init -y
npm install express body-parser mongoose --save

Kết thúc những lệnh trên, chúng ta sẽ tạo một package.json, và cài đặt ExpressJS, Mongoose và một package hỗ trợ chuyển dữ liệu trong cách request từ client thành JSON data.

Để đơn giản, mình sẽ cho tất cả mã nguồn vào một file app.js. Tuy nhiên, điều này không được khuyến khích ở dự án thực tế nhé. Với dự án thực tế, các bạn nên ứng dụng những quy tắc như nguyên lý SOLID để đảm bảo dự án clean, dễ maintain.

Bạn tạo tệp app.js tại thư mục gốc của dự án:

/**
 * Son Duong
 * https://vntalking.com
 * June 14, 2019
 */
const Express = require("express");
const Mongoose = require("mongoose");
const BodyParser = require("body-parser");

var app = Express();

app.use(BodyParser.json());
app.use(BodyParser.urlencoded({ extended: true }));

// Define REST API
app.post("/person", async (request, response) => {});
app.get("/people", async (request, response) => {});
app.get("/person/:id", async (request, response) => {});
app.put("/person/:id", async (request, response) => {});
app.delete("/person/:id", async (request, response) => {});

app.listen(3000, () => {
 console.log("Listening at :3000...");
});

Mình sẽ giải thích một chút về đoạn code trên. Đầu tiên, chúng ta cần require những module cần thiết như: express, mongoose và body-parser.

Tiếp theo, chúng ta sẽ định nghĩa API như được thiết kế mục 2 ở trên bài viết.  Chúng ta sẽ thêm logic xử lý cho từng hàm sau.

Cuối cùng, chúng ta khai báo ứng dụng sẽ lắng nghe port 3000.

Tham khảo việc làm MongoDB lương cao trên TopDev!

#Tương tác với MongoDB sử dụng Mongoose

Để có thể connect được với MongoDB, bạn cần khai báo đúng đường dẫn:

Mongoose.connect("mongodb://localhost/vntalking");

Trong đó vntalking là tên cơ sở dữ liệu (tương đương với tên database trong SQL vậy).

Lưu ý: Bài viết này mình tập trung vào những logic tương tác với MongoDB từ Nodejs. Do đó, mặc định mình sẽ coi các bạn đã biết cách tạo collection trong MongoDB. Nếu bạn muốn quản lý MongoDB dễ dàng thì có thể sử dụng công cụ Robo3T.

Sau khi đã cấu hình kết nối xong, mình sẽ tiến hành tạo model. Trong khuôn khổ ví dụ của bài viết này, chúng ta chỉ cần tạo một model như sau:

const PersonModel = Mongoose.model("person", {
    firstname: String,
    lastname: String
});

Model này sẽ tạo một people collection (tương đương với tạo một table trong SQL vậy). Với mỗi document sẽ có 2 thông tin: first name và last name.

Ok, như vậy phần cấu hình với MongoDB đã xong, chúng ta tiến hành xử lý logic cho mỗi API.

Tham khảo tuyển dụng nodejs lương cao trên TopDev

#Tạo RESTful API và xử lý logic hành động

Đầu tiên, chúng ta sẽ viết code xử lý phần tạo mới một person:

app.post("/person", async (request, response) => {
    try {
        var person = new PersonModel(request.body);
        var result = await person.save();
        response.send(result);
    } catch (error) {
        response.status(500).send(error);
    }
});

Khi client thực hiện một POST request tới ứng dụng của chúng ta. Chúng ta sẽ sử dụng PersonModel và JSON payload để lưu thông tin vào cơ sở dữ liệu.

Có một điểm lưu ý, tất cả những công việc tương tác với cơ sở dữ liệu đều có thể tốn thời gian và bạn cần phải sử dụng cơ chế xử lý bất đồng bộ. Trước kia bạn có thể dùng Promise, và giờ thì hiện đại hơn, dùng kỹ thuật mới async và await ( hỗ trợ từ javascript ES7).

Sau khi lưu dữ liệu thành công, chúng ta trả lại kết quả cho client biết.

Tiếp theo, khi đã có dữ liệu, chúng ta có thể lấy dữ liệu từ database:

app.get("/people", async (request, response) => {
    try {
        var result = await PersonModel.find().exec();
        response.send(result);
    } catch (error) {
        response.status(500).send(error);
    }
});

Có hai kiểu lấy dữ liệu: Một là lấy toàn bộ danh sách person có trong database, hai là lấy cụ thể thông tin của một người nào đó.

Trong kịch bản API này, khi client không gửi bất kì điều kiện nào thì sẽ trả về một danh sách các person.

Nếu client gửi cụ thể ID một person nào đó, chúng ta sẽ chỉ trả về 1 một person mà thôi. Implement như sau:

app.get("/person/:id", async (request, response) => {
    try {
        var person = await PersonModel.findById(request.params.id).exec();
        response.send(person);
    } catch (error) {
        response.status(500).send(error);
    }
});

Khi client gửi ID của person lên, chúng ta sẽ sử dụng hàm findById()để tìm trong database xem có person nào tương ứng với ID đó không. Nếu tồn tại person đó thì trả lại cho  client.

Hoàn toàn tương tự với việc cập nhật và xóa thông tin của một person khi biết ID

app.put("/person/:id", async (request, response) => {
    try {
        var person = await PersonModel.findById(request.params.id).exec();
        person.set(request.body);
        var result = await person.save();
        response.send(result);
    } catch (error) {
        response.status(500).send(error);
    }
});

app.delete("/person/:id", async (request, response) => {
    try {
        var result = await PersonModel.deleteOne({ _id: request.params.id }).exec();
        response.send(result);
    } catch (error) {
        response.status(500).send(error);
    }
});

Như vậy là chúng ta hoàn thành đủ 4 action như thiết kế ban đầu. Các bạn có thể test ứng dụng bằng cách sử dụng Postman. Tất nhiên, đừng quên chạy ứng dụng trước khi test trên server bằng lệnh sau.

node app.js

#Tổng kết

Qua bài viết, chúng ta đã biết tạo RESTful API đơn giản rồi phải không? Từ những kiến thức cơ bản này, các bạn có thể tự phát triển và mở rộng cho những ứng dụng thực tế.

Các bạn đón đọc nhé!

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Tin tuyển dụng IT mọi cấp độ trên TopDev đang chờ bạn ứng tuyển!

Automation Test là gì? Tester cần kỹ năng gì để làm Automation Testing

Automation Test là gì? Cần kỹ năng gì để làm Automation Testing

Automation Test là một phần trong lĩnh vực kiểm thử phần mềm và được xem như cánh tay phải hỗ trợ đắc lực trong việc kiểm tra chương trình, source code. Nó đóng vai trò quan trọng trong việc nâng cao hiệu suất, giảm thiểu thời gian, lỗi, cũng như sự nhàm chán so với kiểm thử thủ công (Manual Test). Vậy Automation Test là gìTester cần những kỹ năng gì để làm được Automation Test trong dự án; bài viết hôm nay chúng ta cùng nhau trả lời cho câu hỏi trên nhé.

Automation Test là gì?

Kiểm thử tự động, Automation Test được hiểu đơn giản là việc thay vì test chương trình bằng tay, thao tác từng bước như người dùng, thì sẽ sử dụng máy để thực hiện toàn bộ hoặc 1 phần quá trình trên. Automation Testing có thể thay thế Manual Testing trong một hoặc toàn bộ các bước từ khởi động hệ thống, nhập dữ liệu đầu vào, kiểm tra so sánh với dữ liệu đầu ra và ghi kết quả.

Automation Test là gì?

Để thực hiện được công việc kiểm thử một cách tự động thì chúng ta cần sử dụng đến các công cụ kiểm thử gọi là Automation Testing Tool; sau đó viết các đoạn mã (script) tùy theo từng công cụ để cung cấp đầu vào theo từng testcase; phần mềm kiểm thử tự động sẽ hỗ trợ chạy chương trình và thực hiện việc kiểm thử, sau đó cho đầu ra với kết quả tương ứng PASS/FAIL theo từng testcase.

Một số phần mềm kiểm thử tự động nổi tiếng hiện nay gồm:

  • Selenium: phần mềm mã nguồn mở hoàn toàn miễn phí, hỗ trợ hoạt động trên trình duyệt với nhiều nền tảng khác nhau như MacOS, Windows, Linux, … cho các ứng dụng Web. Selenium hỗ trợ bạn viết script bằng nhiều ngôn ngữ lập trình khác nhau từ Java, JavaScript, Python,…
  • Appium: là phần mềm kiểm thử tự động mã nguồn mở dành cho các ứng dụng di động, hỗ trợ các ngôn ngữ lập trình phổ biến như Java, Python, C#, …. Appium có thể sử dụng cho việc kiểm thử các ứng dụng chạy trên nền tảng Android, iOS cho cả các thiết bị giả lập và thiết bị thực.
  • Cypress: là một công cụ kiểm tra giao diện người dùng cho các ứng dụng Web, chạy được trên Windows, Linux và macOS giúp thực thi được nhiều loại test như End-to-End, test tích hợp hay Unit Test.
  • Postman: Postman được biết đến là một công cụ cho phép chúng ta thao tác với API, phổ biến là REST API. Ngoài ra thì Postman cũng là một công cụ kiểm tra tự động hóa được sử dụng khi kiểm thử API đồng thời tích hợp các công cụ CI/CD phổ biến.
  • Apache Jmeter: một công cụ mã nguồn mở nổi tiếng dành cho việc kiểm thử hiệu suất 1 cách tự động, chủ yếu dành cho các ứng dụng Web.

  Triển vọng của automation tester trong tương lai

  Automation testing: Một số công cụ hữu ích cho tester

Quy trình thực hiện kiểm thử tự động

Việc quyết định có lựa chọn Automation Test để thực hiện việc kiểm thử trong quá trình thực hiện dự án hay không phụ thuộc chủ yếu vào tính chất, đặc thù của dự án và khả năng đáp ứng của các thành viên trong team dự án. Kiểm thử tự động đòi hỏi tester cần có kỹ năng viết code hay script cho các công cụ Auto Test.

Quy trình thực hiện kiểm thử tự động

Sau khi xác định lựa chọn Automation Test cho dự án, các bước tiếp theo sẽ được thực hiện để đảm bảo quy trình kiểm thử tự động được thực hiện:

1. Lựa chọn phần mềm kiểm thử

Kiểm thử tự động sẽ được thực hiện bởi một phần mềm (công cụ) kiểm thử nhất định, mỗi phần mềm sẽ có những đặc thù và phục vụ cho những ứng dụng khác nhau; vì vậy bạn nên cân nhắc những điểm sau khi lựa chọn phần mềm:

  • Ngôn ngữ mà phần mềm hỗ trợ: Java, JavaScript, Python,….
  • Phần mềm hỗ trợ những loại kiểm thử nào: kiểm thử tích hợp, kiểm thử đơn vị, kiểm thử hệ thống,…
  • Phần mềm hoạt động trên nền tảng nào: Web, Desktop app, Mobile app, …
  • Chức năng báo cáo của phần mềm hay xuất dữ liệu đầu ra có đảm bảo để phù hợp với yêu cầu của dự án

Xem thêm các vị trí tuyển Tester lương cao trên TopDev

2. Xác định phạm vi test tự động

Kiểm thử tự động sẽ phù hợp với những bài toán có những đặc điểm như dưới đây:

  • Lượng dữ liệu cần kiểm thử lớn
  • Khả năng sử dụng lại các testcase cao ở nhiều màn hình hay chức năng
  • Sự phức tạp của yêu cầu kiểm thử mà Manual Test khó thực hiện được; chẳng hạn như yêu cầu về số lượng truy cập lớn cùng 1 thời điểm
  • Tính khả thi về mặt logic kiểm tra kết quả: chẳng hạn như rất khó để sử dụng Auto test cho việc xác định về mặt UX của ứng dụng

Từ những đặc điểm trên chúng ta sẽ xác định ra được phạm vi mà Automation Test nên được áp dụng vào dự án của mình.

3. Lên kế hoạch thiết kế testcase, viết script (code) thực thi

Giai đoạn này, kiểm thử tự động sẽ dựa trên các testcase cụ thể và chuyển nó thành source code hay script cho phần mềm kiểm thử tương ứng. Nó khá giống với việc chúng ta lập trình viết ra ứng dụng. Việc phát triển source code kiểm thử tự động cũng có thể phát triển thành các bộ kiểm thử tự động có khả năng tái sử dụng trong các dự án, chức năng, màn hình sau này.

4. Thực thi kiểm thử tự động 

Việc thực thi kiểm thử được các phần mềm chạy hoàn toàn tự động; để đảm bảo nó hoạt động đúng thì chúng ta cần thiết lập các thông số đầu vào đúng như yêu cầu. Ngoài ra việc xuất kết quả đầu ra theo đúng định dạng mong muốn cũng nên được quan tâm để giúp có thể nhanh chóng xác định được testcase fail, liên hệ với đội phát triển và nhanh chóng khắc phục.

5. Cập nhật và bảo trì

Như đã đề cập ở trên, mỗi tập hợp Automation Test case đều có thể xem là một dự án nhỏ. Để tối ưu hóa và tái sử dụng một cách hiệu quả, đội kiểm thử cần có sự cập nhật chỉnh sửa và bảo trì thường xuyên đáp ứng được nhu cầu và sự thay đổi của phần mềm, ứng dụng.

Tester cần kỹ năng gì để làm Automation Testing

Tester cần kỹ năng gì để làm Automation Testing

Nếu bạn đang là một Tester và muốn trở thành một Automation Tester; hãy cứ cố gắng trước hết để nắm được các kiến thức liên quan đến kiểm thử; các loại kiểm thử; các kỹ thuật kiểm thử. Bất cứ kỹ thuật nào trong Automation Test đều dựa trên những kiến thức cơ bản về kiểm thử, vì vậy hãy xem AutoTest như một công cụ để phát triển, mở rộng khả năng nghề nghiệp hơn là một hướng đi riêng biệt.

Với một Automation Tester, bạn cần được trang bị thêm các kiến thức như sau:

  • Nguyên lý nhận dạng objects: cách để tìm kiếm và lấy ra đúng phần tử cần thao tác trên ứng dụng thông qua HTML hay Xpath
  • Lựa chọn sử dụng phần mềm kiểm thử tự động: Mặc dù mỗi phần mềm kiểm thử tự động sẽ có cách viết khác nhau, tuy nhiên nguyên lý hoạt động đều khá tương đồng. Bạn nên bắt đầu bằng những phần mềm phổ biến như Selenium cùng sự hỗ trợ lớn từ cộng đồng
  • Sử dụng tốt một ngôn ngữ lập trình cho việc viết source code autotest
  • Các kỹ năng về coding, debugging và cách sử dụng các IDE
  • Thường xuyên học hỏi, update các kiến thức mới, công nghệ, phần mềm liên quan đến Automation Testing.
  Automation Test là gì? Tester cần kỹ năng gì để làm Automation Testing

Kết bài

Kiểm thử tự động là một mảng con trong lĩnh vực kiểm thử phần mềm và đang có xu hướng phát triển và ngày càng có vai trò quan trọng hơn trong phát triển dự án. Trở thành một Automation Tester có thể là hướng đi tốt dành cho sự nghiệp của bạn. Hy vọng bài viết này đã giúp bạn hiểu được Automation Test là gì và bạn sẽ cần trang bị kỹ năng gì để làm được kiểm thử tự động. Cảm ơn các bạn đã đọc và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm: 

Tổng hợp tin tuyển dụng việc làm IT lương cao trên TopDev

Học back end cần học những gì? Lộ trình cho người mới bắt đầu

Học back end cần học những gì?

Thường meme liên quan tới backend luôn là thứ gì đó ẩn mình phía sau đầy ghê rợn. Không được đẹp đẽ hào nhoáng như phía Frontend.

Backend developer

Sự thật thì Backend hay Backend developer không hề đáng sợ như vậy. Backend cũng bao gồm nhiều kiến thức. Những kiến trúc lộng lẫy tuyệt vời nằm ở phía dưới đó. Vậy để trở thành backend developer hoặc học để trở thành backend anh em cần gì?

Tất cả sẽ được trình bày qua bài viết dưới đây

1. Programming Languages

Đầu tiên không thể thiếu với anh em developer backend rõ ràng là ngôn ngữ lập trình backend. Không chỉ hiểu phần core, hiểu cách thức hoạt động của ngôn ngữ. Anh em còn cần có lộ trình cụ thể để trở thành master trong từng loại ngôn ngữ mà mình lựa chọn.

Dưới đây là 3 ngôn ngữ thường được sử dụng cho backend:

  • Java: Đây là ngôn ngữ mà nhiều anh em thường nhầm với JavaScript. Tuy nhiên, Java và Javascript là khác nahu. Java thường sử dụng để tạo ra hệ thống mạnh mẽ. Mức độ phổ biến cao, chính vì vậy đây là ngôn ngữ cần thiết cho anh em developer.
  • PHP: Về phía web, ngôn ngữ thường hay sử dụng là PHP. Một số trang web đang được phát triển bằng php, vừa là mã nguồn mở mà còn free. Vì vậy, kỹ năng PHP cũng là kỹ năng mà anh em backend cần có.
  • Python: Với sự phát triển vượt bậc của AI, ML thì Python cũng trở thành ngôn ngữ backend cần phải biết. Đây là một trong những ngôn ngữ hàng đầu, muốn dùng cho cái đơn giản cũng ok mà dùng cho cái phức tạp cũng ok. Mấy ứng dụng phổ biến như Spotify và Dropbox cũng được viết bằng Python.

Programming Languages

Viết tới đây chắc sẽ có một số anh em thắc mắc về Nodejs, tất nhiên Nodejs cũng là ngôn ngữ backend đáng để học. Ngôn ngữ nào cũng có cái hay và phía trên chỉ là ví dụ 3 ngôn ngữ. Còn lại anh em muốn tiếp cận ngôn ngữ nào trước cũng được.

Chỉ cần chọn cho mình 1 ngôn ngữ, vẽ ra roadmap cụ thể là anh em có thể bắt đầu trên con đường trở thành master 1 ngôn ngữ phía Backend rồi.

  Top 7 câu hỏi phỏng vấn Backend Developer
  Mechanical Sympathy Là Gì? Lập Trình BackEnd bằng Java

2. Frameworks

Sau khi đã có kiến thức về ngôn ngữ lập trình, anh em sẽ hiểu khi cần xây dựng một cái gì đó to lớn, chỉ với ngôn ngữ sẽ khó khăn như thế nào. Ví như anh em xây cả lâu đài, mà từng cái bai, cục gạch anh em cũng phải tự làm, mày mò từng chút một. Vậy lúc nào mới xong?

Chính lúc này ta cần với frameworks.

Frameworks xây dựng trên 1 ngôn ngữ backend nào đó. Nó hỗ trợ đầy đủ những thứ từ cơ bản đến nâng cao giúp cho anh em xây dựng hệ thống dễ dàng hơn.

Một số framework phổ biến anh em có thể tham khảo bao gồm:

  • Ruby on Rails: Một số thứ ở Ruby on Rails giúp nó nổi bật hơn mấy frameworks phái dưới. Ông này base trên nền Ruby, có automated testing, có libraries, nếu làm đa ngôn ngữ có localization. Nó cũng là open-source web app development framework. Tất. nhiên, luôn sử dụng ngôn ngữ Ruby.
  • Django: Là open-source và một trong những web frameworks tốt nhất viết trên nền ngôn ngữ Python. Rất tốt cho việc mở rộng (scalability) và bảo mật (security). Ngoài ra Django cũng hỗ trợ lập trình bất đồng bộ.
  • Flask: Cũng base trên nền Python và có thể sử dụng để xây dựng web app framework rất nhanh. Nhiều tính năng chính của Flask bao gồm hỗ trợ WSGI cho phép xây dựng rất nhanh web application.
  • Express: Là framework nhẹ và nổi tiếng nhất sử dụng ngôn ngữ Node.js. Sử dụng để xây dựng web app framework. Express cho phép phát triển rất nhanh và development side-server cũng khá dễ dàng.

Frameworks backend

Trên đây chỉ là một vài so sánh nhỏ, anh em có thể tìm hiểu sâu hơn về các frameworks để có so sánh rõ ràng hơn các ngôn ngữ mình sẽ lập trình phía BE.
Tham khảo việc làm Back-end Developer Hồ Chí Minh hấp dẫn trên TopDev

3. Database

Nếu không có hiểu biết về hệ cơ sở dữ liệu, anh em không thể tự nhận mình là backend developer được. Đơn giản là backend sẽ thường làm việc với hệ cơ sở dữ liệu.

Ở một số hệ thống, database được xem như trái tim, nơi chứa những dự liệu quý giá nhất cần thiết cho hệ thống. Chính vì vậy, để trở thành backend developer, anh em cần có kiến thức tốt ở lĩnh vực database. Kiến thức tốt ở đây có thể được hiểu qua vài ví dụ dưới đây:

  • Hiểu về data types, hiểu về structure, hiểu về cách thức DB vận hành
  • Tối ưu tốc độ, phân tích query, tìm hiểu lý do query bị chậm
  • So sánh ưu nhược điểm các loại database, sự khác nhau giữa SQL và NoSQL
  • Thiết kế và vận hành database, hiểu sâu về quản lý database

Database

Một số cuốn sách hoặc khoá học có thể sẽ hữu ích với anh em về database:

4. Data Structures và Algorithms

Cấu trúc dữ liệu và thuật toán cũng là thiết yếu với backend developer. Thực thế thì data structure là cần thiết với tất cả các kĩ sư phần mềm. Nhưng đối với backend, anh em cần thật sự hiểu sâu về Data structures và Algorithms (thuật toán).

Một số loại cấu trúc dữ liệu phổ biến có thể liệt kê dưới đây:

  • Arrays
  • Linked Lists
  • Stacks
  • Queues
  • Graphs
  • Hash Tables
  • Binary Search Tree

Hiểu về cấu trúc dữ liệu là hiểu về cách nó hoạt động. Về performance, về độ phức tạp (complexity) là bao nhiêu. Lúc nào thì dùng loại data structure này, lúc nào thì dùng data structure kia. Chứ không chỉ đơn thuần là nhớ tên rồi muốn dùng sao thì dùng nha anh em.

Data Structures và Algorithms 
Sau khi đã nắm chắc Data Structure thì về thuật toán, anh em cần hiểu cơ bản về các thuật toán kinh điển. Hiểu ở đây là hiểu rõ cách thức hoạt động, ưu, nhược điểm. Còn lại implement thì thường đã có rất nhiều người làm rồi. Anh em chỉ nhớ sử dụng cho đúng lúc, đúng địa điểm là được.

  • Recursion
  • Bubble sort
  • Selection sort
  • Binary Search
  • Insertion Sort
  • Databases and Cache

Tìm việc làm Backend Intern HCM trên TopDev ngay!

5. API, REST, GraphQL

Anh em luôn thấy là backend với frontend đi liền một cặp, nếu chỉ có backend thì application không thể hoạt động. Tương tự vậy, nếu chỉ frontend thì ứng dụng cũng không thể hoàn thành.

Vậy backend và frontend giao tiếp với nhau như thế nào? Tất nhiên là thông qua API, vậy API có phải là yếu tố bắt buộc và backend developer cần biết không?

Câu trả lời là có, 100% các lập trình viên backend đều biết rõ về API và REST. REST có bao nhiêu method, các method đó sử dụng làm gì? Thiết kế API như thế nào là tốt. Song song với đó, anh em cũng cần có kiến thức và tìm hiểu thêm về JSON, XML. Các phương thức giao tiếp với client.

API, REST, GraphQLMột số khoá học hoặc bài viết có thể giúp anh em hiểu thêm về các công nghệ được nhắc tới ở trên gồm:

Nhiều tin tuyển dụng Backend lương cao trên TopDev

6. Devops và Server

Để backend có thể hoạt động, tất nhiên không thể thiếu server. Vậy anh em cần tìm hiểu thêm về các loại server, Windows thì khác gì Linux? Services mình viết lên sẽ chạy ở đâu, chạy như thế nào? Cấu hình 1 máy như thế nào là đủ.

Sau khi đã hiểu về server. Vậy giờ cần hiểu thêm về CI,CD. Hai cái này khác nhau như thế nào? Để triển khai auto deployment ta cần những gì. Tất tần tật những kiến thức đó là kiến thức bắt buộc với backend developer. Các môi trường development, staging và production khác gì nhau? Tại sao ta lại cần những môi trường này?

Ngoài ra khi tìm hiểu sâu hơn, anh em sẽ cần biết thêm về quản lý version. Kỹ năng điều tra, giải quyết vấn đề. Xử lý sự cố trong trường hợp production down.

Devops và Server

Lộ trình trở thành Backend Developer

Bạn có thể xem full roadmap lộ trình Backend Developer trong ảnh dưới, sẽ có phần giải thích từng bước chi tiết ở bên dưới.

Lộ trình trở thành Backend Developer

Trước khi bắt đầu với lộ trình backend, mặc dù chúng tôi chưa list ra các kiến thức về HTML/CSS trên roadmap trên, bạn cũng nên tự tìm hiểu và ít nhất đã nắm được cách viết HTML/CSS căn bản.

Các bước cần thiết cho lộ trình backend:

Bước 1 – Học một ngôn ngữ mới

Có cả tá lựa chọn về ngôn ngữ dành cho bạn. Tôi có chia nhỏ nó ra các categories để bạn dễ lựa chọn hơn. Đối với những người mới thì tôi khuyên bạn nên chọn các ngôn ngữ scripting vì chúng có nhiều demand và cho phép bạn bắt kịp nhanh chóng. Nếu bạn có một ít kiến thức frontend, bạn sẽ thấy Node.js dễ hơn nhiều và có rất nhiều job về nó đang mở.

Nếu bạn đang làm backend và biết một số scripting language, tôi đề xuất không chọn một ngôn ngữ scripting language khác nữa mà chọn trong section “Functional” hoặc “Multiparadigm”. Ví dụ, nếu bạn đang làm PHP hoặc Mode.js, đừng nên chọn Python hoặc Ruby, mà hãy thử Erlang hoặc Golang. Nó sẽ giúp bạn tư duy xa hơn và open với những mảng khác hơn.

Bước 2 — Thực hành ngay những cái đã học

Học phải đi đôi với hành. Một khi bạn đã chọn được ngôn ngữ phù hợp và có được nền tảng căn bản về nó, hãy dùng nó ngay. Hãy tạo nên càng nhiều app nhỏ càng tốt. Dưới đây là một số gợi ý cho bạn:

  • Ứng dụng các command mà bạn dùng trên bash, ví dụ ứng dụng function ls
  • Viết một command để fetch và lưu các post reddit trên /r/programming dưới dạng file JSON
  • Viết một command cung cấp directory structure dưới dạng format JSON ví dụ jsonify dir-name cho ra file JSON có structure bên trong dir-name
  • Viết một command đọc JSON của bước trên và tạo ra directory structure
  • Nghĩ một vài task hằng ngày của mình và automate chúng

Bước 3 — Học Package Manager

Một khi đã học được những cái cơ bản của một ngôn ngữ và tại nên một vài app mẫu, hãy học cách dùng package manager ngôn ngữ đó. Các package manager sẽ giúp bạn dùng các thư viện ngoài  và phân phối các thư viện cho người khác dùng.

Nếu bạn chọn PHP thì bạn có thể học về Composer, Node.js sẽ có NPM hoặc Yarn, Python có Pip và Ruby có RubyGems. Dù cho bạn chọn cái nào đi nữa, hãy cứ tiếp tục và học về package manager.

Bước 4 — Các tiêu chuẩn và Best Practices

Mỗi ngôn ngữ có những tiêu chuẩn riêng và best practices (cách làm tốt nhất). Hãy tìm ra và học hỏi từ nó. Ví dụ, PHP có PHP-FIG và PSRs. Với Node.js sẽ có rất nhiều hướng dẫn phục vụ cộng đồng cũng như nhiều ngôn ngữ khác.

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Bước 5 — Bảo mật

Hãy nhớ đọc về các best practices trong mảng bảo mật. Đọc OWASPguidelines để hiểu về nhiều vấn đề bảo mật khác nhau và cách phòng tránh nó đối với từng ngôn ngữ mà bạn chọn.

Bước 6 — Thực hành thêm nữa

Sau những nền tảng cơ bản, tiêu chuẩn và best practice, bảo mật cũng như cách dùng package manager, bây giờ là lúc tự tạo nên một package và phân phối nó đi cho người  khác dùng, nhớ follow các tiêu chuẩn và best practices đã học. Ví dụ như, nếu bạn chọn PHP, bạn có thể release nó trên Packagist, còn nếu chọn Node.js thì release trên Npm registry,…

Sau khi đã xong, bạn có thể search thêm một số project trên Github và mở một số pull request trong các projects. Dưới đây là một vài gợi ý cho bạn:

  • Refactor và ứng dụng những best practice mà bạn học được
  • Xem các vấn đề mở và thử giải quyết nó
  • Add thêm một số functionality

Bước 7 — Học thêm về Testing

Hiện có rất nhiều kiểu test, mục tiêu đó là phải hiểu rõ các loại này là gì. Nhưng trước mắt hãy cách viết Unit Test và Integration test cho app trước đã. Đồng thời hãy tìm hiểu thêm về các phương pháp testing như mocks, stubs,…

Bước 8 — Thực tế

Hãy viết thử unit test cho một số task thực tế mà bạn đã làm, đặc biệt là những cái bạn đã làm ở Bước 6.  

Đồng thời nhớ tính toán thử mức độ cover của các test đã viết.

Bước 9 — Học về Relational Database

Làm thế nào để bảo toàn data trên relational database (dữ liệu quan hệ). Trước khi bạn lựa chọn tool để học, hãy tìm hiểu trước về các phương pháp database terminologies khác nhau như các key, index, normalization, tuple, v.v

Có rất nhiều sự lựa chọn, tuy nhiên nếu bạn học một cái rồi, thì những cái còn lại sẽ trở nên dễ hơn. Một trong những cái lý tưởng để bắt đầu đó là MySQL, MariaDB (khá giống nhau và là một mảnh của MySQL) và PostgreSQL. Pick MySQL.

Tìm việc làm Backend Intern HCM trên TopDev ngay!

Bước 10 —  Thời gian thực tế

Bây giờ bạn sẽ đem tất cả những thứ bạn đã học ra để sử dụng. Tạo nên một ứng dụng đơn giản, bất cứ idea nào, ví dụ một ứng dụng viết blog, rồi áp dụng các feature dưới đây:

  • User Account  — Đăng ký và Đăng nhập
  • Những user đã đăng ký có thể tạo các bài blog
  • User có thể xem tất cả các bài blog mà mình đã viết
  • User có thể xoá bài blog
  • User chỉ xem được blog của mình chứ không xem của người khác được
  • Viết các unit/integration test cho app
  • Bạn có thể áp dụng index cho các query. Phân tích queries để biết chắc là các index đang hoạt động

Bước 11 — Học một Framework

Tuỳ vào project và ngôn ngữ mà bạn chọn thì bạn có thể cần hoặc không cần đến framework. Mỗi ngôn ngữ có rất nhiều lựa chọn, hãy tìm hiểu và xem xem ngôn ngữ của bạn có gì và chọn một cái liên quan.

Nếu bạn chọn PHP, tôi đề xuất bạn nên dùng Laravel hoặc Symfony hoặc đối với các framework nhỏ thì bạn có thể dùng Lumen hoặc Slim. Nếu bạn chọn Node.js thì cũng có rất nhiều lựa chọn nhưng cái mạnh nhất đến nay đó là Express.js.

Bước 12 — Thời gian thực hành

Để thực hành bước này, hãy convert app và bạn đã làm ở Bước 10 để áp dụng framework mình đã chọn. Nhớ port mọi thứ kể cả các test nhé.

Lộ trình trở thành Backend Developer
HTML and CSS code developing screenshot. Abstract web site source listing on black background with colored syntax

Bước 13 —  Học NoSQL Database

Đầu tiên hãy tìm hiểu nó là cái gì, chúng khác dữ liệu quan hệ chỗ nào và tại sao cần dùng đến nó. Có rất nhiều sự lựa chọn, chỉ cần tìm kiếm một chút và so sánh các feature sẽ thấy được sự khác nhau. Một số option phổ biến gồm có MongoDB, Cassandra, RethinkDB và Couchbase. Nếu phải chọn một thì bạn nên chọn MongoDB.

Bước 14 — Caching

Hãy tìm hiểu cách ứng dụng app level caching cho ứng dụng của mình. Hiểu được cách sử dụng mà bạn đã build ở Bước 12.

Bước 15 —  Tạo các RESTful API

Tìm hiểu về REST và học cách tạo ra các RESTful API và nhớ đọc về REST trong bài viết gốc của Roy Fielding, để cứ hễ ai bảo REST chỉ dành cho HTTP API là bạn sẽ có thể sửa lưng họ ngay.

Bước 16 —  Học các Auth Method khác nhau

Bạn cần phải biết chúng là gì, sử dụng thế nào và cái này khác cái kia ở chỗ nào

  • OAuth — Open Authentication
  • Basic Authentication
  • Token Authentication
  • JWT — JSON Web Tokens
  • OpenID

Bước 17 —  Các Message Broker

Cũng có nhiều lựa chọn cho bạn nhưng có 2 cái nổi bật hơn đó là RabbitMQKafka. Nếu phải chọn một thì nên hãy học RabbitMQ trước.

Bước 18 —  Công cụ Search

Khi app đã bắt đầu phát triển, các query đơn giản dù cho trên dữ liệu quan hệ hay dữ liệu NoSQL sẽ không từ cắt ra và bạn sẽ phải resort riêng công cụ search. Bạn nên cân nhắc tuỳ nhu cầu, vì có rất nhiều option và mỗi option đều có những điểm đặc biệt riêng.

Bước 19 —  Học cách dùng Docker

Docker có thể giúp bạn rất nhiều trong quá trình lập trình ứng dụng, không chỉ tạo lặp một môi trường tương tự khi produce,  giữ cho hệ điều hành luôn sạch sẽ hoặc thúc đẩy code, test và deploy. Tôi sẽ cho bạn một câu hỏi để tìm hiểu và tự trả lời cho mình “Nó sẽ giúp tôi bằng cách nào?”. Cứ thế hãy tìm hiểu và học cách dùng Docker.

Bước 20 —  Trau dồi kiến thức về các Web Server

Nếu đã đến bước này, bạn chắc chắn đã phải tiếp xúc với nhiều server. Lúc này chủ yếu bạn sẽ tìm điểm khác nhau giữa các web server, hiểu được những giới hạn và các configuration option có sẵn cũng như cách viết app để tối ưu hoá các giới hạn này.

Bước 21 — Học cách dùng Web Socket

Mặc dù không bắt buộc, có thêm kiến thức này có thể giúp ích cho bạn rất nhiều. Tìm hiểu xem cách viết web app real-time và một số app mẫu bằng web-socket, bạn có thể dùng nó trên blog application để ứng dụng các update real-time trên blog posts listing.

Bước 22 —  Học GraphQL

Hiểu rõ nó khác chỗ nào REST và tại sao lại gọi nó là REST 2.0.

Bước 23 —  Xem các biểu đồ dữ liệu

Các Biểu đồ đồ thị sẽ giúp bạn linh hoạt hơn khi xử lý data, cũng như cung cấp cho bạn nguồn lưu trữ nhanh chóng và hiệu quả để dễ thu hồi hoặc query nó. Học thêm về Neo4j or OrientDB.

Bước 24 —  Không ngừng khám phá thêm

Một khi bạn đã bắt tay vào học và làm, chắc chắn bạn sẽ vấp phải thêm nhiều thứ mà chúng tôi chưa liệt kê hết trên đây. Hãy luôn ở trong tâm lý mở không ngại học cái mới, vì kết quả thế nào là do bạn chọn. 

Hi vọng thông tin trên đây đã có thể làm rõ thắc mắc của bạn về Backend Developer là gì cũng như lộ trình trở thành Backend Developer. Mọi thông tin đều mang tính tham khảo, bạn hãy tìm hiểu thật kỹ và đưa ra lộ trình phù hợp với bản thân nhé. Điều quan trọng là hãy đam mê và thật kiên trì.

Anh em có thể tham khảo thêm về Devops và các kỹ năng khác:

7. Tham khảo

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!

Tác giả: Kiên Nguyễn

Bạn có thể quan tâm:

Đừng bỏ lỡ hàng loạt việc làm IT hấp dẫn trên TopDev nhé!

 

Top 6 công việc IT phát triển nhanh nhất tại Việt Nam

Năm 2023 là một năm đầy khó khăn của kinh tế thế giới khi phải đối mặt với những tác động của đại dịch Covid-19, suy thoái kinh tế và chiến tranh Nga – Ukraine. Tuy nhiên, đứng trước bối cảnh rối ren của nền kinh tế thế giới, ngành CNTT vẫn có những chuyển biến tích cực với sự đẩy nhanh của quá trình chuyển đổi số và các công nghệ liên quan đến AI.

Việt Nam cũng không ngoại lệ, sự đầu tư mạnh mẽ vào công nghệ của các doanh nghiệp cũng như nhu cầu nhân lực CNTT ngày càng tăng đã cho thấy tín hiệu tích cực của toàn ngành trong tương lai. Và để đón đầu được xu hướng phát triển tiếp theo của ngành CNTT, Báo cáo thị trường IT Việt Nam 2023 do TopDev phát hành đã chỉ ra Top 6 công việc IT phát triển nhanh nhất, giúp bạn đánh giá được thị trường một cách tổng quan và chính xác.

Top công việc IT phát triển nhanh tại Việt Nam

Dưới đây là top các công việc IT phát triển nhanh tại Việt Nam năm 2023 dựa theo Báo cáo thị trường IT Việt Nam của TopDev.

Data Scientist

Data Scientist sử dụng các kỹ năng kỹ thuật và phân tích để xác định các mẫu, xử lý dữ liệu và rút ra kết luận có giá trị. Họ nhận ra các giải pháp đúng đắn bằng cách kết hợp kiến thức lý thuyết và ngành, những hiểu biết theo ngữ cảnh và sự hoài nghi về các giả định đã được thiết lập.

Top công việc IT phát triển nhanh tại Việt Nam

Nhu cầu về Data Scientist đang tăng cao do sự phát triển của công nghệ dữ liệu và trí tuệ nhân tạo. Các doanh nghiệp đang ngày càng tích lũy một lượng lớn dữ liệu, và họ cần Data Scientist để giúp họ phân tích dữ liệu này để đưa ra các quyết định kinh doanh hiệu quả hơn.

Một số kỹ năng Data Scientist bao gồm: thuật toán Machine Learning, tạo mô hình dữ liệu, ngôn ngữ lập trình như Python và R, xác định các vấn đề kinh doanh để cung cấp các giải pháp phù hợp.

Mức lương của Data Scientist theo cấp bậc:

  • Level 1 – Basic $1.560
  • Level 2 – Intermediate $2.090
  • Level 3 – Advanced $2.381

Devops Engineer

DevOps Engineer là một trong những vị trí được tuyển nhiều nhất trong những năm gần đây. DevOps Engineer là người giám sát các quy trình coding, scripting và phát triển. Họ cũng phụ trách nhóm phát triển phần mềm tham gia vào các hoạt động triển khai và mạng.

Nhu cầu về DevOps Engineer cũng đang tăng cao do sự phát triển của công nghệ đám mây và tự động hóa. Các doanh nghiệp đang chuyển đổi sang các mô hình phát triển và vận hành dựa trên đám mây, và họ cần DevOps Engineer để giúp họ thực hiện quá trình chuyển đổi này.

Top công việc IT phát triển nhanh tại Việt Nam

Một số kỹ năng DevOps Engineer bao gồm: Ngôn ngữ lập trình, chẳng hạn như Python và R, coding & scripting, nắm bắt tốt các công cụ như Git và Jenkins, làm chủ trong Linux hoặc UNIX System, kỹ năng giao tiếp và giao tiếp tốt, hiểu biết sâu sắc về các best practice của DevOps

Mức lương của Devops Engineer theo cấp bậc:

  • Level 1 – Basic $1.519
  • Level 2 – Intermediate $1.831
  • Level 3 – Advanced $ 2.161

  TopDev phát hành Báo cáo thị trường IT Việt Nam năm 2023: Điểm sáng trong phục hồi kinh tế gắn liền với chương trình đổi mới sáng tạo và chuyển đổi số quốc gia

  Ai là "cha đẻ" của các ngôn ngữ lập trình nổi tiếng nhất thế giới?

Cloud Architect

Cloud Architect tạo ra cấu trúc & chiến lược trên Cloud. Họ cũng phối hợp, thực hiện và triển khai các dịch vụ đám mây. Cloud Architect đảm bảo kiến trúc ứng dụng chính xác và thực hiện trên các nền tảng Cloud.

Nhu cầu về Cloud Architect cũng đang tăng cao do sự phát triển của công nghệ đám mây. Các doanh nghiệp đang ngày càng chuyển sang các giải pháp đám mây để tiết kiệm chi phí và cải thiện hiệu quả.

Một số kỹ năng của Cloud Architect bao gồm: các ngôn ngữ lập trình như Python, Ruby, Nguyên tắc cơ bản lưu trữ dữ liệu, Route 53 (DNS), CloudFront (CDN) và Virtual Private Cloud (VPC), các khuôn mẫu và công nghệ cụ thể của Cloud.

Mức lương của Cloud Architect theo cấp bậc:

  • Level 1 – Basic $1.875
  • Level 2 – Intermediate $3.208
  • Level 3 – Advanced $3.524

Tổng hợp các việc làm Back-end đang tuyển trên TopDev

AI Engineer

Một kỹ sư AI chịu trách nhiệm phát triển và triển khai các hệ thống và giải pháp dựa trên trí tuệ nhân tạo. Điều này liên quan đến việc thiết kế, xây dựng, đào tạo và triển khai các mô hình và thuật toán AI có thể thực hiện các tác vụ như xử lý ngôn ngữ tự nhiên, nhận dạng hình ảnh và phân tích dự đoán.

Top công việc IT phát triển nhanh tại Việt Nam

Họ phải thành thạo các ngôn ngữ lập trình như Python, Java, C++ và R, đồng thời quen thuộc với các khung phát triển phần mềm như TensorFlow, PyTorch và Keras. Ngoài ra, họ phải có kiến thức tốt về thuật toán và cấu trúc dữ liệu, cũng như kinh nghiệm phân tích dữ liệu, sắp xếp dữ liệu và trực quan hóa dữ liệu.

Mức lương của AI Engineer theo cấp bậc:

  • Level 1 – Basic $520 – $1.080
  • Level 2 – Intermediate $1.080 – $2.160
  • Level 3 – Advanced $2.160 – $4.320

Cybersecurity Specialist

Làm việc từ xa, internet of things (IoT) và sự di chuyển ngày càng nhiều khía cạnh trong cuộc sống của chúng ta sang miền kỹ thuật số (cũng như siêu dữ liệu) đều có tác động lớn đến những cách mà tội phạm mạng có thể khiến cuộc sống trở nên khó chịu.

Các chuyên gia an ninh mạng khai thác AI để dự đoán và chống lại các cuộc tấn công hack và DDOS, đồng thời áp dụng phương pháp tiếp cận tâm lý cần thiết để chống lại các phương pháp tiếp cận công nghệ thấp hơn dựa trên kỹ thuật xã hội. Đó là một bộ kỹ năng đa dạng và sẽ khiến bất kỳ ai cũng trở thành người hấp dẫn phù hợp với lực lượng lao động trong tương lai.

Mức lương của Cybersecurity Specialist theo cấp bậc:

  • Level 1 – Basic $2.072
  • Level 2 – Intermediate $3.180
  • Level 3 – Advanced $3.566

Full-Stack Developer

Top công việc IT phát triển nhanh tại Việt Nam

Full-stack Developer chịu trách nhiệm phát triển và xây dựng API bằng cách sử dụng các combo khác nhau của các tech stack và thành thạo cả back-end & front-end.

Một số kỹ năng full-stack developer bao gồm: Hiểu rõ về ngôn ngữ lập trình (MongoDB, Express.js, AngularJs và Node.js …), kiến thức về cách thiết kế và phát triển API, hiểu về các nguyên tắc phát triển web, good command trên cơ sở dữ liệu công nghệ.

Tóm lại

Trong bài viết này, chúng ta đã điểm qua những công việc IT phát triển nhanh nhất tại Việt Nam năm 2023. Đây là những công việc không chỉ đáp ứng nhu cầu ngày càng cao của thị trường công nghệ thông tin, mà còn đem lại cơ hội nghề nghiệp hấp dẫn cho các tài năng trẻ tại đất nước chúng ta.

Tuy nhiên, công nghệ càng phát triển đòi hỏi trình độ người lao động càng cao để đáp ứng những yêu cầu thay đổi liên tục của công việc. Theo báo cáo, trình độ lập trình viên Việt Nam vẫn chưa đáp ứng đủ nhu cầu và tốc độ phát triển của ngành. Vì vậy, để theo kịp mỗi người cần cải thiện kỹ năng, học tập nâng cao trình độ và khám phá những cơ hội mới trong lĩnh vực IT. Thị trường CNTT Việt Nam đang chờ đón những tài năng mới đam mê và sáng tạo.

Xem thêm:

Tìm kiếm việc làm IT mới nhất tại TopDev!

Học lập trình có cần giỏi Toán không?

Không giỏi Toán có học lập trình được không?

Bài viết được sự cho phép của BBT Tạp chí lập trình

Là một lập trình viên mới bắt đầu, bạn có thể tự hỏi liệu bạn học lập trình có cần giỏi toán để viết code hay không? Trong bài viết này, tôi hy vọng sẽ xóa bỏ nghi ngờ đó.

Lập trình là một thế giới của riêng nó

Học lập trình có cần giỏi Toán không?

Đầu tiên, tôi muốn bạn biết rằng code là một thuật ngữ rộng và nó không chỉ đề cập đến một khái niệm duy nhất. Ý tôi là, bạn có thể làm nhiều thứ với code và khả năng thực tế là vô tận. Điều đó nói rằng, đây là một số điều mà bạn có thể thực hiện với code:

Code không phải là toán học – Đó là một ngôn ngữ

Học lập trình có cần giỏi Toán không?

Điều về toán học là chỉ có một giải pháp cho một vấn đề và dựa trên câu trả lời của bạn, bạn đúng hoặc sai.

Điều thú vị về code là có nhiều hơn một cách để giải quyết vấn đề và theo nhiều cách, bạn có thể sử dụng sự sáng tạo của mình để tìm ra giải pháp. Theo nhiều cách, học viết code cũng giống như học một ngôn ngữ mới. Ngôn ngữ lập trình có vốn từ vựng và dấu câu riêng, và tôi sử dụng chúng để yêu cầu máy tính làm những gì chúng tôi muốn.

Nó giống như yêu cầu một sự giúp đỡ từ một người bạn, trong đó có nhiều cách để làm như vậy. Sự khác biệt duy nhất là lần này, bạn của bạn là một chiếc máy tính, người rất trung thành và bạn sẽ sử dụng một ngôn ngữ khác.

  Học lập trình cần học các kiến thức cơ bản nào?

  Top 10 quy tắc học lập trình mà ai cũng nên theo

Khi nào tôi cần sử dụng toán học?

Trước khi tôi tiến xa hơn, bạn đừng bỏ qua thực tế là toán học rất hữu ích và có lẽ được sử dụng rất thường xuyên hàng ngày, cho dù bạn có phải là một lập trình viên hay không.

Điều đó nói rằng, hãy suy nghĩ về thời điểm chúng ta sẽ sử dụng toán học khi chúng ta viết code. Có lẽ bạn đang suy nghĩ điều gì đó dọc theo dòng khoa học dữ liệu, học máy hoặc trí tuệ nhân tạo. Trong trường hợp bạn đã từng, bạn hoàn toàn đúng.

Phân tích dữ liệu đòi hỏi nhiều kiến thức về toán học vì khi phân tích dữ liệu, các nhà khoa học dữ liệu chạy các thuật toán toán học phức tạp trên dữ liệu để xác định các mẫu và mối tương quan trong dữ liệu.

Lập trình game là một lĩnh vực code khác sử dụng nhiều toán học. Tính thực tế của các trò chơi đến từ toán học đằng sau chúng. Tôi nghĩ tất cả chúng ta đều có thể đồng ý, rằng các trò chơi ngày nay đang bắt đầu cảm thấy thực tế hơn bao giờ hết. Dưới đây là một số nhánh toán học được sử dụng trong lập trình game.

  • Đại số học
  • Lượng giác học
  • Tính toán
  • Đại số tuyến tính
  • Toán học rời rạc
  • Toán ứng dụng

Tất nhiên, có rất nhiều lúc khác mà bạn có thể cần sử dụng toán học, nhưng tôi chỉ muốn cho bạn biết khi nào bạn cần sử dụng các khái niệm toán học nặng.

Việc làm IT Fresher dành cho bạn

Toán học trong phát triển web

Học lập trình có cần giỏi Toán không?

Tôi đã thấy nhiều người nói rằng bạn không cần phải biết toán học để trở thành một lập trình viên web. Mặc dù điều này đúng với hầu hết các phần, nhưng điều đó không có nghĩa là bạn có thể hoàn toàn bỏ qua toán học và mong đợi trở thành một lập trình viên web giỏi.

Ví dụ: toán học có thể được sử dụng để căn chỉnh các phần tử theo thứ tự đẹp, sử dụng CSS và nó cũng có thể được sử dụng để tạo hoạt ảnh động bằng JavaScript, chẳng hạn như mờ dần khi cuộn.

Nói cách khác, mặc dù toán học có thể không được sử dụng nhiều trong lập trình web, nhưng tôi thực sự khuyên bạn không nên bỏ qua nó.

Kết luận

Vậy tôi có cần phải giỏi toán không?

Câu trả lời cho câu hỏi này thực sự phụ thuộc vào những gì bạn dự định theo đuổi trong sự nghiệp lập trình của mình.

Tuy nhiên, nói chung, bạn không cần phải giỏi toán để trở thành một lập trình viên giỏi hoặc học cách viết code.

Chỉ cần biết những điều cơ bản của toán học sẽ thực hiện thủ thuật. Điều đó nói rằng, tôi hy vọng tôi đã xóa tan nghi ngờ của bạn về việc bạn có cần phải giỏi toán để viết code hay không.

Cám ơn các bạn đã theo dõi bài viết.

Bài viết gốc được đăng tải tại kienthuclaptrinh.vn

Xem thêm:

Xem thêm các việc làm Developer hấp dẫn tại TopDev

TOP 10 thư viện React Hook hữu ích lập trình viên nên biết

TOP 10 thư viện React Hook hữu ích lập trình viên nên biết

Bài viết được sự cho phép của tác giả Sơn Dương

React Hook là một “luồng gió” mà nhà phát hành React đã giới thiệu trong thời gian gần đây. Trên VNTALKING cũng có một bài viết giới thiệu về React Hook mà bạn nên đọc: React Hook là gì?

So với thời điểm mới ra mắt, hiện tại có rất nhiều thư viện hỗ trợ React Hook, giúp cho bạn phát triển dự án với React được dễ dàng hơn rất nhiều. Khi tìm kiếm trên internet về React, bạn sẽ gặp nhan nhản các từ khóa, các kỹ thuật liên quan tới “Hooks”, đây cũng là xu hướng mà chính nhà hành React cũng mong muốn như vậy. Nếu dự án của bạn chưa sử dụng Hook, có lẽ bạn nên suy nghĩ lại.

Hook giúp cho mã nguồn dự án trở nên rõ ràng, đảm bảo khả năng đọc code, khả năng bảo trì, khả năng tái sử dụng và có ít dòng mã hơn. Đây đều là những yếu tố rất quan trọng trong quá trình phát triển React.

Vì vậy trong blog này, mình sẽ giới thiệu cho bạn 10 thư viện React Hook hàng đầu mà bạn nên bắt đầu sử dụng ngay lập tức. Không để chậm trễ hơn nữa, chúng ta hãy bắt đầu tìm hiểu 10 thư viện đó nào.

1. Use-http

Use-http là một thư viện cực kì hữu ích được sử dụng để thay thế cho Fetch API. Được xây dựng và bảo trì với chất lượng cao, nó làm cho việc viết mã của bạn trở nên đơn giản và dễ hiểu hơn nhiều với sự chú trọng đặc biệt vào phần xử lý dữ liệu. Bản thân hook sử dụng TypeScript và thậm chí còn hỗ trợ SSR và GraphQL. Nó trả về một response, loading, error data và các phương thức yêu cầu khác nhau như Get, Post, Put, Patch và Delete.

Các tính năng chính mà nó cung cấp là:

  • Request/Response interceptors
  • Suspense (hiện đang được thử nghiệm)
  • Chức năng retry
  • Bộ nhớ đệm

Một ví dụ sử dụng thư viện này.

import useFetch from "use-http"

const Example = () => {
  const [todos, setTodos] = useState([])
  const { get, post, response, loading, error } = useFetch("https://example.com")

  useEffect(() => { get("/todos") }, [])

  const addTodo = async () => {
      await post("/todos", { title: "example todo" });
      if (response.ok) setTodos([...todos, newTodo])
  }

  return (
    <>
      <button onClick={addTodo}>Add Todo</button>
      {error && 'Error!'}
      {loading && 'Loading...'}
      {todos.map(todo => (
        <span key={todo.id}>{todo.title}</span>
      )}
    </>
  );
};

2. UseMedia

Bạn đã bao giờ cần phải theo dõi các câu truy vấn CSS media query?

useMedia Hook cung cấp một cách tiếp cận đơn giản để giải quyết cho vấn đề này. Media queries thực sự quan trọng trong các ứng dụng cần khả năng hiển thị responsive, tức là ứng dụng web hiển thị đẹp trên nhiều kích thước màn hình khác nhau

Được viết bằng TypeScript, nên Hook này đương nhiên sẽ hỗ trợ Typescript. Đặc biệt, thư viện này có nguồn tài liệu hướng dẫn rất đầy đủ và rõ ràng, nên bạn hoàn toàn yên tâm tích hợp hook nào vào ứng dụng.

Ví dụ cách sử dụng:

import useMedia from 'use-media';

const Example = () => {
  const isWide = useMedia({minWidth: '1000px'});

  return (
    <span>
      Screen is wide: {isWide ? "WideScreen" : "NarrowScreen"}
    </span>
  );
};

  Làm quen với React Hook bằng ví dụ

  Cách tạo các biểu mẫu cơ bản bằng React Hooks

3. Constate

Constate là một hook package cung cấp khả năng nâng local stage dựa lên React Context.

Điều này có nghĩa là bất kỳ state nào từ bất kỳ component nào cũng có thể dễ dàng được nâng lên Context chỉ với một dòng code đơn giản. Điều này rất hữu ích trong trường hợp bạn muốn sử dụng cùng một state ở nhiều vị trí hoặc cung cấp cùng một state cho nhiều component. Cái tên này xuất phát từ một cách chơi chữ kết hợp giữa Context và State.

Thư viện này được viết bằng TypeSript và có kích thước rất nhỏ. Tài liệu không quá chi tiết nhưng nó đủ giúp bạn hoàn thành công việc.

import React, { useState } from "react";
import constate from "constate";

// custom hook
function useCounter() {
  const [count, setCount] = useState(0);
  const increment = () => setCount(prevCount => prevCount + 1);
  return { count, increment };
}

// hook passed in constate
const [CounterProvider, useCounterContext] = constate(useCounter);

function Button() {
  // use the context
  const { increment } = useCounterContext();
  return <button onClick={increment}>+</button>;
}

function Count() {
  // use the context
  const { count } = useCounterContext();
  return <span>{count}</span>;
}

function App() {
  // wrap the component with provider
  return (
    <CounterProvider>
    <Count />
    <Button />
    </CounterProvider>
  );

Xem thêm các việc làm React hấp dẫn lương cao

4. Redux hooks

Redux là một công cụ nổi tiếng đối với nhiều nhà phát triển React, nếu không muốn nói là tất cả. Nó được sử dụng như một trình quản lý global state trong toàn bộ ứng dụng.

Redux đã đi vào hoạt động với những ưu điểm hấp dẫn chỉ trong một vài tháng sau khi phát hành lần đầu tiên của React. Redux cung cấp một giải pháp thay thế cho mẫu HOC (Higher Order Component) với phương thức connect() được xây dựng sẵn

Các hook đáng chú ý nhất được cung cấp là:

  • useSelector
  • useDispatch
  • useStore

Tài liệu này có một chút phức tạp nhưng nó khá tốt, nó sẽ cung cấp cho bạn mọi thông tin cần thiết để bắt đầu sử dụng chúng.

import {useSelector, useDispatch} from "react-redux";
import React from "react";
import * as actions from "./actions";

const Example = () => {
const dispatch = useDispatch()
const counter = useSelector(state => state.counter)

return (
<div>
   <span>
     {counter.value}
   </span>
   <button onClick={() => dispatch(actions.incrementCounter)}>
     Counter +1
   </button>
</div>
);
}

5. React hook form

React hook form là một thư viện form hook tương tự như biểu mẫu Formik và Redux, nhưng tốt hơn. Với cú pháp đơn giản, tốc độ nhanh, render ít hơn và khả năng bảo trì tốt hơn, nó bắt đầu leo lên các bảng xếp hạng trên GitHub.

React hook form có kích thước nhỏ và được xây dựng với đặc biệt chú trọng về hiệu suất. Thư viện còn cung cấp một công cụ form builder tuyệt vời. Và nó có một trong những repo về React có lượng star lớn trên GitHub – 14,8k.

import React from "react";
import { useForm } from "react-hook-form";

function App() {
  const { register, handleSubmit, errors } = useForm();
  const onSubmit = (data) => {
    // logs {firstName:"exampleFirstName", lastName:"exampleLastName"}
    console.log(data);
  };

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
     <input name="firstName" ref={register} />
     <input name="lastName" ref={register({ required: true })} />
     {errors.lastName && <span>"Last name is a required field."</span>}
     <input name="age" ref={register({ required: true })} />
     {errors.age && <span>"Please enter number for age."</span>}
     <input type="submit" />
    </form>
  );
}

6. useDebounce

useDebounce là một hook nhỏ được sử dụng cho mục đích hỗ trợ debug. Hook này được sử dụng để trì hoãn việc thực thi chức năng, và nó cũng thường được sử dụng trong các input trong form nơi dùng để nhập dữ liệu.

import React, { useState } from "react";
import { useDebounce } from "use-debounce";

export default function Input() {
  const [text, setText] = useState("Hello");
  const [value] = useDebounce(text, 1000);

  return (
    <div>
      <input
        defaultValue={"Hello"}
        onChange={(e) => {
          setText(e.target.value);
        }}
      />
      <p>Value: {text}</p>
      <p>Debounced value: {value}</p>
  </div>
 );
}

7. useLocalStorage

useLocalStorage là một hook nhỏ giống như cái ở trên. Nó thực sự hữu ích để giải nén và thiết lập dữ liệu bên trong localStorage. Với hook này, manipulation được thực hiện dễ dàng.

Hook cung cấp JSON serialization và đồng bộ hóa JSON tự động trên nhiều tab và được viêt bằng TypeScript nên nó cung cấp nhiều type.

Tài liệu được viết một cách chất lượng và khá dễ hiểu với nhiều ví dụ.

import React, { useState } from "react";
import { writeStorage } from '@rehooks/local-storage';

export default function Example() {
  let counter = 0;
  const [counterValue] = useLocalStorage('counterValue');

  return (
    <div>
      <span>{counterValue}</span>
      <button onClick={() => writeStorage('i', ++counter)}>
        Click Me
      </button>
    </div>
  );
}

8. usePortal

usePortal giúp việc tạo dropdowns, modals, notification popups, tooltips… cực kì dễ dàng! Nó cũng cho phép tạo các phần tử bên ngoài hệ thống phân cấp DOM của ứng dụng (để tìm hiểu cách Portals hoạt động, bấm vào đây ).

Hook này làm việc với cả SSR (Server Side Rendering). Nó được viết bằng TypeScript và có một built-in state. Đối với các chức năng, nó cung cấp tùy chỉnh đầy đủ về styling portal và rất nhiều tùy chọn khác.

Tài liệu được viết khá tốt – đặc biệt là có sẵn nhiều ví dụ minh họa sẽ là quá đủ để bắt đầu tự sử dụng thư viện/hook này đúng không!?

import React, { useState } from "react";
import usePortal from "react-useportal";

const Example = () => {
const { ref, openPortal, closePortal, isOpen, Portal } = usePortal()

    return (
      <>
    <button ref={ref} onClick={() => openPortal()}>
       Open Portal
    </button>
     {isOpen && (
       <Portal>
          <p>
            This Portal handles its own state.{' '}
            <button onClick={closePortal}>Close me!</button>, hit ESC or
            click outside of me.
          </p>
        </Portal>
      )}
        </>
  )
}

9. useHover

useHover là React state để xác định xem một phần tử React có đang được di chuột hay không. Hook này khá trực quan và dễ sử dụng. Thư viện có kích thước nhỏ nhưng rất mạnh nếu bạn đủ sáng tạo.

Nó cung cấp độ trễ của hiệu ứng di chuột và hỗ trợ TypeScript. Tài liệu không quá chi tiết, nhưng nó sẽ chỉ cho bạn cách sử dụng nó tốt nhất.

import useHover from "react-use-hover";

const Example = () => {
  const [isHovering, hoverProps] = useHover();
  return (
    <>
      <span {...hoverProps} aria-describedby="overlay">Hover me</span>
      {isHovering ? <div> I’m a little tooltip! </div> : null}
    </>
  );
}

10. React router hooks

React router là một trong những thư viện phổ biến nhất cho React. Nó được sử dụng để định tuyến và lấy lịch sử URL của ứng dụng, …

Các hook được cung cấp là:

  • useHistory
  • useLocation
  • useParams
  • useRouteMatch

Chỉ cần đọc tên hook là bạn đủ để bạn hiểu chức năng chính của nó là gì rồi đúng không?

UseHistory sẽ lấy dữ liệu về lịch sử của ứng dụng và các method, chẳng hạn như push, cái mà sẽ đẩy đến một route mới. UseLocation sẽ trả về đối tượng đại diện cho URL hiện tại. UseParams sẽ trả về một đối tượng gồm các cặp key-value của các tham số URL của route hiện tại. Và cuối cùng, useRouteMatch sẽ cố gắng khớp URL hiện tại với URL đã cho cái mà có thể là một chuỗi hoặc một đối tượng của các option khác nhau.

Tài liệu mô tả của thư viện này rất tốt và tất nhiên là có rất nhiều ví dụ minh họa trong tài liệu để bạn tham khảo.

import { useHistory, useLocation, useRouteMatch } from "react-router-dom";

const Example = () => {
let history = useHistory();
let location = useLoction();
let isMatchingURL = useRouteMatch("/post/11");

function handleClick() {
history.push("/home");
}

return (
<div>
<span>Current URL: {location.pathname}</span>
{isMatchingURL ? <span>Matching provided URL! Yay! </span> : null}
<button type="button" onClick={handleClick}>
Go home
</button>
</div>
);
}

Nhiều cái hơn nữa để lựa chọn

Có rất nhiều thư viện react hook khác trên mạng, nhưng đây là những thứ mà mình cảm thấy có ích nhất cho dự án của bạn. Nếu thực sự thích chúng, hãy thử dùng ngay cho dự án.

Hy vọng bạn đã thấy bài viết này thú vị và bạn sẽ học được điều gì đó mới mẻ. Chúc bạn tìm thấy niềm vui khi khám phá thêm về các hooks.

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Tìm việc làm IT mới nhất trên TopDev

Chân dung lập trình viên Việt Nam năm 2023 – Thời đại của GenZ & Millennials

Theo “Báo Cáo Thị Trường IT Việt Nam 2023 – Vietnam Tech Talents Report” của TopDev, hầu hết các lập trình viên đều thuộc thế hệ GenZ & Millennials. Vì vậy, việc tìm hiểu sâu về sở thích, hành vi, tương tác xã hội, và đặc điểm nhân khẩu học của họ trở nên vô cùng quan trọng đối với các nhà tuyển dụng. Điều này giúp họ điều chỉnh chiến lược tuyển dụng của mình để phù hợp với xu hướng tuyển dụng đa thế hệ hiện nay.

Cùng TopDev khám phá chân dung của lập trình viên Việt Nam năm 2023 dưới bài viết này bạn nhé!

Độ tuổi và giới tính

Độ tuổi chiếm ưu thế trên thị trường hiện nay là từ 20 đến 34 tuổi. Nhóm tuổi có tỷ lệ cao nhất là 20 – 24 tuổi (29,8%), tiếp theo là nhóm tuổi 25 – 29 (26,2%). Hiện tại, số lượng lập trình viên ở Việt Nam ở độ tuổi trẻ chiếm đa số với 56% ở độ tuổi 20 – 29 tuổi.

Chân dung lập trình viên Việt Nam năm 2023

Điều này đã phản ánh về lực lượng lao động chủ đạo trong ngành IT những năm gần đây đa phần đến từ thế hệ GenZ & Millennials. Thế hệ này thường tìm kiếm sự cân bằng lý tưởng giữa công việc và cuộc sống, quan tâm nhiều hơn đến thông tin về công ty, và mong muốn tham gia tích cực vào quá trình phát triển sản phẩm. Vậy nên, việc xây dựng chiến lược tuyển dụng những tài năng thế hệ GenZ & Millennials là một yếu tố quan trọng các nhà tuyển dụng trong lĩnh vực IT cần tập trung.

Về sự phân hóa độ tuổi trong ngành lập trình, nam giới vẫn chiếm ưu thế trong giới tính lập trình viên hoặc người làm việc trong lĩnh vực công nghệ với 90,5%. Nữ giới chỉ chiếm tỷ lệ nhỏ 9,1% nhưng tiếp tục tăng dần kể từ khi chúng tôi ghi nhận lần đầu chỉ 5% vào năm 2017.

Chân dung lập trình viên Việt Nam năm 2023

Gần đây, ngày càng có nhiều cơ hội mở ra cho phụ nữ bắt đầu sự nghiệp với tư cách là lập trình viên từ các chương trình giáo dục STEM cũng như khuyến khích xã hội & công nghệ với thuật ngữ phổ biến “Phụ nữ trong công nghệ”.

Công nghệ phổ biến

Theo báo cáo của TopDev, JavaScript là ngôn ngữ lập trình phổ biến nhất cùng với các kỹ năng IT khác. Trong đó Nodejs, Angular & ReactJS là 3 lựa chọn hàng đầu về Javascript framework. Lựa chọn hàng đầu để làm việc với Java lần lượt là Spring Boot/Spring rồi đến Hibernate & Struts. Không có nhiều thay đổi trong danh sách .NET/C# trong đó .NET Framework, .NET Core & ASP.NET Core đứng đầu danh sách. Laravel vẫn là framework phổ biến nhất trong nhóm công nghệ PHP với hơn 75%, tiếp theo là CodeIgniter & Symfony.

Chân dung lập trình viên Việt Nam năm 2023

MySQL tiếp tục dẫn đầu nhóm công nghệ SQL với hơn 58%. Django, Falcon & Pyramid là 3 lựa chọn hàng đầu liên quan đến ngôn ngữ lập trình Python. Về lập trình di động. Java, Swift & Flutter là những lựa chọn phổ biến. Trong số các lựa chọn công nghệ đám mây, AWS vẫn chiếm ưu thế với hơn 35%, tiếp theo là Azure, VMWare, Firebase & GCP.

Công nghệ & sở thích

Theo Báo Cáo Thị Trường IT Việt Nam 2023, các công nghệ lập trình viên muốn làm việc/học nhất lần lượt là:

#1. Artificial Intelligence & Machine Learning

Công nghệ AI/ML đang có nhu cầu cao và các lập trình viên tận dụng chúng cho các nhiệm vụ như xử lý ngôn ngữ tự nhiên, thị giác máy tính và phân tích dự đoán. Các framework phổ biến bao gồm TensorFlow, PyTorch, Caffe & Keras.

#2: Cloud Computing/ AWS

Các nền tảng đám mây như AWS, Microsoft Azure và Google Cloud được sử dụng rộng rãi để xây dựng các ứng dụng linh hoạt và có thể mở rộng. Các lập trình viên tìm hiểu kiến trúc, triển khai và quản lý đám mây.

#3: Full-Stack Development

Phát triển toàn diện bao gồm làm việc với cả công nghệ frontend và backend để xây dựng các ứng dụng web hoàn chỉnh. Các tech stack phổ biến bao gồm các frameworks/ libraries dựa trên JavaScript như React.js, Angular và Node.js.

#4: DevOps

DevOps kết hợp các hoạt động phát triển và vận hành để cải thiện việc phân phối phần mềm và quản lý cơ sở hạ tầng. Các công cụ phổ biến như Docker, Kubernetes, Jenkins và Ansible được sử dụng để tự động hóa các quy trình và đạt được sự tích hợp/triển khai liên tục.

Đối với IDE & code editor, các lập trình viên đa số lựa chọn sử dụng Visual Studio Code và Visual Studio với tỉ lệ lần lượt là 55,2% và 53,4%. Tiếp theo đó là Android Studio với 38,1% và Eclipse 30,1%. Bên cạnh đó, số đông lập trình viên đang dần chuyển sang các nền tảng AI để tìm kiếm thông tin, một số công cụ tìm kiếm AI được ưu chuộng như: Chat GPT, Poe Quora AI, Bing AI, Google Bard,…

Hành vi của lập trình viên

Dựa trên số liệu báo cáo cung cấp, hơn 60% lập trình viên sử dụng tài liệu chính thức cũng như các nguồn Youtube làm cách học và tiếp cận công nghệ mới chính. Tiếp theo là các khóa học trực tuyến dựa trên video (42,1%) & dự án cá nhân (27,5%) là những cách tiếp cận công nghệ mới phổ biến. Sách công nghệ, dự án nguồn mở, khóa học tương tác trực tuyến, khóa học ngoại tuyến và cuộc thi viết mã là những phương pháp khác để học công nghệ mới nhưng mức độ phổ biến và khả năng ứng dụng được coi là không tốt bằng các phương pháp khác.

Chân dung lập trình viên Việt Nam năm 2023
Lập trình viên học ngôn ngữ / công nghệ lập trình mới như thế nào?

Ngoài ra, để cập nhật các xu hướng và tin tức công nghệ mới nhất, 73,5% lập trình viên đọc blog công nghệ và 45,1% theo dõi các Tech Fanpages công nghệ. Cách thức cập nhật tin tức qua nền tảng video đang được ưa chuộng, các kênh video trên Youtube & Tiktok mang đến nhiều cách thức tiếp cận tin tức công nghệ mới cho các lập trình viên thông qua định dạng video và tương tác.

Chân dung lập trình viên Việt Nam năm 2023
Lập trình viên cập nhật tin tức công nghệ như thế nào?

Việc nắm bắt được hành vi của các lập trình viên giúp nhà tuyển dụng dự đoán được đối tượng mục tiêu của họ đang ở đâu. Lên kế hoạch để khai thác các nền tảng, tìm kiếm ứng viên ở những nơi họ thường lui tới sẽ giúp việc tuyển dụng hiệu quả, tiết kiệm ngân sách và thời gian đáng kể.

Lời kết

Hiện nay, Việt Nam đang chứng kiến một làn sóng đầu tư mạnh mẽ vào lĩnh vực Công nghệ thông tin, không chỉ từ các doanh nghiệp trong nước mà còn có sự tham gia đáng kể của các công ty nước ngoài. Kết quả của điều này là nhu cầu về nhân lực trong lĩnh vực Công nghệ thông tin tại Việt Nam đã liên tục tăng cao trong suốt 5 năm gần đây. Do đó, việc hiểu rõ hơn về hình ảnh và khả năng của nguồn nhân lực IT tại Việt Nam là điều rất quan trọng đối với các nhà tuyển dụng, để họ có thể xây dựng những chiến lược tuyển dụng phù hợp với nhu cầu và mục tiêu của công ty mình.

Ngoài ra, bạn có thể tham khảo thêm về rất nhiều thông tin và chỉ số khác của toàn ngành IT thông qua bản báo cáo đầy đủ nhất tại:Báo Cáo Thị Trường IT Việt Nam 2023 – Vietnam Tech Talents Report” bằng cách tải xuống bên dưới:

BẢNG TIẾNG VIỆT

ENGLISH VERSION

Có thể bạn quan tâm:

Xem thêm việc làm IT hàng đầu hot nhất trên TopDev

Tổng quan mức lương lập trình viên Việt Nam 2023

Trong thời đại công nghệ ngày càng phát triển, vai trò của lập trình viên trở nên ngày càng quan trọng và thu hút sự quan tâm của nhiều người trẻ tại Việt Nam. CNTT đã trở thành một nghề hot, không chỉ vì nhu cầu thị trường và thách thức mà nó mang lại, mà còn bởi tiềm năng tài chính to lớn trong tương lai.

Năm 2023, với sự bùng nổ của ngành công nghệ thông tin và phần mềm tại Việt Nam, mức lương của lập trình viên đang là một chủ đề được quan tâm hàng đầu. Với Báo Cáo Thị Trường IT Việt Nam 2023 – Vietnam Tech Talents Report của TopDev, sẽ cho chúng ta thấy bức tranh tổng thể về mức lương của toàn ngành, cũng như biết được những công nghệ, ngôn ngữ lập trình nào đang được săn đón với đãi ngộ hấp dẫn.

Tổng quan về mức lương lập trình viên 2023

Theo Báo Cáo Thị Trường IT Việt Nam 2023 của TopDev, mức lương bình quân năm nay không thay đổi nhiều so với năm ngoái (lương trung bình $1.311) và tốc độ tăng trưởng so với cùng kỳ năm trước chỉ ở mức 0,7%.

Do tình hình kinh tế toàn cầu, hầu hết các doanh nghiệp đều rơi vào tình trạng khó khăn với nhiều vấn đề liên quan đến dòng tiền, mở rộng và tăng trưởng kinh doanh. Vì vậy, chi phí nhân công – một trong những chi phí vận hành chiếm tỷ trọng lớn nhất trong doanh nghiệp – sẽ được xem xét tối ưu hóa trước hết để đảm bảo ổn định tài chính. Tuy nhiên, mức lương bình quân của các vị trí liên quan đến CNTT vẫn cao hơn so với các ngành khác.

Báo Cáo Thị Trường IT Việt Nam 2023

Bên cạnh đó, tùy vào địa điểm khác nhau sẽ có nhu cầu và mức lương khác nhau. Cụ thể, tại TP.HCM, tỉ lệ tuyển dụng lập trình viên có mức lương $1.100 – $1.500 ở mức cao nhất 39,6%. Còn tại Hà Nội, tỉ lệ tuyển dụng lập trình viên có mức lương $600 – $1.000 và $1.100 – $1.500 lại khá tương đồng với nhau (37,7% và 36,7%). Điều này đã phản ánh về điều kiện kinh tế, thị trường việc làm cũng như nhu cầu khác nhau giữa từng khu vực.

Mức lương lập trình viên theo công nghệ

Theo số liệu từ báo cáo, hầu hết các vị trí CNTT đều bắt đầu sự nghiệp với mức lương không có sự chênh lệch quá lớn. Nhưng sau 2 năm đầu tiên trong sự nghiệp, mô hình lương sẽ đi theo hướng khác liên quan đến công nghệ và có thể bị ảnh hưởng rất nhiều từ thị trường việc làm, tình hình kinh tế và các yêu cầu kinh doanh mới nổi.

Báo Cáo Thị Trường IT Việt Nam 2023

Nhìn chung, hầu hết các nhóm công nghệ cơ bản như Java, Python, .NET, C++ & PHP vẫn được coi là được trả lương cao liên tục qua nhiều năm. Các kỹ năng công nghệ cao mới như liên quan đến Đám mây/ AI/ ML/ DevOps đang được đầu tư nhiều hơn với mức lương cao hơn với tác động to lớn của các ứng dụng trong thế giới thực hiện nay về Điện toán đám mây, AI sáng tạo và quy trình phát triển hiện đại.

Mức lương lập trình viên theo trình độ

Mức lương thường tăng lên khi người lao động thăng tiến trong các cấp bậc công việc, kinh nghiệm cùng với thâm niên. Có sự khác biệt đáng kể về mức lương giữa các cấp bậc công việc. Các cấp độ Leader/ Manager và Director/ Architect có mức lương cao nhất, phản ánh trách nhiệm và chuyên môn ngày càng tăng cần thiết cho các vị trí này.

Báo Cáo Thị Trường IT Việt Nam 2023

Theo báo cáo thị trường IT của TopDev, ở vị trí Fresher (dưới 1 năm kinh nghiệm), trung bình nhận mức lương từ $435 đến $514. Sau 2 năm làm việc trong ngành IT, tốc độ tăng lương có vẻ nhanh hơn 2 năm đầu khi các lập trình viên đã tích lũy được một số kiến thức nền tảng & kinh nghiệm làm việc. Khi đạt đến cấp Director/ Architect, mức lương trung bình một người có thể nhận được vượt qua $2.000 và có thể lên đến $2.700.

Mức lương lập trình viên theo vị trí

Theo dự đoán của các báo cáo trước, các vị trí được trả lương cao nhất đòi hỏi các kỹ năng đặc biệt như Data Analyst, Cloud, DevOps, Machine Learning hoặc AI. Do tác động của Covid-19 dẫn đến nhu cầu chuyển đổi số của doanh nghiệp, từ đó Cloud Service & DevOps đã đóng vai trò quan trọng hơn trong việc duy trì và phát triển doanh nghiệp. Do đó, nhu cầu về kỹ sư Cloud/DevOps đã tăng lên đáng kể, kéo theo đó là những vị trí liên quan sẽ tăng mức lương.

Báo Cáo Thị Trường IT Việt Nam 2023

Các vị trí liên quan đến khả năng quản lý như Tech Management (CTO/CIO), Technical Director/ Engineering Manager vẫn sẽ giữ mức lương cao nhất (Tech Management $5,950 và Technical Director /Engineering Manager $4.290). Cùng với đó, một số vị trí khác liên quan đến việc hỗ trợ như IT Helpdesk, Technician, Tester, QA/QC giữ mức lương dưới $1000.

Tính lương chuẩn với công cụ tính lương gross to net từ TopDev

Tổng kết

Như vậy, mức lương của lập trình viên tại Việt Nam trong năm 2023 không chỉ phụ thuộc vào kỹ năng và kinh nghiệm cá nhân, mà còn phụ thuộc vào công nghệ, trình độ, vị trí công việc và nhiều yếu tố khác nữa. Với những nội dung & số liệu mà Báo Cáo Thị Trường IT Việt Nam 2023 mang lại đã cho thấy rằng ngành công nghệ thông tin ở Việt Nam vẫn đang trong giai đoạn phát triển mạnh mẽ, tạo cơ hội lớn cho các lập trình viên.

Điều quan trọng là lập trình viên cần luôn nâng cao kỹ năng, không ngừng học hỏi và cập nhật kiến thức để duy trì sự cạnh tranh trên thị trường lao động ngày càng cạnh tranh. Ngoài ra, tìm hiểu kỹ về công ty mình muốn làm việc để có thể thương lượng lương tốt nhất.

Tham khảo thêm nhiều thông tin và chỉ số khác của toàn ngành IT thông qua bản báo cáo đầy đủ nhất tại đây: Báo Cáo Thị Trường IT Việt Nam 2023 – Vietnam Tech Talents Report.

Có thể bạn quan tâm:

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Ngành CNTT vươn mình trong thách thức giữa “tâm bão” suy thoái kinh tế

Ngành CNTT vươn mình trong thách thức giữa “tâm bão” suy thoái kinh tế

Suy thoái kinh tế và những dư chấn sau đại dịch là một trong các thách thức lớn nhất của ngành Công nghệ thông tin trong năm 2023. Ngành công nghệ đang phải đối mặt với các vấn đề xung quanh chuỗi cung ứng, lực lượng lao động, an ninh mạng bên cạnh cuộc đua công nghệ số đang ngày càng gay gắt. 

Đứng trước vô vàn thách thức, các công ty công nghệ đã có những chuyển biến mạnh mẽ để đứng vững giữa thị trường đầy biến động. Song song với đó, các lập trình viên cũng tích cực thay đổi, nắm bắt thời cơ và trau dồi tri thức để đáp ứng những nhu cầu ngày càng khắt khe của doanh nghiệp.

Vậy suy thoái kinh tế đã ảnh hưởng như thế nào đến ngành CNTT? Các doanh nghiệp công nghệ và người lao động đã làm gì để “sống khỏe” trong giai đoạn này?

Suy thoái kinh tế khiến nhiều doanh nghiệp “điêu đứng”

Theo Vietnam IT Market Report 2023 – Vietnam Tech Talents Report do TopDev phát hành, lĩnh vực thông tin và truyền thông đạt doanh thu hơn 1,6 triệu tỷ đồng (69 tỷ USD) từ đầu năm đến nay, giảm 8,66% so với cùng kỳ năm ngoái. Sự sụt giảm này là do kinh tế toàn cầu gặp khó khăn khi suy thoái kinh tế ở nhiều nước vẫn chưa giảm bớt, dẫn đến thị trường tiêu thụ sản phẩm CNTT yếu. Xung đột Ukraineđại dịch Covid-19 cũng ảnh hưởng đến lĩnh vực này, khiến xuất khẩu CNTT của Việt Nam sụt giảm.

Vietnam IT Market Report 2023 - Vietnam Tech Talents Report
Doanh thu ITC 2016 – 2023

Sự giảm tốc này đã ảnh hưởng ít nhiều đến kế hoạch ngân sách đầu tư và chi tiêu của các doanh nghiệp công nghệ trong năm nay. Các doanh nghiệp phải suy nghĩ nhiều hơn về việc phải làm thế nào để giảm chi phí, tăng hiệu quả và tăng doanh thu. Điều này đã ảnh hưởng trực tiếp đến lực lượng lao động khi nhiều doanh nghiệp đã tiến hành cắt giảm nhân sự làm hàng trăm ngàn nhân viên mất việc.

Biến thách thức thành cơ hội

Đối với doanh nghiệp

Trong 6 tháng đầu năm 2023, mặc dù doanh thu của ngành CNTT đang trên đà giảm, xuất khẩu phần mềm vẫn là một điểm sáng, vì một số doanh nghiệp duy trì tăng trưởng tốt ở một số thị trường nước ngoài. Chi tiêu trong lĩnh vực phần mềm toàn cầu vào năm 2023 – 2024 sẽ phát triển mạnh mẽ. Đây chính là điểm sáng cho các doanh nghiệp phần mềm và dịch vụ công nghệ thông tin tập trung khai thác.

Cùng với đó, để giải quyết tình trạng quỹ lương eo hẹp và yêu cầu hoạt động kinh doanh ngày càng cao, các doanh nghiệp đã thu hẹp kế hoạch tuyển dụng trong năm 2023 với số lượng tuyển dụng mới giảm đáng kể. Gần 90% công ty có kế hoạch tuyển ít hơn 50 lập trình viên trong năm nay trong khi con số này của năm ngoái chỉ là 75%. Các doanh nghiệp đã đẩy mạnh tuyển dụng nhân sự chất lượng cao và giàu kinh nghiệm như là một cách để quản lý chi phí và duy trì hiệu suất trong thời điểm khó khăn.

Vietnam IT Market Report 2023 - Vietnam Tech Talents Report

Ngoài ra, đây là thời điểm để các doanh nghiệp xem xét lại về các kế hoạch đầu tư cho công nghệ mới. Bởi việc đầu tư tràn lan vào công nghệ trong khi không hiểu rõ mục đích, dẫn đến việc tích lũy những thứ không cần thiết, lãng phí ngân sách.

Đối với lập trình viên

Mặc dù đối mặt với tình hình suy thoái kinh tế nhưng nhu cầu nhân lực IT tại Việt Nam vẫn còn rất cao. Theo số liệu từ TopDev, giai đoạn năm 2023 – 2025, Việt Nam vẫn sẽ thiếu hụt từ 150.000 đến 200.000 lập trình viên/kỹ sư hàng năm. Cùng với đó là những chính sách, thúc đẩy đầu tư/phát triển cho ngành CNTT của Đảng và nhà nước giúp cánh cửa tìm kiếm việc làm ngành CNTT ngày càng rộng mở.

Vietnam IT Market Report 2023 - Vietnam Tech Talents Report

Tuy nhiên, vấn đề trình độ có tay nghề cao là một trong những điểm hạn chế của nhân sự IT Việt Nam. Lao động tay nghề cao chỉ chiếm khoảng 11,67% gần như không thay đổi so với 3 năm trước. Đây là một thách thức đòi hỏi các lập trình viên phải nâng cao năng lực chuyên môn, cải thiện khả năng ngoại ngữ và nhiều kỹ năng quan trọng khác để đáp ứng cho yêu cầu ngày càng cao của doanh nghiệp.

Bên cạnh đó, các lập trình viên cần nắm bắt nhu cầu, thị hiếu của khách hàng để lựa chọn hướng đi cho phù hợp. Cụ thể, với sự phát triển mạnh mẽ của các ngành như trí tuệ nhân tạo, big data, thực tế ảo, thương mại điện tử,… đã kéo theo nhu cầu lớn về nguồn nhân lực có chuyên môn. Nếu nhạy bén “nắm thóp” được thị trường, các nhân sự công nghệ có thể có được công việc tốt với mức lương khủng lên đến hơn $2.000.

Tóm lại

Suy thoái kinh tế là vấn đề chung mà chúng ta cần phải vượt qua. Song hành cùng với những thách thức đó chính là những cơ hội, bước đệm để chúng ta vươn xa hơn trong tương lai. Ngành công nghệ thông tin vẫn sẽ nắm vai trò chủ đạo của nền kinh tế quốc gia, với trí lực và sự bản lĩnh, Việt Nam sẽ tìm được hướng đi đúng đắn để chuyển mình mạnh mẽ vượt qua “tâm bão” lần này.

Báo cáo năm 2023 về thị trường và nhu cầu nhân sự IT do TopDev phát hành đã được đăng tải, độc giả tìm hiểu thêm về xu hướng các ngành Công nghệ trong nước qua bản Vietnam IT Market Report tại đây.

Có thể bạn quan tâm:

Xem thêm tuyển dụng việc làm IT hấp dẫn trên TopDev

TopDev phát hành Báo cáo thị trường IT Việt Nam năm 2023: Điểm sáng trong phục hồi kinh tế gắn liền với chương trình đổi mới sáng tạo và chuyển đổi số quốc gia

Báo cáo thị trường IT Việt Nam năm 2023

Việt Nam đã và đang nổi lên như một nhân tố chủ chốt trong bối cảnh công nghệ toàn cầu, thu hút đầu tư đáng kể và thúc đẩy tăng trưởng nhanh chóng trong những năm gần đây. Trong bối cảnh nền kinh tế quốc gia đang phục hồi và phát triển, quan hệ hữu nghị, hợp tác song phương và đa phương với các nước phát triển đang là đường lối và chủ trương chiến lược của Đảng và Nhà nước. Cùng với đó, việc đầu tư áp dụng Công nghệ & Chuyển đổi số vào doanh nghiệp được phát triển mạnh dẫn đến việc Tuyển dụng nhân tài công nghệ trở thành một trong những mối quan tâm chính của các Nhà quản lý nhân sự và chủ doanh nghiệp hiện nay.  Điều đó càng đặc biệt được chú trọng trong bối cảnh cán cân cung – cầu trong tuyển dụng nhân sự Công nghệ ngày càng thay đổi và trở nên cạnh tranh mạnh mẽ hơn. 

Báo cáo thị trường IT Việt Nam năm 2023
Hình 1: Báo Cáo Thị Trường IT Việt Nam của TopDev năm 2023

Những thay đổi nhanh chóng sau đại dịch Covid-19 và suy thoái kinh tế toàn cầu đặt ra nhiều thách thức cho thị trường nhân sự và doanh nghiệp trong bối cảnh duy trì sự ổn định tài chính. Bên cạnh suy thoái kinh tế, cuộc Cách mạng kỹ thuật số dựa trên trí tuệ nhân tạo đặt ra nhiều thách thức nhưng mở ra nhiều cơ hội phát triển mới cho doanh nghiệp trong nước. Để có sự thích nghi với thời đại số hóa, thị trường bắt đầu yêu cầu nguồn nhân lực công nghệ có nền tảng kỹ thuật vững, tư duy kinh doanh và những chuyên môn cần thiết trong công cuộc đổi và phát triển doanh nghiệp.

Với báo cáo vừa phát hành, ông Park JongHo – CEO TopDev chia sẻ:

Tôi tin chắc rằng những thay đổi và chuyển động lớn đang ở phía trước chúng ta. Bên cạnh suy thoái kinh tế, cuộc cách mạng kỹ thuật số và công nghệ dựa trên trí tuệ nhân tạo thay đổi nhanh chóng sau đại dịch Covid-19 đặt ra nhiều thách thức cho thị trường nhân sự. Trong làn sóng thay đổi lớn này, chúng ta sẽ phải nỗ lực để hiểu rõ hơn về doanh nghiệp và con người. Cùng với việc thay đổi công nghệ, sự hiểu biết lẫn nhau này sẽ góp phần to lớn vào sự phát triển của xã hội, ngành công nghiệp và quốc gia của chúng ta.

1. Tổng quan tình hình ngành Công nghệ thông tin 2023

Mối quan hệ hợp tác chiến lược Việt Nam – Mỹ sau chuyến viếng thăm của Tổng thống Joe Biden trong bối cảnh nền kinh tế quốc gia đang phục hồi và phát triển đặt ra nhiều cơ hội và thách thức cho các doanh nghiệp trong nước thực hiện đầu tư và sáng tạo trong chính sách tăng cường chuyển đổi số quốc gia. Trong số các lĩnh vực kinh doanh, công nghệ thông tin và truyền thông (CNTT-TT) là một trong những ngành mở rộng nhanh nhất ở Việt Nam. Ngành công nghiệp CNTT của Việt Nam nói chung và ngành công nghiệp dịch vụ CNTT đã chứng kiến sự tăng trưởng tích cực trong 5 năm qua và đạt được những thành tựu đáng kể.

Theo số liệu của Tổng cục Thống kê, tình hình đăng ký doanh nghiệp tháng 8/2023 đã khởi sắc hơn tháng trước, có hơn 14 nghìn doanh nghiệp thành lập mới với số vốn đăng ký là 135,3 nghìn tỷ đồng và số lao động đăng ký 79,9 nghìn lao động, tăng 2,3% về số doanh nghiệp, tăng 6,6% về vốn đăng ký và tăng 1,2% về số lao động so với tháng 7/2023.

Nhằm đẩy mạnh triển khai thực hiện Chương trình chuyển đổi số quốc gia đến năm 2025 và Chiến lược quốc gia về phát triển doanh nghiệp công nghệ số Việt Nam đến năm 2030, chính phủ đang rất tập trung xây dựng kế hoạch và bố trí nguồn lực hỗ trợ doanh nghiệp, đặc biệt là các doanh nghiệp nhỏ và vừa trên địa bàn thực hiện chuyển đổi số, đổi mới sáng tạo, chuyển giao công nghệ phù hợp. Ngoài ra, Việt Nam cũng đang thúc đẩy hệ sinh thái các đơn vị hỗ trợ cho các nhà sản xuất chip góp phần giúp Việt Nam trở thành một trong những quốc gia có nhiều hoạt động sản xuất chip trong khu vực. Ngày càng có nhiều doanh nghiệp Việt Nam có khả năng tham gia vào ngành công nghiệp hỗ trợ sản xuất chip với lực lượng hiện tại khoảng 50 doanh nghiệp trong nước và hơn 5.000 kỹ sư Việt Nam tham gia thiết kế chip. Qua đó, việc xây dựng hệ sinh thái doanh nghiệp hỗ trợ và đội ngũ kỹ sư thiết kế chip, kỹ sư điện tử sẽ giúp Việt Nam từng bước nâng cấp và tham gia sâu hơn vào chuỗi giá trị vi mạch toàn cầu. 

Báo cáo thị trường IT Việt Nam năm 2023
Hình 2: Tốc độ tăng trưởng GDP & Ngành ICT theo Báo cáo thị trường IT Việt Nam TopDev Quý 3 2023

Trong số các lĩnh vực kinh doanh, công nghệ thông tin và truyền thông (ICT) là một trong những lĩnh vực phát triển nhanh nhất ở Việt Nam. Ngành CNTT Việt Nam nói chung và ngành dịch vụ CNTT có sự tăng trưởng tích cực trong 5 năm qua. Doanh thu lĩnh vực công nghiệp công nghệ thông tin (ICT) của Việt Nam trong 5 năm qua liên tục tăng trưởng cao, từ gần 103 tỷ USD năm 2018 lên hơn 124,67 tỷ USD năm 2020 và 136,15 tỷ USD vào năm 2021. Trong đó, kim ngạch xuất khẩu phần cứng, điện tử năm 2022 ước đạt 136 tỷ USD, tăng 11,6% so với năm 2021; xuất siêu hơn 26 tỷ USD. Trong bảng xếp hạng Chỉ số Đổi mới sáng tạo toàn cầu GII 2021, Việt Nam xếp thứ 44 trên 132 quốc gia/nền kinh tế.

2. Nhu cầu nhân lực thị trường IT Việt Nam 2023

Sự thiếu hụt nhân sự CNTT luôn là vấn đề khó khăn nhất đối với thị trường CNTT. Mặc dù mức lương và phúc lợi của ngành này vẫn giữ xu hướng tăng và có phần cao hơn so với mặt bằng chung. Dự đoán từ năm 2023 – 2025, Việt Nam vẫn sẽ thiếu hụt từ 150.000 đến 200.000 lập trình viên/ kỹ sư hàng năm. Đa số các nhà tuyển dụng cho biết họ hầu như luôn cần các lập trình viên Back-end, lập trình viên Full-stack và Front-end. Top 5 kỹ năng CNTT hàng đầu mà các công ty đang tìm kiếm vẫn giữ nguyên  như những năm trước: Javascript, Java, PHP, C#/.Net & Python.

Báo cáo thị trường IT Việt Nam năm 2023
Hình 3: Báo Cáo Thị Trường IT Việt Nam 2023 của TopDev về nhu cầu nhân lực ngành CNTT 2023

Theo các số liệu thống kê từ năm 2018 – 2023 được đưa ra, nhu cầu nhân lực cho ngành công nghệ thông tin tại Việt Nam vẫn đang tăng cao liên tục dù trong bối cảnh kinh tế nhiều biến động. Dựa trên Báo cáo về thị trường IT Việt Nam 2023 của TopDev, đến năm 2025 Việt Nam sẽ còn cần đến 700.000 nhân lực trong ngành công nghệ thông tin. Trong khi đó, số lượng lập trình viên hiện tại của Việt Nam mới chỉ đạt khoảng 530.000 người.

Thực tế, số lượng ngành học về công nghệ thông tin ở các trường đại học đang mở rộng ngày càng nhiều cũng như số lượng cử nhân tốt nghiệp chuyên ngành này vẫn tăng cao qua mỗi năm, tại sao vẫn có sự chênh lệch này? Sự thiếu hụt này chủ yếu là do trình độ của lập trình viên và yêu cầu doanh nghiệp đặt ra vẫn chưa thực sự cân bằng với nhau. Theo báo cáo, trong số hơn 57.000 sinh viên công nghệ thông tin tốt nghiệp mỗi năm chỉ có khoảng 30% lực lượng nhân sự đáp ứng được những kỹ năng và chuyên môn yêu cầu thực tế mà doanh nghiệp đặt ra, 70% còn lại cần được bố trí đào tạo thêm tại doanh nghiệp trong 3 – 6 tháng để đạt hiệu quả công việc tương ứng.

3. Cuộc cạnh tranh khó khăn hơn với nhiều sự thay đổi trong nhu cầu tuyển dụng & thị trường lao động

Nhu cầu tuyển dụng trong lĩnh vực IT vẫn luôn trên đà tăng trưởng nhanh và mạnh. Do sự thay đổi và ảnh hưởng của tình hình kinh tế – xã hội chung cũng như dựa trên các kỹ năng cứng và kỹ năng mềm mà lập trình viên sở hữu, mức lương cũng như trình độ sẽ được phân loại một cách rõ ràng hơn trong thời gian tới.

Báo cáo thị trường IT Việt Nam năm 2023
Hình 4: Báo Cáo Thị Trường IT Việt Nam 2023 của TopDev về nhu cầu nhân lực và mức lương Lập trình viên ngành CNTT 2023

Bên cạnh kỹ năng chuyên môn vững vàng, những kỹ năng mềm như khả năng tư duy phát triển, giao tiếp, quản lý thời gian, trình độ ngoại ngữ,… cũng là yếu tố quan trọng trong quá trình tuyển chọn và đánh giá ứng viên của nhà tuyển dụng. 

Sự biến động và thay đổi nhanh của Công nghệ thông tin và khoa học kỹ thuật cũng như sự đổi mới liên tục của công nghệ đòi hỏi ở các lập trình viên khả năng thích ứng nhanh và nhạy bén với mọi sự biến đổi. Các lập trình viên cần nâng cao kỹ năng công nghệ của bản thân với sự hiểu biết về các công nghệ mới và đột phá như Cybersecurity, DevOps, AI và Machine Learning, Cloud Computing,…

Với tinh thần tỉnh táo và bản lĩnh trí tuệ, Việt Nam vẫn cho thấy được những tín hiệu khả quan trong sự tăng trưởng về kinh tế cũng như thu hút các nhà đầu tư chiến lược từ nước ngoài, trong đó có cả lĩnh vực công nghệ thông tin. Để tìm hiểu chi tiết hơn về thị trường IT Việt Nam trong nửa đầu năm 2023 và xu hướng trong thời gian tới, bạn có thể đón đọc Vietnam IT Market Report 2023 – Vietnam Tech Talents Report do TopDev thực hiện tại đây.

BẢNG TIẾNG VIỆT

ENGLISH VERSION

Về TopDev

Với hơn 380.000 profile lập trình viên, TopDev hiện là nền tảng tuyển dụng chuyên về IT hàng đầu tại Việt Nam, hơn 1 triệu truy cập website hàng tháng và hơn 100.000 người dùng ứng dụng Tìm việc IT trên di động.  TopDev là đơn vị tiên phong và duy nhất trong lĩnh vực IT tại Việt Nam giúp xây dựng và phát triển Thương Hiệu Tuyển Dụng – Employer Brand cho hàng trăm công ty trong và ngoài nước thông qua 2 sự kiện công nghệ lớn nhất hàng năm: Vietnam Mobile Day & Vietnam Web Summit. Ngoài ra, TopDev còn là đơn vị uy tín chuyên khảo sát, phân tích và phát hành các báo cáo hàng năm về thị trường IT – nhân lực IT tại Việt Nam và sở hữu cộng đồng Developer lớn nhất Việt Nam. 

Nguồn trích dẫn thông tin trong TCBC:

Program Manager là gì? Học gì để trở thành Program Manager

Program Manager là gì? Học gì để trở thành Program Manager

Trong công ty chúng ta thường nghe nhắc đến vai trò của một Project Manager là người quản lý các dự án. Ở những tổ chức có quy mô lớn hay dự án lớn hơn, vị trí Program Manager được xem là người quản lý một tổ hợp nhiều dự án có liên quan đến nhau, hay nói cách khác thì Program Manager được xem là quản lý cấp trên của các Project Manager. Đây là một vị trí đòi hỏi kiến thức, kinh nghiệm và các kỹ năng về quản lý cấp cao, cũng là vai trò mà nhiều anh chị em hướng đến trong sự nghiệp. Bài viết hôm nay chúng ta cùng nhau tìm hiểu xem Project Manager là gì và cần học gì để trở thành một Program Manager nhé.

Program Manager là gì?

Program Manager hay Quản lý chương trình (có tổ chức sẽ gọi là Giám đốc chương trình) là người chịu trách nhiệm quản lý một nhóm các dự án liên quan; các dự án này được kết hợp với nhau thành các chương trình (program) để đáp ứng được nhu cầu của khách hàng hay tổ chức.

Từ “Program” ở đây mang ý nghĩa là một chuỗi các hoạt động liên quan với nhau trong một thời gian dài; nghĩa là một Program Manager sẽ là quản lý chung các dự án một cách đồng bộ để thu được những lợi ích không có sẵn từ việc quản lý chúng một cách đơn lẻ. Đây cũng là điểm khác biệt nhất khi so sánh giữa Program Manager và Project Manager, 2 vị trí thường dễ bị nhầm lẫn vai trò trong cùng một tổ chức.

Program Manager là gì?

Trong quá trình quản lý các dự án (Project Management) có liên quan với nhau, thực tế chỉ ra rằng các kết quả đầu ra được tạo bởi từng dự án có thể không thể đoán trước và không kiểm soát được; do đó; nhóm các dự án tạo thành chương trình nên được quản lý theo cách nhận ra nhu cầu tiềm năng để điều chỉnh các chiến lược và kế hoạch trong quá trình thực hiện chương trình để tối ưu hóa việc cung cấp lợi ích. Từ đó mà vị trí Program Manager ra đời với công việc quan trọng đảm bảo các thành phần chương trình được điều chỉnh theo yêu cầu để đáp ứng được các mục tiêu chiến lược của tổ chức.

  IT Manager Là Gì? Những Điều Bạn Cần Biết Về IT Manager

Vai trò của một Program Manager

Nhiệm vụ của một Program Manager là quản lý, điều phối để đảm bảo đạt được mục tiêu của chương trình, đồng thời phải tối ưu lợi ích của chương trình bằng cách phân phối và liên kết các thành phần của chương trình một cách hợp lý.

Vai trò của một Program Manager

Vai trò của một Program Manager bao gồm:

  • Căn chỉnh chiến lược chương trình, quản lý lợi ích chương trình, quản lý sự tham gia của các bên liên quan trong chương trình, quản trị chương trình và quản lý vòng đời chương trình
  • Tương tác với các Project Manager hay Program Manager khác để cung cấp hỗ trợ và hướng dẫn về các sáng kiến cá nhân được thực hiện để hỗ trợ một chương trình
  • Đảm bảo các chương trình được cung cấp các nguồn lực với độ ưu tiên phù hợp
  • Đảm bảo cấu trúc chương trình tổng thể và các quy trình quản lý chương trình được áp dụng cho phép đội nhóm chương trình và đội nhóm các thành phần hoàn thành thành công công việc và mang lại lợi ích dự đoán. 

Tham khảo các vị trí tuyển dụng Software Manager lương cao trên TopDev

Học gì để trở thành Program Manager?

Công việc chính của một Program Manager vẫn là quản lý, không hoàn toàn tập trung vào một kỹ thuật chuyên môn nào đó. Vì thế nếu muốn trở thành một Program Manager, bạn hoàn toàn có thể không xuất phát từ lĩnh vực kỹ thuật cụ thể, hay nói cách khác thì Non-tech cũng có thể trở thành Program Manager được.

Học gì để trở thành Program Manager

Program Management là một công việc khó, yêu cầu có nhiều năm kinh nghiệm làm việc ở vai trò quản lý dự án (Project Manager). Thông thường khi có kinh nghiệm làm quản lý dự án trong một thời gian, bạn sẽ có thể học và thi lấy một số chứng chỉ quản lý cấp cao hơn và hướng đến việc trở thành một quản lý chương trình trong tương lai. Có thể xem để trở thành Program Manager, trước tiên hãy học để trở thành một Project Manager.

  Xu hướng tuyển dụng IT năm 2024 mà mọi HR Manager cũng như IT Manager cần biết!

Bạn cần học và trang bị các kỹ năng, bằng cấp, chứng chỉ cần thiết như dưới đây để trở thành một Project Manager:

  • Kỹ năng quản lý dự án bao gồm lập kế hoạch, tổ chức và điều phối các hoạt động trong dự án, quản lý thời gian, nguồn lực, rủi ro và tiến độ công việc
  • Kỹ năng giao tiếp với các bên liên quan (stakeholders) bao gồm thành viên dự án, đối tác, khách hàng, lãnh đạo
  • Kiến thức chuyên môn về dự án, các nguyên tắc, phương pháp quản lý dự án và sự hiểu biết về công nghệ, quy trình và tiêu chuẩn liên quan đến dự án
  • Kỹ năng nhận biết và giải quyết các vấn đề phát sinh cùng khả năng thích ứng linh hoạt khi có sự thay đổi.

Các chứng chỉ mà bạn có thể tham khảo để tăng giá trị kinh nghiệm cũng như mức độ tin cậy trong vị trí quản lý dự án hay quản lý chương trình:

  • Google Project Management Certificate: chứng chỉ quản lý dự án chuyên nghiệp Google
  • Project Management Professional: chứng chỉ quản lý dự án chuyên nghiệp PMP
  • Agile Project Management Certificate: chứng chỉ quản trị dự án Agile
  • Certified Project Director – CPD: Chứng nhận giám đốc dự án
  • Certified Associate in Project Management – CAPM: chứng nhận liên kết trong quản lý dự án

Kết bài

Quản lý chương trình là một vị trí đòi hỏi ưu tiên tư duy chiến lược hơn là phản ứng chiến thuật thuần túy; vì thế Program Manager cần mang lại cho tổ chức những giá trị lâu dài cho tầm nhìn và hướng đi. Qua bài viết này, hy vọng các bạn đã hiểu hơn về nghề quản lý chương trình cũng như cần học, trang bị kiến thức gì để trở thành một Program Manager trong tương lai. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Có thể bạn quan tâm:

Xem thêm tuyển dụng việc làm IT hấp dẫn trên TopDev

Kỹ thuật debug ứng dụng viết bằng Node.js hiệu quả

Kỹ thuật debug ứng dụng viết bằng Node.js hiệu quả

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

Debug là một trong những kỹ năng không thể thiếu của một developer. Trong bất kỳ vị trí nào, ngôn ngữ gì… mà có liên quan đến viết mã thì không thể không biết debug. Bởi mỗi dòng code được thêm vào, nguy cơ tạo ra lỗi càng tăng. Debug giúp cho chúng ta tiến hành tìm ra nguyên nhân của lỗi, hay chí ít là kiểm tra xem liệu chương trình có đang hoạt động đúng như ta mong muốn.

Với mỗi nền tảng hay ngôn ngữ có các cách debug khác nhau, tùy thuộc vào khả năng chăm chút của nhà phát triển mà nó đi từ dễ dàng đến khó. Trong Node, có nhiều cách để developer tiến hành gỡ lỗi. Một trong những cách đó là “console.log every where”. Vậy ngoài console.log ra thì còn cách nào debug ứng dụng viết bằng Javascript/Node.js nữa hay không?

Console.log tốt nhưng chưa đủ

Bạn được học cách in mọi thứ ra màn hình bằng console.log. Muốn xem nội dung của biến thì console.log, muốn xem chương trình có chạy vào hàm này không cũng console.log, thậm chí console.log ra nhiều dòng thông tin khác để nhìn cho dễ… Điều này vô hình gây ra những phiền hà, thậm chí là rắc rối như mã trở nên cồng kềnh, rối loạn thông tin trong console… khiến cho nhiều người có cái nhìn không thiện cảm với nó.

Lợi ích console.log mang lại chúng ta thấy rõ, vì tính chất hiển thị ra được thông tin nhanh gọn mà nó thường được sử dụng trong debug. Bằng cách đặt console.log ở những vị trí mà ta muốn theo dõi giúp người gỡ lỗi nhanh chóng nắm bắt được luồng cũng như vị trí gây ra lỗi. Tuy nhiên việc sử dụng console.log vô tội vạ hoặc lạm dụng gây ra một sự “nhiễu loạn” thông tin khủng khiếp trong console, thậm chí nó còn có khả năng gây ra vấn đề về hiệu năng.

Nếu bạn vẫn hay sử dụng console.log để debug mà cảm hài lòng thì tôi vẫn muốn giới thiệu cho bạn một phương pháp mới hơn. Bởi vì lợi ích nó mang lại hơn hẳn console.log về mọi mặt. Còn bạn đang cảm thấy không hài lòng thì quả là khởi đầu tuyệt vời.

  Một số cách để viết mã dễ đọc hơn trong JavaScript/Node.js

  5 điều gây rò rỉ bộ nhớ (memory leak) trong Node.js và cách khắc phục

Inspector và cách hoạt động

Inspector là một trình gỡ lỗi được tích hợp trong Node.js, khi khởi chạy ứng dụng với cờ inspect hoặc --inspect, Node.js sẽ khởi chạy và lắng nghe trình gỡ lỗi. Theo mặc định nó lắng nghe ở địa chỉ và cổng 127.0.0.1:9229. Để kết nối đến, hoặc sử dụng các trình debug chuyên nghiệp bạn sẽ phải kết nối đến một địa chỉ trông giống như là ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e với 0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e là UUID của ứng dụng.

Ví dụ bạn có một file index.js:

const a = 1;
const b = 2;
const sum = a + b;

Khi debug bằng console.log, muốn biết giá trị của sum thì đặt console.log(sum) ngay bên dưới. Còn khi debug với cờ inspect như sau:

$ node inspect index.js
< Debugger listening on ws://127.0.0.1:9229/2855e131-b944-4ae4-bb4d-a6d374b83088
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in index.js:1
> 1 const a = 1;
  2 const b = 2;
  3 const sum = a + b;

Bạn sẽ thấy kết quả trông giống như trên, với dòng Break on start in index.js:1 đang bắt đầu từ dòng thứ nhất. Bây giờ nhập n rồi enter bạn sẽ thấy chuyển sang dòng 2:

debug> n
break in index.js:2
  1 const a = 1;
> 2 const b = 2;
  3 const sum = a + b;
  4 

Muốn xem giá trị của a, chúng ta dùng lệnh watch.

debug> watch('a')

Lúc này giá trị của a chưa hiển thị ra, thao tác trên chỉ mới khởi tạo nhiệm vụ theo dõi giá trị của a thôi, hãy nhập n để đến dòng tiếp theo bạn sẽ thấy giá trị của a xuất hiện.

debug> n
break in index.js:3
Watchers:
  0: a = 1

  1 const a = 1;
  2 const b = 2;
> 3 const sum = a + b;
  4

Ngoài các chỉ thị n và các hàm watch ra còn nhiều chỉ thị và lệnh khác, bạn đọc xem thêm tại Debuger Command reference.

Chà, đến đây nhiều bạn sẽ thấy debug sao mà khó khăn đến thế, cứ gõ gõ như thế thì đến bao giờ. Đúng thật gõ như thế thì biết đến bao giờ mới xong, đã thế lại còn khó thao tác, khó theo dõi nữa.

Nhưng điều tôi trình bày trên chỉ là cách debug bằng công cụ dòng lệnh (CLI), đó cũng là nền móng của những công cụ debug hiện đại. Tôi chỉ muốn trình bày ra cho mọi người hiểu cách hoạt động của Inspector, còn trong thực tế chúng ta sẽ debug thông qua công cụ trợ giúp của Text editor hoặc IDE.

Xem thêm việc làm Node.js developer hấp dẫn nhất tại TopDev

Debug bằng Break point Tích hợp Text editor / IDE

Break point là vị trí bạn muốn trình debug nhảy đến ngay lập tức mà không phải next qua từng dòng. Break point hiệu quả trong trường hợp bạn xác định được ngay vị trí nghi ngờ hoặc muốn kiểm tra trạng thái của tất cả các biến từ đầu đến khi chạy đến vị trí đó.

Hầu hết các trình viết code Node.js đều có công cụ debug, và nó dựa trên Inspector. Ví dụ nếu bạn đang dùng VSCode, hãy bấm vào Run and Debug.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Bấm vào Show all automatic debug configurations > Node.js > Run Current file để chạy debug trên tệp hiện tại.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Để đặt Break point rất đơn giản, chỉ cầm bấm vào bên trái số dòng một chấm đỏ sẽ hiện ra tức là bạn đã đặt thành công tại vị trí đó.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Bây giờ hãy chạy debug, bạn sẽ thấy trình gỡ lỗi dừng lại ở dòng số 3.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Thử di chuột vào các biến absum bạn sẽ thấy giá trị hiện tại của chúng khi chương trình chạy đến dòng thứ 3.

Hoặc là nhìn vào ô phía bên tay trái, đó là nơi chứa tất cả dữ liệu của trình gỡ lỗi thu thập được khi chạy chương trình.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Để next hoặc thực hiện các thao tác khác trong quá trình gỡ lỗi, hãy để ý vào trình điều khiển giống như thế này tại cửa sổ VSCode.

 Kỹ thuật debug ứng dụng viết bằng Node.js

Có thể bạn cần phải học các sử dụng từng nút tại bài viết này. Bật mí nút đầu tiên giúp bạn nhanh chóng nhảy đến điểm Break point tiếp theo hoặc kết thúc lượt debug nếu không còn Break point nào sau đó.

Cuối cùng, bạn đọc có thể tìm hiểu chi tiết hơn về cách debug ứng dụng viết bằng Javascript/Node.js tại Node.js debugging in VS Code.

Tổng kết

Debug là một trong những kỹ năng không thể thiếu của một developer. Còn code là còn bug mà muốn fix bug thì phải trang bị cho mình kỹ năng gỡ lỗi chuyên nghiệp. Inspector là một trình gỡ lỗi được tích hợp trong Node.js, các Text editor hoặc IDE dựa vào Inspector để tạo cho chúng ta một trình gỡ lỗi chuyên nghiệp mà tiện ích hơn rất nhiều so với console.log.

Bài viết gốc được đăng tải tại 2coffee.dev

Xem thêm:

Xem thêm các việc làm công nghệ hấp dẫn trên TopDev

Những câu hỏi phỏng vấn lập trình viên hay gặp nhất

Những câu hỏi phỏng vấn lập trình viên nhất định phải biết

Bài viết được sự cho phép của tác giả Sơn Dương

Dù bạn là ai, khi đi xin việc đều phải trải qua các vòng phỏng vấn với nhà tuyển dụng. Cho dù bạn ứng tuyển vào vị trí bảo vệ tới chuyên gia, thậm chí lãnh đạo cấp cao… Vị trí càng cao thì buổi phỏng vấn càng căng thẳng.

Với ngành công nghệ thông tin hay cụ thể là lập trình viên, việc chuẩn bị trước những câu hỏi sẽ giúp bạn tự tin hơn trong buổi phỏng vấn.

Không biết các bạn có giống mình không, chứ bình thường mình có kiến thức cũng khá chắc về các kiến thức lập trình. Nhưng khi bước vào buổi phỏng vấn, mọi kiến thức quen thuộc lại “đội nón” bay đi đâu hết.

Do vậy, trước mỗi buổi phỏng vấn quan trọng, mình đều phải lướt qua những kiến thức, đặc biệt là các câu hỏi phỏng vấn lập trình viên hay gặp. Điều này giúp mình tự tin hơn.

Những câu hỏi phỏng vấn lập trình viên hay gặp nhất

Bài viết này mình sẽ điểm lại những câu hỏi phỏng vấn phổ biến nhất được đúc kết từ hàng nghìn ứng viên.

Nhưng trước đó, cùng xem qua những điều cần chuẩn bị trước buổi phỏng vấn đã nhé.

#Cần chuẩn bị gì trước buổi phỏng vấn

Để buổi phỏng vấn được diễn ra suôn sẻ, công tác chuẩn bị là vô cùng quan trọng. Chuẩn bị ở đây là chuẩn bị về kiến thức, tác phong của bạn.

Cần chuẩn bị gì trước buổi phỏng vấn
Những việc cần chuẩn bị trước buổi phỏng vấn

Dưới đây là những danh mục, đầu việc mà mình nghĩ bạn nên chuẩn bị:

1. Chuẩn bị kiến thức chuyên môn

Tất nhiên, không thể nào bảo bạn học tất cả những kiến thức liên quan đến yêu cầu công việc của nhà tuyển dụng được. Chỉ cần bạn điểm lại những kiến thức cơ bản mà bạn đã biết để tránh trường hợp bị quên khi hỏi mặc dù bình thường bạn nắm rất rõ.

Ví dụ: bạn ứng tuyển vị trí lập trình Android – Java. Vậy thì ít nhất bạn cũng nên xem lại những kiến thức cơ bản như vòng đời Activity, Fragment, AsyncTask… cách thiết kế layout … Hay lập trình hướng đối tượng là gì?

Nói chung, bạn nên xem lại một lượt kiến thức cơ bản. Có kiến thức chúng ta không sợ trời, không sợ đất.

  Tuyển tập bộ câu hỏi phỏng vấn IoT Engineer hay nhất

  Gợi ý trả lời câu hỏi phỏng vấn Data Scientist hay nhất

2. Xây dựng checklist những thứ thiết

Trước buổi phỏng vấn, bạn cần lên danh sách những thứ nên mang theo để ghi điểm với nhà tuyển dụng, cũng như hỗ trợ đắc lực cho bạn.

Hai việc quan trọng nhất, đó là:

  • Bạn cần in bản mô tả công việc cùng với thông tin về công tin. Điều này chứng tỏ bạn rất quan tâm và tìm hiểu kỹ về công việc cũng như công ty mà định ứng tuyển.
  • In bản CV và mang tới buổi phỏng vấn. Nên in nhiều bản nếu bạn không biết có bao nhiêu người trong buổi phỏng vấn. Mục đích là đủ phát mỗi người một bản CV.

Về cơ bản, bạn chỉ cần chuẩn bị như vậy là đủ. Điểm quan trọng nhất đó chính là sự tự tin. Bạn phải luôn tự tin vào bản thân là được.

Ok, đã chuẩn bị xong thì tiếp theo là tới buổi phỏng vấn thôi!

Việc làm Data Analytics HOT tại TP. Hồ Chí Minh

#Những lưu ý để buổi phỏng vấn thành công

Lưu ý để buổi phỏng vấn thành công
Lưu ý để buổi phỏng vấn thành công

Sau đây là những lưu ý khi đi phỏng vấn:

  • Không đến trễ: Đi muộn là điều tối kỵ với buổi phỏng vấn. Nhưng cũng đừng đến sớm quá. Tốt nhất là đến trước 5-15 phút là chuẩn nhất. Nếu bạn không thể làm chủ được thời gian do ngoại cảnh như tắc đường, xịt lốp xe… thì lời khuyên của mình là đến sớm nhưng không vào, ngồi đợi trà đá vỉa hè ở phía.
  • Ngừng “ôn bài”: Đây không phải là thời điểm để bạn luyện tập cách trả lời. Giờ là lúc bạn nên để tinh thần thật thoải mái và luôn tự tin vào bản thân. Nhà tuyển dụng cũng rất thích những người tự tin vào bản thân.
  • Ngừng kiểm tra email, mạng xã hội: Trong lúc chờ đợi bạn thường kiểm tra email, facebook để giết thời gian. Nhưng điều này chỉ tổ làm bạn thêm bồn chồn, lo lắng mà thôi. Hãy ưu tiên cho buổi phỏng vấn cho tới khi nó kết thúc.
  • Chỉnh đốn trang phục: Điều này chắc mình không cần phải nói chi tiết nữa nhỉ. Đừng để rau dính răng là được

Ngoài ra, còn nhiều điều chi tiết nhỏ nhặt khác nữa. Nhưng với mình thì những điều trên là quan trọng nhất rồi, còn trong buổi phỏng vấn tùy cơ ứng ứng biến. Luôn luôn tự tin vào bản thân và tôn trọng người đối diện là được.

#Top 10 câu hỏi phỏng vấn lập trình viên phổ biến nhất

Dưới đây là 10 câu hỏi mà mình thấy rất nhiều bạn khi đi xin việc về lập trình hay gặp phải.

1. Anh/Chị hãy giới thiệu về bản thân.

Có lẽ đây là câu hỏi mở đầu buổi phỏng vấn kinh điển nhất rồi. Với kinh nghiệm 5 lần đi phỏng vấn của mình thì câu này không trượt phát nào.

Bạn cứ tự tin giới thiệu về bản thân mình thôi. Như tên, tuối, trình độ đại học, điểm mạnh chuyên môn (ví dụ: có nhiều kinh nghiệm về NodejsAndroid Framework…)

Tuy nhiên, mình lưu ý là chỉ nên nói về những điểm của bản thân mà phục vụ cho công việc, cho công ty. Đừng giới thiệu những điều, sở thích ngoài lề như thích nghe nhạc, thích nghe Sơn Tùng-MTP, thích phim Hàn…

2. Tại sao lại nghỉ ở công ty cũ?

Câu hỏi này cũng hơi nhạy cảm chút. Chẳng nhẽ bạn lại nói thẳng tuột ra là: Lương thấp thì nghỉ thôi. Hay tôi ghét ông sếp nên tôi nghỉ…. Cùng lắm là tôi thích thì tôi nghỉ, anh có ý kiến gì à?!

Để trả lời câu hỏi này một cách khéo léo mà không bị nhà tuyển dụng đánh giá là không thật thà, lươn lẹo không đáng tin, thì mình gợi ý một vài cách.

Bạn có thể lựa chọn một số lý do như: Do có định hướng phát triển sự nghiệp sang lĩnh vực khác, muốn thử thách bản thân với những cái mới, môi trường mới… Những lý do này sẽ tránh được những ấn tượng xấu của nhà tuyển dụng. Vì nhà tuyển dụng rất kỵ nhân viên nói xấu sếp, đồng nghiệp và công ty cũ.

3. Bạn sử dụng thành thạo ngôn ngữ lập trình nào?

Đây là câu hỏi thuộc phạm trù chuyên môn, nên bạn cứ thành thật mà trả lời thôi. Tùy vào vị trí tuyển dụng mà bạn nói ngôn ngữ tương ứng.

Ví dụ, bạn ứng tuyển vào vị trí Android Developer, bạn có thể nói thế mạnh của mình là Java hay Kotlin. Nếu vị trí front-end thì bạn có thể trình bày về Javascript, html, CSS…

4. Bạn đã từng sử dụng công cụ quản lý source code nào không?

Do đặc thù của vị trí developer, bạn sẽ phải thao tác thường xuyên với các công cụ quản lý mã nguồn như SVN hay GIT. Do vậy, nếu bạn không biết hai hình thức quản lý source này thì bạn đã mất khá nhiều điểm trong mắt nhà tuyển dụng.

Ít nhất bạn có thể nói được khái niệm cơ bản GIT là gì? tại sao lại nên sử dụng GIT thay vì SVN…

Lời khuyên của mình: Nếu bạn chưa biết gì về GIT, bạn nên đọc bài viết này trước nhé: .GIT là gì và cách sử dụng GIT cơ bản

5. Kể tên dự án đã làm mà bạn tâm đắc nhất? Vị trí của bạn trong dự án đó là gì?

Đây là câu hỏi mà nhà tuyển dụng muốn kiểm tra kinh nghiệm làm việc thực tế của bạn. Bạn nên chọn dự án mà bạn tham gia vào nhiều công đoạn nhất, làm nhiều nhất. Không nhất thiết phải chọn dự án phức tạp nhất hay sử dụng công nghệ hiện đại mà trong đó bạn chỉ là chân “bóc hành đuổi mèo” mà thôi.

Cái mà nhà tuyển dụng cần là bạn đã làm được gì và làm như thế nào mà thôi.

6. Bạn có thể làm việc với mô hình phát triển phần mềm Agile/Crum không?

Có rất nhiều mô hình phát triển, nổi bật nhất là waterfall, Agile… Trong Agile thì thường được các công ty nhỏ, startup hay outsourcing ưu chuộng vì tính tối giản của nó.

Nên nếu bạn đã từng tham gia dự án sử dụng mô hình phát triển này thì quá tốt rồi. Hoặc ít nhất bạn cũng biết những khái niệm cơ bản như Agile là gì? vai trò của các member trong mô hình như thế nào?

7. Làm thế nào để đảm bảo chất lượng mã nguồn?

Bạn là một thành viên trực tiếp tạo ra mã nguồn của dự án, nên nếu bạn không biết cách để tăng chất lượng mã nguồn thì quá mất điểm rồi.

Đối với câu hỏi này, bạn có thể đưa ra một số tiêu chí để đảm bảo chất lượng mã nguồn như:

  • Mã nguồn có chạy đúng với requirement không? Cái này là quan trọng nhất, nếu mã nguồn sạch đẹp mà chạy sai so với requirement thì cũng vứt.
  • Viết code đúng style convention.
  • Viết code clean và tránh những bad smell.
  • Chạy Unit Test đầy đủ.

Đại khái như vậy.

8. Bạn có thể làm thêm giờ (OT) không?

Không biết các ngành nghề khác thế nào, chứ với nghề lập trình thì việc phải làm OT (over time) để kịp deadline dự án là điều xảy ra như cơm bữa.

Mặc dù, nhà tuyển dụng hỏi câu hỏi này chỉ để thăm dò bạn thôi, vì họ biết thừa bạn sẽ trả lời luôn và ngay: CÓ.

Nhưng như mình nói, họ thăm dò bạn thôi. Cái họ muốn là bạn đối diện với việc phải OT như thế nào? Việc phải chịu áp lực thời gian và trong quá khứ bạn đã từng phải OT rồi hay chưa? Điều kiện gia đình có cho phép OT triền miên hay không?…

9. Bạn có chịu được áp lực không?

Lại một câu hỏi vô nghĩa và thăm dò khác. Bởi vì nhà tuyển dụng, đặc biệt là ngành lập trình, kỹ năng chịu áp lực là một kỹ năng rất quan trọng.

Khi dự án chạy, bạn sẽ phải chịu áp lực từ rất nhiều phía: từ khách hàng, từ sếp, từ PL… rồi cả tụi tester nữa.

Nếu bạn là người không thể chịu được áp lực thì thật là khó để theo đuổi được nghề này, chứ chưa nói đến việc nhà tuyển dụng sử dụng bạn.

Với câu hỏi này, mình khuyên bạn nên trả lời thẳng vào những kinh nghiệm trải qua áp lực trong quá khứ với các dự án mà bạn đã trải qua. Chính những kinh nghiệm thực tế của bạn sẽ ghi điểm với nhà tuyển dụng.

10. Bạn có câu hỏi gì với chúng tôi không?

Đây thường là câu hỏi chốt trước khi kết thúc buổi phỏng vấn. Mặc dù họ để cho bạn hỏi lại họ nhưng cũng là một hình thức đánh giá bạn.

Bạn đừng hỏi những câu hỏi kiểu: Công ty có phục vụ ăn uống không? Có câu lạc bộ bóng đá không? Có được đi du lịch hàng năm không?… mất điểm lắm.

Thay vì đó, bạn nên hỏi về công việc mà vị trí ứng tuyển của bạn sẽ làm, về định hướng chiến lược của công ty hay như môi trường và style (văn hóa) làm việc của công ty như nào…

#Tạm kết

Như vậy là mình đã chia sẻ những kinh nghiệm đi phỏng vấn, cũng như những câu hỏi phỏng vấn lập trình viên phổ biến nhất.

Tất nhiên, đây là chỉ những câu hỏi chung chung để đánh giá thái độ và phong cách làm việc của bạn thôi. Tùy vị trí ứng tuyển mà họ sẽ còn hỏi những câu hỏi sâu về chuyên môn để đánh giá năng lực của bạn.

Nếu mọi người ủng hộ, mình sẽ tiếp tục series với các câu hỏi chuyên về từng lĩnh vực chuyên môn như: các câu hỏi phỏng Android, Front-end, Nodejs…

Nhà mình đã ai đi phỏng vấn chưa? Chia sẻ kinh nghiệm bên dưới nhé!

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Một số cách để viết mã dễ đọc hơn trong JavaScript/Node.js

Một số cách để viết mã dễ đọc hơn trong JavaScript/Node.js

Bài viết được sự cho phép của tác giả Tống Xuân Hoài

Vấn đề

Điều mà tôi tin rằng rất nhiều lập trình viên mong muốn tiến tới là việc viết mã sao cho dễ đọc dễ hiểu. Bằng chứng là có rất nhiều Design Pattern được đưa ra để hướng dẫn mọi người giải quyết vấn đề theo cách mà nhiều người vẫn làm. Nhưng đó chưa phải là tất cả, việc viết mã hoàn chỉnh thì lại phụ thuộc vào từng lập trình viên.

Chúng ta có nhiều công cụ hỗ trợ soạn thảo mã nguồn theo nhiều cách. Như định dạng, màu sắc, giao diện hiển thị, công cụ hỗ trợ gỡ lỗi… thoải mái lựa chọn theo sở thích hoặc cùng làm việc nhóm. Bên cạnh đó, vẫn có những quy tắc được đặt ra để các thành viên tham gia phát triển phải tuân theo. Tạm bỏ qua vấn đề định dạng (format), ngày hôm nay chúng ta hãy cùng nhau tìm hiểu xem có cách nào để viết mã dễ đọc hơn không nhé!

Một số cách làm mã dễ đọc hơn

Thông thường, những người viết mã khó bảo trì thường mang trong mình phong cách Ninja mà tôi có một bài viết chi tiết tại Nhắc đến Ninja Code – họ là ai mà khiến cho nhiều người phải “khiếp sợ”?. Để viết mã dễ đọc, ngoài cách “rửa tay gác kiếm” khỏi giới nhẫn giả, thì dưới đây là một số cách bạn đọc có thể tham khảo từ chính tôi.

Tên biến và tên hàm

Biến và hàm là hai thành phần cơ bản và quan trọng nhất của bất kì chương trình nào. Việc đặt cho chúng những cái tên dễ hiểu là điều hết sức quan trọng trong việc đọc hiểu mã.

Có nhiều nguyên tắc đặt tên biến và hàm mà bạn có thể tìm thấy trên mạng. Ví dụ tôi thường đặt tên biến theo kiểu camelCase, là danh từ, gắn liền với nội dung mà nó nắm giữ, các biến thuộc dạng hằng số hoặc chỉ thay đổi theo biến môi trường thì sẽ viết hoa và theo định dạng UPPER_CASE… Tên hàm gắn liền với một hành động, nghĩa là động từ, theo kiểu camelCase. Chức năng của hàm gắn liền với cái tên của nó, chỉ làm một công việc còn nếu nhiều hơn, tách chúng thành các hàm nhỏ hơn.

  Lập trình bất đồng bộ là gì? Tại sao JavaScript là ngôn ngữ lập trình bất đồng bộ?

  Bạn có suy nghĩ như thế nào khi tôi nói rằng Node.js rất nhanh?

Tránh Magic Number hay Hardcoded Value

Thi thoảng trong chương trình, chúng ta hay bắt gặp việc so sánh biến với một con số nào đó ví dụ như:

if (user.lastSeen < 4321)
...

4321 lúc này được gọi là Magic Number hay Hardcoded Value, chúng ta không biết chính xác con số đó biểu thị điều gì đơn giản vì nó không có tên. Điều này khiến người đọc mã phải bối rối về sự xuất hiện của chúng. Thay vào đó, hãy sử dụng một biến để biểu thị cho ý nghĩ của những con số này.

const timeActive = 4321;
if (timeExpired < timeActive)
...

Xem thêm việc làm Node.js developer hấp dẫn nhất tại TopDev

Lệnh điều kiện

Có một sự thật là đoạn mã nào thụt lề càng nhiều thì logic sẽ càng nhiều và càng phức tạp. Hãy xem xét một ví dụ dưới đây.

async function main() {
  const user = await getUser(id);

  if (user) {
    if (user.lastSeen) {
      const userSeen = dayjs(user.lastSeen);
    } else {
      const userSeen = dayjs();
      if (userSeen.isAfter(dayjs().subtract(1, "day"))) {
        showUserOnline();
      } else {
        showUserOffline();
      }
    }
  }
}

Thật ra không có một quy tắc cụ thể nào cho việc sử dụng if...else, nhưng hãy nhìn vào ví dụ trên có phải if...else càng nhiều logic sẽ càng phức tạp, sau này có bảo trì, sửa lại mã cũng trở nên khó khăn hơn vì có nhiều logic cần được làm sáng tỏ trước khi bắt tay vào sửa mã.

Nếu có thể, hãy hạn chế các lệnh điều kiện if...else lồng nhau. Sử dụng switch...case thay thế trong những trường hợp phức tạp hơn, và tốt nhất hãy làm “phẳng” cây logic nhất có thể.

Xem việc làm javascript đãi ngộ tốt trên TopDev

Hạn chế Side-Effect

Có thể nói Side Effect đã làm thay đổi hoàn toàn cách viết mã của tôi từ khi biết đến. Để nói về vấn đề này, tôi có một bài viết chi tiết là Pure Function trong Javascript. Tại sao chúng ta nên biết càng sớm càng tốt?.

Nhìn chung, việc hạn chế Side-Effect giúp chúng ta có một cấu trúc chương trình rành mạch hơn, tránh việc gọi một hàm thôi mà làm thay đổi hết trạng thái của chương trình.

Áp dụng functional

Bất cứ chỗ nào xử lý logic, hãy tách thành những hàm nhỏ hơn và đặt tên cho chúng. Hãy xem xét một ví dụ dưới đây:

const userRoleMap = {
  0: 'admin',
  1: 'moderator',
  2: 'user',
};

fetch('https://api.example.com/users')
  .then(response => response.json())
  .then((user) => {
    return user.filter(user => user.active)
  })
  .then((user) => {
    return user.map(user => {
      return {
        id: user.id,
        name: user.name,
        roleName: userRoleMap[user.role],
      }
    })
  });

Đoạn mã trên lấy danh sách users từ một endpoint về, lọc ra danh sách users đang kích hoạt và sau đó thêm thuộc tính roleName dựa vào role của mỗi users.

Có thể mất một thời gian để hiểu được ý nghĩa của đoạn mã trên, vì chúng ta đang phải tập trung vào logic để hiểu. Thay vào đó, đoạn mã trên có thể được viết lại bằng cách tách các đoạn mã xử lý logic ra thành các hàm nhỏ hơn.

const userRoleMap = {
  0: 'admin',
  1: 'moderator',
  2: 'user',
};

const filterActiveUsers = (users) => {
  return users.filter(user => user.active)
};

const mapUsersRole = (users) => {
  return users.map(user => {
    return {
      id: user.id,
      name: user.name,
      role: userRoleMap[user.role],
    }
  })
};

fetch('https://api.example.com/users')
  .then(response => response.json())
  .then(filterActiveUsers)
  .then(mapUsersRole);

Hãy nhìn vào phần thân chương trình, toàn bộ logic đã hoàn toàn lộ rõ là filterActiveUsers và mapUsersRole. Điều này giúp chúng ta nhanh chóng nắm bắt được luồng xử lý dữ liệu, sau này nếu muốn xem chi tiết chỉ cần nhảy đến các hàm liên quan.

Sử dụng comment hợp lý

Comment là một vấn đề gây nhiều tranh cãi, có người nói ai càng comment chứng tỏ càng thiếu kinh nghiệm vì họ không biết cách viết mã sao cho dễ đọc!? Quan điểm của tôi là hãy sử dụng comment đúng lúc và không quá phụ thuộc vào nó để giải thích chi tiết cách mã của bạn hoạt động.

Kết hợp nhiều yếu tố như đặt tên và các hàm functional để gián tiếp giải thích cách mã của bạn hoạt động, trừ khi gặp phải logic quá phức tạp hoặc cần mô tả ngắn gọn luồng dữ liệu thì hãy để lại comment. Các thay đổi quan trọng có liên kết đến tài liệu bên ngoài…

Ví dụ:

# 02/09/2023: Thay đổi logic theo tài liệu DOC-2945
function getRandomUser() {
...

Ngoài ra, còn nhiều trường hợp khác để bạn khéo léo vận dụng cách comment ví dụ như sử dụng một tính năng nào đó của thư viện ngoài.

# Limits Environment variables
# https://developers.cloudflare.com/workers/platform/limits/#environment-variables
function setEnv() {
...

Như trong ví dụ trên, tôi đang sử dụng một tính năng biến môi trường của Cloudflare và cần tuân thủ một số quy tắc liên quan đến giới hạn, việc đính kèm tài liệu sẽ giúp cho đồng nghiệp dễ dàng truy cứu lại tài liệu và hiểu được cách tôi viết mã hơn.

Tài liệu hóa mã mà bạn viết

Dĩ nhiên một chương trình phức tạp không thể nào chỉ dựa vào mỗi việc đọc mã thôi mà có thể hiểu hết được. Bên cạnh đó, chúng ta cần có một hệ thống tài liệu mô tả hầu hết luồng hoạt động của chương trình. Nó vừa giúp cho người mới có tài liệu để nghiên cứu và giúp cho bản thân phát huy khả năng hệ thống hoá.

Hãy rèn luyện cho mình kỹ năng viết và truyền đạt lại những thứ mình làm. Đây cũng là một trong những kỹ năng cần thiết để giúp bạn tiến xa hơn trên con đường sự nghiệp.

Cuối cùng, vẫn là không ngừng học hỏi

Học, học nữa, học mãi… Học không bao giờ là đủ và cũng không bao giờ thừa. Điều tôi nói trên đây chỉ là quan điểm cá nhân, ngoài ra tôi biết còn nhiều điều cần phải học hỏi thêm từ người khác. Bạn có thể học hỏi thêm từ đồng nghiệp hoặc thông qua các dự án mã nguồn mở.

Tổng kết

Trên đây là một số các quy tắc mà tôi vẫn đang áp dụng trong công việc hàng ngày, tuy không đánh giá được mức độ tốt đến đâu nhưng ít nhất sau vài ba tuần đọc lại mã của mình viết ra, tôi vẫn có thể hiểu được chúng :D. Còn bạn, bạn có đang áp dụng thêm phương pháp nào để giúp cho mã dễ đọc hơn không? Hãy để lại bình luận nhé!

Bài viết gốc được đăng tải tại 2coffee.dev

Xem thêm:

Xem thêm việc làm công nghệ hấp dẫn trên TopDev

Ai là “cha đẻ” của các ngôn ngữ lập trình nổi tiếng nhất thế giới?

Ai là

“Cha đẻ” của các ngôn ngữ lập trình nổi tiếng trên khắp thế giới là những cá nhân tài năng đã để lại dấu ấn lớn trong ngành công nghệ thông tin. Họ đã sáng tạo ra các ngôn ngữ lập trình mạnh mẽ, giúp xây dựng các ứng dụng và hệ thống phức tạp, thúc đẩy sự phát triển của khoa học máy tính và công nghệ ngày nay.

Trong bài viết này, chúng ta sẽ khám phá những tên tuổi lừng danh và đóng góp quan trọng của họ vào các ngôn ngữ lập trình phổ biến như Python, Java, C++, JavaScript và nhiều ngôn ngữ khác. Cùng TopDev khám phá nhé!

Ngôn ngữ lập trình Java – James Gosling

James Gosling là cha đẻ của ngôn ngữ lập trình Java, một ngôn ngữ lập trình hướng đối tượng được thiết kế để có thể chạy trên nhiều nền tảng khác nhau.

Gosling sinh ra ở Canada vào năm 1955. Ông theo học khoa học máy tính tại Đại học Calgary, nơi ông bắt đầu phát triển ngôn ngữ lập trình Java vào năm 1991. Java được thiết kế để giải quyết một số vấn đề mà Gosling và các đồng nghiệp của ông gặp phải khi phát triển phần mềm cho các thiết bị di động và Internet.

Ngôn ngữ lập trình Java - James Gosling

Java được ra mắt lần đầu tiên vào năm 1995 và nhanh chóng trở nên phổ biến. Ngày nay, Java là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất trên thế giới. Nó được sử dụng để phát triển các ứng dụng và phần mềm cho một loạt các nền tảng, bao gồm máy tính để bàn, máy tính xách tay, máy tính bảng, điện thoại thông minh, trình duyệt web và máy chủ.

Ngôn ngữ lập trình Python – Guido Van Rossum

Van Rossum sinh ra ở Hà Lan vào năm 1956. Ông theo học khoa khoa học máy tính tại Đại học Amsterdam, nơi ông bắt đầu phát triển Python vào năm 1989. Python được ra mắt lần đầu tiên vào năm 1991 và nhanh chóng trở nên phổ biến.

Ngôn ngữ lập trình Python - Guido Van Rossum

Ngày nay, Python là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất trên thế giới. Nó được sử dụng để phát triển các ứng dụng và phần mềm cho một loạt các lĩnh vực, bao gồm khoa học dữ liệu, máy học, trí tuệ nhân tạo, web development, và DevOps.

Ngoài Python, Van Rossum còn có những đóng góp quan trọng khác cho ngành khoa học máy tính. Ông cũng là tác giả của nhiều bài báo khoa học về khoa học máy tính.

  Ngôn ngữ lập trình bậc cao - Cao thấp do đâu?

  Cách viết "Hello World" với 28 Ngôn ngữ Lập trình

Ngôn ngữ lập trình C – Dennis Ritchie

Ngôn ngữ lập trình C là một trong những ngôn ngữ lập trình quan trọng và ảnh hưởng nhất trong lịch sử công nghệ thông tin, và nó được tạo ra bởi Dennis Ritchie, một nhà khoa học máy tính và lập trình viên xuất sắc. Dennis MacAlistair Ritchie sinh vào ngày 9 tháng 9 năm 1941 tại Bronxville, New York, Hoa Kỳ. Ông đã nhận bằng cử nhân và tiến sĩ về khoa học máy tính tại Đại học Harvard.

Ngôn ngữ lập trình C - Dennis Ritchie

C được ra mắt lần đầu tiên vào năm 1973 và nhanh chóng trở nên phổ biến. Ngôn ngữ lập trình C là một trong những ngôn ngữ đầu tiên sử dụng mô hình lập trình có cấu trúc, với khả năng tạo ra các hàm và thư viện tái sử dụng. Điều này đã làm cho việc phát triển phần mềm trở nên dễ dàng hơn và hiệu quả hơn. C đã trở thành nền tảng cho việc phát triển nhiều hệ điều hành và phần mềm quan trọng, bao gồm hệ điều hành UNIX, Linux, và Windows.

Ngôn ngữ lập trình C++ – Bjarne Stroustrup

Bjarne Stroustrup là cha đẻ của ngôn ngữ lập trình C++, một ngôn ngữ lập trình hướng đối tượng dựa trên C. Bjarne Stroustrup sinh vào ngày 30 tháng 12 năm 1950 tại Aarhus, Đan Mạch. Ông đã nhận bằng cử nhân và tiến sĩ về khoa học máy tính tại Đại học Aarhus, Đan Mạch, và sau đó tiếp tục làm việc nghiên cứu tại Bell Labs ở Hoa Kỳ.

Ngôn ngữ lập trình C++ - Bjarne Stroustrup

Stroustrup bắt đầu phát triển C++ vào những năm 1979 như một phiên bản mở rộng của ngôn ngữ lập trình C. C++ kế thừa các đặc điểm mạnh của C và bổ sung nhiều tính năng mới, như hướng đối tượng, lập trình tổ chức, và kiểu dữ liệu trừu tượng.

Tham khảo thêm các vị trí tuyển lập trình C++ tại Topdev

Ngôn ngữ lập trình Ruby – Yukihiro Matsumoto

Yukihiro Matsumoto, còn được gọi là Matz, là cha đẻ của ngôn ngữ lập trình Ruby. Ông sinh ra ở Ōsaka, Nhật Bản vào ngày 14 tháng 4 năm 1965. Ông bắt đầu lập trình từ khi còn trẻ và sau đó theo đuổi nghiên cứu và phát triển trong lĩnh vực công nghệ thông tin.

Yukihiro Matsumoto

Matz bắt đầu phát triển Ruby vào những năm 1990 với mục tiêu tạo ra một ngôn ngữ lập trình dễ đọc, dễ viết và mạnh mẽ. Ruby được phát hành lần đầu vào năm 1995, và nhanh chóng thu hút sự quan tâm của cộng đồng lập trình viên.

Ngôn ngữ lập trình PHP – Rasmus Lerdorf

Rasmus Lerdorf là cha đẻ của ngôn ngữ lập trình PHP, một ngôn ngữ lập trình kịch bản được sử dụng để phát triển các ứng dụng web. Ông sinh ra ở Đan Mạch vào năm 1968. Ông đã theo học tại Đại học Waterloo ở Canada và sau đó làm việc trong lĩnh vực công nghệ thông tin và phát triển web.

Ngôn ngữ lập trình PHP - Rasmus Lerdorf

Rasmus Lerdorf bắt đầu phát triển PHP vào những năm 1994 như một tập hợp các script để theo dõi thông tin truy cập trên trang web cá nhân của mình. PHP ban đầu là viết tắt của “Personal Home Page” (Trang web cá nhân), sau đó trở thành viết tắt của “PHP: Hypertext Preprocessor,” một loại lập trình mã nguồn mở dùng để phát triển các ứng dụng web động.

PHP đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất cho việc phát triển các trang web động và ứng dụng web. Nó được tích hợp vào nhiều hệ thống quản lý nội dung (CMS) như WordPress và Joomla, cũng như các framework web như Laravel và Symfony.

Ngôn ngữ lập trình JavaScript – Brendan Eich

Brendan Eich sinh vào ngày 4 tháng 7 năm 1961 tại Pittsburgh, Pennsylvania, Hoa Kỳ. Ông đã theo học tại Đại học Santa Clara và nhận bằng cử nhân về khoa học máy tính.

Brendan Eich trở thành người sáng tạo của JavaScript khi làm việc tại Netscape Communications Corporation vào năm 1995. Ông phát triển ngôn ngữ này với tên gọi Mocha sau đó đổi thành LiveScript, và cuối cùng là JavaScript. JavaScript ban đầu được phát triển để tạo ra các tính năng tương tác trên trình duyệt Netscape Navigator.

Ngôn ngữ lập trình JavaScript - Brendan Eich

JavaScript đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất và quan trọng nhất trong phát triển web. Nó được sử dụng rộng rãi để tạo ra các ứng dụng web động, hiệu ứng, và tương tác người dùng.

Ngôn ngữ lập trình Pascal – Niklaus Wirth

Niklaus Emil Wirth sinh vào ngày 15 tháng 2 năm 1934 tại Winterthur, Thụy Sĩ. Ông đã nhận bằng cử nhân và tiến sĩ về khoa học máy tính tại Đại học ETH Zurich ở Thụy Sĩ.

Niklaus Wirth bắt đầu phát triển ngôn ngữ lập trình Pascal vào những năm 1968 và hoàn thành phiên bản đầu tiên vào năm 1970. Pascal ban đầu được thiết kế như một ngôn ngữ lập trình để dạy và nghiên cứu trong lĩnh vực khoa học máy tính.

Ngôn ngữ lập trình Pascal - Niklaus Wirth

Pascal đã đóng vai trò quan trọng trong giáo dục và nghiên cứu trong lĩnh vực khoa học máy tính. Nó đã giúp sinh viên và nghiên cứu viên học cơ bản về lập trình và cấu trúc dữ liệu.

Kết luận

Như vậy, trong bài viết này, chúng ta đã tìm hiểu về các tác giả đằng sau những ngôn ngữ lập trình nổi tiếng nhất thế giới và đóng góp của họ đối với sự phát triển của ngành công nghệ thông tin. Chúng ta hãy dành lời cảm ơn đến tất cả những tài năng xuất chúng này và mong rằng sẽ còn nhiều sự phát triển và tiến bộ hơn nữa trong tương lai.

Xem thêm:

Đừng bỏ lỡ hàng loạt IT job hot tại TopDev

13 phím tắt trong VS Code hữu ích giúp lập trình dễ dàng hơn

13 phím tắt trong VS Code hữu ích giúp lập trình dễ dàng hơn

Bài viết được sự cho phép bởi tác giả Sơn Dương

Thời gian gần đây, VS Code nổi lên như một trình Text Editor tốt nhất được hầu hết lập trình viên công nhận. Trước đây, mình chỉ sử dụng VS Code để làm các dự án có liên quan đến Javascript, nhưng giờ đây, hầu hết các dự án từ PHP, Java, Python… mình đều sử dụng VS Code. Lý do đơn giản là VS Code nhanh, gọn nhẹ, nhiều ”đồ chơi”.

Dưới đây, mình xin liệt kê 13 phím tắt trong VS Code (hotkeys) sẽ giúp bạn cải thiện đáng kể tốc độ viết code, nhờ đó mà hoàn thành dự án nhanh hơn. Hãy thử một lần và  đánh giá nhé.

1. Tìm kiếm files

Chắc chắn rồi, phím tắt đầu tiên mà mình muốn nhắc tới sẽ liên quan tới tìm kiếm.

Tổ hợp phím cmd + P (MacOS) hay crtl + P (Window) sẽ nhanh chóng mở tab tìm kiếm để bạn nhanh chóng tìm kiếm thứ gì đó trong mã nguồn dự án.

Với cá nhân mình thì tổ hợp phím này mình dùng không dưới 100 lần trong ngày

2. Tìm kiếm Cài đặt

Tương tự như tìm kiếm, sau khi mở hộp tìm kiếm bằng tổ hợp crtl + P (Window), bạn tiếp tục gõ >, bạn có thể tìm kiếm bất kỳ thiết lập nào trong VS Code.

3. Multiple cursors

Tính năng này khá là hay ho, mình ước là đã biết tới nó sớm hơn.

Đơn giản chỉ cần ấn phím alt và click vào bất kỳ đâu trong VS Code, multiple cursor sẽ xuất hiện.

  5 VS Code Extensions hữu ích cho React developers

4. Chọn nhiều đoạn Text để đổi tên hàng loạt

Đôi khi bạn cần phải đổi tên biến và muốn nó cũng thay đổi ở tất cả nhưng nơi gọi tới biến đó. Nếu như Java thì chuyện này khá đơn giản, nhưng với Javascript thì bạn thường phải tìm kiếm và replace thủ công hàng loạt.

Với thủ thuật sau, bạn sẽ không còn phải lo lắng sửa sót nữa.

Đầu tiên, bạn chọn một đoạn text, sau đó ấn tổ hợp:  cmd shift + L (Mac) / crtl shift + L (Windows) để chọn toàn bộ những đoạn text có nội dung tương tự như đoạn vừa chọn. Công việc tiếp theo là đổi tên đoạn text vừa chọn thôi.

  Format (Làm đẹp) code php trong VS Code

Bạn nhìn hình ảnh dưới đây sẽ hiểu rõ hơn thủ thuật này

vs code select_all_occurrences

5. Xóa một dòng code

Sử dụng tổ hợp phímcmd shift + K (Mac) / crtl shift + K (Windows), để nhanh chóng xóa một dòng code thay vì phải nhấn phím xóa <-- mỏi tay

Tham khảo việc làm React hấp dẫn trên TopDev

6. Nhân bản một dòng code

Đặt con trỏ của bạn vào dòng bạn muốn nhân bản.

Nhấn cmd + C, sau đó cmd + V (Mac) / crtl + C, sau đó crtl + V (Windows). Xong!

7. Tìm kiếm trong một file

Cái này khá quen thuộc trên tất cả các ứng dụng phổ biến (như trình duyệt): cmd + F (Mac) / crtl + F (Windows)cmd + G (Mac) / crtl + G (Windows) tìm kiếm lần xuất hiện tiếp theo, trong khi cmd shift + G (Mac) / crtl + shift + G (Windows) tìm kiếm lần xuất hiện trước đó.

8. Replace

Nếu bạn muốn replace cụm từ sau khi bạn tìm kiếm, hãy kích hoạt cmd option + G (Mac) / crtl shift + G (Windows).

Sau đó, bấm enter để thay thế cụm từ hiện tại.

Nếu bạn muốn thay thế tất cả, hãy click vào cmd + enter (Mac) / crtl + enter (Windows).

13. Đóng tab

Cái này giống như trong Chrome -  cmd + W (Mac) / crtl + W (Windows).

Tạm kết

Trên đây là một số tổ hợp phím tắt trong VS Code mà mình rất hay sử dụng trong quá trình viết code. Mình không có ý định khuyên bạn học thuộc lòng chúng ngay lập tức, chỉ đơn giản là bạn hãy thử, nếu cảm thấy có ích thì tự nhiên bạn sẽ nhớ nó.

Hãy lưu lại bài viết này nhé, có lẽ trong tương lai bạn sẽ cần tới. Thói quen sử dụng phím tắt sẽ tăng đáng kể hiệu suất công việc của bạn.

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev