Home Blog Page 28

Tìm hiểu Buffers trong Node.js, cách sử dụng Buffers

Tìm hiểu Buffers trong Node.js, cách sử dụng Buffers

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

Buffer là gì?

Buffer là một vùng bộ nhớ, nó đại diện cho một đoạn bộ nhớ có kích thước cố định (không thể thay đổi) được phân bổ ở bên ngoài V8 JavaScript Engine.

Bạn có thể coi Buffer giống như một mảng các số nguyên, mỗi số đại diện cho một byte dữ liệu.

Nó được triển khai bởi class Buffer.

Tại sao chúng ta cần Buffer?

Buffer được giới thiệu để giúp các nhà phát triển xử lý dữ liệu nhị phân, trong một hệ sinh thái mà theo truyền thống chỉ xử lý các chuỗi thay vì xử lý nhị phân.

Buffer được liên kết sâu sắc với streams. Khi một quá trình streams nhận dữ liệu nhanh hơn mức nó có thể xử lý, nó sẽ đưa dữ liệu vào buffer.

Hình dung đơn giản về buffer là khi bạn đang xem video trên YouTube và sẽ có 2 đường màu đỏ và màu trắng. Khi đường màu trắng dài hơn tức là trình duyệt đang tải dữ liệu xuống nhanh hơn so với khi đang xem, và trình duyệt sẽ lưu dữ liệu đó vào buffer.

  Child process trong Node.js là gì? - Khi nào cần sử dụng fork và spawn?

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

Tạo một Buffer

Một Buffer được tạo ra bằng cách sử dụng Buffer.from()Buffer.alloc() hoặc Buffer.allocUnsafe():

const buf = Buffer.from('Hey!');
Buffer.from(array);
Buffer.from(arrayBuffer[, byteOffset[, length]]);
Buffer.from(buffer);
Buffer.from(string[, encoding]);

Bạn cũng có thể khởi tạo một buffer theo kích thước. Ví dụ dưới đây sẽ tạo ra một Buffer có kích thước 1KB:

const buf = Buffer.alloc(1024);
// hoặc
const buf = Buffer.allocUnsafe(1024);

Cả hai phương thức alloc và allocUnsafe phân bổ một Buffer có kích thước được chỉ định theo byte, Buffer được tạo bởi alloc sẽ được khởi tạo bằng 0 và Buffer được tạo bởi allocUnsafe sẽ không được khởi tạo. Điều này có nghĩa là mặc dù allocUnsafe sẽ khá nhanh hơn so với alloc, nhưng phân đoạn bộ nhớ được cấp phát có khả năng có thể chứa dữ liệu cũ.

Dữ liệu cũ nếu có trong bộ nhớ, có thể bị truy cập hoặc bị rò rỉ khi Buffer bộ nhớ được đọc. Đây là điều thực sự làm cho allocUnsafe không an toàn và cần phải cẩn thận hơn trong khi sử dụng nó.

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

Sử dụng Buffer

Truy cập nội dung của buffer

Buffer là một mảng byte, có thể được truy cập giống như một mảng:

const buf = Buffer.from('Hey!');
console.log(buf[0]); // 72
console.log(buf[1]); // 101
console.log(buf[2]); // 121

Những con số đó là mã Unicode xác định ký tự ở vị trí của buffer (H => 72, e => 101, y => 121).

Bạn có thể in toàn bộ nội dung của buffer bằng phương thức toString()

console.log(buf.toString()); // Hey!  

Lưu ý, nếu bạn khởi tạo buffer với kích thước xác định thì vùng nhớ khởi tạo trước đó sẽ chứa dữ liệu ngẫu nhiên, không phải là một buffer trống!

Độ dài của một Buffer

Sử dụng thuộc tính length.

const buf = Buffer.from('Hey!');
console.log(buf.length); // 4

Lặp nội dung của Buffer

const buf = Buffer.from('Hey!');
for (const item of buf) {
  console.log(item); // 72 101 121 33
}

Thay đổi nội dung của Buffer

Bạn có thể thay đổi toàn bộ nội dung của một Buffer bằng cách sử dụng write().

const buf = Buffer.alloc(4);
buf.write('Hey!');
console.log(buf); // Hey!  

Hoặc bạn cũng có thể thay đổi nội dung bằng cú pháp giống như khi sử dụng một mảng.

const buf = Buffer.from('Hey!');
buf[1] = 111; // o
console.log(buf.toString()); // Hoy!  

Sao chép Buffer

Có thể sao chép Buffer bằng phương thức copy().

const buf = Buffer.from('Hey!');
let bufcopy = Buffer.alloc(4);
buf.copy(bufcopy);
console.log(bufcopy); // Hey!  

Theo mặc định, copy() sao chép toàn bộ Buffer. Bạn có thể cung cấp 3 tham số theo thứ tự cho phép bạn xác định vị trí bắt đầu, vị trí kết thúc và độ dài Buffer mới:

const buf = Buffer.from('Hey!');
let bufcopy = Buffer.alloc(2); // cấp phát 2 byte bộ nhớ
buf.copy(bufcopy, 0, 0, 2);
console.log(bufcopy.toString()); // 'He'

Slice Buffer

Một slice của Buffer vẫn tham chiếu đến nó, tức là khi Buffer thay đổi, slice đó cũng sẽ thay đổi.

Sử dụng slice() để tạo một “lát cắt”. Tham số đầu tiên là vị trí bắt đầu và bạn có thể chỉ định tham số thứ hai là vị trí kết thúc:

const buf = Buffer.from('Hey!');
buf.slice(0).toString() // Hey!  
const slice = buf.slice(0, 2);
console.log(slice.toString()); // He
buf[1] = 111; // o
console.log(slice.toString()); // Ho

Tổng kết

Buffer là một dạng dữ liệu nhị phân có kích thước cố định. Các nhà phát triển JavaScript thường sẽ không làm việc thường xuyên với kiểu dữ liệu này so với các nhà phát triển C, C++ hoặc Go (hoặc bất kỳ lập trình viên nào sử dụng những ngôn ngữ lập trình hệ thống), tương tác với bộ nhớ hàng ngày. Buffer thường được thấy trong việc xử lý Streams – là một cách để xử lý việc đọc/ghi tệp, truyền dữ liệu trực tiếp hoặc bất kỳ loại trao đổi thông tin từ các thiết bị đầu cuối một cách hiệu quả. Ở bài viết sau chúng ta sẽ cùng nhau tìm hiểu về Streams là gì!

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

Bí kíp “săn” ứng viên IT tài năng hiệu quả cho HR

Bí kíp “săn” ứng viên IT tài năng hiệu quả cho HR

Tìm kiếm ứng viên tài năng là ưu tiên hàng đầu của mọi doanh nghiệp bởi nhân sự là yếu tố quyết định đến thành bại của một tổ chức. Giữa sức nóng của cuộc đua tìm kiếm nhân tài, nhất là nhân tài ngành IT, các doanh nghiệp muốn giành được lợi thế phải biết cách tối ưu hóa hoạt động tuyển dụng và tận dụng triệt để các nguồn cung ứng viên chất lượng.

Vậy làm thế nào để “săn” được ứng viên tài năng nhanh chóng? Các phương pháp tìm nguồn ứng viên là gì? Bài viết này sẽ chia sẻ bạn những bí kíp tìm kiếm nhân tài và cách để chiêu mộ người tài hiệu quả nhất!

Những thách thức trong việc tìm kiếm ứng viên tài năng ngành IT

Những thách thức trong việc tìm kiếm ứng viên tài năng ngành IT

Ngành IT là một ngành nghề đang phát triển nhanh chóng với nhu cầu tuyển dụng nhân lực ngày càng cao. Tuy nhiên, việc tìm kiếm ứng viên tài năng ngành IT lại không hề dễ dàng. Dưới đây là một số thách thức mà doanh nghiệp cần đối mặt trong quá trình tìm kiếm ứng viên tài năng ngành IT (dựa theo số liệu của Báo cáo thị trường IT Việt Nam 2023 do TopDev phát hành):

  • Thiếu hụt nhân tài: Nhu cầu tuyển dụng nhân lực IT ngày càng cao, trong khi nguồn cung ứng viên lại hạn chế. Theo báo cáo của TopDev, nhu cầu nhân lực IT tại Việt Nam trong năm 2024 là khoảng 650.000 người, trong khi nguồn cung chỉ đáp ứng được khoảng 170.000 người.
  • Cạnh tranh cao: Cả công ty global & local tìm kiếm trong cùng nguồn ứng viên, khiến việc thu hút và giữ chân nhân tài trở nên khó khăn hơn.
  • Đánh giá kỹ thuật: Nhà quản lý tuyển dụng không chuyên kỹ thuật đối mặt những thách thức để đánh giá đúng trình độ kỹ thuật của ứng viên.
  • Kỳ vọng về lương: Kỳ vọng về mức lương cao mà không có tiêu chuẩn và bằng chứng hợp lý khiến quản lý kế hoạch và ngân sách nhân sự khó khăn.

  7 chính sách thu hút nhân tài IT đột phá cho doanh nghiệp

Các phương pháp tìm nguồn ứng viên tài năng hiệu quả

Một nguồn ứng viên chất lượng sẽ giúp doanh nghiệp thu hút được nhiều ứng viên tiềm năng, phù hợp với nhu cầu tuyển dụng. Dưới đây là một số phương pháp tìm nguồn ứng viên IT tài năng hiệu quả:

1. Tìm kiếm ứng viên tài năng qua mạng xã hội

Mạng xã hội là một nguồn giúp doanh nghiệp tìm kiếm ứng viên IT hoàn toàn miễn phí. Nơi đây có số lượng người dùng lớn, thuộc nhiều độ tuổi nên việc chọn lọc ứng viên phù hợp sẽ cần có chiến lược phù hợp.

Bạn có thể tìm nguồn ứng viên IT trên các mạng xã hội phổ biến dưới đây:

  • LinkedIn: LinkedIn là một nền tảng mạng xã hội được nhiều HR lựa chọn để “săn” nhân tài. Nơi đây có nhiều chuyên gia IT hoạt động để chia sẻ thông tin về kinh nghiệm, kỹ năng, và dự án cá nhân. LinkedIn cung cấp nhiều công cụ tìm kiếm ứng viên giúp doanh nghiệp tìm kiếm ứng viên tiềm năng một cách dễ dàng.
  • Facebook Groups: Các nhóm và cộng đồng chuyên ngành trên Facebook là nơi tuyệt vời để tìm kiếm ứng viên. Doanh nghiệp có thể tìm thấy ứng viên phù hợp nhờ theo dõi các bài đăng nổi bật trên group hoặc tạo bài đăng tuyển dụng hấp dẫn dể thu hút ứng viên IT tiềm năng.
  • GitHub: GitHub là nền tảng dành cho các developer, nơi họ lưu trữ mã nguồn và dự án của mình. Bạn có thể tìm kiếm qua các dự án, tham gia cộng đồng, và liên hệ trực tiếp với các ứng viên tiềm năng.

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

Tìm kiếm ứng viên tài năng qua mạng xã hội

Những lưu ý khi tìm kiếm ứng viên trên mạng xã hội

Tuyển dụng IT trên mạng xã hội là một phương pháp hiệu quả để tiếp cận nhiều ứng viên tiềm năng. Tuy nhiên, doanh nghiệp cần lưu ý một số vấn đề sau để tuyển dụng IT trên mạng xã hội hiệu quả:

Xác định đúng nguồn ứng viên: Doanh nghiệp cần xác định đúng nguồn ứng viên tiềm năng dựa trên vị trí tuyển dụng và yêu cầu của doanh nghiệp.

Tạo nội dung bài đăng tuyển dụng hấp dẫn: Doanh nghiệp cần tạo nội dung bài đăng tuyển dụng hấp dẫn để thu hút ứng viên. Bài đăng tuyển dụng cần bao gồm các thông tin cơ bản về vị trí tuyển dụng, kỹ năng, kinh nghiệm cần thiết, mức lương, đãi ngộ,… Ngoài ra, doanh nghiệp có thể sử dụng các hình ảnh, video minh họa để bài đăng tuyển dụng trở nên sinh động, hấp dẫn hơn.

Tương tác với ứng viên một cách chuyên nghiệp: Doanh nghiệp cần tương tác với ứng viên một cách chuyên nghiệp để tạo thiện cảm với ứng viên. Doanh nghiệp nên trả lời câu hỏi, giải đáp thắc mắc của ứng viên một cách nhanh chóng, đầy đủ và chính xác.

  6 bí quyết giữ chân nhân tài ngành IT cho doanh nghiệp

Tìm kiếm ứng viên tài năng từ người quen

Tìm kiếm ứng viên IT tài năng từ người quen là một phương pháp hiệu quả để tiếp cận những ứng viên tiềm năng. Phương pháp này có nhiều ưu điểm như:

  • Tiết kiệm thời gian và chi phí: Doanh nghiệp không cần phải đăng tin tuyển dụng trên các kênh truyền thông, tham gia các hội chợ việc làm,…
  • Tăng khả năng tìm được ứng viên phù hợp: Doanh nghiệp có thể nhờ người quen giới thiệu những ứng viên có kỹ năng, kinh nghiệm phù hợp với nhu cầu của doanh nghiệp.
  • Tạo thiện cảm với ứng viên: Ứng viên sẽ có thiện cảm với doanh nghiệp hơn nếu được giới thiệu bởi người quen.

Tuy nhiên, phương pháp này cũng có một số hạn chế như:

  • Không tiếp cận được nhiều ứng viên tiềm năng: Doanh nghiệp chỉ tiếp cận được những ứng viên có trong danh bạ của người quen.
  • Có thể bị giới hạn về kỹ năng, kinh nghiệm của ứng viên: Doanh nghiệp chỉ tiếp cận được những ứng viên mà người quen giới thiệu.

Tìm kiếm ứng viên tài năng từ các nền tảng tuyển dụng

Hiện nay có khá nhiều trang web tuyển dụng IT cho phép nhà tuyển dụng tiếp cận với ứng viên nhanh chóng và dễ dàng hơn. Nhà tuyển dụng chỉ cần đăng tin tuyển dụng lên nền tảng, các ứng viên sẽ xem xét và gửi CV, sau đó hệ thống sẽ chuyển CV về cho nhà tuyển dụng.

Tìm nguồn ứng viên tài năng từ các nền tảng tuyển dụng

TopDev sẽ là một nền tảng tuyển dụng lập trình viên chất lượng bạn có thể tin tưởng, với nhiều ưu điểm vượt trội như:

  • Nguồn ứng viên khổng lồ với đầy đủ mọi cấp độ từ Junior đến Senior.
  • Hỗ trợ các công cụ sàng lọc giúp nhà tuyển dụng chọn lựa được ứng viên phù hợp nhanh chóng.
  • Quy trình đăng tin tuyển dụng đơn giản và nhanh chóng.
  • Chất lượng ứng viên đồng đều, độ tin cậy cao.
  • Tối ưu ngân sách tuyển dụng, có nhiều chương trình ưu đãi xây dựng thương hiệu nhà tuyển dụng.

Tóm lại

Tìm kiếm ứng viên tài năng là một vấn đề quan trọng đối với doanh nghiệp. Có nhiều phương pháp khác nhau để tìm nguồn ứng viên IT tài năng, mỗi phương pháp đều có những ưu điểm và hạn chế riêng. Doanh nghiệp cần lựa chọn phương pháp phù hợp với nhu cầu tuyển dụng và nguồn lực của doanh nghiệp. Hy vọng rằng với những chia sẻ trên sẽ giúp doanh nghiệp tối ưu chi phí và tìm được ứng viên tiềm năng nhanh chóng.

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

Xem thêm việc làm Developers hàng đầu tại TopDev

NVM là gì? Cách sử dụng và thủ thuật với Node Version Manager

cách sử dụng nvm

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

Vấn đề

Điều khiến bạn cảm thấy “sợ hãi” khi làm việc với Node.js là gì? Đối với tôi, chắc đó là maintain một mã nguồn Node.js/JavaScript đời đầu, hay có nghĩa là một dự án đã được viết từ rất lâu trước đó, đang sử dụng một phiên bản Node rất thấp mới có thể chạy được.

Không có gì khó hiểu khi tôi hay thậm chí nhiều bạn đọc cũng có cảm giác tương tự. Có rất nhiều lý do để đưa ra như cú pháp lỗi thời, tổ chức mã không trật tự, thư viện bị ngừng hỗ trợ hoặc thậm chí là không còn tài liệu nữa… thử nghĩ mà xem, một thư viện mà ta chưa từng dùng trước đó bỗng nhiên không còn dấu vết của tài liệu nữa thì biết dựa vào đâu mà viết tiếp đây? Chưa kể khi gặp vấn đề trên một thư viện đã “archive” thì đúng là không còn ai để mà hỏi nữa.

Nhưng cuộc sống mà, chúng ta không thể nào lảng tránh mãi được, bảo trì thì vẫn cứ phải bảo trì, khổ một nỗi máy tôi đang sử dụng phiên bản Node 18 “hiện đại”, mà lại phải chạy một con “app” yêu cầu Node < 8 thì phải làm sao? Gỡ ra, cài lại rồi lại gỡ ra, cài lại… cứ thế khi muốn sử dụng một phiên bản khác? Đùa chứ tất nhiên là không cần phải làm như vậy rồi. Tôi cá là nhiều người đã biết đến công cụ nvm – Node Version Manager giúp dễ dàng chuyển qua lại các phiên bản Node khác nhau chỉ với một vài lệnh đơn giản.

Thật ra không chỉ có nvm mới làm được việc này, có nhiều công cụ giúp chúng ta quản lý phiên bản của Node như fnm hay asdf. Nhưng tùy vào sở thích của mỗi người mà họ tự chọn cho mình được cái thích hợp nhất. Ví dụ như tôi đang sử dụng nvm, và vì thế, ngày hôm nay, tôi xin phép chia sẻ một vài cách cũng như thủ thuật sử dụng nó.

NVM là gì?

NVM (Node Version Manager) là một công cụ giúp quản lý các phiên bản của Node.js trên máy tính của bạn. Nó cho phép bạn dễ dàng cài đặt, chuyển đổi và quản lý các phiên bản khác nhau của Node.js trên cùng một hệ thống. Điều này rất hữu ích khi bạn làm việc trên các dự án khác nhau yêu cầu các phiên bản Node.js khác nhau.

Cài đặt nvm rất đơn giản, nó hỗ trợ cả 3 nền tảng Mac, Linux và Windows. Ví dụ tôi đang dùng Mac và sử dụng luôn công cụ brew để cài đặt:

$ brew install nvm

Cũng cần lưu ý, phải thêm hai dòng cấu hình này vào ~/.profile hoặc ~/.zshrc nếu đang sử dụng zsh:

    export NVM_DIR="$HOME/.nvm"
    [ -s "$HOMEBREW_PREFIX/opt/nvm/nvm.sh" ] && \. "$HOMEBREW_PREFIX/opt/nvm/nvm.sh" # This loads nvm
    [ -s "$HOMEBREW_PREFIX/opt/nvm/etc/bash_completion.d/nvm" ] && \. "$HOMEBREW_PREFIX/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion

Hoặc nếu bạn dùng Linux:

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash

Còn Windows? Hơi khác một chút, chúng ta cần tải và cài đặt tại nvm-windows.

  NodeJS version manager: Quản lý đa phiên bản NodeJS trên máy tính

  7 sai lầm thường gặp khi học Nodejs

Cách sử dụng và thủ thuật

Tư tưởng sử dụng nvm cũng rất đơn giản, “install version -> switch version -> run”.

# tải về version 18
$ nvm install 18

# xem danh sách version đã cài
$ nvm ls
       v16.18.1
->     v18.17.1

# chọn phiên bản 16
$ nvm use 16

# chạy
$ node index.js

Ngay sau khi chọn phiên bản 16, phiên Terminal này được áp dụng cho Node 16, bạn có thể start các ứng dụng Node/JavaScript với phiên bản đã chọn.

Khi kết thúc phiên, chẳng hạn như tắt Terminal, lúc này Node sẽ trở về phiên bản mặc định, nếu muốn sử dụng lại Node 16, chúng ta cần gõ lại lệnh nvm use 16. Điều đó khá bất tiện và mất thời gian, để xem nvm đang sử dụng phiên bản nào là mặc định:

$ nvm alias default
default -> 18 (-> v18.17.1)

Như trên nó đang chọn 18 làm mặc định, nếu muốn chuyển sang 16, gõ:

$ nvm alias default 16
$ nvm alias default
default -> 16 (-> v16.18.1)

Tuy vậy, tôi đang có cỡ chục dự án, và mỗi dự án yêu cầu một phiên bản Node khác nhau, vậy sao mà tôi có thể nhớ chính xác hay chí ít là thông báo cho người khác biết nữa? Rất đơn giản, hãy tạo một tệp .nvmrc ngay trong thư mục gốc của dự án. Ví dụ:

$ echo "16" > .nvmrc

Lệnh trên tạo một file .nvmrc chứa con số 16. .nvmrc như một file cấu hình của nvm để cho mọi người biết phiên bản Node khuyến khích sử dụng trong dự án này là bao nhiêu. Sau đó chỉ cần gõ:

$ nvm use

Ngay lập tức nvm sẽ chuyển sang 16.

Chà, cũng thú vị đấy nhưng thế thì lại mất công gõ lệnh use mỗi khi mở dự án ra à? Àh…Ừm… dĩ nhiên là có cách để không phải gõ thủ công rồi. Chúng ta sẽ thêm một lệnh tự động phát hiện và sử dụng use một cách tự động.

Ví dụ, tôi đang dùng zsh, mở file ~/.zshrc ra và thêm vào dòng này xuống cuối cùng:

$ vi ~/.zshrc
autoload -U add-zsh-hook

load-nvmrc() {
  local nvmrc_path
  nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version
    nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use
    fi
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}

add-zsh-hook chpwd load-nvmrc
load-nvmrc

Lưu lại và cập nhật cấu hình:

$ source ~/.zshrc

Nếu bạn đọc không sử dụng zsh, có thể tham khảo thêm các cách khác tại Deeper Shell Integration.

Bây giờ hãy thử tắt đi mở lại VSCode và bật Terminal in-app lên xem Node đã tự động chuyển sang phiên bản cài đặt trong .nvmrc chưa.

Cuối cùng là một lưu ý về việc debug, nếu như bạn đã quen với phương pháp debug bằng break point. Có thể Text Editor hoặc IDE không biết được phiên bản Node mà bạn đang muốn sử dụng để chạy debug là bao nhiêu. Tùy vào công cụ mà bạn sử dụng có thể sẽ có cách cấu hình phiên bản Node ở đâu đó, nhưng với VSCode thì hiện tại tôi không thấy có. Vì thế, đơn giản nhất là thiết lập phiên bản mặc định cho Node bằng lệnh alias, tắt đi bật lại VSCode là được.

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

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

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

Đón đầu 7 xu hướng công nghệ hàng đầu trong năm 2024

xu hướng công nghệ 2024

Công nghệ đang phát triển với tốc độ chóng mặt, kéo theo những thay đổi to lớn sẽ định hình nên một thế giới năm 2024 hoàn toàn khác. Nhiều xu hướng mới được dự đoán sẽ thay đổi cách chúng ta sử dụng và tương tác với công nghệ trong cuộc sống hàng ngày.

Từ trí tuệ nhân tạo (AI), thực tế ảo, đến Internet of Things (IoT) và blockchain, các công nghệ tiên tiến này sẽ tiếp tục làm thay đổi cách chúng ta làm việc, giải trí, và kết nối với nhau. Hãy cùng TopDev khám phá những xu hướng công nghệ nổi bật trong năm 2024 này nhé.

Trí tuệ nhân tạo (AI) tiếp tục lên ngôi

Trí tuệ nhân tạo (AI) không chỉ là một xu hướng công nghệ trong năm 2024, mà còn là một cuộc cách mạng làm thay đổi cách chúng ta tương tác và hiểu biết với thế giới xung quanh. Cùng với sự bùng nổ của các công nghệ như Machine Learning, Deep Learning, AI tạo sinh, chúng ta đang chứng kiến sự xuất hiện của các hệ thống thông minh có khả năng tự học, thích ứng và vận hành.

Trí tuệ nhân tạo

Ở khía cạnh doanh nghiệp, AI đang trở thành công cụ tuyệt vời để doanh nghiệp tận dụng sức mạnh đằng sau dữ liệu và tạo ra các sản phẩm, dịch vụ thông minh hơn, hiểu khách hàng của họ hơn. Dự báo cho thấy, năm 2024 sẽ là một năm nổi bật cho sự phát triển của AI, từ hệ thống lái xe tự động và chẩn đoán y tế thông minh đến trải nghiệm tiếp thị cá nhân hóa và hệ thống nhà thông minh.

5G phát triển mạnh mẽ

Các quốc gia trong khu vực Đông Nam Á đã lên kế hoạch triển khai hạ tầng 5G. Theo một dự báo, ASEAN và Châu Đại Dương sẽ chứng kiến sự gia tăng đáng kể với khoảng 620 triệu thuê bao 5G vào cuối năm 2028, đánh dấu một bước nhảy vọt trong sự chuyển đổi công nghệ.

5G phát triển mạnh mẽ

Với những ưu điểm của 5G như khả năng kết nối nhanh chóng và độ trễ thấp đã thúc đẩy các giải pháp công nghiệp 4.0 phát triển. 5G sẽ là chìa khóa cho việc tối ưu hóa quy trình sản xuất và quản lý công nghiệp. Điều này không chỉ làm tăng hiệu suất mà còn đưa ra những cơ hội mới cho sự sáng tạo trong nhiều lĩnh vực khác nhau.

Trong tương lai gần, mạng 5G sẽ là một động lực mạnh mẽ đằng sau sự phát triển toàn diện của xã hội và kinh tế. Sự phổ biến của 5G vào năm 2024 sẽ đưa chúng ta vào một thế giới kết nối mạnh mẽ hơn, nhanh chóng hơn và sẵn sàng để đối mặt với những thách thức và cơ hội mà tương lai mang lại.

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

  Digital Twins – xu hướng công nghệ cho ngành IoT

Internet kết nối vạn vật (IoT) tiếp tục phát triển

Các thiết bị kết nối internet ngày càng trở nên thông minh và linh hoạt, mở ra những khả năng kiểm soát tự động và thuận tiện cho người dùng. Theo dự đoán từ Statista, doanh thu từ công nghệ liên quan đến Internet of Things (IoT) dự kiến sẽ đạt 1,6 nghìn tỷ vào năm 2025. Thị trường IoT toàn cầu dự kiến sẽ đạt 1.842 tỷ USD vào năm 2028, so với mức 310 tỷ USD vào năm 2020.

Trong năm 2024, IoT sẽ tiếp tục định hình cách chúng ta tương tác với thế giới xung quanh thông qua ứng dụng di động, từ những biểu hiện nhỏ như thiết bị gia dụng thông minh đến những thay đổi lớn trong các lĩnh vực quy mô lớn như công nghiệp và y tế. Sự tăng trưởng ấn tượng của IoT là một minh chứng cho sức mạnh và tiềm năng của nó trong việc tạo nên một môi trường số đa chiều và kết nối, mở ra không gian cho sự đổi mới và phát triển trong thời đại số.

Điện toán lượng tử

Điện toán lượng tử

Điện toán lượng tử có thể xử lý các phép tính phức tạp nhanh hơn hàng triệu hoặc thậm chí hàng tỷ lần so với các máy tính truyền thống. Điều này có thể được sử dụng để giải quyết các vấn đề như mô phỏng vật lý lượng tử, tối ưu hóa chuỗi cung ứng và phát triển các loại thuốc mới. Bên cạnh đó, điện toán lượng tử có thể xử lý thông tin lớn hơn nhiều so với các máy tính truyền thống. Điều này có thể được sử dụng để phát triển các mô hình học máy phức tạp hơn và phân tích lượng lớn dữ liệu.

Với sự phát triển tiếp tục của công nghệ, chúng ta có thể kỳ vọng thấy nhiều ứng dụng mới xuất hiện, từ tối ưu hóa quy trình sản xuất đến tăng cường khả năng dự đoán và tương tác trong lĩnh vực Machine Learning. Công nghệ điện toán lượng tử không chỉ là một cột mốc quan trọng trong sự phát triển của công nghệ mà còn là động lực mạnh mẽ đằng sau sự đổi mới và sự thay đổi trong các ngành công nghiệp.

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

Công nghệ thực tế tăng cường (AR)

Công nghệ thực tế tăng cường (AR) đánh dấu một giai đoạn mới trong cách chúng ta tương tác và kết nối với thế giới xung quanh. AR mang lại trải nghiệm mới bằng cách kết hợp thông tin số hóa vào môi trường vật lý, tăng cường khả năng nhận thức của chúng ta đối với thế giới thực. Tính tương tác và linh hoạt của AR mở ra nhiều cánh cửa trong nhiều lĩnh vực, từ giáo dục, y tế đến công nghiệp và dịch vụ.

Với sự tích hợp đa dạng và ứng dụng ngày càng mở rộng, AR hứa hẹn sẽ là công nghệ chính định hình sự phát triển của chúng ta trong năm 2024, mang lại những trải nghiệm mới và nâng cao khả năng làm việc và học tập.

Hướng đến công nghệ bền vững

Năm 2024 sẽ đánh dấu sự gia tăng mạnh mẽ của xu hướng công nghệ bền vững, đưa vào những đổi mới sáng tạo có tầm nhìn xa và tác động tích cực đến môi trường và xã hội. Điều này là do nhận thức của xã hội về tầm quan trọng của bảo vệ môi trường ngày càng tăng cao. Các doanh nghiệp cũng ngày càng quan tâm đến việc áp dụng các công nghệ bền vững để giảm thiểu tác động của hoạt động của mình đối với môi trường.

Hướng đến công nghệ bền vững

Tự động hóa các quy trình kinh doanh thông qua chuyển đổi số, sử dụng rô-bốt ảo, và sử dụng AI cho phân tích dữ liệu là những bước quan trọng để doanh nghiệp có thể tối ưu hóa và giảm lượng tài nguyên tiêu thụ. Đồng thời, việc áp dụng các giải pháp thân thiện với môi trường, như chiếu sáng bằng đèn LED tiết kiệm điện và sử dụng vật liệu tuân thủ nguyên tắc kinh tế tuần hoàn, là những cách hiệu quả để tạo ra môi trường làm việc và sản xuất bền vững.

Đạo đức kỹ thuật số và quyền riêng tư

Cùng với sự phát triển mạnh mẽ của công nghệ kỹ thuật số, đặc biệt là trong lĩnh vực thu thập dữ liệu, các vấn đề liên quan đến đạo đức và quyền riêng tư của con người trở nên ngày càng quan trọng. Công nghệ hiện đại đã tạo ra nhiều cơ hội để doanh nghiệp, chính phủ và tổ chức khác thu thập dữ liệu từ người dùng thông qua các hoạt động trực tuyến.

Tuy nhiên, điều này đồng thời mang theo nguy cơ việc thông tin cá nhân có thể bị sử dụng một cách thiếu an toàn.

Đạo đức kỹ thuật số và quyền riêng tư

Người dùng và cơ quan quản lý sẽ thúc đẩy việc bảo vệ dữ liệu một cách nghiêm ngặt hơn, đặt ra các yêu cầu và tiêu chuẩn cao hơn để đảm bảo an toàn và đạo đức trong việc sử dụng thông tin cá nhân. Điều này có thể đòi hỏi sự hợp tác chặt chẽ giữa các bên liên quan, từ doanh nghiệp đến chính phủ và người dùng cuối, để đảm bảo rằng sự phát triển của công nghệ diễn ra một cách bền vững và an toàn.

Những xu hướng công nghệ năm 2024 sẽ tiếp tục thay đổi cách chúng ta sống, làm việc và giao tiếp với nhau. Các doanh nghiệp và tổ chức cần bắt đầu chuẩn bị cho tương lai của công nghệ để tận dụng lợi thế của những lợi ích tiềm năng của nó. Bằng cách kết hợp sức mạnh của công nghệ và tầm nhìn của chúng ta về một tương lai bền vững, chúng ta có thể hình thành một thế giới kỹ thuật số đa dạng, tiến bộ và mang lại lợi ích cho tất cả mọi người.

Xem thêm:

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

5 thủ thuật hay với Javascript Promise bạn cần biết!

thủ thuật Javascript Promise

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

Trong bài viết tìm hiểu Promise là gì? Bạn hẳn đã hiểu rõ về khái niệm Promise này rồi đúng không? Quả thật, sau một thời gian sử dụng Promise API, mình cảm thấy rất thích thú, viết code sướng hơn hẳn. Từ phiên bản ES7, ngoài Promise ra, bạn còn có thêm Async/Await cũng sướng không kém.

Bài viết này, mình sẽ chia sẻ một số thủ thuật javascript promise hay ho khi làm việc với Promise. Đảm bảo bạn sẽ ngạc nhiên cho mà coi.

Hủy một fetch request

Có một vấn đề nhức nhối khi làm việc với Promises đó là bạn không thể hủy (cancel) chúng. Bạn ao ước có một API kiểu như promiseInstance.cancel() để có thể cancel một promise nào đó. Nhưng rất tiếc, đời không như mơ!

Thay vào đó, chúng ta phải sử dụng phương pháp phức tạp hơn một chút để cancel một promise. Kiểu như sau:

const controller = new AbortController();
const { signal } = controller;

fetch("http://localhost:8000", { signal }).then(response => {
    console.log(`Request 1 is complete!`);
}).catch(e => {
    console.warn(`Fetch 1 error: ${e.message}`);
});

// Abort request
controller.abort();

Điều kỳ diệu ở đây là chúng ta cung cấp tín hiệu (signal) cho từng fetch request. Trong thế giới Javascript, việc tạo API để kế thừa và trừa tượng hóa là tương đối khó khăn. Do vậy, trước mắt bạn cứ tạm sử dụng phương pháp như trên nhé.

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

waitForTime & waitForever

Trong một số tình huống sử dụng hoặc kiểm thử ứng dụng, bạn cần phải tạo một khoảng thời gian chờ nào đó.

Các ứng dụng lớn cũng làm như thế, không phải là họ không có khả năng làm cho ứng dụng nhanh mà họ cố tình đấy. Không tin ư, mời bạn đọc thử bài này: Ngạc nhiên chưa: Nhiều ứng dụng cố tình chạy chậm để bắt người dùng phải đợi

Lan man quá, tóm lại, nếu bạn cần phải tạo một timeout với promise thì dành cho bạn đây.

/* Wait for milliseconds */
function waitForTime(ms) {
  return new Promise(r => setTimeout(r, ms));
}

/* Usage */
await waitForTime(200);

/* Wait Forever */
function waitForever() {
  return new Promise(r => {});
}

// Usage:
await waitForever();

Viết đến đây, mình chợt nghĩ tới câu: “Đúng người đúng thời điểm là tốt nhất“.

  Xử lý bất đồng bộ với Promise.all trong JavaScript

Chạy bất đồng bộ các hàm Array

Có thể bạn chưa biết, các hàm làm việc với mảng như forEach(), map(), some()... đều là các hàm đồng bộ.

Có một số trường hợp, bạn muốn chạy các chức năng không đồng bộ trong map(), some()... Ví dụ: cập nhật danh sách các models và đẩy thông tin đã thay đổi trở lại để cập nhập vào cơ sở dữ liệu. Hoặc request tới API để lấy thông tin dùng cho các bước tiếp theo trong use case.

Do vậy, tip trick này sẽ giúp bạn chạy một asynchronous operation trong synchronous function.

async function fetchRepoInfos () {
  // load repository details for this array of repo URLs
  const repos = [
    {
      url: 'https://api.github.com/repos/vntalking/ebook-reactjs-that-don-gian'
    },
    {
      url: 'https://api.github.com/repos/vntalking/nodejs-express-mongodb-co-ban'
    }
  ]

  // map through the repo list
  const promises = repos.map(async repo => {
    // request details from GitHub’s API with Axios
    const response = await Axios({
      method: 'GET',
      url: repo.url,
      headers: {
        Accept: 'application/vnd.github.v3+json'
      }
    })

    return {
      name: response.data.full_name,
      description: response.data.description
    }
  })

  // wait until all promises resolve
  await Promise.all(promises).then(results => {
    console.log(results);
  })

  // use the results
}

fetchRepoInfos();

Biến đối tượng bất kỳ thành Promise

Bạn có biết rằng, bạn có thể tùy ý thêm phương thức .then() vào một đối tượng bất kỳ để biến chúng thành một Promise không?

async function convertObjectToPromise() {
  j = { then: resolve => fetch("/").then(resolve) }

  j.then(res => console.log(res));

  // Response {type: "basic", url: "https://vntalking.com/", redirected: false, status: 200, ok: true, …}

  // ... or an await...
  const response = await j;
  // Response {type: "basic", url: "https://vntalking.com/", redirected: false, status: 200, ok: true, …}

}

convertObjectToPromise()

Một thủ thuật tuyệt vời mà ít người biết!

Detect một hàm Async

Mặc dù thủ thuật này không phổ biến lắm, ít người sử dụng, nhưng nó lại rất hữu ích khi bạn cần tới. Khi bạn cần phát hiện hàm nào là bất đồng bộ để có phương án làm việc hợp lý, đây là cách dành cho bạn.

async function myFunction() {

}

const isAsync = myFunction.constructor.name === "AsyncFunction";

Javascript Promise là thứ mà bạn sử dụng hàng ngày trong dự án. Do vậy nếu tinh ý, bạn có hàng tá thủ thuật hay ho với nó.

Mình hi vọng bài viết về thủ thuật javascript promise này giúp được điều gì đó cho bạn.

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

Xem thêm:

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

Tản mạn về hai mô hình phát triển phần mềm là Waterfall và Agile

mô hình Waterfall và Agile

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

Vấn đề

Hồi còn đi học, trong môn “Phân tích thiết kế hệ thống thông tin” mà tôi được học có nhắc đến quy trình phát triển phần mềm theo mô hình thác nước (Waterfall). Tên gọi của nó khiến tôi liên tưởng đến hình ảnh một thác nước đang đổ ào ào từ trên xuống dưới rất mạnh mẽ, và dĩ nhiên dòng nước thì chỉ đổ được theo một chiều, hàm ý rằng đây là một quy trình tuần tự và khó có thể quay lui lại bước trước đó.

Nhưng sự thật là khi đi làm, tôi chưa thấy có một công ty nào áp dụng mô hình này để phát triển phần mềm cả. Hoặc là không có, hoặc là một cái tên khác: Agile.

Agile – Scrum là một cái tên mà tôi tin chắc rằng nhiều người biết hoặc đang áp dụng tại nơi làm việc. Một chu trình (sprints) chỉ mất khoảng 2 tuần để phát triển và hoàn thành một số tính năng để tung ra thị trường, đến với người sử dụng. Tư tưởng của Agile là làm sao đưa tính năng ra nhanh nhất cho khách hàng, từ đó khiến họ hài lòng và trả tiền để sử dụng sản phẩm.

Còn gì tuyệt vời hơn Agile, chúng ta quay vòng liên tục trong danh sách tính năng mới, “code” rồi “release”… thi thoảng là một chu trình sửa lỗi, cải thiện tính năng. Cuối mỗi sprint, chúng ta sẽ có một buổi “retrospective” để nhìn lại những gì đã và đang làm tốt hoặc chưa tốt, từ đó rút kinh nghiệm cho lần sau.

Thú thật, đối với một sinh viên mới ra trường lúc đó, Agile như là một phương pháp mà tôi cảm thấy tuyệt vời nhất. Người ta thường nói, con người thường sẽ có cảm xúc mãnh liệt với thứ đầu tiên họ tiếp xúc. Nghĩa là ngay từ đầu được tiếp xúc với Agile, cho dù sau đó được tiếp xúc với mô hình gì đi nữa, Agile vẫn có chỗ đứng đặc biệt trong lòng.

Đã có thời gian tôi đề cao Agile, sẵn sàng vùi dập các phương pháp khác như Waterfall trong các cuộc tranh luận. Rằng Waterfall là đã quá lạc hậu, không thể đáp ứng được nhu cầu phát triển phần mềm mạnh mẽ ngày nay.

Nhưng chỉ mới gần đây thôi, có lẽ tôi đã tích đủ cho mình “chứng cứ” để chỉ ra một sự thật: “Agile không phải là nhất” nếu như không muốn nói là nó quá tệ trong hầu hết trường hợp.

Vậy, tại sao?

  12 nguyên tắc trong Agile

  Quản lý dự án theo Agile và Scrum cho người mới bắt đầu

Waterfall và Agile

Đầu tiên hãy nhắc lại một chút về khái niệm mô hình Waterfall.

Waterfall là một mô hình của quy trình phát triển phần mềm, trong đó quy trình phát triển trông giống như một dòng chảy, với các pha được thực hiện theo trật tự nghiêm ngặt và không có sự quay lui hay nhảy vượt pha là: phân tích yêu cầu, thiết kế, triển khai thực hiện, kiểm thử, liên kết và bảo trì.

Mô hình Waterfall

Trong hầu hết thời gian đi làm, phân tích yêu cầu luôn là giai đoạn mà tôi thấy là tốn nhiều thời gian nhất. Vì đó là nơi mà cần phải quyết định xem cần phải làm gì, chiến lược kết hợp với tầm nhìn, kế hoạch và cả những con số thống kê để đi đến tính năng cần phải làm…

Vì vậy, nó phải được thực hiện rất tỉ mỉ và thận trọng trước khi chuyển giao sang giai đoạn tiếp theo, bởi vì một khi đả chuyển thì khó có thể quay lại được. Khi đó bộ phận khác đã tiếp nhận yêu cầu và bắt đầu thiết kế hệ thống, giao diện ứng dụng/phần mềm… Vậy điều gì xảy ra nếu như ngay từ bước đầu tiên đã xuất hiện vấn đề bất thường?

Nếu sai sót là nhỏ, trong tầm kiểm soát, chỉ cần sửa lại câu từ hoặc bổ sung thêm một vài trường hợp không gây ảnh hưởng đến chức năng chính, mọi thứ có thể du di chấp nhận được. Ngược lại, giả sử bộ phận Design tiếp nhận yêu cầu và họ tìm ra một cơ số lỗ hổng nếu không khắc phục thì không thể tiếp tục được. Chu trình thác nước lúc này có thể bị đổ vỡ. Chúng ta không thể cứ mãi một vòng lặp phản hồi từ Requirements đến Design được, vì như thế các bước sau đó sẽ mãi mãi không bao giờ được tiếp tục.

Tôi tin rằng có thể có rất nhiều sai lầm giống như trên đã xảy ra trong quá khứ, cho nên đã đến lúc đội phát triển cần một phương pháp mới: Agile ra đời.

Phát triển phần mềm linh hoạt (Agile) là một phương thức thực hiện các dự án công nghệ phần mềm, phương thức này khuyến khích sự thay đổi khi phát triển dự án và đưa sản phẩm đến tay người dùng sao cho nhanh nhất.

Mô hình Agile

Chúng ta không còn thác nước, không còn từng bước như thác đổ và không sợ bị quay lui nữa. Tất cả giờ đây tập trung vào “đưa sản phẩm đến tay người dùng nhanh nhất”.

Chà, nếu thế thì hơi chung chung. Làm thế nào để đưa sản phẩm đến tay người dùng nhanh nhất?

Xem thêm tuyển agile lương cao hấp dẫn trên TopDev

Scrum là một khung cộng tác nhóm linh hoạt thường được áp dụng trong Agile. Theo scrum, chúng ta sẽ có một vòng lặp có hạn thời gian để liên tục phát triển phần mềm, ví dụ là 2 tuần cho đến một tháng. Trong mỗi vòng lặp, phải có tính năng được hoàn thành và đưa đến tay người dùng, và khá nhiều quy tắc nữa nhưng tôi sẽ không nói thêm trong phạm vi bài viết này.

Tôi tin rằng Agile rất phổ biến, khi hỏi 10 người bạn làm trong cùng lĩnh vực, 9 người đều biết Agile, và công ty họ làm đều đang áp dụng phương pháp này, chỉ 1 người còn lại thì bảo “I’m free” – nghĩa là không theo một mô hình nào cả.

Ngày nay sự cạnh tranh trong các sản phẩm công nghệ là rất lớn. Chúng ta không thể chắc chắn ý tưởng của mình là duy nhất vì chỉ cần lơ là một chút, hàng tá sản phẩm có ý tưởng tương tự sẽ xuất hiện ngay sau đó mặc dù chưa từng khoe nó ở bất kỳ đâu.

Như vậy, chúng ta cần Agile để đẩy sản phẩm ra nhanh nhất cho người dùng, từ đó chiếm được thị trường và bước tiếp theo thì chỉ cần ung dung thêm tính năng mới.

Điều đó liệu có đúng? Nếu bạn đã từng ứng dụng Agile và nhận thấy mội vài hạn chế của nó mà chưa tiện nói ra ở đâu, thì hãy tạm dừng lại một chút để nghĩ về những bất cập đó và tiếp theo là… xem những điều đó có giống như tôi?

Dưới đây là những “bằng chứng” đã nhắc đến ở đầu bài để củng cố cho quan điểm “Agile không phải là nhất” trong suốt hơn 5 năm làm việc mà tôi đúc kết được.

  • Sự mập mờ và thiếu thông tin: Trong các chu trình mang tính liên tục và ngắn ngày, đòi hỏi mọi thứ phải nhanh. Từ khâu lên tài liệu cho đến các buổi “làm mịn” (Grooming) để phổ biến đến mọi người phát triển, thậm chí bạn còn không có thời gian để kịp nhìn thấy tài liệu của tính năng chuẩn bị làm.
  • Quá nhanh và không kịp suy nghĩ: Bạn không thể hình dung hết được những gì sắp làm có gây ảnh hưởng đến những gì đang có, chỉ khi bắt tay vào làm, nhiều vấn đề mới bắt đầu phát sinh.
  • Dễ khiến kiệt sức, chán nản: Liên tục xoay vòng trong các tính năng, đôi khi còn phải tiếp nhận yêu cầu hoàn toàn mới khiến cho chu trình hiện tại chậm trễ, hay thậm chí là bị sụp đổ. Vô định trong sự phát triển của sản phẩm nhiều khi khiến chúng ta nghi ngờ về chính sản phẩm mà chúng ta đang tạo ra.
  • ET và OT: Ngay khi nhận được danh sách tính năng, điều tiếp theo là các buổi lên kế hoạch chi tiết, phân chia nhiệm vụ và “estimate” thời gian hoàn thành. Đây không phải là một công việc dễ dàng gì, nó mất rất nhiều thời gian để “dự đoán” cho những điều còn chưa chắc chắn. Và nếu sắp đến ngày bàn giao còn chưa làm xong, làm thêm giờ sẽ là phương án cứu cánh cuối cùng để cho cả tuần làm việc không ngừng nghỉ.
  • Rơi vào cạm bẫy xây dựng: Đã bao giờ bạn tự hỏi danh sách tính năng lấy từ đâu ra chưa? Từ cấp trên, từ khách hàng, hay là từ bộ phận có nhiệm vụ “nghiên cứu sản phẩm”!?… Một sản phẩm mang lại giá trị cho người dùng khi nó giải quyết được vấn đề cho họ. Vì vậy, tính năng làm ra phải bám sát vào nhu cầu của khách hàng. Chúng ta cần phải tiếp xúc với khách hàng nhiều hơn để thấu hiểu được điều họ muốn, điều này thường mất nhiều thời gian và công sức. Vậy nên có một cách khác để nhanh hơn là tự thấu hiểu cho nỗi đau của người dùng, liên tục tung ra tính năng và kiểm tra xem mức độ sử dụng, nếu người dùng nhiều tức là thành công, và ngược lại.
  • Không hiểu sản phẩm: Hầu hết khi bắt đầu vào làm ở môi trường mới, tôi sẽ có một vài tuần để làm quen với những thứ mới, về văn hóa, về môi trường, về sản phẩm và cả những dòng code… nhưng rất ít khi được trình bày một bức tranh tổng quát về sản phẩm sắp sửa được tham gia. Phần lớn vì thời gian làm quen là có hạn, sau đó sẽ bị cuốn vào chu trình phát triển phần mềm không hồi kết.

Đến lúc này thì mới thấy Waterfall lại khắc phục được hầu hết nhược điểm trên.

Tất cả yêu cầu đã được làm rõ ngay từ bước đầu tiên, chúng ta có đầy đủ tài liệu để làm và không sợ bị thay đổi, vấn đề lúc này chỉ là bản kế hoạch về thời gian hoàn thành tất cả tính năng.

Khảo sát và đánh giá, tất cả đều nằm trong bước đầu tiên. Khảo sát giúp cho chúng ta tránh khỏi cạm bẫy xây dựng và có đủ cơ sở để tin rằng một khi tính năng được ra mắt, nó sẽ đem lại sự hài lòng cho rất nhiều người.

Khi tất cả yêu cầu được giao xuống, tất cả bộ phận đều nắm rõ thông tin sản phẩm, từ đó tạo ra động lực về một tương lai về sản phẩm sắp được làm ra và nó mang lại giá trị gì cho người dùng.

Tuy vậy, ưu điểm của Waterfall cũng là nhược điểm chí mạng khi nó không thể linh hoạt trong các khâu phát triển phần mềm. Hầu hết các công ty mà tôi từng tham gia phát triển đều đang trong quá trình Start-up, họ có chiến lược tạm thời và kế hoạch tung sản phẩm rất nhanh chóng để kịp cho việc chiếm lĩnh thị trường.

Nói đến đây không phải là để chỉ trích phương pháp nào cả, mà một khi đã nhìn ra những bất cập, chúng ta cần phải tìm ra cách để khắc chế lại nó.

Agile khuyến khích mọi người tương tác với nhau nhiều hơn để đẩy nhanh quá trình phát triển. Đừng quá quở trách đội nghiên cứu sản phẩm vì những yêu cầu chưa rõ ràng, tài liệu chậm trễ từ phía họ, vì đôi khi mọi người cũng đang quay cuồng trong danh sách tính năng cần được ưu tiên cho sự sống còn của sản phẩm. Thay vào đó chúng ta có thể chủ động hỏi những câu hỏi để làm sáng tỏ vấn đề, suy nghĩ hay đưa ra các trường hợp mà đội sản phẩm không lường được hết. Hãy nhớ một khi đã chọn Agile, chắc chắn việc làm thế nào để tung sản phẩm ra nhanh nhất cho người dùng mới là điều quan trọng.

Để tránh khỏi cạm bẫy xây dựng, hãy đặt nhiều câu hỏi liên quan đến sản phẩm trong giai đoạn Grooming hoặc Planing. Yêu cầu những con số biết nói và nếu có thể hãy đặt cả câu hỏi tại sao cần làm những tính năng sắp tới. Qua đó giúp cho mọi người có cái nhìn xa hơn về giá trị mà sản phẩm mang lại cho người dùng.

Cuối cùng là, luôn sẵn sàng tâm thế cho việc thay đổi liên tục.

Tổng kết

Tóm lại, bài viết này chỉ là sự nhìn nhận mang tính cá nhân về ưu và nhược điểm của 2 phương pháp phát triển phần mềm Waterfall và Agile. Trong khi Waterfall yêu cầu một nền tảng vững chắc thì Agile lại phù hợp với những thay đổi linh hoạt. Chúng phù hợp trong những môi trường làm việc khác nhau và qua bài viết này hy vọng bạn đọc không mắc phải những sai lầm như tôi khi đã quá đề cao một trong hai phương pháp từ đầu.

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

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

Top Developers apply ngay IT Job hot trên TopDev nhé!

Nên học C hay C++? Hướng đi nào sẽ tốt nhất cho người mới?

Nên học C hay C++

Nên học C hay C++ trước luôn là câu hỏi anh em học lập trình đặt ra khi bước chân vào thế giới lập trình. Bài viết này cung cấp cho anh em cái nhìn khách quan về 2 con đường, đầu tiên là học C trước C++, thứ hai là không cần học C trước C++.

Cả hai con đường này đều có người ủng hộ, người phản đối. Anh em có thể tham khảo để tự đưa ra lựa chọn cho mình.

Nên học C hay C++

Trước khi bắt đầu, vẫn cứ phải điểm qua đôi điều về C và C++ cho anh em trước. Bắt đầu ngay thôi nào!

1. Đôi điều về ngôn ngữ lập trình C

Giới thiệu sơ về ngôn ngữ C, tuy đã cổ lai hi nhưng C vẫn còn đang được sử dụng vì nó là ngôn ngữ cơ bản trong lĩnh vực khoa học máy tính.

  • C là ngôn ngữ lập trình có mục đích chung được tạo ra bởi Dennis Ritchie tại Phòng thí nghiệm Bell năm 1972.
  • C là một ngôn ngữ rất phổ biến, mặc dù đã cũ. Lý do chính cho sự phổ biến của nó là vì nó là ngôn ngữ cơ bản trong lĩnh vực khoa học máy tính.
  • C được liên kết chặt chẽ với UNIX, vì nó được phát triển để viết hệ điều hành UNIX.

Nên học C hay C++
Nguồn ảnh/Source: www.geeksforgeeks.org

Tại sao anh em có thể lựa chọn học C

  • Đây là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới
  • Nếu anh em biết C, anh em sẽ không gặp vấn đề gì khó khăn lắm khi khi học các ngôn ngữ lập trình phổ biến khác như Java, Python, C++, C#, v.v. vì cú pháp của ông C rất gần gũi so với các ngôn ngữ lập trình khác
  • Giống như Java và Python, C linh hoạt dùng nó anh em có thể được sử dụng để tạo ra cả ứng dụng và công nghệ

Nhiều vị trí tuyển dụng C++ đãi ngộ tốt trên TopDev

2. Vài thứ về C++

C++ là một trong những ngôn ngữ lập trình phổ biến nhất, hiện tại anh em có thể tìm thấy C++ trong các hệ điều hành, các mạch điều khiển, lập trình Adruino, các hệ thống nhúng (embedded systems). C++ là ngông ngữ lập trình hướng đối tượng, cấu trúc code rõ ràng, code anh em viết ra có thể reuse được.

  • C++ là ngôn ngữ đa nền tảng có thể được sử dụng để tạo các ứng dụng hiệu suất cao.
  • C++ được phát triển bởi Bjarne Stroustrup, như một phần mở rộng của ngôn ngữ C.
  • C++ cung cấp cho người lập trình mức độ kiểm soát cao đối với tài nguyên hệ thống và bộ nhớ.
  • Ngôn ngữ đã được cập nhật 4 lần chính vào năm 2011, 2014, 2017 và 2020 thành C++11, C++14, C++17, C++20

C++
Nguồn ảnh / Source: class101.net

C++ cũng thuộc top ngôn ngữ dễ học, gần với C, C# và Java. Anh em nếu có base code các ngôn ngữ này có thể nhanh chóng chuyển qua ngôn ngữ C++

  Lộ trình học lập trình C cho người mới bắt đầu

  Kiến thức C cho người mới và cách tự học lập trình C

3. Nên học C hay C++ trước

Tuỳ vào thời gian anh em sắp xếp, tuy nhiên cần nhấn mạnh lại rằng không cần phải học C trước C++. Đây là hai ngôn ngữ lập trình khác nhau. Nhiều người thường hiểu sai C++ phụ thuộc vào C, tức là C++ là bản nâng cấp của C chứ không phải là một ngôn ngữ độc lập. Cái này là sai hoàn toàn nha anh em

Cho dù C++ và C có cú pháp giống nhau, anh em cũng không bắt buộc phải học C trước khi học C++. Sau khi đã học C++ và thực hành code, anh em sẽ hiểu gần như toàn bộ cú pháp của C.

Hiện tại trên stackoverflow, ý kiến được upvote nhiều nhất là không cần học C trước C++. Không phải do lười biếng hay gì đâu nha anh em.

Nên học C hay C++
Ý kiến đang được upvote nhiều nhất hiện tại đang là không cần học C trước khi học C++. Nguồn ảnh / Source: stackoverflow.com

Tham khảo việc làm lập trình C hấp dẫn trên TopDev!

4. Nếu học C trước thì sao

Vẫn có rất nhiều lời khuyên được bàn tán sôi nổi trên Stackoverflow và nhiều upvote vẫn vote cho việc học C trước C++.

Nên học C hay C++
Luồng ý kiến tranh luận về việc học C hay C++ đều có ý này ý kia. Nguồn ảnh/ Source: stackoverflow.com

Một số ông bạn học C trước, ổng feedback là nếu học C trước anh em sẽ quen với cú pháp, biết những thứ nổi bật ở C và C++ như kiểu con trỏ (pointer). Quen trước thì sau dễ hơn. Sau khi đã chiến với C, anh em có thể gói gọn toàn bộ vấn đề trong C++.

Nên học C hay C++
Luồng ý kiến tranh luận về việc học C hay C++ đều có ý này ý kia. Nguồn ảnh/ Source: stackoverflow.com

Cũng một ông khác ủng họ việc học C trước C++ cho biết mọi thứ anh em học ở C đều có thể đem qua C++, nhưng C nhỏ gọn hơn, học dễ hơn. Đối với anh em mới bước chân vào lập trình thì C dễ nhai hơn do khối lượng kiến thức nhỏ hơn.

5. Tổng kết

Như anh em đã nắm thông tin ở các phần trên. Việc học C trước C++ luôn có 2 luồng ý kiến trái nhiều nhau. Để trả lời cho câu hỏi có nên học hay không, anh em có thể tự đưa ra quyết định dựa trên một số câu hỏi sau đây:

  • Anh em có đủ thời gian cho việc học cả hai không?. C trước sẽ tốn thời gian cho cả C và C++
  • Nếu vị trí anh em định apply hoặc công việc sắp tới cần có cả C và C++ không?. Nếu có anh em nên học C và C++ trước.
  • Nếu anh em cần focus 1 ngôn ngữ trước, và công việc cũng chỉ dùng C++ đúng không?. Nếu thế anh em có thể chỉ học C++ thôi là được

Có đủ thông tin, hiểu tại sao cần học cái này trước cái kia, hoặc tại sao không cần học cái này mà học cái kia, anh em có thể tự đưa ra quyết định và cho mình cách tiếp cận phù hợp nhất.

Chúc anh em sớm thành thạo code!

6. 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

Xem thêm:

Tham khảo ngay việc làm IT mọi cấp độ trên TopDev!

Một số kinh nghiệm làm việc với mảng trong JavaScript dành cho bạn

Một số kinh nghiệm làm việc với mảng trong JavaScript dành cho bạn

JavaScript hiện nay là một ngôn ngữ phổ biến với khả năng làm được cả FrontendBackend, nhờ vậy mà nó được nhiều anh em lập trình viên lựa chọn học và làm việc. JS dễ học, dễ hiểu nhưng cũng khá dễ nhầm lẫn đối với người học và luôn ẩn chứa những xử lý “ảo diệu” khi viết code. Vì thế để viết được những đoạn code JS tối ưu, hợp lý, ngắn gọn là điều không hề đơn giản. Bài viết hôm nay mình sẽ cùng các bạn tìm hiểu qua về một số kinh nghiệm làm việc với mảng (Array) trong JavaScript nhé.

1. Mảng 2 chiều

Thực tế, JavaScript không hỗ trợ mảng 2 chiều, vậy làm thế nào để chúng ta tạo ra mảng 2 chiều trong JS. Cách chúng ta thường nghĩ tới là tạo 1 đối tượng Array với các phần tử con trong mảng đó lại là 1 Array khác; hay nói cách khác là sử dụng mảng trong mảng.

let mang2Chieu = new Array();
mang2Chieu[0] = new Array("a", "b", "c", "d", "e");
mang2Chieu[1] = new Array(1, 2, 3, 4, 5);
mang2Chieu[2] = new Array("A", "B", "C", "D", "E");

Nhưng cũng có 1 cách đơn giản hơn để tạo ra mảng 2 chiều kích thước [i, j] bằng cách tạo ra mảng 1 chiều với kích thước i * j. Và để truy xuất vào phần tử ở vị trí [i1, j1], chúng ta sẽ thông qua index = i1 * i + j1. Cách này cũng giúp tối ưu bộ nhớ hơn nhiều và có thể áp dụng trong các ngôn ngữ lập trình khác nhau.

2. Xóa một mảng

Làm thế nào để bạn xóa toàn bộ dữ liệu một mảng một cách nhanh chóng và dễ dàng?

Cách đơn giản nhất là sử dụng câu lệnh set độ dài của mảng về 0. 

let mang = [1, 2, 3, 4, 5];

mang.length = 0;
console.log(mang); // []

  Cách sắp xếp các phần tử trong mảng Javascript

  3 cách kiểm tra một phần tử trong mảng

3. Chuyển một mảng về thành Object

Nếu bạn muốn chuyển một Array sang dạng Object, có nhiều phương án bạn có thể dùng khi function map, dùng vòng lặp for,… để biến đổi dữ liệu. Nhưng trong JS có 1 cách ngắn gọn hơn rất nhiều:

const mang = ["a", "b", "c", "d", "e"];
let mangToObj = { ...mang };

console.log(mangToObj); // { 0: "a", 1: "b", 2: "c", 3: "d", 4: "e" }

4. Xáo trộn một mảng

Bạn đang cần xáo trộn vị trí của các phần tử trong một mảng, có cần thiết lại phải sử dụng một vòng lặp khác hay không? Câu trả lời là không. Với việc sử dụng hàm Math.random, bạn dễ dàng đạt được yêu cầu như dưới đây:

const mang = ["a", "b", "c", "d", "e"];
let xaoTronMang = mang.sort(() => 0.5 - Math.random());
console.log(xaoTronMang); //['a', 'd', 'e', 'b', 'c']
xaoTronMang = mang.sort(() => 0.5 - Math.random());
console.log(xaoTronMang); //['e', 'b', 'c', 'd', 'a']
xaoTronMang = mang.sort(() => 0.5 - Math.random());
console.log(xaoTronMang); //['d', 'e', 'b', 'a', 'c']

Việc làm Javascript lương cao trên TopDev

5. Loại bỏ các phần tử trùng lặp trong một mảng

Lại một lần nữa bạn có thể nghĩ đến việc sử dụng vòng lặp cho bài toán này. Mặc dù vậy thì cách ngắn hơn là sử dụng kiểu dữ liệu Set trong JavaScript. Set là một tập hợp các giá trị mà trong đó mỗi giá trị sẽ chỉ xuất hiện 1 lần duy nhất. Vì thế chúng ta sẽ convert mảng đầu vào về kiểu dữ liệu Set và nó sẽ giúp loại bỏ các giá trị trùng lặp.

const mang = ["a", "b", "a", "c", "b"];
var mangDuyNhat = [...new Set(mang)];
console.log(mangDuyNhat); // ["a", "b", "c"]

6. So sánh 2 mảng

Với 2 mảng đầu vào, làm sao bạn so sánh được xem 2 mảng đó có bằng nhau hay không? Bạn sẽ có thể nghĩ ngay đến việc sử dụng vòng lặp duyệt từng phần tử của mảng này xem có tồn tại trong mảng kia hay không và ngược lại. Tuy nhiên đấy là một cách xử lý khá cồng kềnh. Một ý tưởng đơn giản hơn và việc chuyển nó về dạng string với JSON.stringify và chỉ cần 1 phép so sánh 2 chuỗi string được tạo ra.

const soSanhMang = (mang1, mang2) =>
  JSON.stringify(mang1.sort()) === JSON.stringify(mang2.sort());

soSanhMang([1, 2, 3], [1, 3, 2]); // true
soSanhMang([1, 2, 3], [1, "2", 3]); // false

7. Loại bỏ các giá trị falsy trong mảng 

Falsy values trong JavaScript bao gồm: 0, false, NaN, undefined, null, ” (xâu rỗng)

Chúng ta cũng có khái niệm truthy values là các giá trị được hiểu là true trong ngữ cảnh Boolean; hoặc cũng có thể nói cách khác truthy values là những giá trị không thuộc Falsy values.

Để loại bỏ những giá trị Falsy values, chúng ta có đoạn code đơn giản như dưới đây:

const mang = [
  0,
  false,
  NaN,
  undefined,
  "",
  null,
  1,
  true,
  "Hello World",
  { name: "value" },
];
const truthyValues = mang.filter(Boolean);
console.log(truthyValues); // [ 1, true, 'Hello World', { name: 'value' } ]

Kết bài

Trên đây là một số kinh nghiệm khi viết code JavaScript xử lý dữ liệu mảng mà mình tổng hợp được, còn rất nhiều các xử lý hay và thú vị khác trong JS mà bạn có thể tự tìm hiểu hay rút ra trong quá trình lập trình, làm việc trong dự án. Hy vọng bài viết hữu ích dành cho bạn 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 các việc làm IT hấp dẫn tại TopDev

Năm 2024, nên học Java hay Javascript?

nên học Java hay Javascript

Năm 2024 đánh dấu năm mà AI bùng nổ, ngành công nghệ thông tin và việc làm của lập trình viên cũng có những thay đổi nhất định.

Vậy anh em khi bắt đầu lựa chọn ngôn ngữ lập trình, anh em sẽ bắt đầu với Java hay Javascript? Bài viết này sẽ cho anh em cái nhìn tổng quan về 2 ngôn ngữ lập trình, giúp anh em tự đưa ra lựa chọn cá nhân. Cứ base trên mục tiêu và sở thích mà quất nha anh em

Chúc anh em pick cái nào master cái đó, khí thế hừng hực đầu năm, cần thiết thì chiến luôn cả hai.

1. Javascript – cái nhìn tổng quan

JS, tên cúng cơm là Javscript, được đẻ ra trong gia đình NetScape từ những năm 90, nhẹ (lightweight). Just in time compiler (vừa chạy vừa biên dịch). Lúc đầu ông này được thiết kế cho phía client-web (tức là chỉ chạy ở phía máy khách). Dần dà sau này lấn sân qua cả phía máy chủ server. Điển hình là ông Nodejs

Còn về cái tên Java trong Javascript, chữ Java trong Javascript chỉ là ăn theo, còn về use case và feature thì Javascript hoàn toàn khác với Java. Đu theo tí thôi.

nên học Java hay Javascript

1.1 Ưu điểm của Javascript

  1. Áp dụng rộng rãi (Wide Adoption): Javascript hiện tại được tất cả browser hỗ trợ, sử dụng thì khỏi bàn, hầu như để xây dựng website chắc chắn phải đụng tới Javascript
  2. Dynamic and Flexible (tạm dịch năng động và linh hoạt): ngoài nhẹ ra thì Javascript cực kì linh động cho anh em lập trình viên, thảy đâu cũng chạy, bưng đâu cũng chạy
  3. Có thể quẩy fullstack: Sau khi có Nodejs, anh em JS có thể quẩy cả FrontendBackend.
  4. Large Ecosystem (hệ sinh thái lớn): Javascript có hệ sinh thái rộng lớn, nhiều các framework mạnh phát triển dựa trên nền Javascript như Reactjs, Vuejs. Những framework này giúp đơn giản hoá, tăng tốc độ phát triển.

1.2 Nhược điểm của Javascript

  1. Kém bảo mật (less secure): Vì là ngôn ngữ chạy bên phía client, cũng là ngôn ngữ dính nhiều lỗ hổng bảo mật nhất, tuy nhiên anh em có thể học để phòng tránh các lỗ hổng bảo mật này.
  2. Hạn chế về hiệu suất (Performance Limitations): Javascript là ngôn ngữ đơn luồng (single thread).

  Top 9 quyển sách hay về JavaScript – Từ nhập môn đến nâng cao

  Java Core là gì? Phân biệt Java Core và Java

2. Java – cái nhìn tổng quan

Java thì được thiết kế bởi Sun cũng trong những năm 90, là ngôn ngữ lập trình hướng đối tượng, dựa trên class (class based), và là ngôn ngữ lập trình concurrent. Đầu tiên ông Java được thiết kế để chạy trên mọi môi trường. Nguyên lý là viết 1 lần chạy khắp mọi nơi.

Về cú pháp thì Java chịu ảnh hưởng của C và C++, giúp anh em developer dễ dàng chuyển qua ngôn ngữ lập trình Java hơn.

nên học Java hay Javascript

2.1 Ưu điểm của Java

  1. Nền tảng độc lập: Khi đã có bytecode thì code java có thể chạy trên mọi nền tảng (platform), ứng dụng build bằng Java là ứng dụng chạy đa nền tảng
  2. Cộng đồng hỗ trợ cực mạnh (Strong Community Support): Java có nguyên 1 cộng đồng rộng lớn hỗ trợ phát triển, nên có vấn đề gì anh em cũng được support tận tình, hoặc ít nhất là có câu trả lời từ trước
  3. Tính mạnh mẽ: Java có cơ chế xử lý exception cực kì linh hoạt và mạnh, giúp chương trình hạn chế ít bug, với những ứng dụng lớn, Java tỏ ra cực kì đáng tin cậy
  4. Khả năng mở rộng: Khả năng làm việc đa luồng trong Java cho phép xử lý một lượng lớn giao dịch và xử lý các tác vụ đồng thời một cách nhanh chóng và hiệu quả.

2.2 Nhược điểm

  • Cú pháp dài dòng (Verbose Syntax): code Java thường anh em sẽ có cú pháp dài dòng loằng ngoằng hơn so với Python hay Golang.
  • Slower Execution: Java là ngôn ngữ lập trình cấp cao, thành ra việc xử lý abstraction (trừu tượng) và thu thập biến chưa sử dụng (garbage collection) đôi khi khiến cho Java chậm hơn C++.

Tham khảo việc làm Fresher Java mới nhất trên TopDev

3. So sánh giữa Javascript và Java

3.1 Cú pháp và cấu trúc

Java là ngôn ngữ lập trình dựa trên lớp (class based), khác với Javascript dựa trên prototype-based. Cú pháp của Java thường dài dòng hơn, anh em không thể quên chấm phẩy các kiểu, mở ngoặc đóng ngoặc hơi tùm lum. Còn JS thì đơn giản hơn, viết nhanh, viết gọn.

Tuy nhiên viết kĩ thì ít lỗi hơn, còn JS thì đôi khi anh em viết hơi ẩu có thế gây ra lỗi.

3.2 Hiệu năng (Performance)

So sánh giữa Java và Javascript thì hiệu năng của Java vượt trội hơn về hiệu năng. Tuy nhiên anh em JS làm quen với V8 engine của Google cũng không có gì đáng phải lo, vì performance của Javascript đã tối ưu và tốt hơn rất nhiều rồi. Để phát triển web application, thường anh em sử dụng Java ở phía Backend, còn phía Javascript thì sử dụng cho Frontend.

3.3 Use cases

Java thường phù hợp cho các ứng dụng có quy mô lớn, cấp doanh nghiệp. Ngoài ra các ứng dụng Android cũng có thể sử dụng Java. Nó cũng đáp ứng được các hệ thống yêu cầu hiệu năng cao, tính nhất quán và mở rộng. Trong khi đó Javascript vượt trội trong phát triển web, bao gồm luôn cả frontend và backend (Nodejs) nha anh em.

Không những web, JS còn nổi lên là tốt cho cả AI, ML và các lĩnh vực nghiên cứu khác. Bao gồm cả IoT.

4. Nên học ngôn ngữ nào

Chọn Java hay Javascript tất nhiên còn tuỳ vào nhu cầu, anh em chọn ngôn ngữ nào. Roadmap long term anh em define cho lộ trình 5,7 năm sau này. Tuy nhiên có một số khuyến nghị giúp anh em lựa chọn tốt hơn:

  • Web Development: Nếu anh em focus vào web development thì Javascript là ngôn ngữ anh em lựa chọn, cứ thế mà quất. Frontend anh em có thể go với các framework, backend anh em có thể quất với Nodejs
  • Mobile Development: Nếu anh em lựa chọn Mobile development, vậy phải xem anh em focus vào Android hay iOS, nếu chỉ Android thì Java là lựa chọn tốt. Còn nếu anh em muốn quất cả Android và iOS thì thử chiến Javascript với React Native cũng không có gì là lựa chọn tồi.
  • Enterprise Applications: Nếu anh em dự định build ứng dụng doanh nghiệp thì Java lại được ưu tiên hơn. Quá nhiều doanh nghiệp lựa chọn Java rồi.
  • Flexibility and Ecosystem: Nếu anh em muốn build một hệ sinh thái năng động, có khả năng hoạt động trên nhiều platform khác nhau thì JS là thứ anh em có thể ưu tiên cao.

nên học Java hay Javascript

5. Anh em thường hỏi

5.1 Học cả Java và Javascript được không?

Tất nhiên là được nha, không có việc gì khó, chỉ sợ lòng không bền. Tuy nhiên cần học sao tránh lẫn lộn giữa hai ngôn ngữ.

5.2 Dùng JS cho Android development?

Cái này ok nha, cứ React Native mà quất, JS giờ mạnh lắm rồi anh em, không có gì phải lo lắng cả.

5.3 Học Java khó hơn hay học Javascript khó hơn?

Cái này còn tuỳ mỗi người, tuy nhiên học Java về cơ bản khó hơn do cú pháp chặt chẽ, hướng đối tượng các kiểu con đà điểu

6. 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

Xem thêm:

Đừng bỏ lỡ việc làm IT mọi cấp độ tại TopDev

Lộ trình trở thành Fullstack Developer cho người mới bắt đầu

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

Với sự thay đổi nhanh của ngành lập trình mà nhiều nhà tuyển dụng hiện nay đang đòi hỏi ứng viên của mình có khả năng vừa dựng được giao diện xử lý logic phía client vừa có thể tạo ra được ứng dụng chạy trên server. Nói cách khác là việc đòi hỏi một lập trình viên có khả năng làm cả Frontend và Backend, mà chúng ta vẫn hay gọi là Fullstack Developer. Vậy lộ trình để trở thành một Fullstack Developer là gì? Bài viết hôm nay chúng ta cùng nhau tìm hiểu nhé.

Fullstack Developer là gì?

Fullstack Developer là một kỹ sư/ lập trình viên có thể xử lý tất cả các việc từ cơ sở dữ liệu, máy chủ, thiết kế hệ thống đến làm việc với khách hàng. Tùy vào dự án mà team phát triển sẽ cần đến những vị trí khác nhau có thể là Web, Mobile hay Native app; Fullstack Dev là người thành thạo nhiều kỹ năng khác nhau và sử dụng chúng để đáp ứng nhiều vị trí mà dự án đó yêu cầu.

Fullstack Developer là gì?

Thực tế công việc phát triển phần mềm thì Fullstack Developer thường để chỉ một lập trình viên có khả năng làm được cả Frontend và Backend bằng một hoặc một vài ngôn ngữ lập trình cụ thể; các kiến thức khác như hệ thống, máy chủ, cơ sở dữ liệu thường có thể không được chú trọng. Fullstack Dev có khả năng đọc hiểu nghiệp vụ, viết source code ở cả 2 phía client và server, nhờ vậy họ giúp dự án tiết kiệm được nhiều chi phí phân bổ nguồn lực cũng như thời gian, ngoài ra còn tăng tính nhất quán trong cả phần mềm được viết ra. Cũng vì thế mà mức lương của Fullstack Developer cũng cao hơn tương đối so với Frontend Dev hay Backend Dev.

Lộ trình trở thành một Fullstack Developer

Do việc cần phải hiểu và làm việc với cả 2 phía của hệ thống mà lượng kiến thức, kỹ năng của Fullstack Dev rõ ràng là nhiều hơn so với một lập trình viên khác. Một điểm quan trọng hơn là các kỹ năng phải được trang bị đồng đều, theo chiều rộng hơn là chiều sâu; ngoài ra là tư duy về sản phẩm cùng góc nhìn rộng hơn bao trùm cả về mặt thiết kế hệ thống và khách hàng cũng là điều cần thiết. Nói cách khác, lộ trình trở thành một Fullstack Developer sẽ bao gồm việc trở thành một Frontend Developer, tiếp tục trở thành một Backend Developer và sau đó là những đòi hỏi thêm về các kỹ năng chuyên sâu khác về công nghệ hay hệ thống.

  13 kênh Youtube lập trình tiếng Việt giúp bạn trở thành Fullstack developer

  5 kiến thức quan trọng để trở thành Full-stack developer

1. Trang bị kiến thức về Frontend

Lộ trình để trở thành Fullstack Developer

Với Frontend, HTML, CSSJavaScript là 3 ngôn ngữ trụ cột mà bạn bắt buộc phải học và nắm vững bất kể bạn có dùng thư viện, framework nào cho dự án của bạn. Đây chính là bước đầu tiên trong lộ trình trở thành một Frontend Developer. Hãy bắt đầu với HTML, tiếp tục với CSS, sau đó học JavaScript kết hợp với việc thực hành trực tiếp tạo ra các trang Web mà bạn muốn bằng 3 công cụ trên.

Bước tiếp theo hãy tìm hiểu về những nguyên tắc cơ bản của việc phát triển Web, các kiến thức như HTTP, máy chủ Web hay DOM,… Điều này giúp chúng ta hiểu cách trình duyệt chạy ứng dụng của mình, cách giao tiếp với phía server (backend); cách debug (gỡ lỗi) nếu cần thiết.

Sau 2 bước trên, bạn hãy lựa chọn một framework Frontend cho việc phát triển ứng dụng của mình; chẳng hạn như React, Angular hay VueJS. Học và thực hành các framework/ thư viện này giúp chúng ta dễ dàng tham gia vào các dự án thực tế một cách tốt hơn.

2. Trang bị kiến thức về Backend

kiến thức về Backend

Khác với Frontend, Backend là nơi tập hợp của rất nhiều công nghệ và vô số framework của nhiều ngôn ngữ lập trình. Các công nghệ, ngôn ngữ, framework có sự khác nhau khá lớn; vì vậy bạn nên lựa chọn một nền tảng trước ngay từ ban đầu để học và làm việc. Nếu bạn thích thú với việc sử dụng JavaScript cho cả Backend và Frontend, bạn có thể lựa chọn NodeJS với Express (có nhiều framework khác viết bằng JS và chạy trên NodeJS). Hoặc bạn cũng có thể lựa chọn các ngôn ngữ mới khác với sự phổ biến và mạnh mẽ đặc trưng như Python, Java, C, PHP, Golang,…

Bước tiếp theo hãy nắm vững được các kiến thức cơ bản cần thiết để xây dựng ứng dụng Backend như về hệ thống quản trị cơ sở dữ liệu (MySQL hay MongoDB,…) cách viết truy vấn SQL, cách xây dựng API, cách giao tiếp với các ứng dụng khác trên server hoặc bên thứ 3,… 

Sau 2 bước trên, các bạn có thể sẽ cần tìm hiểu về cách mô hình kiến trúc server như monolithic, microservices hay SOA,… để giúp việc thiết kế, xây dựng một hệ thống backend hoàn chỉnh đáp ứng được nhu cầu khách hàng và bài toán đặt ra. Ngoài ra còn là những kiến thức về server như hosting, deploy, monitor, log,….

Tham khảo thêm: Tuyển dụng full stack lương cao tại TopDev

3. Kiến thức chuyên sâu hơn

Fullstack Developer không chỉ đơn thuần là phép cộng giữa Frontend Dev và Backend Dev; vì vậy sau khi trang bị đủ kiến thức về 2 phần trên thì bạn cần học thêm các kiến thức chuyên sâu hơn để có cái nhìn tổng quan về hệ thống, cũng như có kiến thức, hiểu biết để giúp thiết kế, đề xuất giải pháp hữu ích dành cho dự án hay khách hàng.

Các kiến thức chuyên sâu về công nghệ bạn có thể trang bị thêm như:

  • Caching: kỹ thuật tăng độ truy xuất dữ liệu và giảm tải cho hệ thống
  • Security: bảo mật dữ liệu
  • CDN: mạng phân phối nội dung
  • Performance turning: tinh chỉnh hiệu suất truy vấn
  • Search Engines: Công cụ tìm kiếm

4. Cải thiện kỹ năng mềm

Nhiệm vụ của một Fullstack Developer không chỉ đơn thuần là viết code phần mềm mà còn là những người có vai trò tư vấn, truyền đạt lại những hiểu biết về kỹ thuật, dự án, công nghệ cho các member khác hay người quản lý dự án hoặc khách hàng. Vì vậy khi đã có kinh nghiệm làm việc với tư cách là một Fullstack Dev, bạn cần trang bị thêm các kỹ năng mềm như kỹ năng giao tiếp, khả năng quản lý thời gian, kỹ năng truyền đạt, chia sẻ, khả năng sử dụng các công cụ thuyết trình, trực quan hóa,… Phát triển và tận dụng được các kỹ năng này sẽ giúp bạn tiến xa hơn trong công việc và con đường nghề nghiệp (careerpath) của bản thân.

Kết bài

Trở thành Fullstack Developer là một con đường dài, đòi hỏi nhiều kỹ năng khác nhau từ nhiều công nghệ, lĩnh vực lập trình; vì vậy bạn cần có một lộ trình đúng đắn để từng bước đạt được mục tiêu mà mình đặt ra. Thành quả đạt được không chỉ là mức lương hấp dẫn đến từ vị trí Fullstack mà còn là một nền tảng kỹ thuật vững chắc giúp bạn làm việc trong bất cứ môi trường nào. Hy vọng bài viết hữu ích dành cho bạn 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 Việc làm IT hấp dẫn trên TopDev

Những tác động to lớn của trí tuệ nhân tạo trong tuyển dụng

Những tác động to lớn của trí tuệ nhân tạo trong tuyển dụng

Trí tuệ nhân tạo (AI) đang ngày càng trở nên phổ biến trong nhiều lĩnh vực của đời sống, trong đó có ngành tuyển dụng. Sự tiến bộ của công nghệ AI đã mở ra những cánh cửa mới, tạo ra những thay đổi đáng kể trong quá trình tìm kiếm và chọn lựa nhân sự. Những ứng dụng của trí tuệ nhân tạo trong tuyển dụng không chỉ mang lại sự thuận tiện và hiệu quả mà còn đặt ra những thách thức và cơ hội mới.

Vậy AI đang tác động đến những khía cạnh nào của hoạt động tuyển dụng? Làm thế nào để tận dụng hết sức mạnh của trí tuệ nhân tạo trong tuyển dụng? Tất cả sẽ có trong bài viết này!

Trí tuệ nhân tạo trong tuyển dụng là gì?

Trí tuệ nhân tạo trong tuyển dụng là sự ứng dụng của công nghệ AI để tối ưu hóa và cải thiện các quy trình liên quan đến việc tìm kiếm, lựa chọn, và quản lý nhân sự trong doanh nghiệp. Đây được xem là một đột phá trong lĩnh vực nhân sự, trí tuệ nhân tạo mang lại những giải pháp sáng tạo để giảm thiểu thời gian, chi phí và công sức mà các tổ chức phải bỏ ra trong quá trình tuyển dụng.

Trí tuệ nhân tạo trong tuyển dụng

Các ứng dụng của trí tuệ nhân tạo trong tuyển dụng có thể bao gồm việc sử dụng thuật toán máy học để phân tích và đánh giá hồ sơ ứng viên, tự động hóa quy trình phỏng vấn thông qua chatbot hoặc hệ thống giao tiếp tự động, cũng như dự đoán hiệu suất làm việc của ứng viên dựa trên dữ liệu lịch sử và mô hình dự đoán.

Trí tuệ nhân tạo trong tuyển dụng không chỉ giúp nhanh chóng lựa chọn những ứng viên phù hợp mà còn giảm thiểu rủi ro và đảm bảo tính công bằng trong quá trình chọn lựa nhân sự. Tính linh hoạt và khả năng học máy của AI cũng giúp nó ngày càng hoàn thiện và đáp ứng tốt hơn với đa dạng các yếu tố trong quá trình tuyển dụng.

Lợi ích của việc sử dụng AI trong tuyển dụng

Trí tuệ nhân tạo (AI) đang ngày càng trở nên phổ biến trong nhiều lĩnh vực của đời sống, trong đó có tuyển dụng. AI được ứng dụng trong tuyển dụng để tự động hóa các nhiệm vụ lặp đi lặp lại, tốn thời gian, đồng thời giúp đưa ra các quyết định tuyển dụng chính xác và khách quan hơn.

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

Trí tuệ nhân tạo trong tuyển dụng

Dưới đây là những lợi ích cơ bản của AI đối với quy trình tuyển dụng:

  • Tăng tốc độ và hiệu quả tuyển dụng: AI có thể tự động hóa các nhiệm vụ như sàng lọc hồ sơ ứng viên, lập danh sách rút gọn, lên lịch phỏng vấn,… Điều này giúp các nhà tuyển dụng tiết kiệm thời gian và công sức, đồng thời có thể nhanh chóng tìm được ứng viên phù hợp.
  • Giảm thiểu định kiến và thiên vị: AI có thể phân tích dữ liệu ứng viên một cách khách quan, không bị ảnh hưởng bởi các yếu tố như giới tính, chủng tộc, tuổi tác,… Điều này giúp đảm bảo tính công bằng trong tuyển dụng.
  • Nâng cao chất lượng tuyển dụng: AI có thể sử dụng các thuật toán học máy để dự đoán khả năng thành công của ứng viên trong công việc. Điều này giúp các nhà tuyển dụng có thể tuyển dụng được những ứng viên có tiềm năng phát triển cao.

  Time to hire là gì? Mẹo cải thiện chỉ số Time to hire cho HR

Những ứng dụng tuyệt vời của AI trong hoạt động tuyển dụng

Trí tuệ nhân tạo trong tuyển dụng

Trí tuệ nhân tạo (AI) đã mở ra nhiều ứng dụng tuyệt vời trong hoạt động tuyển dụng, mang lại những cải tiến đáng kể và nâng cao hiệu quả quy trình. Dưới đây là một số ứng dụng tuyệt vời của AI trong lĩnh vực này:

  • Sàng lọc hồ sơ ứng viên: AI có thể tự động phân tích hồ sơ ứng viên dựa trên các tiêu chí như kỹ năng, kinh nghiệm, trình độ học vấn,… để xác định các ứng viên tiềm năng. Điều này giúp các nhà tuyển dụng tiết kiệm thời gian và công sức trong việc sàng lọc hồ sơ ứng viên.
  • Giao tiếp trực tiếp với ứng viên: AI tạo ra câu hỏi và giao tiếp thông qua ứng dụng nhắn tin hoặc hệ thống trò chuyện trực tuyến, tạo trải nghiệm tuyển dụng tự nhiên và thuận tiện cho ứng viên.
  • Phân tích ứng viên thông qua mạng xã hội: AI tìm kiếm và phân tích hồ sơ trên mạng xã hội của ứng viên nhanh chóng, giúp nhà tuyển dụng hiểu rõ hơn về ứng viên và xác minh thông tin.
  • Xác thực thông tin trong hồ sơ ứng tuyển: AI kiểm tra và xác minh thông tin từ hồ sơ ứng viên, bao gồm quá trình học tập, kinh nghiệm làm việc và chứng chỉ, đảm bảo tính chính xác và tin cậy.
  • Đánh giá được thái độ và phản ứng của ứng viên: Thông qua phân tích ngôn ngữ cơ thể và giọng điệu từ video phỏng vấn, AI đánh giá thái độ và phản ứng của ứng viên, cung cấp thông tin quan trọng về khả năng làm việc nhóm và thích ứng với môi trường công việc.
  • Tự động hóa quy trình tuyển dụng: AI hỗ trợ tự động hóa nhiệm vụ và quy trình tuyển dụng, từ thông báo cho ứng viên đến lên lịch phỏng vấn và gửi phản hồi sau phỏng vấn, tiết kiệm thời gian và năng lực nhân sự.
  • Phân loại ứng viên tiềm năng: Dựa trên kỹ năng, kinh nghiệm và trình độ học vấn, AI xác định các ứng viên tiềm năng nhất, tập trung vào những ứng viên có khả năng phát triển và thích hợp nhất cho vị trí công việc.
  • Tạo báo cáo và đánh giá: AI tạo ra biểu đồ, đồ thị hoặc báo cáo trực quan dựa trên dữ liệu ứng viên, giúp nhà tuyển dụng hiểu rõ hơn về thông tin liên quan và đưa ra quyết định chọn ứng viên một cách chính xác và thông minh.

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

Thách thức khi ứng dụng AI trong tuyển dụng

Trí tuệ nhân tạo trong tuyển dụng

Mặc dù có nhiều ưu điểm, việc ứng dụng Trí tuệ Nhân tạo trong tuyển dụng cũng đối mặt với nhiều thách thức và lo ngại từ cả nhà tuyển dụng và ứng viên. Dưới đây là một số thách thức quan trọng:

Thiên lệch từ thuật toán: Mô hình AI có thể phản ánh và gia tăng thiên lệch đã tồn tại trong dữ liệu đào tạo, dẫn đến quyết định thiên vị và không công bằng đối với các nhóm nhân khẩu học.

Bảo mật và quyền riêng tư: Xử lý thông tin cá nhân của ứng viên dẫn đến những lo ngại về quyền riêng tư và bảo mật dữ liệu, đặc biệt là khi sử dụng các công nghệ như phân tích khuôn mặt và giọng nói.

Khả năng hiểu cảm xúc và giao tiếp với con người: Mặc dù có sự tiến bộ, nhưng AI hiện vẫn gặp khó khăn trong việc hiểu biểu cảm và giao tiếp ngôn ngữ tự nhiên, dẫn đến khả năng đánh giá không chính xác về thái độ và kỹ năng giao tiếp của ứng viên.

Tính hiệu quả và chi phí đầu tư: Đầu tư vào công nghệ AI và đào tạo mô hình có thể đòi hỏi chi phí lớn, và không phải tất cả các tổ chức đều có khả năng để đầu tư mạnh mẽ vào đây.

Phản kháng và sự không hài lòng từ ứng viên: Một số ứng viên có thể phản đối việc sử dụng AI trong quy trình tuyển dụng do lo ngại về mất đi sự cá nhân hóa và quyết định không minh bạch.

Kết luận

Trong tương lai, sự tiếp tục phát triển và sử dụng trí tuệ nhân tạo trong lĩnh vực tuyển dụng có thể mở ra những tiềm năng mới, từ việc dự đoán xu hướng thị trường lao động đến việc tạo ra trải nghiệm tuyển dụng cá nhân hóa hơn. Điều này không chỉ làm thay đổi cách chúng ta tìm kiếm và chọn lựa nhân sự mà còn tạo ra một môi trường tuyển dụng đổi mới và tích cực.

Hy vọng rằng với những chia sẻ trong bài viết này đã giúp bạn hiểu rõ hơn về cách ứng dụng trí tuệ nhân tạo trong tuyển dụng, cũng như những thách thức doanh nghiệp phải đối mặt khi ứng dụng AI. Chúng ta hoàn toàn có thể kỳ vọng cho một tương lai của ngành tuyển dụng khi sự phát triển của AI ngày càng mạnh mẽ.

Xem thêm:

Xem thêm việc làm ngành IT hàng đầu tại TopDev

5 bí quyết tìm việc IT cho đợt tuyển dụng đầu năm mới

tìm việc IT sau Tết

Sau Tết âm lịch là thời điểm nhộn nhịp nhất của thị trường việc làm khi các doanh nghiệp bắt đầu vào những dự án mới, cộng thêm nhân sự cũ ồ ạt nghỉ việc. Thị trường nhân lực IT cũng không ngoại lệ, nên nếu bạn muốn nhảy việc thời điểm này sẽ phải đối mặt với nhiều đối thủ nặng kí. Do đó, để chiến thắng cuộc đua này bạn phải chuẩn bị sẵn sàng ngay từ bây giờ.

Bài viết này TopDev sẽ bật mí bạn top 5 bí quyết tìm việc IT sau tết giúp bạn nhanh chóng có được công việc như ý.

Những khó khăn và lợi thế của việc tìm việc làm IT sau Tết

Sau kỳ nghỉ Tết, thị trường việc làm trong lĩnh vực Công nghệ thông tin (IT) sẽ trở nên sôi động với sự gia tăng đáng kể về số lượng nhân sự tìm kiếm việc làm. Điều này dẫn đến một môi trường cạnh tranh khốc liệt giữa các vị trí làm việc hấp dẫn. Đồng thời, các doanh nghiệp đang có xu hướng tập trung vào việc tuyển dụng nhân sự chuyên môn cao, điều này có thể đặt ra những thách thức đối với những ứng viên mới ra trường hoặc có ít kinh nghiệm trong lĩnh vực IT.

bí quyết tìm việc IT sau tết

Tuy nhiên, cơ hội việc làm IT sau Tết cũng mở rộng khi nhiều công ty tiến hành đợt tuyển dụng để bổ sung nhân sự cho các dự án mới. Mức lương tại các vị trí hot trong ngành cũng dự kiến sẽ tăng lên do sự cạnh tranh giữa các doanh nghiệp trong việc thu hút nhân tài. Đồng thời, một số công ty cũng có thể triển khai các chương trình đào tạo và phát triển nhân sự nhằm cung cấp cơ hội cho các lập trình viên phát triển bản thân và nâng cao kỹ năng chuyên môn của họ.

Bí quyết tìm việc IT năm mới tăng tỉ lệ thành công

Để tăng tỉ lệ thành công khi tìm việc IT sau Tết, các ứng viên cần nắm vững những bí quyết sau:

1. Xác định rõ mục tiêu trước khi tìm công việc mới

Việc xác định rõ mục tiêu khi tìm công việc mới là rất quan trọng, điều này sẽ giúp bạn đi đúng hướng, tập trung đúng vào những công việc phù hợp với mục tiêu đã đề ra. Đừng nhảy việc chỉ vì những lý do mơ hồ như “chán”, “thiếu động lực”, “đi theo đồng nghiệp”. Chính những lý do mơ hồ này khiến bạn không thoát ra được vòng lập nhảy việc, đến một thời gian nào đó bạn sẽ lại nghỉ việc vì những lý do trên.

Do đó, bạn hãy nghiêm túc suy nghĩ xem mình đang cần gì, bạn muốn công việc tương lai sẽ như thế nào, mức lương bao nhiêu, muốn học hỏi điều gì, môi trường làm việc ra sao,… Khi biết rõ mục tiêu của mình là gì việc tìm việc sẽ nhanh chóng và đơn giản hơn, bạn cũng sẽ chuẩn bị tốt hơn cho buổi phỏng vấn.

2. Tận dụng khoảng thời gian nghỉ để chọn lọc công việc phù hợp

Bạn có thể tận dụng khoảng thời gian nghỉ để chọn lọc thông tin tuyển dụng, chuẩn bị cho quá trình tìm việc sau khi nghỉ. Hãy dành thời gian để tìm hiểu về thị trường việc làm IT, về những công việc đang có nhu cầu tuyển dụng.

bí quyết tìm việc IT sau tết

Sau khi bạn đã xác định được một số công ty hoặc vị trí làm việc phù hợp, hãy dành thêm thời gian để so sánh và đánh giá mức độ phù hợp của chúng với mục tiêu sự nghiệp của bạn. Quá trình này giúp bạn hiểu rõ hơn về yêu cầu công việc, văn hóa doanh nghiệp, và các cơ hội phát triển trong từng công ty. Việc này sẽ giúp bạn chuẩn bị sẵn sàng gửi CV ngay sau kỳ nghỉ Tết, tăng cơ hội được chọn lựa trong quá trình tuyển dụng.

3. Bổ sung thêm các kỹ năng còn thiếu

Sau khi bạn đã xác định rõ công việc mục tiêu, hãy đọc kỹ yêu cầu công việc và so sánh chúng với bản thân để xem liệu bạn đã đáp ứng đủ các yêu cầu hay chưa. Nếu phát hiện còn những kỹ năng hoặc kinh nghiệm bạn chưa có, hãy xác định và lên kế hoạch để rèn luyện và phát triển chúng.

Việc rèn luyện những kỹ năng còn thiếu sẽ giúp bạn trở nên hấp dẫn hơn trong mắt nhà tuyển dụng. Quan trọng nhất là không ngần ngại và tích cực học hỏi để nâng cao khả năng của bản thân, đồng thời tăng cường khả năng đáp ứng yêu cầu của công việc mục tiêu.

  List 10 việc cần chuẩn bị trước khi "nhảy việc"

  5 dấu hiệu CV “hết hạn dùng”, cần update ngay!

4. Tận dụng các kênh tuyển dụng IT

Với sự phát triển của công nghệ, bạn có thể khám phá các cơ hội nghề nghiệp của mình thông qua nhiều kênh khác nhau như trang web tuyển dụng, mạng xã hội (Facebook, LinkedIn), báo chí, cũng như các sự kiện ngày hội việc làm, hội nghị chuyên ngành. Đa dạng hóa cách thức tìm kiếm việc làm không chỉ mở ra nhiều lựa chọn mà còn tăng cơ hội để bạn chọn ra công việc phù hợp nhất với nhu cầu và kỹ năng của mình.

bí quyết tìm việc IT sau tết

Nếu bạn đang tìm kiếm việc làm trong lĩnh vực Công nghệ thông tin (IT) và chưa biết nơi nào cung cấp thông tin chất lượng, TopDev là một lựa chọn đáng xem xét. Với hàng trăm công việc IT mới được cập nhật mỗi ngày, TopDev mang đến sự đa dạng về cấp độ, vị trí, và thông tin công ty rõ ràng. Quá trình ứng tuyển cũng trở nên dễ dàng, giúp bạn nhanh chóng tìm kiếm và nắm bắt cơ hội nghề nghiệp trong lĩnh vực IT.

5. Nâng cấp CV IT đúng chuẩn hiện nay

Sau khi nghỉ việc ở công ty cũ đồng nghĩa với việc bạn đã có thêm kha khá kinh nghiệm làm việc để cập nhật vào trong CV. Tuy nhiên, bạn nên chọn lọc thông tin thật kỹ trước khi đưa vào CV giúp CV bạn bớt dài dòng và đánh đúng trọng tâm. Ngoài ra, bạn nên nâng cấp CV của mình theo đúng chuẩn ATS hiện nay (xem bài viết CV chuẩn ATS là gì tại đây). Với CV chuẩn ATS sẽ giúp bạn tránh được việc bị loại khỏi quá trình quét, bố cục CV sẽ chuyên nghiệp hơn và dễ dàng gây ấn tượng với nhà tuyển dụng.

Bên cạnh đó, bạn cũng nên xem xét lại các phần quan trọng trong CV, nếu chưa tốt hãy chỉnh sửa tốt hơn, cụ thể:

  • Mục tiêu nghề nghiệp: Đừng viết chung chung kiểu “mong muốn tìm được môi trường làm việc chuyên nghiệp” mà hãy viết cụ thể ra. Bạn mong muốn đạt được gì sau 1 năm, 2 năm hay 5 năm tới, bạn muốn mình có thêm những kỹ năng gì,…
  • Kỹ năng: Hãy viết những kỹ năng liên quan đến công việc, đừng viết hết tất cả. Viết kỹ năng thật chi tiết ví dụ như bạn có thể sử dụng ngôn ngữ lập trình gì, bạn có kỹ năng phân tích số liệu, bạn biết sử dụng phần mềm nào để phục vụ cho công việc,…
  • Kinh nghiệm làm việc: Hãy đưa ra các số liệu chứng minh cho hiệu quả công việc của bạn để thuyết phục nhà tuyển dụng. Càng nhiều số liệu CV của bạn sẽ càng ấn tượng.

Chuyển đổi CV chuẩn ATS bằng công cụ Convert CV chỉ trong 1 CLICK

Công cụ Convert CV của TopDev là một công cụ miễn phí giúp chuyển đổi CV thông thường sang CV chuẩn ATS. Công cụ này sử dụng AI để phân tích nội dung CV và đưa ra một CV mới theo đúng định dạng và cấu trúc mà ATS yêu cầu.

bí quyết tìm việc IT sau tết

>>> Tham gia minigame “Chuẩn Hóa CV” nhận ngay quà hấp dẫn anh em nhé

Công cụ Convert CV giúp bạn tiết kiệm thời gian và công sức, bạn chỉ cần tải lên CV của mình lên sau đó công cụ sẽ tự động chuyển đổi CV sang định dạng và cấu trúc phù hợp với ATS. CV chuẩn ATS có khả năng lọt qua hệ thống kiểm duyệt tự động ATS cao hơn CV thông thường. Điều này không chỉ giúp bạn nâng cao khả năng cạnh tranh với ứng viên khác mà còn tạo thuận lợi cho nhà tuyển dụng trong việc đánh giá năng lực của bạn có phù hợp với vị trí ứng tuyển hay không.

Trải nghiệm ngay Công cụ Chuẩn hóa CV online!

Hy vọng rằng với những bí kiếp tìm việc làm IT sau tết bạn sẽ thành công lọt vào mắt xanh nhà tuyển dụng ngay từ lần đầu tiên. Hãy nhớ xây dựng một kế hoạch tìm việc rõ ràng, liên tục nâng cấp những kỹ năng còn thiếu, và đặc biệt quan trọng, tạo ra một chiếc CV chuẩn để tăng cường khả năng đậu việc của bạn. Chúc bạn thành công trong hành trình tìm kiếm việc làm mới!

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

Xem thêm Top tìm việc IT lương cao HOT nhất trên TopDev

Big O độ phức tạp thuật toán

Big O độ phức tạp thuật toán

Bài viết được sự cho phép của tác giả Võ Xuân Phong

O(n) là gì?

Big O độ phức tạp thuật toán

Giả sử mình có 1 hàm printElements như hình bên dưới, hàm này phải lặp n lần để in ra các giá trị i, vậy độ phức tạp của thuật toán Big O của hàm này sẽ là O(n)

Big O độ phức tạp thuật toán

Ngoài ra trong Big O còn có khái niệm Drop Constant, nó sẽ loại bỏ hằng số khi tính Big O. Ví dụ bên dưới, mình có 2 vòng lặp tách biệt nhau và mỗi vòng lặp chạy n lần, như vậy mình sẽ có phép cộng: Big O = O(n+n) = O(2n)

Big O độ phức tạp thuật toán

Ở đây mình có O(2n) và như mình đã nói ở trên mình có quyền loại bỏ hằng số, vậy cuối cùng Big O = O(n)

  [Thuật toán] Độ Phức Tạp Không Hề Phức Tạp

  Thuật toán tham lam (Greedy Algorithm) – Thực hành với C++

O(n^2) là gì?

Đi vào ví dụ mới, bên dưới mình có 2 vòng lặp lồng nhau, vòng lặp thứ nhất chạy qua n lần, mỗi lần vòng lặp thứ nhất chạy thì vòng lặp thứ hai phải chạy thêm n lần nữa, như vậy mình sẽ có phép nhân. Big O = O(n*n) = O(n^2)

O(n!) là gì?

n! đọc là n giai thừa là tích các số từ 1 đến chính nó, ví dụ:

0! = 1

1! = 1

2! = 1 * 2 = 2

3! = 1 * 2 * 3 = 6

4! = 1 * 2 * 3 * 4 = 24

5! = 1 * 2 * 3 * 4 * 5 = 120

6! = 1 * 2 * 3 * 4 * 5 * 6 = 720

Mình có đoạn code sau:

Big O độ phức tạp thuật toán

khi n thay đổi thì số lần lặp của hàm run sẽ tăng theo số n giai thừa, cho nên thuật toán trên có độ phức tạp là O(n!), dựa vào biểu đồ của các độ phức tạp thì độ phức tạp của thuật toán có O(n!) là rất tồi tệ. Một ví dụ khác cho thuật toán có độ phức tạp O(n!) là: https://en.wikipedia.org/wiki/Travelling_salesman_problem

O(log n) là gì?

Độ phức tạp O(log n) được gọi là độ phức tạp logarit. Ở đây mình có một ví dụ đơn giản:

Logarit cơ số 2 của 8 thì bằng bao nhiêu?

Log28 = ?

tương đương với 2 mũ bao nhiêu để bằng 8

2? = 8

Ta có 2 mũ 3 sẽ bằng 8

23=8

Như vậy số cần tìm ở đây sẽ là 3.

Ở ví dụ bên dưới mình có thuật toán Binary Search với input array đầu vào đã được sắp xếp theo thứ tự tăng dần, ở mỗi lần lặp thì thuật toán sẽ giảm đi một nửa số lượng phần tử, chia nhỏ mảng làm 2 phần, loại bỏ 1 phần và tính toán tiếp trên phần còn lại của mảng. Trong trường hợp tốt nhất thì giá trị cần tìm sẽ nằm ở giữa mảng, nhưng trong trường hợp xấu nhất thì nó sẽ nằm ở đầu hoặc cuối mảng. Giả sử mình đi tìm số 1 trong mảng, nó là con số ở đầu mảng tương ứng với trường hợp xấu nhất. Như đã thấy mình sẽ mất 3 lần lặp để có thể có thể tìm được giá trị trong mảng có 8 phần tử.

Big O độ phức tạp thuật toán

O(1) là gì?

Big O độ phức tạp thuật toán

O(1) là độ phức tạp hằng số, nó là độ phức tạp tốt nhất, chỉ cần thực hiện một thao tác mình đã có ngay kết quả. Ở ví dụ bên dưới mình có một hàm sum, hàm sum này sẽ nhận 2 input là n và m, tuy n và m có thể thay đổi nhưng cũng chỉ mất một thao tác tính toán thì mình có thể có kết quả ngày, hoặc việc truy cập vào một dictionary, truy cập ngay lập tức bằng key mà không cần phải lặp qua mảng thì đây là độ phức tạp O(1), độ phức tạp được xem là hoàn hảo nhất.

Tóm lại

– Để viết thuật toán hiệu quả thì nên hạn chế sử dụng các vòng lặp lồng nhau, nó sẽ làm tăng độ phức tạp của thuật toán và thời gian thực thi sẽ lâu hơn.

– Chọn cấu trúc dữ liệu phù hợp, ở mỗi bài toán khác nhau mình nên xem xét những cấu trúc dữ liệu nào hiệu quả nhất để áp dụng ví dụ như Dictionary, Hash Table, Linked List, Graph v.v.

– Thực hiện ghi nhớ các giá trị nếu cần thiết, tránh việc tính toán lặp lại.

– Áp dụng phương pháp chia để trị như ví dụ của thuật toán Binary Search với độ phức tạp là O(log n).

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

Xem thêm:

Có nên nộp hồ sơ công việc mình thích nhưng đang không đăng tuyển?

Có nên nộp hồ sơ công việc mình thích nhưng đang không tuyển?

Bài viết được sự cho phép của tác giả Lê Tuấn Anh

Trước đây mình có tư vấn cho một bạn nữ là du học sinh về nước, học Marketing, rất thích ứng tuyển vào công ty S. của nghệ sĩ T., tuy nhiên chờ hoài không thấy công ty đó tuyển dụng. Mình mới nói bạn đừng chờ, phải thay đổi cách tiếp cận đi, làm ‘thế này thế này‘ thì mới tăng cơ hội trúng tuyển. Sau đó thì bạn trúng tuyển thật. Công ty S. đó không tuyển bạn, nhưng nghệ sĩ T. thì tuyển bạn vào một công ty mới thành lập của ảnh, đúng vị trí Marketing bạn yêu thích luôn. Mình nghĩ trường hợp này cũng thường gặp khi đi tìm việc, tức là chúng ta thích một vị trí hay một công ty nào đó mà chờ hoài họ không tuyển, vậy phải làm sao?

Cách Một Công Ty Tìm Người

Trước khi bắt đầu đi vào các cách thức, bạn đọc cần hiểu về cách mà một công ty thường tìm người, được biểu diễn ở hình tam giác dưới đây.

Cách Một Công Ty Tìm Người

Thông thường chúng ta, người tìm việc thường bắt đầu từ đỉnh tam giác, tức là tìm việc qua nộp CV. Công ty mở tin tuyển dụng thì mình nộp CV, không mở thì thôi. Tuy nhiên, công ty tìm người đã bắt đầu từ đáy của tam giác rồi.

Đầu tiên, công ty ưu tiện nội bộ luân chuyển, sau đó tìm qua mạng lưới quan hệ, rồi mãi sau mới đến kênh cuối cùng là đăng tuyển. Vậy tức là có khi với nhiều vị trí chưa cần đăng tuyển, công ty đã tìm được người rồi. Như vậy nếu ứng viên là chúng ta cứ ngồi chờ tin tuyển dụng thì bỏ lỡ cơ hội mất.

  Tại sao hồ sơ của bạn chưa được gọi đi phỏng vấn?

Chúng ta cần làm gì để tăng khả năng chúng tuyển?

1/ Ứng tuyển trực tiếp tại website công ty đó. Cách này phù hợp với những bạn đang nhắm đến các công ty lớn. Bởi lẽ các công ty lớn thường đều đầu từ các trang tuyển dụng riêng, bạn cứ tìm từ khoá ‘tên công ty + career‘ là đều ra. Lấy ví dụ như Career FPT SoftwareTikTok Careers.

2/ Tự giới thiệu đến mọi người trong môi quan hệ. Bạn soạn một bản CV thật chi tiết, kèm theo 100-200 từ giới thiệu về nhu cầu tìm việc của bản thân (kiểu công việc gì, lương nhiêu, ở đâu, sếp như nào…) sau đó bạn gửi email tới những người có thể giới thiệu công việc (sếp cũ, đồng nghiệp cũ, bạn bè), hoặc tự giới thiệu lên LinkedIn như ví dụ này.

3/ Liên hệ với một chuyên viên tuyển dụng. Cái này bạn nên tận dụng LinkedIn. Bạn lên LinkedIn gõ vào từ khoá ‘recruiter’ hoặc ‘headhunter’, sẽ cho ra nhiều cái tên những người đang là nghề này. Bạn chủ động nhắn tin cho họ kèm CV và đoạn giới thiệu ở trên, nếu lịch sự, chủ động và đủ may mắn, cơ hội sẽ đến với bạn ngay.

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

4/ Bạn chủ động liên hệ đa kênh với công ty. 

Cái này phù hợp để áp dụng với các công ty vừa và nhỏ. Nếu bạn thực sự thích công ty đó, bạn có thể liên hệ với họ qua các kênh như Facebook fanpage, Instagram, Tiktok, gửi email thẳng (trong website công ty có email). Trong nội dung gửi hãy kèm CV, nói rõ việc bạn thích công ty thế nào, bạn có thể làm được gì, và biết đâu công ty sẽ có một vị trí phù hợp cho bạn.

5/ Tham gia ngày hội nghề nghiệp. Cái này phù hợp cho sinh viên, cả người đi làm cũng có thể tận dụng. Các trường đại học năm nào cũng có ngày hội nghề nghiệp, trong ngày hội đó là có vô vàn các công ty tham gia và mong muốn tuyển dụng được người. Vậy lần tới tham dự ngày hội nghề nghiệp, hãy chuẩn bị một bản CV, kèm một bản A4 giới thiệu nhanh về nhu cầu bản thân và đưa đến các công ty ở đây. Đừng ngại. Nếu bạn ngại thì cơ hội vụt mất.

6/ Xây dựng thương hiệu cá nhân. Nãy giờ mình nói nhiều về việc chủ động tìm đến nhà tuyển dụng. Tuy nhiên có một cách khác là xây dựng thương hiệu cá nhân đủ mạnh và hay ho để nhà tuyển dụng phải tìm đến mình. Hiện nay xây dựng thương hiệu cá nhân không còn khó, bạn có thể bắt đầu ngay với một kênh Tiktok hoặc một fanpage chia sẻ về chủ đề mình thích.

Chúc bạn tìm việc thành công.

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

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

Top 6 mẹo của PHP giúp anh em code tốt hơn

Top 6 mẹo của PHP giúp anh em code tốt hơn

Học lập trình chính quy, bài bản, từ A tới Z nhưng đôi khi anh em quên mất ngôn ngữ lập trình nào cũng có tip và trick. Tip và trick là những lưu ý nhỏ đôi khi anh em quên mất, nhưng chính tip với trick nho nhỏ đó đôi khi lại giúp đỡ anh em rất nhiều.

Anh em lập trình PHP nên biết những trick này, biết để dùng cho đúng, đôi khi một mẹo hay đáng giá hơn ngàn lượng vàng. Ngoài ra biết mẹo đỡ mất công anh em research, xử nhanh gọn vấn đề tiết kiệm thời gian.

mẹo PHP
Cho vui thôi chứ PHP vẫn đáng yêu nha anh em. Làm web mà ko có PHP thì hết zui.

Bắt đầu thôi anh em, có trick nào hay thì lưu lại, hoặc bookmark cả bài viết sau mà tìm kiếm cho dễ nha!

1. If và else

Tips và trick này là đơn giản và phổ biến nhất khi anh em làm việc với PHP. Thông thường nhiều anh em sẽ thấy tip này trước đây nhưng chưa chú ý lắm. Nói chung if mà đi với else thì không có gì sai.

Rõ ràng là sinh ra if để đi với else, trước nay vẫn thế, tuy nhiên đôi khi else là dư thừa không cần thiết. Anh em xem thử ví dụ sau đây:

function output_gender(bool $user_is_male) {
    if ($user_is_male) {
        return "User is male";
    } else {
        return "User is female";
    }
}

Trong trường hợp này kết quả đầu ra sẽ tuỳ thuộc vào biến $user_is_male, giá trị true hay false. Lúc này else rõ ràng là dư thừa do return đã có ở trong, nếu đúng thì đã return và trả về code, không có gì phải else.

Viết lại ngắn gọn rõ ràng súc tích hơn như sau:

function output_gender(bool $user_is_male) {
    if ($user_is_male) {
        return "User is male";
    }

    return "User is female";
}

Tip này tuy nhỏ, nhiều anh em có thể biết rồi nhưng cho những anh em mới, tip này sẽ khá là bổ ích

mẹo PHP
Nguồn ảnh/ Source: detriamelia.com

2. Verifying multiple strings

Giả sử anh em muốn kiểm tra xem chuỗi string thuộc về case nào trong các case. Thường sử dụng switch case anh em sẽ viết như sau:

$item = "candy";

switch ($item) {
    case 'candy':
        return true;
    case 'toy':
        return true;
    default:
        return false;
}
// we're not adding break because we're using return

// or
if ($item == 'candy' || $item == 'toy') {
    return true;
}

return false;

Đoạn code này sẽ trả về true nếu chuỗi là candy hoặc toy . Cách viết này hoàn toàn là đúng, không có gì sai nha anh em. Tuy nhiên cách viết này lặp đi lặp lại khá mất công sức. Thay vào đó anh em có thể sử dụng array

if (in_array($item, ["candy", "toy"])) {
    return true;
}

return false;

Thâm chí không cần cả if và else, chỉ một dòng duy nhất

return in_array($item, ["candy", "toy"]);

Cũng có một cách khác anh em có thể viết ngắn gọn như sau:

return ($item == 'candy' || $item == 'toy');

  Cài đặt môi trường lập trình web PHP

  Substr trong php là gì? Ví dụ về substr

3. Hai dấu hỏi (??)

Anh em làm việc lâu với php chắc không còn lạ gì với double question mark. Đây là cách nhanh nhất để viết điều kiện if else trong code php. Anh em cùng xem qua ví dụ sau về mẹo PHP:

$data = [
    "a" => 1,
    "b" => 2,
    "c" => null,
];

return $data["c"] ? $data["c"] : "No data";

Dòng cuối cùng này kiểm tra xem c có ở trong mảng data hay không?. Nếu không tồn tại sẽ trả về No data. Đống code loằng ngoằng khó chịu này có thể gom lại thành 1 dòng.

return $data["c"] ?? "No data";

Trường hợp này hai dấu hỏi ??, tương tự với || ở các ngôn ngữ lập trình khác. Tip này tuy đơn giản nhưng hữu ích và có thể nhiều anh em đã biết rồi. Tuy nhiên một số anh em có thể chưa biết nên lưu lại nhé.

Xem ngay tin tuyển dụng PHP lương cao trên TopDev

4. PHP và HTML

Trong quá trình làm dự án có cả FrontendBackend, không tránh khỏi những lúc anh em muốn viết PHP trong HTML và HTML trong PHP. Thông thường anh em sẽ thực hiện mẹo PHP này như sau:

<?php
foreach ($items as $item) {
    echo '
        <div class="product__card">
            <h3>{$item->name}</h3>
        </div>
    ';
}
?>

Code này thì khá là rõ ràng, tuy nhiên HTML kiểu này anh em thường viết theo string. Mà viết theo string thì hay nhầm lẫn, thiếu tag, sai syntax các kiểu. Có một tips anh em có thể thử:

<?php foreach ($items as $item): ?>
    <div class="product__card">
        <h3><?php echo $item->name; ?></h3>
    </div>
<?php endforeach; ?>

Trường hợp có nhiều if else và for each, anh em có thể maintain theo cách sau:

foreach (...):
// code
endforeach;

// also works with if
if (...):
// code
endif;

// also
if (...) #one line code

while():
// ...
endwhile;

PHP mix với HTML chưa bao giờ là dễ

mẹo PHP
Nguồn ảnh/ Source: stackoverflow.com

5. Functional blocks

Function block (khối function), có thể là một tính năng đơn lẻ hoặc một tác vụ phức tạp, như ví dụ dưới đây anh em có thể viết function gọn nhẹ redirect to:

function redirectTo($route) {
    header("location: $route", true, 302);
}

Với các function kiểu này, mỗi khi anh em muốn redirect tới home thì chỉ cần gọi function redirectTo. Thay vì header("location: /home", true, 302) anh em chỉ cần gọi function redirectTo("/home"). Viết function kiểu đó vừa gọn nhẹ, vừa clear. Code cũng tái sử dụng tốt hơn.

Ý tưởng này anh em cũng có thể apply cho gửi function và nhiều tác vụ khác. Đơn cử như gửi notification dưới đây.

UserNotification::send($user_id, $notification);

Mẹo PHP này tuy nhỏ nhưng khá bổ ích, anh em nhớ note lại nha.

6. Đệ quy và sự lặp lại

Mục đích của mẹo PHP này khá đơn giản, anh em nên cố gắng sử dụng đệ quy càng nhiều càng tốt. Thay vì lặp lại quá nhiều, cứ khi nào thấy quá nhiều thì cố gắng sử dụng đệ quy.

/**
 * Returns request data
 *
 * This methods returns data passed into the request (request or form data).
 * This method returns get, post, put patch, delete or raw faw form data or NULL
 * if the data isn't found.
 *
 * @param string|array $params The parameter(s) to return
 * @param bool $safeData Sanitize output
 */

Hàm này trả về array hoặc string tuỳ theo input đầu vào. Giải pháp là nếu đầu vào là array thì sẽ loop từng item trên array đó.

public function get($params, bool $safeData = true)
{
    if (is_string($params)) return $this->body($safeData)[$params] ?? null;

    $data = [];
    foreach ($params as $param) {
        $data[$param] = $this->body($safeData)[$params] ?? null;
    }
    return $data;
}

Sẽ có một đoạn lặp đi lặp lại là $data[$param] = $this->body($safeData)[$params] ?? null;. Thay vì lặp foreach kiểu đó, anh em có thể sử dụng đệ quy:

public function get($params, bool $safeData = true)
{
    if (is_string($params)) return $this->body($safeData)[$params] ?? null;

    $data = [];
    foreach ($params as $param) {
        $data[$param] = $this->get($param, $safeData); // I called the function again
    }
    return $data;
}

7. Tham khảo

Ngoài ra anh em có thể tham khảo thêm một số mẹo PHP khác:

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

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

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

 

So sánh Data Analyst với Business Analyst, nên chọn cái nào?

So sánh Data Analyst với Business Analyst

Data AnalystBusiness Analyst là 2 vị trí công việc khác nhau nhưng thường hay bị nhầm lẫn vai trò, chủ yếu là do đều cùng chức danh là nhà phân tích. Với sự phát triển của Big Data thì 2 vị trí trên ngày càng trở nên quan trọng trong một tổ chức. Để hiểu rõ hơn vai trò, nhiệm vụ của từng vị trí, bài viết hôm nay chúng ta cùng đi so sánh giữa Data Analyst và Business Analyst nhé.

Trước tiên, chúng ta cùng đi vào từng vai trò một để hiểu được công việc của một Nhà phân tích dữ liệu và Nhà phân tích kinh doanh là gì?

Data Analyst là gì?

Data Analyst – Chuyên viên phân tích dữ liệu là người sử dụng các công cụ đặc biệt để kiếm tra dữ liệu trong doanh nghiệp, sau đó sử dụng dữ liệu đó một cách chính xác và hiệu quả nhằm đưa ra các báo cáo, đánh giá về một vấn đề cụ thể trong tổ chức.

Data Analyst là gì?

Data Analyst có vai trò đảm bảo tính chính xác và khả năng sử dụng lại được dữ liệu, song song với đó là việc bảo vệ dữ liệu của tổ chức khỏi nguy cơ mất mát, bị đánh cắp. Với sức mạnh đến từ dữ liệu thì chuyên viên phân tích dữ liệu đóng vai trò quan trọng trong nhiều lĩnh vực khác nhau từ nông nghiệp, thực phẩm, du lịch,… nhằm có thể tận dụng được tiềm năng của dữ liệu để đưa ra những quyết định chiến lược quan trọng, tăng sức cạnh tranh của doanh nghiệp.

Business Analyst là gì?

Business Analyst – Chuyên viên phân tích kinh doanh là người có những hiểu biết về nghiệp vụ của hệ thống và trong lĩnh vực kinh doanh của doanh nghiệp, tổ chức. Business Analyst đóng vai trò xử lý các yêu cầu dịch vụ và đưa ra các giải pháp để cải tiến hệ thống hiện tại.

Data Analyst là gì?

Để làm việc như một chuyên viên phân tích kinh doanh, bạn cần có kiến thức về thống kê, phân tích định lượng, phân tích hoạt động kinh doanh, có khả năng trình bày, trực quan hóa dữ liệu để từ đó giải quyết các vấn đề liên quan đến kinh doanh, chiến lược hay giúp đưa ra quyết định. 

Có thể thấy một trong những kỹ năng quan trọng nhất mà Business Analyst cần có chính là phân tích dữ liệu được thu thập từ các nguồn khác nhau liên quan đến các hoạt động của tổ chức cũng như thị trường. Vì vậy mà công việc của Business Analyst sẽ có phần tương đồng với vai trò của một Data Analyst. Điểm khác nhau giữa 2 vị trí chuyên viên phân tích này là gì?

  Data scientist vs data analyst: những khác biệt mà bạn cần biết

  Phỏng Vấn Data Analyst: TOP 5 Câu Hỏi Bạn Không Nên Bỏ Qua!

So sánh giữa Data Analyst và Business Analyst

Data Analyst là gì?

1. Về nhiệm vụ

Business Analyst (BA) có nhiệm vụ chính là phân tích, xây dựng và phát triển kinh doanh. Để đạt được điều này thì BA cũng có nhiệm vụ lập báo cáo, xây dựng quy trình, thiết lập KPI cho từng bộ phận; từ đó giúp doanh nghiệp và tổ chức nhận định được một cách chính xác về thực trạng hiện tại và đưa ra được quyết định cho tương lai. Data Analyst (DA) có phạm vi nhiệm vụ nhỏ hơn, tập trung chính vào việc nghiên cứu, xử lý, bảo mật dữ liệu, hỗ trợ cung cấp các báo cáo mà tổ chức hay chính BA cần đến với từng nhiệm vụ cụ thể.

2. Về dữ liệu

DA là người thao tác trực tiếp với dữ liệu thô (dữ liệu nguồn) từ rất nhiều nguồn khác nhau; mức độ tin cậy và chính xác của dữ liệu cũng là một vấn đề là DA cần phải có biết tiền xử lý. Một DA có thể xuất phát từ người chuyên về kỹ thuật, sử dụng mô hình dữ liệu viết các câu lệnh để truy vấn các cơ sở dữ liệu từ các hệ quản trị cơ sở dữ liệu khác nhau. 

Đối với dữ liệu, BA thường sẽ được tiếp nhận số liệu báo cáo từ các bộ phận phía dưới, trong đó có DA. Dữ liệu dành cho BA đòi hỏi có sự tổng hợp và có ngữ nghĩa; tính chính xác cũng cao hơn so với dữ liệu mà DA xử lý.

Xem thêm tuyển dụng Data Analytics lương cao trên TopDev

3. Về kỹ năng

DA yêu cầu kỹ năng xử lý và phân tích dữ liệu thô để tìm ra những thông tin có giá trị. Để tối ưu hóa công việc này, DA là người xây dựng mô hình dữ liệu từ ban đầu hoặc sẽ là người xử lý chuẩn hóa dữ liệu doanh nghiệp hiện có. Ngoài ra, sau khi thu thập, xử lý, DA sẽ cần những kỹ năng sử dụng công cụ phân tích số liệu, kiến thức về thống kê cùng kỹ năng sử dụng các công cụ trực quan hóa để diễn giải và trình bày số liệu cho người khác.

BA yêu cầu nhiều hơn về các kiến thức kinh doanh cũng như nghiệp vụ trong doanh nghiệp, vì vậy họ cần có nhiều kiến thức tổng quan khác nhau liên quan đến quy trình, sản phẩm, lĩnh vực kinh doanh của tổ chức. Kỹ năng phân tích số liệu chỉ là một trong nhiều kỹ năng là BA cần phải có, tiếp đó họ cần nghiên cứu để có thể đưa ra được các cải tiến và đề xuất giải pháp trong kinh doanh. Cũng vì vậy, BA sẽ làm việc với nhiều phòng ban và bộ phận khác nhau, từ đó cần trang bị thêm các kỹ năng liên quan đến việc lắng nghe, giao tiếp cùng khả năng trình bày và thuyết phục người khác.

Kết bài

Từ những phân tích trong bài viết, có thể thấy Business Analyst là vị trí có phạm vi, vai trò, nhiệm vụ rộng hơn trong tổ chức so với Data Analyst. Điểm khác nhau cơ bản ở đây chính là việc Data Analyst chủ yếu tập trung vào phân tích dữ liệu, trong khi đó Business Analyst tập trung vào khía cạnh nghiệp vụ kinh doanh.

Vì vậy, nếu bạn có dự định trở thành một trong hai vị trí trên, hãy cân nhắc thật kỹ và có quyết định phù hợp với khả năng và định hướng của mình trong tương lai nhé. 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 IT hấp dẫn trên TopDev

SharePoint Developer là gì? Cần học gì để trở thành lập trình viên SharePoint

SharePoint Developer

Ra đời từ đầu những năm 2001, SharePoint được Microsoft giới thiệu với mục đích chủ yếu là để lưu trữ và quản lý tài liệu trong doanh nghiệp, tổ chức. Hiện nay, SharePoint trở thành một nền tảng dùng để phát triển ứng dụng Web, tích hợp với bộ công cụ Office với nhiều sản phẩm và công nghệ hữu ích cho người dùng.

Cũng nhờ đó mà anh em lập trình viên có hướng đi mới trở thành một SharePoint Developer, xây dựng và phát triển các ứng dụng trên nền tảng mạnh mẽ này. Bài viết hôm nay chúng ta cùng nhau tìm hiểu xem SharePoint Developer là gì? và cần học gì để trở thành một lập trình viên SharePoint nhé.

SharePoint là gì?

SharePoint là một nền tảng cộng tác làm việc (collaboration) dựa trên Web (web-based). Các doanh nghiệp sử dụng SharePoint sẽ tạo các trang Web nội bộ dành cho đội nhóm hoặc quy mô toàn công ty với tính bảo mật cao; từ những trang Web này, các thành viên trong tổ chức có thể truy cập, chia sẻ và chỉnh sửa các tài liệu một cách dễ dàng.

SharePoint là gì?

SharePoint có 4 nhóm người dùng chính gồm:

  • Developer: nhà phát triển SharePoint
  • Consultant: chuyên gia tư vấn, cầu nối giữa Developer và khách hàng có nhu cầu sử dụng SharePoint
  • Administrator: quản trị viên chịu trách nhiệm bảo mật, phân quyền, đảm bảo hoạt động của hệ thống
  • End-User: người sử dụng đầu cuối, thao tác với giao diện của SharePoint và không liên quan đến mặt kỹ thuật của hệ thống

SharePoint Developer là gì?

SharePoint Developer là các nhà phát triển SharePoint có vai trò chính tương tự như một lập trình viên tham gia vào quá trình xây dựng và phát triển các thành phần, ứng dụng dựa trên nhu cầu của doanh nghiệp.

SharePoint là gì?

SharePoint cung cấp nền tảng có sẵn các tính năng, tiện ích hỗ trợ nhu cầu của doanh nghiệp trong các hoạt động làm việc nhóm, hợp tác, quản lý tài nguyên, tài liệu,… SharePoint Developer là những người sẽ viết code xây dựng các Website trên SharePoint, tận dụng nền tảng này để tạo ra những ứng dụng đáp ứng nhu cầu tùy biến của tổ chức hay khách hàng.

Việc lựa chọn SharePoint làm nền tảng giúp các lập trình viên tiết kiệm được rất nhiều thời gian, chi phí viết code, xây dựng tính năng; doanh nghiệp cũng giảm bớt được chi phí, tối ưu hơn so với xây dựng từ đầu.

  Bỏ túi 8 API hữu ích cho anh em developer

  Top 9 app học lập trình tốt nhất cho các developer

Những kỹ năng cần có để trở thành SharePoint Developer

SharePoint là một nền tảng cộng tác làm việc, hay nói cách khác thì lập trình viên SharePoint sẽ tạo ra các ứng dụng, phần mềm giúp hỗ trợ các doanh nghiệp làm việc theo đội nhóm, quản lý, chia sẻ sử dụng các tài nguyên. Vì vậy, để làm việc cùng SharePoint, trước hết chúng ta cần có khái niệm về phần mềm, công cụ cộng tác cùng các quy trình nhóm áp dụng trong tổ chức doanh nghiệp mà SharePoint áp dụng. 

Tiếp theo đó, để làm việc, viết code, xây dựng các ứng dụng trên nền tảng SharePoint, lập trình viên cần trang bị những kỹ năng như dưới đây:

Kiến trúc SharePoint và mô hình đối tượng

Kiến trúc SharePoint và mô hình đối tượng

Các thành phần kiến trúc trong SharePoint bao gồm Web Application (ứng dụng Web), Site Collection (tập hợp các trang), Site (Trang), Library (Thư viện) và các Web Part/Workflow – chỉ ra cách lưu trữ và truy xuất thông tin trong SharePoint. Nắm rõ được các thành phần này là điều bắt buộc để bạn có thể làm việc với nền tảng SharePoint. Để thao tác với dữ liệu giữa các thành phần này, chúng ta cũng cần nắm được CAML (Collaboration And Markup Language) – ngôn ngữ truy vấn và truy xuất dữ liệu trong SharePoint, đồng thời thực hiện thao tác dữ liệu dựa trên mô hình đối tượng (Object Model).

Tuyển dụng việc làm Web Developer lương cao hấp dẫn trên TopDev!

Ngôn ngữ lập trình

C#JavaScript là 2 ngôn ngữ lập trình chính sử dụng trong SharePoint. Để tùy chỉnh các chức năng trong SharePoint, bạn cần nắm vững các khái niệm về biến, kiểu dữ liệu, vòng lặp, điều kiện và hàm trong C# để bắt đầu viết code. JavaScript sẽ dành cho việc xây dựng danh sách, tạo biểu mẫu hay các thành phần trong Web. Ngoài ra thì do SharePoint sẽ tạo ra các trang Web nội bộ trong doanh nghiệp sử dụng, vì vậy bạn cũng cần trang bị các kiến thức Frontend Web bao gồm HTML, CSS hay sử dụng thư viện jQuery để tùy chỉnh giao diện người dùng.

Kiến trúc SharePoint và mô hình đối tượng

Để thực hiện các thao tác với dữ liệu (query data), SharePoint sử dụng CAML (Collaboration and Markup Language) – ngôn ngữ truy vấn dựa trên cấu trúc XML. Vì vậy bạn cũng cần thành thạo với ngôn ngữ này để sử dụng.

Hiểu về vòng đời phát triển phần mềm trong SharePoint

Vòng đời phát triển phần mềm SDLC (Software Development Lifecycle) là kiến thức cần thiết để trở thành một SharePoint Developer. Mỗi một dự án cần được triển khai theo trình tự các bước trong vòng đời phát triển phần mềm, từ phân tích, thiết kế đến triển khai và kiểm tra, sau đó là bảo trì. 

Kiến trúc SharePoint và mô hình đối tượng

Trong quá trình viết code, SharePoint bắt buộc tuân theo các quy ước có sẵn và phải đáp ứng tiêu chuẩn đặt ra từ trước, cùng với việc có tài liệu rõ ràng. Một ứng dụng Web viết trong SharePoint có thể được trở thành các plugins, app để tái sử dụng, do vậy cần tuân thủ quy trình, kiếm thử đảm bảo các thành phần trong source code hoạt động đúng yêu cầu.

Kết bài

Như vậy chúng ta đã cùng nhau tìm hiểu về SharePoint Developer cũng như những kỹ năng mà một lập trình viên SharePoint cần có. SharePoint đang là một công cụ, nền tảng mà Microsoft tập trung đẩy mạnh, vì thế thành thạo sử dụng và lập trình SharePoint sẽ giúp bạn có nhiều cơ hội việc làm tốt hơn. 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:

Xem thêm tuyển dụng IT hấp dẫn trên TopDev

List 10 việc cần chuẩn bị trước khi “nhảy việc”

List 10 việc cần chuẩn bị trước khi

Bài viết được sự cho phép của tác giả Lê Tuấn Anh

Nếu bạn làm việc ở nhiều doanh nghiệp trong một thời gian ngắn (dưới 1 năm), khi đi phỏng vấn hoặc tìm việc mới bạn sẽ gặp phải băn khoăn từ phía nhà tuyển dụng với mác “hay nhảy việc”. Thực tế đây là một lo lắng dễ hiểu từ phía doanh nghiệp, không ai muốn mất công tuyển dụng và đào tạo một nhân viên chỉ để làm một thời gian ngắn rồi người đó đi sang nơi khác.

Vấn đề là có rất nhiều lý do khiến một người nghỉ việc, từ những lý do chủ quan như thay đổi định hướng công việc, stress cho tới những lý do khách quan như công ty cắt giảm, kết thúc dự án. Có sự chuẩn bị kĩ càng trước khi ra quyết định đổi việc sẽ giúp bạn có được những lựa chọn nghề nghiệp hợp lý hơn sau này, cũng như dễ dàng thuyết phục nhà tuyển dụng hơn khi được hỏi về thời gian cam kết làm việc.

Nếu bạn đang có ý định nghỉ công việc hiện tại và tìm kiếm công việc mới, đây là một số điều bạn cần làm trước khi ra quyết định.

1/ Đo lường độ hài lòng với công việc hiện tại.

Trong thời gian đi làm, bạn nên ghi lại trong sổ hoặc note trên máy tính về những việc bạn làm hàng ngày. Việc gì bạn cảm thấy thích? Việc gì làm bạn không thích? Những stress bạn đang có từ công việc này đến từ tính chất công việc, mức lương, con người hay môi trường làm việc? Bạn chỉ đơn giản đang cảm thấy hơi chán hay công việc đang thật sự ảnh hưởng tiêu cực đến sức khoẻ thể chất và tinh thần của bạn?

Bạn cần phân tích thật kĩ 7 tiêu chí chọn việc để xem mình đang hạnh phúc và không hạnh phúc với tiêu chí nào, như vậy khi tìm kiếm cơ hội mới bạn sẽ có thứ để so sánh. Nếu bạn đang xuống dốc về thể chất, chất lượng giấc ngủ giảm sút, thường xuyên cáu gắt hoặc tâm trang tiêu cực – đó là dấu hiệu đỏ về việc thay đổi.

2/ Đánh giá lại sở thích, kĩ năng và giá trị công việc

Đây là ba yếu tố cốt lõi hình thành bản thân bạn trong công việc. Bạn có thể kiểm tra lại sở thích và kĩ năng thông qua trắc nghiệm Hollandchọn lựa giá trị nghề nghiệp trong danh sách nhiều giá trị khác nhau. Ngoài ra, bạn có thể dành thời gian xem lại một lượt các công việc và dự án mình đã làm từ trước đến giờ, xem trong đó có phần việc nào bạn thích, phần việc nào bạn ghét. Có thể bạn không hài lòng với công việc hiện tại nhưng vẫn có một vài đầu việc nhỏ bạn cảm thấy ổn và vui vẻ, đó là đầu việc gì cần chỉ rõ được ra.

  "Vì sao nghỉ việc tại công ty cũ?": 5 lý do thuyết phục nhà tuyển dụng

3/ Bắt đầu tìm kiếm các vị trí làm việc khác trong lĩnh vực của mình

Nếu bạn nhảy từ lĩnh vực A sang lĩnh vực B, bạn có thể mất rất nhiều thời gian để học lại từ đầu. Chính vì vậy, mình khuyên các bạn hãy bắt đầu bằng việc nghiên cứu thật kĩ xem trong ngành nghề của mình có vị trí công việc nào khác mình có thể thử hay không.

Ví dụ, cùng là lĩnh vực Marketing nhưng có nhiều các đầu việc khác nhau như Sales, SEO, Content, Telemarketing, Email Marketing…, mỗi công việc lại đòi hỏi đặc trưng tính cách khác nhau. Để làm được việc này, bạn cần sử dụng Google. Bạn lên Google tìm “các công việc ngành A” hoặc “jobs in A industry” để xem chi tiết các công việc.

4/ Hoặc tìm kiếm các ngành hàng, thị trường khác với vị trí mình đang làm

Với những vị trí công việc bạn có thể làm việc được trong nhiều kiểu công ty khác nhau. Ví dụ bạn có thể làm nhân sự ở bất kỳ kiểu công ty nào: bất động sản, giáo dục, bảo hiểm, tài chính… Rất có thể bạn đang không hài lòng với môi trường ngành hàng hiện tại mình đang làm, nhưng sẽ vẫn ổn nếu có cơ hội làm việc ở ngành hàng khác. Hãy suy nghĩ theo hướng này.

5/ Phỏng vấn người làm trong mảng đó

Nếu bạn đang quan tâm đến một công ty mới, lĩnh vực mới hoặc một ngành nghề mới mà chưa có cơ hội được trải nghiệm, việc bạn có thể làm là tìm một ai đó trong lĩnh vực đó, kết nối và tìm kiếm thông tin. Thời nay là thời đại thông tin, không lo thiếu thông tin, chỉ lo bạn thiếu sự chủ động. Bạn có thể sử dụng LinkedIn để tìm kiếm, kết nối hoặc tìm đọc về một số nghề tại thư viện nghề nghiệp của hướng nghiệp Sông An.

Tạo CV online miễn phí

6/ Chuẩn bị một khoản tiết kiệm

Nếu bạn không chịu nổi nữa và quyết định nghỉ việc để nghỉ ngơi, bạn nên có một khoản tiết kiệm tối thiểu bằng 3-6 tháng chi tiêu thông thường của bản thân. Trong tài chính cá nhân gọi đây là “Quỹ khẩn cấp“. Nếu chuyên tâm tìm việc, mình tin rằng chỉ cần 2-3 tháng tập trung là bạn có thể tìm được công việc phù hợp. Tuy nhiên trong thời gian đó bạn cũng cần ăn, nên việc có một khoản tiết kiệm giúp bạn cảm thấy thoải mái và đỡ áp lực hơn khi đi tìm việc.

  Nhảy việc thất bại, có nên quay lại công ty cũ làm việc?

7/ Update lại CV và các thông tin trên các trang tuyển dụng

Nếu một thời gian dài không tìm việc, các thông tin trên CV và trên các trang tìm việc như TopDev, TopCV của bạn sẽ bị cũ. Nếu bạn có ý định tìm việc mới, bạn cần dành ra một vài hôm để cập nhật lại CV mới nhất, vừa sử dụng để đi ứng tuyển các công ty, vừa tạo điều kiện khi nhân sự tìm kiếm CV của bạn sẽ có được các thông tin mới nhất. Bạn có thể xem các hướng dẫn cập nhật CV mới nhất tại đây.

8/ Thông báo đến các mối quan hệ

Nếu đến một thời điểm bạn đã quyết định đổi việc và đã có trong đầu một số ý tưởng công việc mới, đừng ngần ngại liên hệ lại những người bạn cũ, sếp cũ, những người bạn đang giữ quan hệ tốt để thông báo về ý định đổi việc của bạn. Bất kì ai cũng có thể là người tiềm năng biết một số những công việc hay ho để giới thiệu cho chúng ta.

9/ Xây dựng thương hiệu cá nhân và dành thời gian học kĩ năng mới

Khoảng thời gian giữa lúc muốn nghỉ công việc cũ và tìm công việc mới thường làm cho chúng ta bị chây ì. Hãy hạn chế việc này bằng việc xây dựng thương hiệu cá nhân cho bản thân hoặc học một thứ gì đó mới. Ví dụ, bạn viết blog hoặc quay Tiktok chia sẻ một số kiến thức về lĩnh vực bạn biết. Hoặc bạn lên Udemy, Coursera để tìm học một khoá học mới về một kĩ năng bất kì trong lĩnh vực mới bạn quan tâm.

10/ Tinh thần và sức khoẻ đi đôi với công việc

Khoảng thời gian suy nghĩ về việc có nên nghỉ việc hay không là khoảng thời gian rất stress với nhiều người. Hãy nhớ rằng cách để giảm bớt stress là bạn có sức khoẻ tinh thần và thể chất tốt. Đừng vì công việc mà bỏ quên việc ăn uống, tập luyện hay ngồi thiền. Dù công việc đang không ổn, dù chưa tìm được việc ưng ý, hãy cố gắng tiếp tục duy trì các thói quen tốt về ăn uống, tập luyện – điều này giúp cho bạn có được tâm trí và tinh thần minh mẫn, tự tin tìm kiếm các công việc tiếp theo.

Khi bạn có ý định đổi việc và vẫn có nhiều băn khoăn, bạn có thể đặt lịch tư vấn hướng nghiệp cùng Tuấn Anh – mình sẽ có các bài tập và các buổi nói chuyện giúp bạn bóc tách vấn đề, tìm kiếm công việc phù hợp và viết lại hồ sơ tốt nhất.

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

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

Xem thêm Top tìm việc IT lương cao HOT nhất trên TopDev

Axios là gì? So sánh Axios và Fetch

Axios là gì

Anh em lập trình Web thì chắc không còn xa lạ gì với Axios, một thư viện giúp chúng ta xử lý các request giữa client và server. Axios được ưa chuộng và sử dụng rộng rãi trong rất nhiều dự án và nó luôn được nằm trong top 20 những thư viện được download (gần 50 triệu lượt mỗi tuần) và sử dụng nhiều nhất từ NPM. Bài viết hôm nay chúng ta cùng đi trả lời cho câu hỏi Axios là gìtại sao nên sử dụng Axios nhé. 

Axios là gì?

Axios là một thư viện HTTP Client dựa trên Promise, có thể chạy được trên cả trình duyệt và NodeJS (phía server). Ở phía trình duyệt, Axios sử dụng XMLHttpRequest (XHR) cung cấp một API cho việc gọi và xử lý request/ response lên server; ngược lại ở phía server thì Axios sử dụng native module http trong NodeJS để xử lý. 

Axios là gì?

Tính năng Axios cung cấp:

  • Tạo request từ trình duyệt bằng XMLHttpRequest
  • Tạo request từ NodeJS bằng http
  • Hỗ trợ Promise API
  • Cho phép tiền xử lý trước lúc gửi request và nhận response với tính năng Interceptor
  • Chủ động biến đổi dữ liệu request và response, hỗ trợ mặc định kiểu JSON data
  • Hỗ trợ hủy request chủ động bằng AbortController
  • Hỗ trợ client chống lại tấn công kiểu XSRF

Việc sử dụng Axios cũng giúp chúng ta tiết kiệm được nhiều thời gian viết code, source code trở nên ngắn gọn và dễ đọc hơn. Nhờ vậy, Axios đang là thư viện được sử dụng phổ biến trong các ứng dụng Web hiện nay.

  TOP 10 Web Framework tốt nhất, đáng dùng nhất – Phần 1

  So sánh Laravel và Phalcon - Framework nào tốt hơn?

Cài đặt và sử dụng Axios

Việc cài đặt Axios khá đơn giản và bạn có thể sử dụng một trong những cách dưới đây:

  • Sử dụng npm: $ npm install axios
  • Sử dụng bower: $ bower install axios
  • Sử dụng jsDelivr CDN: <script src=”https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js”></script>
  • Sử dụng unpkg CDN: <script src=”https://unpkg.com/axios/dist/axios.min.js”></script>

Axios cung cấp sẵn alias cho tất cả phương thức request được hỗ trợ:

  • axios.request(config)
  • axios.get(url[, config])
  • axios.delete(url[, config])
  • axios.head(url[, config])
  • axios.options(url[, config])
  • axios.post(url[, data[, config]])
  • axios.put(url[, data[, config]])
  • axios.patch(url[, data[, config]])

API Axios là những Promise (tác vụ bất đồng bộ), vì thế chúng ta dễ dàng xử lý Response trả về sử dụng then hay catch để bắt lỗi nếu có xảy ra. Một lời gọi API hoàn chỉnh trong Axios sẽ được thực hiện với đoạn code như dưới đây:

axios
  .get("/user/12345")
  .then(function (response) {
    console.log(response.data);
  })
  .catch(function (error) {
    if (error.response) {
      console.log(error.response.data);
    } else if (error.request) {
      console.log(error.request);
    } else {
      console.log("Lỗi", error.message);
    }
  });

Xem thêm việc làm web developer hấp dẫn trên TopDev

Interceptors trong Axios

Interceptors là tính năng hữu ích và là lý do mà Axios được nhiều anh em Frontend Dev sử dụng; đây là một chức năng giúp chúng ta có thể can thiệp vào trước lúc mọi request được gửi đi và mọi response được nhận về, thông qua đó xử lý các bài toán tổng quan thường xảy ra, ví dụ:

  • Đính kèm token xác thực
  • Xử lý refresh token nếu response trả về lỗi (thông thường mã lỗi là 401)
  • Biến đổi dữ liệu response về theo định dạng chung
  • Cancel request nếu cần thiết

Axios là gì?

Có 2 loại Interceptors trong Axios:

  • Request Interceptors: cho phép chúng ta can thiệp vào trước mọi request được gửi đi
axios.interceptors.request.use(
  function (config) {
    // Thực hiện kịch bản gì đó trước khi gửi
    return config;
  },
  function (error) {
    // Thực hiện kịch bản gì đó khi yêu cầu bị lỗi
    return Promise.reject(error);
  },
);
  • Response Interceptors: cho phép chúng ta can thiệp vào trước mọi response được nhận về
axios.interceptors.response.use(
  function (response) {
    // Thực thi các kịch bản cần thiết ở đây
    // trước khi response đến điểm cuối
    return response;
  },
  function (error) {
    // Thực thi đối với các phản hồi bị lỗi
    // status code: 4xx, 5xx.
    return Promise.reject(error);
  }
);

So sánh Axios và Fetch

Cả Axios và Fetch đều là những thư viện sử dụng để thực hiện HTTP Request, hỗ trợ hầu hết các request methods từ POST, GET, PUT, DELETE,… Cả 2 cũng đều cung cấp hỗ trợ Promise để xử lý request và nhận response thông qua then và catch. Vậy điểm khác nhau giữa Axios và Fetch là gì và nên lựa chọn thư viện nào?

So sánh Axios và Fetch

Trước tiên, Fetch là một công cụ được tích hợp sẵn trong các trình duyệt hiện nay, là một phần tiêu chuẩn JavaScript mà bạn không cần cài đặt gì thêm. Đấy là ưu điểm nhưng cũng là nhược điểm của Fetch so với Axios. Fetch nhẹ nhàng, không cần đòi hỏi cài đặt thêm như Axios nhưng mức độ tương thích giữa các trình duyệt lại có sự khác nhau; trong khi đó Axios đảm bảo được tính nhất quán mà không phụ thuộc vào version của trình duyệt.

Ngoài ra, Axios cung cấp cho chúng ta nhiều tính năng hơn so với Fetch, cụ thể:

  • Xử lý JSON tự động. Fetch sẽ yêu cầu bạn gọi .json() để chuyển đổi
  • Tính năng Interceptors. Fetch không tích hợp
  • Tính năng hủy request. Fetch không có tính năng này
  • Hỗ trợ cài đặt plugin mở rộng. Fetch yêu cầu viết mã tùy chỉnh nếu muốn

Thực tế dự án với các ứng dụng Web đơn giản, không đòi hỏi các tương tác nhiều với người dùng như các Web tin tức, giới thiệu,… thì sử dụng Fetch là đủ. Axios sẽ phù hợp hơn cho các ứng dụng client có nhiều chức năng hơn như Single Page Application, các hệ thống quản trị nội dung, thao tác CRUD với dữ liệu.

Kết bài

Như vậy chúng ta đã cùng nhau tìm hiểu về Axios, những tính năng mà thư viện này mang lại. Axios là một thư viện HTTP Request được ưu chuộng trong cộng đồng phát triển Web hiện tại với sự hữu ích và tiện lợi mà nó mang lại; vì thế khi bắt đầu với một project Web, bạn có thể cân nhắc lựa chọn và sử dụng nó làm thư viện xử lý các lời gọi API của mình. Hy vọng bài viết hữu ích dành cho bạn 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 Việc làm IT hấp dẫn trên TopDev

Lộ trình trở thành Ruby Developer cho người mới bắt đầu

Lộ trình trở thành Ruby Developer cho người mới bắt đầu

Bước đầu tiên để phát triển sự nghiệp bản thân là xác định rõ những gì anh em muốn. Anh em muốn thành lập trình viên chuyên nghiệp hay học thêm chỉ như một ngôn ngữ mới.

Nếu anh em xác định Ruby là ngôn ngữ lập trình chính (main skill) thì road map chiến đấu ngôn ngữ này cần được sắp xếp và lên kế hoạch bài bản. Một kế hoạch tốt vừa tiết kiệm công sức, vừa giúp anh em giỏi lên nhanh chóng.

Bài viết này giới thiệu tới anh em lộ trình chi tiết giúp anh em trở thành Ruby Developer!

1. Ruby là gì?

Đầu tiên Ruby là ngôn ngữ lập trình chứ không phải đá đỏ. Khi nói đến ngôn ngữ lập trình, có rất nhiều ngôn ngữ để anh em có thể lựa chọn, từ Python đến C#, cho tới Java, Golang. Nhưng nếu anh em đang muốn phát triển ứng dụng thiệt là nhanh thì Ruby là ngôn ngữ dành cho anh em. Không trật vào đâu được.

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

Ruby là open-source scripting language (dạng ngôn ngữ kịch bản), tất nhiên là open source. Ông này thì tạo ra 90 bởi Yukihiro Matsumoto. Ông Matsumoto này tạo ra Ruby với mục đích thúc đẩy lập trình hướng đối tượng (OOP) và tái sử dụng code, tái sử dụng càng nhiều thì tốc độ phát triển lên cao, ngoài ra Ruby cũng có cú pháp đơn giản để xử lý dữ liệu (data process) và logic. Logic thì cho problem solving.

Đó là câu chuyện về Ruby, anh em có thể đọc sơ history của Ruby on Rails.

  Những điều cần biết về Ruby on Rail developer
  Ruby vs Python: Đâu mới là ngôn ngữ tốt hơn cho lập trình ứng dụng

2. Kế tới là Rail, từ Ruby tới Ruby on Rail

Như đã giới thiệu thì Ruby là ngôn ngữ lập trình, còn thêm Rail nữa thì lại trở thành framework, với các module xây dựng sẵn giúp anh em đơn giản hoá việc xây dựng website. Chính vì vậy, Rails là mở rộng ngôn ngữ Ruby. Nó giúp giải quyết các vấn đề hàng ngày, đảm bảo dễ sử dụng khi anh em xây dựng website. Thay vì vật lộn mới mấy thứ common, code ì ạch từng module thì Rails cung cấp những giải pháp đó anh em từ đầu.

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

Nói vậy không có nghĩa là Rail giải quyết hết nha, nếu module hoặc logic đó anh em cảm thấy cần động vào sâu thì vẫn phải động tới Ruby. Ruby on Rails cũng là một ngôn ngữ đáng để học, đầu tiên là nó open source. Hai nữa là Ruby cũng phổ biến và nhu cầu về Ruby on Rails thì thấy mỗi ngày một nhiều. Ruby và RoR sau Laravel cũng trở thành framework Web phổ biến. Điển hình có GitHub, eBay và Twitter đang sử dụng framework Ruby on Rails.

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

3. Lương lậu các kiểu

Ngôn ngữ tốt, framework mạnh thì rõ ràng nhu cầu về anh em developer Ruby on Rails tài năng chắc chắn là chỉ có tăng chứ không có giảm, tuy nhiên các nhà tuyển dụng yêu cầu những anh em có kinh nghiệm về Ruby.

Theo như thông tin sơ sơ bộ bộ thì từ Indeed cho thấy lương trung bình của Ruby on Rails developer cao hơn 86% so với mức lương trung bình của các ngôn ngữ khác. Còn theo cái mà anh em developer mình hay coi – Stack Overflow thì năm 2022, Ruby đứng thứ 5 trong danh sách các ngôn ngữ lập trình được trả lương cao nhất.

Do nằm trong top 5 trả lương cao nên, Ruby đúng nghĩa là Ruby luôn, code tới code luôn về mua được cục Ruby đỏ.

4. Cà ri pát (carrer path)

carrer path

4.1 Từ Junior tới Senior

Khi anh em đã thành thạo đã thành thạo Ruby và RoR, lên level thôi anh em. Mấy anh em mà có hơn 5 năm kinh nghiệm trong nghề luôn chú ý nâng cao trình độ ngôn ngữ lập trình của mình. Mà không chỉ kĩ năng code, mấy anh em đó cũng trau dồi kỹ năng giao tiếp cá nhân, kỹ năng quản lý dự án và kỹ năng thiết kế.

Số năm kinh nghiệm làm việc với tư cách là developer có thể tạo nên sự khác biệt cho sự thành công của anh em. Anh em càng dành nhiều thời gian cho các dự án Ruby hoặc Rails thì anh em càng có nhiều khả năng phải đối mặt với nhiều thách thức hơn. Mà đã là cái khó, cái thách thức, thì anh em lại càng có thể trau dồi kỹ năng của mình và đảm bảo là có giải pháp cho mọi vấn đề. Kinh nghiệm lâu năm với Ruby và Rails cũng sẽ trang bị cho anh em những cách sáng tạo, khéo léo để tiếp cận các dự án mới, đảm bảo hiệu quả.

4.2 Kỹ năng, kỹ năng và kỹ năng

Một khi đã lựa chọn trở thành Ruby/Rail developer thì kĩ năng đầu tiên cần trau dồi là code, code Ruby. Tập trung vào thuộc làu làu cú pháp cho Ruby. Ngoài ra cũng cần focus vào lập trình hướng đối tượng cho Ruby on Rails là điều cần thiết, kiến trúc Model View Controller (MVC), API REST,….

Với tư cách là Senior Developer Ruby/Rails, anh em sẽ làm việc với cơ sở dữ liệu có thể bao gồm SQL, MySQL và PostgreSQL. Tất cả đều cần thiết.

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

Tuy nhiên cho dễ dàng hơn thì nên cung cấp cho anh em 1 danh sách. Liên quan tới việc trở thành Senior Developer.

    • Cú pháp (syntax) : Anh em sẽ cần viết một số ngôn ngữ cơ bản bao gồm: vòng lặp, câu lệnh điều kiện (if-else), lớp (class), mô-đun, v.v.
    • Lập trình OOP (OOP Programming): Khi làm việc với lập trình hướng đối tượng, anh em cần biết cần biết một số khái niệm về OOP trong Ruby, chẳng hạn như các lớp, đối tượng, tính kế thừa, khối (block) và mở rộng mô-đun.
    • Kiến trúc MVC: Như đã đề cập ở trên, MVC là một cấu trúc của framework Ruby on Rails. Anh emc ần biết cần biết mỗi lớp chịu trách nhiệm gì và cách anh em có thể tổ chức chương trình của mình để biết vị trí của từng phần và nó trông như thế nào.
    • ERB/Haml: Hai trong số các hệ thống view/format phổ biến nhất.
    • Unit Test với RSpec: anh em viết Unit test trên toàn bộ hệ thống với Ruby/Rails.
    • API + JSON
    • Giao thức HTTP và REST
    • HTML5 JavaScript CSS
    • Cơ bản về SQL MySQL / PostgreSQL, hai công cụ cơ sở dữ liệu phổ biến.
    • Git: Đây là một công cụ thiết yếu để quản lý mã và giúp ích khi tạo thư mục mới.
    • Công cụ quản lý / dự án: Trello, Asana, Pivotal, GitHub và nhiều công cụ khác.’

Song song với khía cạnh ‘công nghệ’, anh em có thể cân nhắc phát triển các kỹ năng khác, đặc biệt là kỹ năng giao tiếp. Trở thành cấp trên Senior đòi hỏi các tố chất lãnh đạo, quản lý dự án và khả năng trình bày với cấp trên của mình. Giải quyết các kì của khách hàng và các bên liên quan.

5. Road map cụ thể

Chi tiết road map để trở thành Senior Ruby on Rail anh em có thể xem ở đây nhé. Chi tiết và đầy đủ

roadmap Ruby on Rail

Ví như Rail framework, anh emc ần tìm hiểu CRM, User Magement, các Best practice, CLI, REST, MVC. Anh em có thể xem chi tiết trong hình vẽ

6. 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

Xem thêm các việc làm IT lương cao hấp dẫn tại TopDev