Home Blog Page 5

Bỏ túi cheatsheet PostgreSQL hữu ích cho mọi developer

cheatsheet PostgreSQL

Bài viết được sự cho phép của tác giả Nguyễn Thành Nam

I. Tổng hợp PostgreSQL Cheatsheet

1. Cơ bản

Các lệnh dưới đây giúp bạn bắt đầu với PostgreSQL, bao gồm chuyển đổi và kết nối, liệt kê cơ sở dữ liệu, kết nối đến một cơ sở dữ liệu cụ thể, và ngắt kết nối.

# Chuyển đổi và kết nối
$ sudo -u postgres psql
# Liệt kê tất cả cơ sở dữ liệu
postgres=# \l
# Kết nối đến cơ sở dữ liệu có tên là postgres
postgres=# \c postgres
# Ngắt kết nối
postgres=# \q
postgres=# \!

⚡️ Các lệnh psql

Tùy chọn Ví dụ Mô tả
[-d] <database> psql -d mydb Kết nối đến cơ sở dữ liệu
-U psql -U john mydb Kết nối với một người dùng cụ thể
-h -p psql -h localhost -p 5432 mydb Kết nối đến một máy chủ/địa chỉ cụ thể
-U -h -p -d psql -U admin -h 192.168.1.5 -p 2506 -d mydb Kết nối PostgreSQL từ xa
-W psql -W mydb Yêu cầu nhập mật khẩu
-c psql -c ‘\c postgres’ -c ‘\dt’ Thực thi một truy vấn SQL hoặc lệnh
-H psql -c “\l+” -H postgres > database.html Tạo báo cáo HTML
-l psql -l Liệt kê tất cả các cơ sở dữ liệu
-f psql mydb -f file.sql Thực thi các lệnh từ một tập tin
-V psql -V In phiên bản của psql

⚡️ Nhận trợ giúp: Chạy trong PostgreSQL console

Lệnh Mô tả
\h Trợ giúp về cú pháp của các lệnh SQL
\h DELETE Cú pháp câu lệnh SQL DELETE
\? Danh sách các lệnh PostgreSQL

2. PostgreSQL Working

⚡️ Recon: Các truy vấn SQL được sử dụng để thu thập thông tin về phiên bản, trạng thái hệ thống, biến môi trường, người dùng, cơ sở dữ liệu, bảng, và hàm trong PostgreSQL.

-- Hiển thị phiên bản
SHOW SERVER_VERSION;
-- Hiển thị trạng thái hệ thống
\conninfo
-- Hiển thị biến môi trường
SHOW ALL;
-- Liệt kê người dùng
SELECT rolname FROM pg_roles;
-- Hiển thị người dùng hiện tại
SELECT current_user;
-- Hiển thị quyền của người dùng hiện tại
\du
-- Hiển thị cơ sở dữ liệu hiện tại
SELECT current_database();
-- Hiển thị tất cả các bảng trong cơ sở dữ liệu
\dt
-- Liệt kê các hàm
\df <schema>

⚡️ Databases

-- Liệt kê các cơ sở dữ liệu
\l
-- Kết nối đến cơ sở dữ liệu
\c <database_name>
-- Hiển thị cơ sở dữ liệu hiện tại
SELECT current_database();
-- Tạo cơ sở dữ liệu
CREATE DATABASE <database_name> WITH OWNER <username>;
-- Xóa cơ sở dữ liệu
DROP DATABASE IF EXISTS <database_name>;
-- Đổi tên cơ sở dữ liệu
ALTER DATABASE <old_name> RENAME TO <new_name>;

⚡️ Tables

-- Liệt kê các bảng trong cơ sở dữ liệu hiện tại
\dt

-- Hoặc
SELECT table_schema, table_name FROM information_schema.tables ORDER BY table_schema, table_name;
-- Liệt kê tất cả các bảng toàn cầu
\dt *.*.

-- Hoặc
SELECT * FROM pg_catalog.pg_tables
-- Hiển thị schema của bảng
\d <table_name>

-- Hoặc
\d+ <table_name>

-- Hoặc
SELECT column_name, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '<table_name>';
-- Tạo bảng
CREATE TABLE <table_name>(
  <column_name> <column_type>,
  <column_name> <column_type>
);
-- Tạo bảng với khóa chính tự tăng
CREATE TABLE <table_name> (
  <column_name> SERIAL PRIMARY KEY
);
-- Xóa bảng
DROP TABLE IF EXISTS <table_name> CASCADE;

⚡️ Quyền hạn (Permissions)

-- Trở thành người dùng postgres, nếu bạn gặp lỗi quyền hạn
sudo su - postgres
psql
-- Cấp tất cả quyền hạn cho cơ sở dữ liệu
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;
-- Cấp quyền kết nối cho cơ sở dữ liệu
GRANT CONNECT ON DATABASE <db_name> TO <user_name>;
-- Cấp quyền sử dụng cho schema
GRANT USAGE ON SCHEMA public TO <user_name>;
-- Cấp quyền thực thi cho các hàm
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;
-- Cấp quyền chọn, cập nhật, thêm mới vào tất cả các bảng
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <user_name>;
-- Cấp quyền chọn, cập nhật, thêm mới vào một bảng
GRANT SELECT, UPDATE, INSERT ON <table_name> TO <user_name>;
-- Cấp quyền chọn cho tất cả các bảng trong schema public
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_name>;

⚡️ Cột (Columns)

-- Thêm cột
ALTER TABLE <table_name> IF EXISTS
ADD <column_name> <data_type> [<constraints>];
-- Cập nhật cột
ALTER TABLE <table_name> IF EXISTS
ALTER <column_name> TYPE <data_type> [<constraints>];
-- Xóa cột
ALTER TABLE <table_name> IF EXISTS
DROP <column_name>;
-- Cập nhật cột để làm khóa chính tự tăng
ALTER TABLE <table_name>
ADD COLUMN <column_name> SERIAL PRIMARY KEY;
-- Chèn dữ liệu vào bảng, với khóa chính tự tăng
INSERT INTO <table_name>
VALUES (DEFAULT, <value1>);

-- Hoặc
INSERT INTO <table_name> (<column1_name>, <column2_name>)
VALUES (<value1>, <value2>);

⚡️ Dữ liệu (databases): Các câu lệnh được sử dụng để truy vấn và thao tác dữ liệu trong PostgreSQL.

-- Chọn tất cả dữ liệu
SELECT * FROM <table_name>;
-- Đọc một hàng dữ liệu
SELECT * FROM <table_name> LIMIT 1;
-- Tìm kiếm dữ liệu
SELECT * FROM <table_name> WHERE <column_name> = <value>;
-- Chèn dữ liệu
INSERT INTO <table_name> VALUES(<value_1>, <value_2>);
-- Cập nhật dữ liệu
UPDATE <table_name>
SET <column_1> = <value_1>, <column_2> = <value_2>
WHERE <column_1> = <value>;
-- Xóa tất cả dữ liệu
DELETE FROM <table_name>;
-- Xóa dữ liệu cụ thể
DELETE FROM <table_name>
WHERE <column_name> = <value>;

⚡️ Người dùng (Users)

-- Liệt kê các vai trò
SELECT rolname FROM pg_roles;
-- Tạo người dùng
CREATE USER <user_name> WITH PASSWORD '<password>';
-- Xóa người dùng
DROP USER IF EXISTS <user_name>;
-- Thay đổi mật khẩu người dùng
ALTER ROLE <user_name> WITH PASSWORD '<password>';

⚡️ Schema

-- Liệt kê các schema
\dn

-- Hoặc
SELECT schema_name FROM information_schema.schemata;

-- Hoặc
SELECT nspname FROM pg_catalog.pg_namespace;
-- Tạo schema
CREATE SCHEMA IF NOT EXISTS <schema_name>;
-- Xóa schema
DROP SCHEMA IF EXISTS <schema_name> CASCADE;

⚡️ Dates

-- Hiển thị ngày hiện tại theo định dạng YYYY-MM-DD
SELECT current_date;
-- Tính tuổi giữa hai ngày
SELECT age(timestamp, timestamp);
-- Hiển thị thời gian hiện tại với múi giờ
SELECT current_time;
-- Tạo ngày sử dụng các số nguyên
SELECT make_date(2021, 03, 25);

3. PostgreSQL Commands

⚡️ Tables

Lệnh Mô tả
\d <table> Miêu tả bảng
\d+ <table> Miêu tả bảng với chi tiết
\dt Liệt kê bảng từ schema hiện tại
\dt . Liệt kê bảng từ tất cả schemas
\dt <schema>.* Liệt kê bảng cho một schema
\dp Liệt kê quyền truy cập bảng
\det[+] Liệt kê bảng ngoại trời

⚡️ Query buffer: các lệnh thường được sử dụng để chỉnh sửa và quản lý nội dung của bộ lệnh truy vấn trong PostgreSQL.

Lệnh Mô tả
\e [FILE] Chỉnh sửa bộ lệnh truy vấn (hoặc file)
\ef [FUNC] Chỉnh sửa định nghĩa hàm
\p Hiển thị nội dung
\r Đặt lại (xóa) bộ lệnh truy vấn
\s [FILE] Hiển thị lịch sử hoặc lưu nó vào file
\w FILE Ghi bộ lệnh truy vấn vào file

⚡️ Thông tin

  • S: hiển thị các đối tượng hệ thống.
  • +: chi tiết bổ sung.
Lệnh Mô tả
\l[+] Liệt kê tất cả cơ sở dữ liệu
\dn[S+] Liệt kê các schema
\di[S+] Liệt kê các chỉ mục
\du[+] Liệt kê các vai trò
\ds[S+] Liệt kê các chuỗi số
\df[antw][S+] Liệt kê các hàm
\deu[+] Liệt kê các ánh xạ người dùng
\dv[S+] Liệt kê các view
\dl Liệt kê các đối tượng lớn
\dT[S+] Liệt kê các loại dữ liệu
\da[S] Liệt kê các hợp nhất
\db[+] Liệt kê các không gian bảng
\dc[S+] Liệt kê các chuyển đổi
\dC[+] Liệt kê các chuyển đổi
\ddp Liệt kê quyền mặc định
\dd[S] Hiển thị mô tả đối tượng
\dD[S+] Liệt kê các miền
\des[+] Liệt kê máy chủ ngoại trời
\dew[+] Liệt kê các bọc dữ liệu ngoại trời
\dF[+] Liệt kê cấu hình tìm kiếm văn bản
\dFd[+] Liệt kê từ điển tìm kiếm văn bản
\dFp[+] Liệt kê bộ phân tích tìm kiếm văn bản
\dFt[+] Liệt kê mẫu tìm kiếm văn bản
\dL[S+] Liệt kê ngôn ngữ thủ tục
\do[S] Liệt kê các toán tử
\dO[S+] Liệt kê các so sánh
\drds Liệt kê cài đặt vai trò mặc định
\dx[+] Liệt kê các tiện ích mở rộng

⚡️ Kết nối (Connection)

Lệnh Mô tả
\c [DBNAME] Kết nối đến cơ sở dữ liệu mới
\encoding [ENCODING] Hiển thị hoặc đặt mã hóa máy khách
\password [USER] Thay đổi mật khẩu
\conninfo Hiển thị thông tin

⚡️ Định dạng (Formatting)

Lệnh Mô tả
\a Chuyển đổi giữa chế độ không căn chỉnh và căn chỉnh
\C [STRING] Đặt tiêu đề bảng, hoặc hủy nếu không có
\f [STRING] Hiển thị hoặc đặt ngăn cách trường cho chế độ không căn chỉnh
\H Chuyển đổi chế độ xuất HTML
\t [on|off] Hiển thị chỉ các hàng
\T [STRING] Đặt hoặc hủy bỏ các thuộc tính thẻ HTML <table>
\x [on|off] Chuyển đổi đầu ra mở rộng

⚡️ Input/Output

Lệnh Mô tả
\copy … Nhập/xuất bảng
\echo [STRING] In chuỗi
\i FILE Thực thi tệp
\o [FILE] Xuất tất cả kết quả ra file
\qecho [STRING] Chuỗi đầu ra luồng

⚡️ Variables

Lệnh Mô tả
\prompt [TEXT] NAME Đặt biến
\set [NAME [VALUE]] Đặt biến (hoặc liệt kê tất cả nếu không có tham số)
\unset NAME Xóa biến

⚡️ Misc

Lệnh Mô tả
\cd [DIR] Thay đổi thư mục
\timing [on|off] Chuyển đổi đồng hồ
! [COMMAND] Thực thi trong shell
! ls -l Liệt kê tất cả trong shell

4. Miscellaneous

⚡️ Sao lưu (Backup): sao lưu cơ sở dữ liệu PostgreSQL bằng các công cụ pg_dump và pg_dumpall

# Sử dụng pg_dumpall để sao lưu tất cả cơ sở dữ liệu
$ pg_dumpall -U postgres > all.sql
# Sử dụng pg_dump để sao lưu một cơ sở dữ liệu
$ pg_dump -d mydb -f mydb_backup.sql
  -a   Dump chỉ dữ liệu, không có cấu trúc
  -s   Dump chỉ cấu trúc, không có dữ liệu
  -c   Xóa cơ sở dữ liệu trước khi tái tạo
  -C   Tạo cơ sở dữ liệu trước khi khôi phục
  -t   Dump chỉ bảng(s) được đặt tên
  -F   Định dạng (c: tùy chỉnh, d: thư mục, t: tar)

Sử dụng pg_dump -? để xem danh sách đầy đủ các tùy chọn.

⚡️ Khôi phục (Restore): khôi phục cơ sở dữ liệu PostgreSQL bằng các công cụ psql và pg_restore.

# Khôi phục một cơ sở dữ liệu với psql
$ psql -U user mydb < mydb_backup.sql
# Khôi phục một cơ sở dữ liệu với pg_restore
$ pg_restore -d mydb mydb_backup.sql -c
  -U   Chỉ định người dùng cơ sở dữ liệu
  -c   Xóa cơ sở dữ liệu trước khi tái tạo
  -C   Tạo cơ sở dữ liệu trước khi khôi phục
  -e   Thoát nếu gặp lỗi
  -F   Định dạng (c: tùy chỉnh, d: thư mục, t: tar, p: văn bản thô sql (mặc định))

Sử dụng pg_restore -? để xem danh sách đầy đủ các tùy chọn.

⚡️ Truy cập từ xa (Remote access): sử dụng để cấu hình và khởi động lại PostgreSQL để cho phép truy cập từ xa.

# Lấy vị trí của postgresql.conf
$ psql -U postgres -c 'SHOW config_file'
# Thêm vào postgresql.conf
listen_addresses = '*'
# Thêm vào pg_hba.conf (Cùng vị trí với postgresql.conf)
host  all  all  0.0.0.0/0  md5
host  all  all  ::/0       md5
# Khởi động lại máy chủ PostgreSQL
$ sudo systemctl restart postgresql

⚡️ Nhập/Xuất CSV

# Xuất bảng vào tệp CSV
\copy table TO '<path>' CSV
\copy table(col1,col1) TO '<path>' CSV
\copy (SELECT...) TO '<path>' CSV
# Nhập tệp CSV vào bảng
\copy table FROM '<path>' CSV
\copy table(col1,col1) FROM '<path>' CSV

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

Xem thêm:

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

Claude AI là gì? Tìm hiểu đối thủ đáng gờm của ChatGPT

Claude AI là gì

Claude AI là một trong những nền tảng trí tuệ nhân tạo nổi bật, được xem là đối thủ cạnh tranh trực tiếp với ChatGPT. Với khả năng xử lý ngôn ngữ tự nhiên và các ứng dụng đa dạng, Claude AI hứa hẹn mang lại nhiều lợi thế trong các lĩnh vực từ kinh doanh, giáo dục cho đến chăm sóc sức khỏe. Vậy Claude AI là gì và tại sao nó lại được đánh giá cao trong thế giới AI? Hãy cùng khám phá chi tiết hơn trong bài viết dưới đây.

Claude AI là gì?

Claude AI là gì?

Claude AI là một nền tảng trí tuệ nhân tạo do Anthropic phát triển, được thiết kế để xử lý ngôn ngữ tự nhiên và hỗ trợ nhiều tác vụ tự động hóa. Được xem là đối thủ của ChatGPT, Claude AI không chỉ giúp tạo ra văn bản thông minh mà còn có khả năng tích hợp vào các hệ thống tự động hóa, chatbot và các ứng dụng khác để cung cấp nhiều giải pháp sáng tạo.

Các tính năng nổi bật của Claude AI bao gồm dự đoán, phân tích dữ liệu và xử lý ngôn ngữ tự nhiên, giúp doanh nghiệp tối ưu hóa hiệu suất, tăng cường sự tương tác với khách hàng và cung cấp các sản phẩm, dịch vụ chất lượng cao hơn. Nhờ vào những khả năng này, Claude AI đang dần trở thành một công cụ mạnh mẽ trong nhiều lĩnh vực như kinh doanh, giáo dục và chăm sóc sức khỏe.

Các tính năng nổi bật của Claude AI

Các tính năng nổi bật của Claude AI

Claude AI là một trong những mô hình ngôn ngữ lớn (LLM) hàng đầu hiện nay, được đánh giá cao về khả năng hiểu và tạo văn bản tự nhiên. Dưới đây là một số tính năng nổi bật của Claude AI:

  • Xử lý ngôn ngữ tự nhiên (NLP): Claude AI có khả năng hiểu và phản hồi ngôn ngữ một cách tự nhiên, cho phép giao tiếp mượt mà với người dùng trong các tình huống khác nhau. Điều này hỗ trợ trong việc tạo ra các cuộc trò chuyện tự động, tối ưu hóa chatbot và các ứng dụng tương tác.
  • Phân tích và dự đoán dữ liệu: Claude AI có thể phân tích dữ liệu lớn và đưa ra các dự đoán dựa trên các thuật toán học máy. Điều này giúp doanh nghiệp đưa ra các quyết định sáng suốt hơn, dự đoán xu hướng và hành vi của khách hàng một cách chính xác.
  • Hỗ trợ đa tác vụ: ClaudeAI hỗ trợ đa tác vụ như viết lách (bài báo, thơ, kịch bản), lập trình (viết mã, kiểm tra lỗi), tóm tắt văn bản và dịch thuật. Với tính năng tùy chỉnh linh hoạt và bảo mật cao, Claude AI trở thành công cụ hữu ích trong nhiều lĩnh vực từ kinh doanh đến giáo dục.
  • Tính linh hoạt và tùy biến: Claude AI cung cấp nhiều phiên bản với các khả năng khác nhau, cho phép người dùng lựa chọn giải pháp phù hợp với nhu cầu cụ thể của mình. Bên cạnh đó, Claude AI có khả năng tích hợp dễ dàng vào nhiều ứng dụng và dịch vụ khác nhau, giúp mở rộng khả năng sử dụng và tối ưu hóa hiệu quả trong nhiều lĩnh vực.

  Nhập môn về các mô hình ngôn ngữ lớn (LLMs)

  Cách tích hợp ChatGPT vào Google Search siêu dễ

So sánh Claude AI với ChatGPT: Nên chọn chatbot nào?

So sánh Claude AI với ChatGPT

Claude AI và ChatGPT đều là các mô hình trí tuệ nhân tạo tiên tiến được phát triển để xử lý ngôn ngữ tự nhiên và hỗ trợ nhiều tác vụ khác nhau. Tuy nhiên, giữa hai nền tảng này có một số điểm khác biệt chính:

Nhà phát triển

  • ChatGPT: Được phát triển bởi OpenAI, một tổ chức đi đầu trong nghiên cứu và phát triển AI, với sản phẩm nổi bật là ChatGPT.
  • Claude AI: Được phát triển bởi Anthropic, một công ty nghiên cứu AI với trọng tâm là xây dựng trí tuệ nhân tạo an toàn và có đạo đức.

Về phương thức huấn luyện

  • ChatGPT: Sử dụng kỹ thuật học tăng cường từ phản hồi người dùng. Phương pháp này cho phép mô hình cải thiện hiệu suất của mình thông qua việc học từ các phản hồi và đánh giá của người dùng, giúp tối ưu hóa khả năng tạo ra phản hồi tự nhiên và chính xác hơn.
  • Claude AI: Áp dụng phương pháp tự giám sát theo khung sườn Constitutional AI của Anthropic. Khung này dựa trên việc thiết lập các nguyên tắc và quy tắc rõ ràng để hướng dẫn hành vi của mô hình trong việc đưa ra phản hồi. Thay vì chỉ dựa vào phản hồi của người dùng, Claude AI được huấn luyện để tự nhận thức về tính đạo đức và an toàn trong giao tiếp, từ đó tạo ra những phản hồi phù hợp và ít gây tranh cãi hơn.

Kiểu phản hồi

  • ChatGPT: Phản hồi dưới dạng cung cấp thông tin chi tiết và phong phú, hoạt động giống như một trợ lý kỹ thuật số. Mô hình này thường tạo ra các câu trả lời dài hơn, giải thích sâu về các khái niệm và cung cấp thông tin đầy đủ, nhằm giúp người dùng hiểu rõ vấn đề mà họ đang tìm kiếm.
  • Claude AI: Phản hồi dưới dạng trao đổi và thảo luận, thường mang tính chất tương tác và thân thiện hơn. Các câu trả lời của Claude AI thường ngắn gọn, dễ hiểu và trực tiếp, giúp tạo ra cảm giác như đang trò chuyện với một người bạn. Phương pháp này giúp người dùng dễ dàng tiếp nhận thông tin và tạo ra một cuộc đối thoại tự nhiên hơn.

Giới hạn Token

Giới hạn Token Claude AI

  • Claude AI: Có khả năng giới hạn token lớn hơn so với ChatGPT, lên tới 100.000 tokens. Điều này cho phép người dùng nhập tối đa khoảng 75.000 từ trong mỗi lời nhắc, mở rộng đáng kể phạm vi của cuộc trò chuyện và tạo ra các đoạn văn dài hơn.
  • ChatGPT: Mặc dù có giới hạn token thấp hơn, thường trong khoảng từ 4.000 đến 8.000 tokens tùy vào phiên bản, nhưng vẫn đủ để thực hiện nhiều cuộc trò chuyện và tác vụ khác nhau. Tuy nhiên, giới hạn này có thể khiến cho việc xử lý các nội dung dài hoặc phức tạp trở nên khó khăn hơn, buộc người dùng phải chia nhỏ thông tin hoặc tóm tắt các ý tưởng chính.

Các công cụ tích hợp

  • ChatGPT: Cung cấp nhiều tiện ích mở rộng đa dạng, bao gồm khả năng tạo ảnh bằng DALL·E, truy cập internet để lấy thông tin thời gian thực, và tích hợp với các API của bên thứ ba. Những tính năng này giúp ChatGPT trở thành một trợ lý kỹ thuật số mạnh mẽ, có khả năng đáp ứng nhiều nhu cầu khác nhau của người dùng, từ tạo nội dung sáng tạo đến cung cấp thông tin cập nhật.
  • Claude AI: Chỉ cung cấp những tiện ích cơ bản hơn so với ChatGPT, tập trung vào việc hỗ trợ các tác vụ chính mà không có nhiều tích hợp phức tạp.

Cách đăng ký tài khoản ClaudeAI

Để bắt đầu khám phá và sử dụng ClaudeAI, bạn cần đăng ký một tài khoản. Dưới đây là hướng dẫn chi tiết:

  • Bước 1: Truy cập trang web chính thức của Claude. Đường link truy cập: https://claude.ai/login

Cách đăng ký tài khoản ClaudeAI

  • Bước 2: Điền chính xác địa chỉ email của bạn vào ô “Địa chỉ email” sau đó nhấn “Tiếp tục với email”. Nếu bạn muốn dùng địa chỉ Google hiện tại có thể nhấn vào nút “Tiếp tục với Google”.
  • Bước 3: Kiểm tra hộp thư đến của bạn để lấy mã xác nhận từ Claude AI –> Nhập mã code vào ô “Nhập mã xác minh” –> Nhấn “Xác minh & Tạo tài khoản”.

code claude ai

  • Bước 4: Nhập số điện thoại để lấy mã xác minh –> Nhập mã xác minh vào ô tương ứng và nhấn “Xác nhận” để hoàn tất đăng ký tài khoản.

Kết luận

Claude AI đánh dấu một bước tiến quan trọng trong lĩnh vực trí tuệ nhân tạo, kết hợp khả năng xử lý ngôn ngữ tiên tiến với cam kết mạnh mẽ về đạo đức. Được phát triển bởi Anthropic, Claude không chỉ thể hiện khả năng ấn tượng trong việc hiểu và tạo ra nội dung, mà còn được thiết kế để hỗ trợ con người một cách an toàn và có trách nhiệm.

Khi công nghệ AI tiếp tục phát triển, những hệ thống như Claude sẽ đóng vai trò quan trọng trong việc định hình tương tác giữa con người và máy móc, đồng thời nêu bật tầm quan trọng của việc cân bằng giữa đổi mới và đạo đức trong quá trình phát triển AI.

Xem thêm:

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

Xu hướng tuyển dụng IT tại Việt Nam 2024 – 2025: Đón đầu làn sóng công nghệ mới

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

Thị trường CNTT đang chứng kiến những biến động lớn sau giai đoạn đại dịch và suy thoái kinh tế toàn cầu. Từ sự sụt giảm trong nhu cầu tuyển dụng đến những thay đổi trong kỹ năng và công nghệ cần thiết, ngành IT không ngừng chuyển mình để thích ứng với bối cảnh mới. Năm 2024 – 2025, bức tranh tuyển dụng IT tại Việt Nam và thế giới được dự đoán sẽ có nhiều thay đổi đáng chú ý, từ sự gia tăng vai trò của các công nghệ đột phá như AI, điện toán đám mây, đến sự cạnh tranh khốc liệt trong việc thu hút nhân tài IT. 

Bài viết này TopDev sẽ mang đến cái nhìn tổng quan về những xu hướng chính trong tuyển dụng IT giai đoạn 2024 – 2025, giúp các doanh nghiệp và ứng viên có cái nhìn sâu sắc để chuẩn bị cho những thách thức và cơ hội phía trước.

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

1. Tổng quan tình hình tuyển dụng IT tại Việt Nam

Theo báo cáo thị trường IT Việt Nam 2024 do TopDev phát hành, tuyển dụng IT tại Việt Nam đã chứng kiến sự giảm tốc rõ rệt trong năm 2023, khi gần 30% doanh nghiệp công nghệ ngừng tuyển dụng lập trình viên so với năm 2022. Điều này chủ yếu do hậu quả của suy thoái kinh tế toàn cầu, khiến các công ty phải điều chỉnh lại chiến lược và ngân sách tuyển dụng​.

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

Các công ty từng mở rộng mạnh mẽ trong và sau đại dịch để đáp ứng nhu cầu gia tăng về các dịch vụ kỹ thuật số, nay phải thu hẹp quy mô tuyển dụng và thậm chí cắt giảm nhân sự. Năm 2024, gần 90% công ty chỉ có kế hoạch tuyển dưới 50 lập trình viên, trong khi số lượng tuyển dụng các vị trí mới cũng giảm dần​.

Ngoài ra, ngân sách tuyển dụng của các doanh nghiệp cũng bị ảnh hưởng nghiêm trọng. Chỉ 6% công ty tăng ngân sách tuyển dụng cho năm 2024, trong khi 70% giữ nguyên và 24% giảm ngân sách. Tuy nhiên, dù mức độ tuyển dụng không còn sôi động như trước, thị trường vẫn ổn định hơn so với giai đoạn 2022 – 2023​.

Những lĩnh vực ít bị ảnh hưởng và vẫn duy trì nhu cầu tuyển dụng cao bao gồm Thương mại điện tử, Ngân hàng & Fintech, và công nghệ Đám mây. Đây là những ngành đang được hưởng lợi từ xu hướng số hóa toàn cầu, đồng thời tạo ra cơ hội việc làm ổn định cho các lập trình viên và nhân sự IT​.

2. Các vị trí và kỹ năng HOT trong thị trường việc làm IT 

Theo báo cáo, dù có sự sụt giảm chung trong tuyển dụng IT, một số vị trí và kỹ năng vẫn duy trì nhu cầu cao. Các vị trí lập trình viên Back-end, Full-stackFront-end vẫn tiếp tục chiếm ưu thế, đặc biệt trong các dự án phát triển ứng dụng web và hệ thống phần mềm phức tạp​. Điều này phản ánh xu hướng ưu tiên các công nghệ web, nơi các kỹ năng lập trình liên quan đến phát triển giao diện và hệ thống nền tảng đóng vai trò then chốt trong hầu hết các dự án công nghệ.

Các vị trí và kỹ năng HOT trong thị trường việc làm IT

Ngoài ra, nhu cầu về Chuyên gia DevOps và Lập trình viên di động cũng gia tăng đáng kể. DevOps trở thành một trong những vai trò quan trọng, giúp các doanh nghiệp tối ưu hóa quá trình phát triển và triển khai phần mềm. Trong bối cảnh các doanh nghiệp ngày càng quan tâm đến việc cải thiện quy trình tự động hóa và phân phối liên tục (CI/CD), nhu cầu về các chuyên gia DevOps có kỹ năng vững vàng về quản lý hệ thống và tích hợp công nghệ không ngừng tăng​.

Bên cạnh các vị trí cụ thể, những ngôn ngữ lập trình như JavaScript, Java, PHP, C#/.Net, và Python vẫn là những kỹ năng quan trọng được các doanh nghiệp tìm kiếm. Đặc biệt, gần 80% công ty có nhu cầu tuyển dụng lập trình viên JavaScript – ngôn ngữ phổ biến cho cả phát triển Front-end và Back-end, minh chứng cho sự thống trị của các công nghệ web trong thị trường IT​.

Một xu hướng mới đáng chú ý là sự gia tăng của các nền tảng đào tạo phi công nghệ. Các doanh nghiệp dần chấp nhận những ứng viên không có nền tảng chuyên ngành IT truyền thống, nhưng có kiến thức và kỹ năng từ các khóa học trực tuyến hoặc đào tạo nghề. Điều này mở ra cơ hội cho những người chuyển đổi nghề nghiệp hoặc muốn bước vào ngành công nghệ mà không cần qua con đường học thuật chính quy​.

  Tổng quan mức lương IT 2024: Xu hướng tăng trưởng và tương lai ngành công nghệ

  Bức tranh toàn cảnh hệ sinh thái khởi nghiệp công nghệ Việt Nam 2024

3. Việt Nam trở thành “mảnh đất màu mỡ” cho các công ty công nghệ

Trong bối cảnh hội nhập toàn cầu và sự phát triển mạnh mẽ của ngành công nghệ, Việt Nam đang dần trở thành một điểm đến hấp dẫn cho các tập đoàn quốc tế tìm kiếm và tuyển dụng nhân tài IT. Đáng chú ý, Nhật Bản và Hàn Quốc hiện là hai quốc gia tuyển dụng nhiều lập trình viên Việt Nam nhất, tiếp theo là Mỹ và Singapore. Điều này phản ánh sự quan tâm ngày càng lớn của các quốc gia này đến nguồn nhân lực IT chất lượng cao tại Việt Nam​.

Việt Nam không chỉ thu hút các công ty quốc tế thông qua lực lượng lao động dồi dào mà còn nhờ vào khả năng cạnh tranh về chi phí và trình độ kỹ thuật. Các công ty nước ngoài, đặc biệt trong lĩnh vực Outsourcing, tiếp tục mở rộng quy mô tuyển dụng, với 58% đến từ các doanh nghiệp có vốn đầu tư nước ngoài (FDI). Ngay cả trong bối cảnh suy thoái kinh tế toàn cầu, các công ty gia công phần mềm tại Việt Nam vẫn duy trì việc tuyển dụng, thể hiện sự ổn định và sức hút của thị trường​.

Hồ Chí Minh tiếp tục đóng vai trò là trung tâm công nghệ hàng đầu của Việt Nam

Hồ Chí Minh tiếp tục đóng vai trò là trung tâm công nghệ hàng đầu của Việt Nam, nơi có tới 55% nhân lực CNTT đang làm việc, và 58% cơ hội việc làm tập trung tại đây​. Sự phát triển của các khu công nghệ cao và trung tâm R&D tại Việt Nam cũng góp phần thu hút các nhà đầu tư quốc tế. Những công ty lớn như Samsung, LG, Microsoft và Google đều đã thiết lập các trung tâm nghiên cứu và phát triển tại Việt Nam, thể hiện niềm tin mạnh mẽ vào khả năng của lực lượng lao động IT trong nước.

3. Tương lai của thị trường tuyển dụng IT tại Việt Nam

Trong giai đoạn 2024 – 2025, tương lai của thị trường tuyển dụng IT tại Việt Nam được dự báo sẽ tiếp tục phát triển với sự gia tăng nhu cầu về các vị trí liên quan đến các công nghệ tiên tiến như Trí tuệ nhân tạo (AI), Dữ liệu lớn (Big Data), và điện toán đám mây. Những lĩnh vực này đang trở thành trụ cột của chuyển đổi số, đồng thời mang đến nhiều cơ hội việc làm mới cho các lập trình viên và chuyên gia công nghệ​.

Ngoài ra, sự phát triển của các thành phố công nghệ và trung tâm dữ liệu tại Việt Nam cũng góp phần tạo ra một môi trường thuận lợi cho việc thu hút nhân tài IT từ khắp nơi trên thế giới. Các chính sách hỗ trợ từ chính phủ, cùng với đầu tư mạnh mẽ từ các tập đoàn lớn, đang mở ra nhiều cơ hội việc làm và định hướng phát triển sự nghiệp bền vững cho nhân lực công nghệ trong nước​.

Đối với các công ty tuyển dụng, thách thức lớn nhất vẫn là tìm kiếm và giữ chân những tài năng IT xuất sắc trong bối cảnh cạnh tranh ngày càng gay gắt. Điều này đòi hỏi họ phải có chiến lược tuyển dụng hiệu quả, từ việc cải thiện chính sách lương thưởng đến tạo ra môi trường làm việc hấp dẫn với cơ hội phát triển nghề nghiệp rõ ràng​.

Tổng kết

Thị trường tuyển dụng IT tại Việt Nam trong giai đoạn 2024 – 2025 đang đối mặt với nhiều biến động, nhưng đồng thời cũng mang đến những cơ hội to lớn cho cả doanh nghiệp và nhân sự công nghệ. Sự chuyển dịch mạnh mẽ về nhu cầu kỹ năng, cùng với xu hướng tuyển dụng quốc tế và sự phát triển của các công nghệ đột phá, đang định hình một bức tranh tuyển dụng mới đầy thách thức nhưng cũng rất tiềm năng.

Để nắm bắt tốt các cơ hội và chuẩn bị đối phó với những thách thức trong tuyển dụng nhân tài IT, việc hiểu rõ các xu hướng thị trường là vô cùng quan trọng. Hãy tải ngay Báo cáo Thị trường IT Việt Nam 2024 – 2025 để có cái nhìn sâu sắc và chi tiết hơn về những thay đổi trong ngành IT, giúp bạn và doanh nghiệp của mình đưa ra những quyết định chiến lược đúng đắn.

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

8 tips hữu ích giúp BA khai thác thông tin từ stakeholder

8 tips hữu ích giúp BA khai thác thông tin từ stakeholder

Hello anh em. Bài này mình sẽ note lại những phương pháp moi móc thông tin của BA mà mình biết và đã từng áp dụng.

Đa phần là các phương pháp từ BABOK v3.0, bên cạnh một số dự án mình làm, và một số khác thỉnh giáo từ các bậc tiền bối 😎

Ô kê, đầu tiên là cái hình dưới đây.

11 phương pháp moi móc thông tin phổ biến của BA
11 phương pháp moi móc thông tin phổ biến của BA

Sơ bộ thì Elicitation là việc moi móc yêu cầu/ moi móc thông tin từ khách hàng.

Có “n” cách để làm việc này. Tuy nhiên, 11 cách sau đây là những cách thường được Business Analyst chúng ta dùng nhiều nhất.

1. MEETING

Đầu tiên là phương pháp cực kỳ phổ biến. Có lẽ được dùng đến 96,69% trong các dự án. Thường thì meeting sẽ được chia thành 4 loại như sau:

1.1. Interview

Phỏng vấn 1-1 hoặc phỏng vấn theo nhóm. Nói phỏng vấn vậy cho pho mồ chứ thực ra cũng là một buổi nói chuyện hay trao đổi công việc thôi.

Đây là cách mình dùng rất nhiều. Không biết thì hỏi, đơn giản mà :3

Tuy nhiên, hỏi sao cho khéo, cho đúng kịch bản mới hay. Làm interview thì dễ nhưng kỹ thuật để interview thì mới khó. Anh em có thể trao đổi với khách hàng qua email, skype hoặc gọi điện thoại.

Với mỗi cách, lại có một phương pháp khác nhau. Thậm chí, gọi điện hỏi người ta để làm rõ vấn đề. Nhưng đôi lúc gọi xong lại càng thấy rối hơn :v

1.2. Workshop

Thường thì người BA phải chuẩn bị rất kỹ và nhiều cho buổi workshop này.

Buổi workshop sẽ có sự tham gia của các stakeholders. Và BA hoặc PM sẽ là MC buổi workshop này.

Output của buổi workshop có đạt được đúng như kỳ vọng đề ra ban đầu không phụ thuộc rất nhiều vào sự chuẩn bị.

Thường thì người BA sẽ cho tổ chức một buổi pre-workshop trước đó tầm 3-4 ngày. Nhằm mục đích giới thiệu dự án và cung cấp các materials trước cho stakeholder. Để họ đỡ tốn thời gian ngâm cứu tài liệu khi buổi Workshop chính thức diễn ra.

Output của buổi workshop sẽ được BA tập hợp lại và được tiến hành phân tích theo bốn bước: Organize -> Specify -> Verify -> Validate.

tips hữu ích giúp BA khai thác thông tin từ stakeholder
Cần phải phân biệt rõ, thế nào là Interview, thế nào là Workshop, thế nào là Brainstorm và thế nào là Focus Group?

1.3. Brainstorm

Thường thì mình dùng brainstorm khi cả team đang cần ideas cho một vấn đề nào đó.

Anh em sẽ không phê phán hay reject bất cứ ideas nào hết. Và tất cả các ideas, dù củ chuối nhất cũng đều được welcome! Đó mới là brainstorm thật sự.

Lúc vô thế, cần tìm ideas thì nhiều ca oái ăm lắm. Một ý tưởng củ chuối nhưng lại không hề củ chuối tí nào. Còn 1 ý tưởng “ngỡ” là ổn thì càng bàn càng củ chuối.

Quan trọng nhất là anh em phải ghi nhận lại hết. Một là để tạo tinh thần cho đồng đội mình ra tiếp ý tưởng. Hai là còn có cái để mà bàn.

Thường thì trường hợp cả đám ngồi dòm nhau là hay xảy ra nhất. Chứ không bắn ý tưởng đùng đùng như phim ảnh đâu. Nhưng nếu làm đúng, anh em hợp rơ nhau thì brainstorm lại rất phê.

1.4. Focus Group

Hình thức giống interview theo nhóm. Nhưng Focus Group thường tập trung chuyên sâu về 1 nhóm đối tượng hoặc 1 nhóm các vấn đề. Có thể là làm rõ các chức năng, ở từng bộ phận khác nhau.

Ví dụ cần trao đổi về chức năng tích hợp với 1 hệ thống ABC thì cần tổ chức một buổi Focus Group. Với thành phần tham dự là đội ngũ IT quản trị hệ thống của hệ thống ABC, chứ không cần phải các bộ phận khác.

Nhìn chung thì 4 phương pháp: Interview, Workshop, Brainstorm và Focus Group nhìn rất giống nhau, nhưng lại có 1 mục đích khác nhau:

  • Interview: 1-1 hoặc 1 với 1 nùi.
  • Workshop: truyền đạt thông tin cho một nhóm người cùng một lúc.
  • Brainstorm: khi cần tìm lời giải cho một bài toán.
  • Focus Group: trao đổi thông tin với 1 nhóm cụ thể.

2. DATA ANALYSIS

Trong bất cứ hệ thống nào thì thông tin là thứ rất quan trọng.

Nếu anh em hiểu được information của Khách hàng gồm những gì, thì đã phần nào hiểu được cách thức hoạt động của khách hàng rồi.

Cụ thể anh em sẽ tìm hiểu về các dữ liệu mà khách hàng đang làm việc. Ví dụ: khách hàng, đơn hàng, loại đơn hàng, sản phẩm, nhóm sản phẩm, dịch vụ, hợp đồng, nhân viên bán hàng,…

Có thể chia nhỏ thành từng đối tượng, và xác định xem thử mỗi đối tượng có những dữ liệu gì.

Hoặc anh em cũng có thể tham khảo các document của khách hàng, để chắt lọc ra những dữ liệu mà họ đang làm (phần 8.4 bên dưới mình sẽ nói cụ thể).

tips hữu ích giúp BA khai thác thông tin từ stakeholder
Data Flow Diagram – Đây là một trong các output của mình sau khi lấy yêu cầu

Thường thì mình thấy phương pháp này được áp dụng trong các dự án maintain hệ thống cũ, upgrade hệ thống cũ. Hoặc thay thế một hệ thống đã lỗi thời mà doanh nghiệp đang sử dụng.

3. INTERFACE ANALYSIS

Ý tưởng cơ bản là hiểu được sự tương tác:

  • Giữa người dùng với hệ thống.
  • Hoặc giữa các component này với các component khác, phân hệ này với phân hệ khác, hoặc giữa các hệ thống với nhau.

Hiểu và phân tích sự tương tác này, anh em sẽ hình dung được process mà doanh nghiệp đang áp dụng và các dữ liệu mà họ đang lưu trữ. Chí ít là có thể hình dung mờ mờ về những thông tin đó.

Cụ thể mình có thể nói khách hàng:

“Anh ơi, mình đang triển khai hệ thống CRM, zậy thì anh cấp quyền cho em zô cái hệ thống ERP hiện tại đang chạy của mình nha, em zô em xem cái màn hình quản lý khách hàng, xem thử nó có gì ở trỏng, có dữ liệu gì lạ hông, hoặc có cái gì hay hay để em note lại…”

Ví dụ zậyyyy.

  BA làm gì trong một dự án phần mềm? (P1)

  6 vùng kiến thức mà Business Analyst nào cũng phải biết!

4. PROTOTYPING

Phương pháp prototyping (dịch ra tiếng Việt là tạo mẫu, là làm thử, là demo, abc, xyz…).

Phương pháp này dùng khi anh em cần cho khách hàng thấy một cái gì đó nó TRỰC QUAN hơn.

Nôm na là nói một cái gì đó tổng quan hay trừu tượng quá, khách hàng sẽ khó mà nắm bắt được.

Do đó, nên nói cụ thể kết hợp demo hệ thống sẽ giúp người ta mường tượng rõ ràng hơn. Như cái này bấm vào sẽ ra gì, tới bước nào. Để hiện cái đó thì bấm cái gì, quy trình đi ra sao.

Đó là khi chúng ta đã sử dụng phương pháp Prototyping.

Một số công cụ hỗ trợ việc thiết kế màn hình, chức năng để phục vụ việc Propotyping như: Axure, Microsoft Visio, Balsamiq Mockups. Cá nhân mình thấy thì:

  • Balsamiq Mockups: giao diện rất đẹp, nhưng hơi…”cartoon”. Vì nó mang tính phác thảo, “sketch” là chủ yếu nên như vậy. Dễ dùng. 100% là kéo thả.
  • Microsoft Visio: một tool huyền thoại cho anh em nào thích vẽ vời. Tool này mình thấy cũng ổn.
    Anh em dùng Visio để vẽ sơ đồ quen rồi thì chuyển qua vẽ màn hình giao diện cũng không khó lắm. Mà có cái là kho thư viện của Visio khá cũ và không nhiều. Cần update lên bản mới hoặc tải về thêm thì dùng mới đủ áp phê.
  • Axure: một tool powerful so với mấy cái trên. Ngoài những điểm mạnh của các tool trên, như: dễ dùng, kéo thả, chọn được nhiều library. Thì Axure còn có điểm mạnh là “động” được. Tức là Axure cho phép anh em tạo một màn hình với nhiều nút. Khi nhấn nút này thì nó sẽ ra màn hình nào tiếp, gồm những gì. Nhấn nút tiếp thì ra gì tiếp. Mọi thứ hiển thị y chang hệ thống thật.
    Điểm tuyệt vời nữa là Axure cho phép xuất file kết quả ra html. Điều này có nghĩa là anh em hoàn toàn đem file này chạy trên bất cứ máy nào mà không cần cài đặt Axure. Quá dữ!
tips hữu ích giúp BA khai thác thông tin từ stakeholder
Ví dụ một form màn hình trên Axure mà mình đang làm

Nhưng nhớ chỉ nên sử dụng phương pháp này đối với những requirement phức tạp và thật sự khó giải thích. Đòi hỏi độ chính xác cao cả về functional lẫn non-functional.

Nếu áp dụng prototyping một cách vô tội vạ thì nguy hiểm vô cùng.

Vì nó sẽ cuốn khách hàng vào một mớ bồng bông. Họ sẽ rối nùi lên và hỏi anh em cả nghìn thứ liên quan đến cái prototype đó, sau cùng thì mọi người sẽ dễ đi lệch đường, lệch với mục tiêu ban đầu.

Và tệ nhất là output buổi đó sẽ chả có tí gì như mình kỳ vọng ban đầu hết. Sẽ rất cực cho BA để một lần nữa, hệ thống lại solution cho họ.

Do đó, để dùng tốt phương pháp này thì anh em phải biết khi nào cần trừu tượng, khi nào cần trực quan, đó chính là Analytical Thinking 😎

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

5. BUSINESS RULES ANALYSIS

Thường thì doanh nghiệp đều có các quy định riêng.

Trong quá trình chuyển giao từ trạng thái as-is sang to-be, anh em cần phải bám theo những quy định và luật lệ này của khách hàng.

Do đó, người BA cần phải xác định được các System Rules sẽ có trong hệ thống. Các System Rules này sẽ đảm bảo hệ thống tuân thủ được đúng các policies và rules của công ty hay không.

Phương pháp này nói đến việc tham khảo và phân tích các policies và rules của khách hàng. Đây là một trong những kênh vô cùng có giá trị với Business Analyst trong quá trình moi móc thông tin.

Nắm rõ được quy định và luật của công ty, anh em sẽ tránh khả năng làm sai. Làm sai là làm hệ thống hoạt động sai. Làm rõ ngay từ đầu – đỡ cực về sau!

6. OBSERVATION

Observation là phương pháp quan sát các công việc mà end user làm hằng ngày.

Đối với phương pháp này, BA sẽ tiếp thu thông tin bằng mắt. Quan sát và chỉ quan sát. Điều này có vẻ đơn giản nhưng không đơn giản chút nào, vì những lý do sau:

6.1. Xu hướng hơi giả tạo và làm khác đi 

Thường thì bà con có vẻ làm khác đi một chút khi bị người khác tập trung quan sát.

Do đó người BA cần phải có cách tiếp cận khéo léo, tránh thu hút sự tập trung của họ. Cũng như vẫn đảm bảo quan sát được toàn vẹn và đầy đủ nhất hành vi của end users.

Tránh tương tác trực tiếp. Anh em đừng nhiệt quá như là bay vô làm phụ người ta :)) Như vậy sẽ làm mất đi tinh thần “chân thật” của đối tượng.

6.2. Tốn thời gian

Phương pháp này thường sẽ không đơn giản như chúng ta nghĩ.

Bởi vì không phải chỉ quan sát 15-20 phút là xong. Đó có thể là quan sát cả một quy trình hay thậm chí có thể là cả một ca làm việc.

Và không chỉ quan sát một người. Chúng ta cần sự so sánh hành vi giữa nhiều người khác nhau trong cùng vai trò, để output có được một cách chính xác và chân thật nhất.

6.3. Tốn luôn cả năng lượng

Chắc chắn là anh em sẽ rất mệt. Có mấy lần mình qua công ty khách hàng ngồi cả ngày mà oải lắm.

Ngồi support rồi quan sát người ta làm. Liệu solution của mình có map vào thực tế được hay chưa. Lâu lâu gặp trúng mấy case oái ăm cũng ớn lắm.

Nói chung là mệt chứ không ngon ăn gì đâu. Sau đó về còn phải tổng hợp, rồi hệ thống lại toàn bộ những gì quan sát được nữa.

Do đó anh em phải cân nhắc thật kỹ nếu muốn sử dụng cách này hiệu quả.

7. BENCHMARKING

Bench là một cái bảng mẫu. Marking là đánh dấu, là cho điểm.

Nói Bench Marking cho nguy hiểm vậy thôi, chứ thực chất nó là phương pháp so sánh. So sánh nhiều đối tượng dựa trên một cách khung mẫu, bảng mẫu.

So sánh quy trình A với quy trình B, hệ thống A với hệ thống B, sản phẩm A với sản phẩm B, hay nói cách khác là solution A với solution B. Nắm rõ B, mình sẽ nắm gần rõ A. Và ngược lại. Hiểu rõ A, mình sẽ hiểu… gần rõ B.

8. CÒN LẠI

Những phương pháp này chắc cũng quá quen thuộc với anh em rồi.

8.1. Mind Mapping

Phương pháp này mình nghĩ anh em cũng hay dùng. Mình cũng vậy, nhưng đôi lúc mình thấy giống vẽ… bùa hơn là vẽ mind map :))

Mình thích dùng mind mapping vì nó rất dễ tạo cảm hứng. Người ngoài nhìn vô thấy vẽ vời quá trời, nhìn cho nó nguy hiểm 😎

8.2. Process Analysis and Modelling

Một trong những phương pháp truyền thống và cơ bản nhất.

Tức là anh em sẽ dùng Interview, Questionaire hoặc bất kỳ các phương pháp nào ở trên, để moi móc thông tin khách hàng về QUY TRÌNH NGHIỆP VỤ của họ.

Sau đó thì anh em sẽ modelling, tức là mô hình hóa nó lại bằng BPMN hoặc UML.

Cái này thì ai cũng dùng, ai không dùng… cũng được :)) nhưng có vẻ hơi hiếm. BA mà không modelling thì chắc không có đâu anh em.

8.3. Survey

Nếu cần khai thác thông tin trên diện lớn và lấy ý kiến tập thể thì Survey là phương pháp phù hợp nhất.

Nhưng vì trên diện lớn, nên chất lượng kết quả Survey có thể không đạt chất lượng cao lắm. Đòi hỏi sau giai đoạn khảo sát, anh em BA phải chịu khó ngồi lọc lại dữ liệu.

Lúc trước mình có làm một dự án cho 1 tập đoàn xăng dầu Việt Nam. Nó có tới hơn 2 nghìn điểm bán lẻ. Và mỗi điểm bán lẻ là cả mấy chục phiếu khảo sát.

Lúc khảo sát về thì không phải dữ liệu nào cũng đúng cả. Chạy số liệu thông tin ra tùm lum tùm la hết, rất là khó hiểu. Team mất gần cả tháng để xử lý mớ data này.

Dựa vào nhiều thông tin bên lề mới xác định được cái nào đúng hoàn toàn, cái nào tham khảo và cái nào là sai lệch.

Rồi sau đó mới dựa vào kết quả Survey mà đi tiếp được.

tips hữu ích giúp BA khai thác thông tin từ stakeholder
Khảo sát, và lọc kết quả khảo sát – ác mộng thời xa xưa :’(

Do đó làm Survey rất cần kinh nghiệm của các bật tiền bối trong việc build bảng câu hỏi.

Bảng câu hỏi có 15 câu không có nghĩa là mình kỳ vọng 15 câu đó, người làm khảo sát sẽ trả lời đúng hết.

Có những câu mình biết họ sẽ “né” hoặc cố tình ghi sai. Nhưng hỏi sao cho họ dễ trả lời, tránh hỏi trực diện là cả một… bầu trời nghệ thuật.

8.4. Document Analysis

Phương pháp khá cổ điển. Cụ thể là anh em đọc tất cả, tuốt tuồn tuột tất cả những document mà khách hàng share cho mình.

Nhưng để làm tốt phương pháp này, anh em phải có kỹ năng đọc tốt và giữ mình không đi lạc vào mớ bòng bong của khách hàng.

Đặc biệt là tài liệu của các doanh nghiệp… nhà nước.

Cũng trong dự án làm cho công ty xăng dầu mình có kể ở trên. Công ty này có rất nhiều cửa hàng, đại lý nên việc tổ chức là không hề đơn giản tí nào.

Kéo theo đó là bộ thập cẩm các quy trình cũng rất “màu mỡ” và “phong phú”. Từ quy trình xuất kho, nhập kho, chuyển ca, sục bể, xả gió đến quy trình pha chế, tùm lum tùm la hết.

Lúc đó tụi mình đọc rất nhiều tài liệu. Nhiều lúc đọc mấy tài liệu mà mặt ngu thấy rõ. Đó là lúc dùng phương pháp Document Analysis.

9. Các bước moi móc thông tin

Các bước để moi móc thông tin
Các bước để moi móc thông tin

9.1. Prepare 

Phải chuẩn bị thật tốt. Với mỗi phương pháp trên đều có cách chuẩn bị khác nhau. Chuẩn bị sao cho phù hợp và hiệu quả với từng phương pháp là cái mà mình nên hướng đến.

Chuẩn bị luôn là điều quan trọng nhất. FAIL PREPARE = PREPARE FAIL.

9.2. Conduct 

Đầu tiên là luôn nắm rõ mình cần gì và mục tiêu của mình là gì. Đừng để rơi vào tình trạng: “tôi là ai và đây là đâu” thì oải lắm.

Thứ hai là mỗi phương pháp đều có cách tiếp cận riêng. Chọn cách tiếp cận sai là coi như thua.

Đúng phương pháp mà sai cách tiếp cận thì là tiêu chắc chắn. Anh em cố gắng chú ý quan sát đối tượng rồi chọn cách tiếp cận cho phù hợp.

Và, cần phải tinh chỉnh cách tiếp cận sao cho phù hợp ngay cả TRƯỚC, TRONG  SAU quá trình moi móc thông tin.

9.3. Document 

Ở bước này, BA có nhiệm vụ sắp xếp lại các tài liệu thu thập được. Vì dữ liệu thu thập được là vô cùng “thập cẩm”.

Có loại thì ghi note, có loại thì hình ảnh, có loại là video hay có loại là ghi âm. Tất cả đều rất lộn xộn và chưa được hệ thống hóa. BA cần phải sắp xếp mọi thứ lại cho ngăn nắp và gọn gàng để đi đến bước tiếp theo.

9.4. Confirm 

BA sẽ gửi những tài liệu này cho stakeholder để họ xác nhận: à, đây đúng là những gì mà chúng ta đã trao đổi”.

Mục đích của bước này là đảm bảo thông tin mà chúng ta elicit thật sự chính xác. Và đảm bảo được sự đồng thuận giữa các stakeholder với nhau.

Cái này quan trọng lắm anh em.

Cái gì mà đã được confirm thì cũng đều phải document lại hết. Tránh trường hợp khách hàng “lộn cái bàn” sau này :3

.

.

That’s all. Chém gió dài quá rồi. Mình sẽ summarize lại một số phương pháp moi móc thông tin cơ bản như sau:

  • Interview: khi cần những thông tin chung chung hoặc nói về những painpoints lớn của khách hàng, abc, xyz…
  • Focus Group: nhắm tới một vấn đề cụ thể, chuyên sâu cho một nhóm đối tượng nào đó.
  • Brain Storming: cần sự bùng nổ về ý kiến để giải quyết vấn đề nào đó, output sẽ là một rổ ideas.
  • Observation: hiểu về môi trường làm việc thực tế, tận mắt chứng kiến luồng công việc và xác minh lại những thứ mà mình đang nghi ngờ khách hàng giấu hổng chịu khai.
  • Prototyping: mang lại sự trực quan cho khách hàng.
  • Surveys/ Questionaires: chỉ nên dùng trong 1 giai đoạn ngắn, khó khăn trong việc kết nối, và cần thông tin ở nhiều chiều kích khác nhau.

Bái baiii. Hẹn gặp anh em ở các bài viết sau!!!

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

Xem thêm:

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

Làm thêm giờ là tốt hay xấu? Tips OT hiệu quả hơn

Làm thêm giờ là tốt hay xấu? Tips OT hiệu quả hơn

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

Thi thoảng mình thấy xung quanh có một vài bạn bè “khoe” về việc OT cuối tuần với sự tự hào. Có những người quản lý nhìn OT như một thang đo chất lượng công việc, nhân viên nào càng OT nhiều tức là khả năng làm việc càng tốt.

Làm thêm giờ (overtime – OT) là một trong những cách bạn chứng minh năng lực và độ cam kết trong công việc, đồng thời có cơ hội nhận về mức đãi ngộ tốt hơn. Trước khi dành thời gian làm OT, bạn cần phải chắc chắn rằng mình có được một đời sống công việc – cá nhân cân bằng, đồng thời thời gian bỏ ra làm thêm giờ phải thực sự hiệu quả. Trong bài viết này, mình muốn thảo luận về những mặt tốt và chưa tốt của việc làm giờ, tiêu chí nào giúp bạn đưa ra quyết định có đồng ý làm thêm giờ hay không?

Làm thêm giờ được hiểu như thế nào?

Làm thêm giờ hiểu đơn giản là số giờ bạn làm việc vượt khỏi số giờ thoả thuận trong hợp đồng lao động. Ví dụ bạn thoả thuận làm 40 tiếng một tuần nhưng thực tế số giờ là 60 tiếng. Tuỳ theo chính sách công ty và thoả thuận trong hợp đồng của bạn với công ty, lương làm thêm giờ có thể bằng 100%, gấp đôi hoặc gấp ba lương thông thường của bạn.

Làm thêm giờ là tốt hay xấu?

Mình từng viết một status trên LinkedIn thảo luận về việc làm thêm giờ là tốt hay xấu và nhận được nhiều ý kiến trái chiều. Có người cho rằng đó là bóc lột, chưa quản lý thời gian tốt, có người nói rằng đặc thù công việc như vậy, làm thêm giờ như vậy mới tạo ra nhiều giá trị. Thực tế tất cả những điều trên đều đúng, tuỳ thuộc vào góc nhìn và thế giới quan của người nói. Chúng ta hãy cùng nhìn nhận ở cả 2 khía cạnh:

Làm thêm giờ là tốt hay xấu?

Làm thêm giờ tốt ở điểm nào?

Thứ nhất, có thêm thu nhập, thường là gấp rưỡi hoặc gấp đôi thông thường. Có thêm tiền giúp bạn thực hiện các mục tiêu tài chính trong cuộc sống như mua nhà, mua xe, đi du lịch, chăm sóc người thân. Làm thêm giờ cũng là một cách thể hiện với quản lý và công ty rằng bạn là người rất cam kết và tâm huyết trong công việc, điều này có thể góp phần giúp bạn thăng tiến tốt hơn trong công việc.

Với doanh nghiệp, lợi ích của việc có nhân viên làm thêm giờ là không phải tốn một khoản chi phí thuê người làm mới. Nếu chính sách làm thêm giờ tốt và được thông tin đầy đủ đến nhân viên, đồng thời việc làm thêm giờ là lựa chọn không bắt buộc, việc này có thể là một điểm chạm tạo động lực và kích thích tinh thần cho nhân viên khi đi làm.

Làm thêm giờ KHÔNG tốt ở điểm nào?

Tuỳ theo từng công việc, tuy nhiên về cơ bản thì làm thêm giờ sẽ gây ảnh hưởng phần nào đến sức khoẻ thể chất và tinh thần. Ngoài ra, nó cũng làm mất đi thời gian bạn dành cho bản thân và cho những người xung quanh. Chưa kể việc quá phụ thuộc vào thời gian làm ngoài giờ trong khi thực tế thời gian chính trong giờ làm việc lại không hiệu quả. Việc này mình đã tự bản thân chứng kiến rất nhiều ở những môi trường công sở đã từng làm việc. Giờ hành chính trong tuần các bạn ngồi nói chuyện, tán dóc, lướt web, sau đó dành thời gian cuối tuần OT để giải quyết những việc đáng ra có thể làm ngay trong tuần. Với doanh nghiệp, tình trạng trên gây lãng phí về tài nguyên và nhân lực.

  Chuyện OT trong ngành IT

  Thà trả người mới lương cao còn hơn tăng lương cho người cũ

Dựa trên tiêu chí nào để quyết định LÀM hay KHÔNG LÀM thêm giờ?

Làm thêm giờ là tốt hay xấu?

Các bạn đi làm hỏi mình rằng “nếu doanh nghiệp hỏi em có làm thêm giờ hay không, em phải trả lời như thế nào?” Thực ra không có câu trả lời đúng hay sai cho câu hỏi trên, điều bạn cần làm là vạch ra những tiêu chí quyết định cho bản thân.

1. Bạn phải hỏi rõ chính sách của công ty

Thực tế thì việc phải làm OT một vài giờ trong tuần thì không có gì ghê gớm cả, hoặc với một số ngành nghề thì làm OT vào một khoảng thời gian nhất định trong năm là hoàn toàn bình thường. Bạn cần làm rõ với công ty rằng thời gian OT trung bình theo tuần/tháng như thế nào, đâu là khoảng thời gian cao điểm trong năm?

Cụ thể chính sách trả lương cho thời gian làm việc ngoài giờ như thế nào, quy định ở văn bản nào của công ty. Những điều trên thường dễ bị nhập nhằng và bỏ quên ở các công ty vừa và nhỏ, vì vậy bạn cần hỏi thật kỹ. Nếu chưa có văn bản từ phòng nhân sự, hãy có xác nhận qua email chứ đừng nói miệng hay chat qua Zalo.

2. Bạn phải tính toán và kiểm soát được thời gian của mình

Có 2 kiểu OT có thể xuất hiện đó là:

(1) OT nằm ngoài tầm kiểm soát của bạn, tức là sếp đột ngột giao việc và bắt làm OT. Cũng được, tuy nhiên bạn phải xác định trong 1 tuần hoặc 1 tháng, mình chấp nhận cho việc này như thế nào? Nếu bạn không thấy vấn đề gì với chuyện này, sếp kiểu gì bạn cũng chiều được – thì bạn phải chấp nhận những ảnh hưởng của việc OT đến cuộc sống cá nhân. Không có gì trọn vẹn được cả.

(2) OT trong tầm kiểm soát của bạn, tức là bạn đồng ý nhận làm một dự án và tính toán được số giờ làm việc để hoàn thành dự án đó. Ví dụ bạn tính rằng nếu làm giờ hành chính bạn tốn 2 tuần để xong, tuy nhiên vì bạn muốn gây ấn tượng với công ty, bạn sẽ hoàn thành trong 1 tuần. Để làm được việc trên, bạn chấp nhận OT thêm mỗi ngày 2 giờ cho công việc. Việc này hoàn toàn nằm trong tầm kiểm soát, và có tính toán rõ ràng. Việc có kiểm soát thời gian giúp bạn đỡ bị căng thẳng hơn.

3. Xác định khoảng thời gian nào bạn làm việc hiệu quả

OT thì có thể làm vào sáng sớm, buổi trưa hoặc buổi tối khuya. Mỗi người lại có khung giờ hiệu quả khác nhau, bạn cần quan sát cách mình làm việc mỗi ngày xem mình làm việc hiệu quả hơn vào thời gian nào. Xác định được khoảng thời gian hiệu quả trong ngày giúp bạn phân chia các công việc phù hợp hơn với từng khoảng thời gian.

Ví dụ, mình thường tập trung và sáng tạo nhất vào buổi sáng. Trong khung thời gian sáng, mình thường làm các công việc phải suy nghĩ chiến lược nhiều, dành các công việc phải giao tiếp, nói chuyện sang đầu giờ chiều.

4. Bạn đạt được mục đích gì khi làm OT?

Nếu mục đích là tiền bạc, cụ thể chính sách OT đang trả cho bạn như thế nào? Có phải con số bạn mong muốn hay không?

Nếu mục đích là để gây ấn tượng và thăng tiến với công ty, việc bạn làm OT có được ghi nhận bởi công ty hay không?

Nếu mục đích chỉ đơn giản là để giải quyết công việc tốt hơn, hãy xem lại trong thời gian hành chính bạn đã thực sự tập trung chưa, khoảng thời gian OT này là bạn đã dự liệu trước hay bạn hoàn toàn bị động?

Tips để làm thêm giờ hiệu quả hơn

Nếu bạn đã quyết định bỏ thời gian cá nhân để dành thêm cho công việc, dưới đây là một số tips để bạn tận dụng khoảng thời gian này hiệu quả hơn nhé.

1. Áp dụng phương pháp Pomodoro

phương pháp Pomodoro

Hiểu đơn giản là phương pháp tập trung 25 phút, sau đó nghỉ ngơi 5 phút (hoặc bạn có thể điều chỉnh thời gian theo đồng hồ sinh học của bản thân). Hiểu một cách đơn giản là đừng tập trung dán mắt vào màn hình trong một quãng thời gian quá dài. Sau khoảng 30 phút hoặc 1-2 tiếng, bạn nên đứng lên vận động, đi uống nước, duỗi chân duỗi tay. Việc này tránh cho bạn bị những vấn đề về mắt, thoái hoá cột sống, vân vân và mây mây. Làm OT để kiếm thêm tiền nhưng không ai muốn mang tiền đó cho bác sĩ đúng không?

2. Hỏi về sự công nhận từ cấp quản lý

Nếu mục đích của việc làm thêm giờ là tìm kiếm cơ hội tăng lương, lên chức trong công ty – bạn cần có sự công nhận rõ ràng từ cấp quản lý hoặc các phòng ban liên quan ở công ty. Bạn nên hỏi cấp quản lý và công ty mình về những cách thức ghi nhận này. Có ghi nhận đầy đủ rõ ràng thì bạn mới có động lực để đóng góp. Nếu không có những điều này, có lẽ tập trung làm việc trong thời gian hành chính là đủ.

3. Đừng bỏ quên sức khoẻ

Mình biết rằng bạn rất mê công việc, khi đã vào mood làm việc thì sẽ quên hoàn toàn những gì xung quanh: bao gồm người khác, ăn uống, tập tành. Tuy nhiên mong bạn hãy nhớ rằng, công việc có thể mất đi và tìm lại được, nhưng sức khoẻ thì rất khó. Sức khoẻ giống như cục pin điện thoại, bạn có dành thời gian sạc pin đầy đủ thì các ứng dụng trong điện thoại mới chạy trơn tru mượt mà. Vì vậy, hãy đặt lịch cho việc ăn tối, sáng, việc tập thể dục bên cạnh việc đặt lịch gặp người này, làm cái kia trong công việc.

Mình cho rằng làm thêm giờ tốt hay xấu phụ thuộc rất nhiều vào khả năng kiểm soát của bạn với việc đó. Nếu bạn hoàn toàn bị động, trong giờ làm việc không hiệu quả dẫn đến phải làm thêm giờ, đó là xấu. Nếu bạn chấp nhận làm thêm giờ ở một khoảng thời gian nhất định, giúp bạn có thêm thu nhập, có cơ hội thăng tiến và không ảnh hưởng quá nhiều đến cuộc sống cá nhân, đó là tốt. Hãy đưa ra lựa chọn khôn ngoan nhé.

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

Xem thêm:

Cập nhật tin tuyển dụng IT lương cao tại TopDev

7 vị trí CNTT không cần code giỏi mà vẫn thành công

7 vị trí CNTT không cần code giỏi mà vẫn thành công

Bạn đam mê công nghệ thông tin nhưng lại không quá tự tin vào khả năng coding? Đừng lo lắng! Ngành IT vẫn mang đến rất nhiều cơ hội nghề nghiệp hấp dẫn mà không đòi hỏi bạn phải là một lập trình viên chuyên nghiệp. Thực tế, có nhiều vai trò quan trọng trong ngành công nghệ thông tin không yêu cầu kỹ năng lập trình cao. Trong bài viết này, chúng ta sẽ cùng khám phá top những công việc trong lĩnh vực IT, nơi bạn có thể phát triển sự nghiệp mà không cần quá am hiểu về lập trình.

1. Project Manager

Project Manager

Project Manager (PM) trong lĩnh vực công nghệ thông tin không nhất thiết phải có kỹ năng lập trình chuyên sâu, nhưng họ đóng vai trò rất quan trọng trong việc quản lý và điều phối các dự án công nghệ. Thay vì tập trung vào các chi tiết kỹ thuật hoặc code, PM đảm nhận nhiệm vụ quản lý tổng thể dự án, bao gồm lập kế hoạch, theo dõi tiến độ, phân bổ nguồn lực và giao tiếp giữa các bộ phận liên quan như nhóm phát triển, khách hàng và ban lãnh đạo.

Các kỹ năng cần thiết

  • Kỹ năng quản lý thời gian: PM cần đảm bảo rằng dự án được thực hiện theo đúng tiến độ đã đề ra, không bị chậm trễ.
  • Kỹ năng giao tiếp: Làm cầu nối giữa các bên liên quan, từ nhóm kỹ thuật đến khách hàng, đảm bảo rằng mọi người đều hiểu rõ mục tiêu và tiến độ của dự án.
  • Kỹ năng giải quyết vấn đề: PM cần phải xử lý các rủi ro, sự cố bất ngờ và các thay đổi trong yêu cầu dự án.
  • Kỹ năng tổ chức: Lập kế hoạch chi tiết, điều phối công việc và phân công nhiệm vụ cho từng thành viên trong nhóm dự án.
  • Hiểu biết cơ bản về công nghệ: Mặc dù không cần biết lập trình, PM vẫn cần hiểu về quy trình phát triển phần mềm và các thuật ngữ công nghệ để có thể giao tiếp hiệu quả với đội ngũ kỹ thuật.

Cơ hội nghề nghiệp

Project Manager là một trong những công việc có mức độ linh hoạt cao và nhu cầu tuyển dụng lớn trong ngành CNTT. Nhờ vào tầm quan trọng của quản lý dự án trong mọi lĩnh vực công nghệ, PM luôn được săn đón tại các công ty phần mềm, startup công nghệ, và cả các tập đoàn lớn.

2. Data Analyst

Data Analyst là người thu thập, xử lý và phân tích dữ liệu nhằm rút ra các thông tin hữu ích giúp doanh nghiệp ra quyết định tốt hơn. Data Analyst chủ yếu làm việc với các công cụ phân tích có giao diện thân thiện và không yêu cầu phải viết code phức tạp. Mặc dù việc biết lập trình có thể là một lợi thế trong một số tình huống, nhưng để thành công trong vai trò này, khả năng tư duy phân tích và kỹ năng giao tiếp hiệu quả mới là những yếu tố quan trọng nhất.

Các kỹ năng cần thiết

Data Analyst

  • Kỹ năng phân tích và suy luận logic: Data Analyst cần có khả năng phân tích dữ liệu lớn để tìm ra các xu hướng, mô hình hoặc bất thường.
  • Kỹ năng làm việc với dữ liệu: Sử dụng các công cụ như Excel, SQL, hoặc các phần mềm phân tích dữ liệu khác để xử lý và quản lý dữ liệu.
  • Kỹ năng giao tiếp: Khả năng trình bày kết quả phân tích dưới dạng báo cáo dễ hiểu cho các bên liên quan, từ quản lý cấp cao đến nhân viên vận hành.
  • Kỹ năng trực quan hóa dữ liệu: Sử dụng các công cụ như Tableau, Power BI để tạo ra các biểu đồ, dashboard trực quan nhằm giúp người khác hiểu nhanh các thông tin từ dữ liệu.
  • Hiểu biết cơ bản về các công cụ phân tích: Mặc dù không cần biết lập trình chuyên sâu, Data Analyst nên quen thuộc với một số công cụ như Python hoặc R (ở mức cơ bản) để thao tác dữ liệu nhanh chóng hơn khi cần.

Cơ hội nghề nghiệp

Data Analyst là một trong những ngành nghề đang phát triển nhanh chóng trong lĩnh vực công nghệ, nhờ vào sự bùng nổ của big data. Các công ty, từ startup đến các tập đoàn lớn, đều cần các chuyên gia phân tích dữ liệu để tối ưu hóa chiến lược kinh doanh, cải thiện trải nghiệm khách hàng, và nâng cao hiệu suất hoạt động.

3. Tester

Tại sao không cần kỹ năng lập trình giỏi? Công việc của một Tester chủ yếu liên quan đến việc kiểm tra và đánh giá phần mềm chứ không phải phát triển nó. Bạn không cần viết code mà chỉ cần kiểm tra xem code của lập trình viên có hoạt động như mong đợi không. Dù một số kỹ năng lập trình cơ bản có thể giúp ích trong các nhiệm vụ tự động hóa kiểm thử, nhưng việc kiểm thử thủ công (manual testing) và phát hiện lỗi đòi hỏi nhiều hơn về tư duy phân tích và sự tỉ mỉ.

Các kỹ năng cần thiết

  • Kỹ năng phân tích và chi tiết: Tester cần có khả năng nhận biết các chi tiết nhỏ nhất trong phần mềm để phát hiện lỗi hoặc các vấn đề tiềm ẩn.
  • Kiến thức về quy trình kiểm thử: Hiểu về các phương pháp kiểm thử như kiểm thử chức năng (functional testing), kiểm thử tích hợp (integration testing), kiểm thử hiệu năng (performance testing), và kiểm thử tự động (automated testing).
  • Kỹ năng giao tiếp: Tester cần mô tả rõ ràng các lỗi phát hiện được cho nhóm phát triển phần mềm để họ có thể sửa chữa.
  • Kỹ năng tổ chức: Tạo và quản lý các kịch bản kiểm thử (test cases) và báo cáo lỗi một cách có hệ thống.
  • Khả năng sử dụng các công cụ kiểm thử: Tester làm việc với các công cụ như JIRA, Selenium, TestRail hoặc các nền tảng quản lý lỗi và kiểm thử tự động.

Cơ hội nghề nghiệp

Nhu cầu việc làm Tester ngày càng tăng do sự phát triển nhanh chóng của các sản phẩm phần mềm và ứng dụng. Công việc này phù hợp cho những người yêu thích việc tìm ra lỗi, khám phá những chi tiết nhỏ và muốn đảm bảo sản phẩm công nghệ hoạt động tốt nhất có thể. Tester cũng có thể phát triển lên các vị trí cao hơn như Test Lead hoặc QA Manager.

  Không biết gì về máy tính có nên học CNTT (Giải đáp chi tiết)

  Học IT có khó không? 6 khó khăn khi theo học ngành CNTT

4. Technical Support

Technical Support

Technical Support là người giúp đỡ và giải quyết các vấn đề kỹ thuật mà người dùng gặp phải khi sử dụng phần mềm, phần cứng hoặc hệ thống mạng. Mặc dù Technical Support cần nắm vững kiến thức về công nghệ, nhưng phần lớn công việc của họ không liên quan đến lập trình. Thay vì viết code, họ tập trung vào việc hướng dẫn người dùng, khắc phục sự cố và bảo trì hệ thống.

Các kỹ năng cần thiết

  • Kỹ năng giao tiếp: Chuyên viên hỗ trợ kỹ thuật thường xuyên phải giao tiếp với khách hàng và người dùng để hiểu rõ vấn đề và cung cấp hướng dẫn chi tiết để khắc phục sự cố.
  • Kiến thức về phần mềm và phần cứng: Hiểu biết cơ bản về hệ điều hành, các ứng dụng phổ biến, cũng như kiến thức về phần cứng máy tính là rất quan trọng trong việc hỗ trợ người dùng.
  • Kỹ năng phân tích và giải quyết vấn đề: Technical Support cần khả năng nhanh chóng xác định nguyên nhân gốc rễ của sự cố và đưa ra các giải pháp phù hợp.
  • Kỹ năng tổ chức và quản lý thời gian: Đôi khi phải xử lý nhiều yêu cầu cùng một lúc, Technical Support cần khả năng ưu tiên các nhiệm vụ và quản lý thời gian một cách hiệu quả.
  • Kiến thức cơ bản về mạng: Hiểu biết về các vấn đề liên quan đến kết nối mạng, bảo mật mạng và máy chủ là một lợi thế.

Cơ hội nghề nghiệp

Technical Support là một vị trí không thể thiếu trong hầu hết các công ty công nghệ, đặc biệt là các doanh nghiệp cung cấp sản phẩm hoặc dịch vụ phần mềm. Công việc này phù hợp cho những ai thích làm việc với con người, có khả năng giải quyết vấn đề nhanh chóng và muốn làm việc trong môi trường công nghệ mà không cần kỹ năng lập trình chuyên sâu.

Tham khảo mức lương lập trình viên 2024 tại đây!

5. UX/UI Designer

UX/UI Designer là người chịu trách nhiệm tạo ra trải nghiệm người dùng (User Experience – UX) và thiết kế giao diện người dùng (User Interface – UI) cho các sản phẩm số như website, ứng dụng di động và phần mềm. Công việc này không đòi hỏi bạn phải có kỹ năng lập trình chuyên sâu, mà tập trung vào việc nghiên cứu người dùng, thiết kế giao diện hấp dẫn, thân thiện và đảm bảo trải nghiệm của người dùng mượt mà.

Các kỹ năng cần thiết

UX/UI Designer

  • Kỹ năng nghiên cứu và phân tích người dùng (UX): UX Designer cần hiểu rõ hành vi, nhu cầu và mong muốn của người dùng để thiết kế trải nghiệm phù hợp.
  • Kỹ năng thiết kế giao diện (UI): UI Designer tập trung vào việc tạo ra giao diện đẹp mắt, dễ sử dụng. Bạn sẽ làm việc với màu sắc, phông chữ, hình ảnh và bố cục để tạo ra trải nghiệm trực quan và hấp dẫn.
  • Kỹ năng sử dụng công cụ thiết kế: Các công cụ như Figma, Adobe XD, Sketch là những công cụ không thể thiếu trong quá trình tạo mô hình và thiết kế giao diện.
  • Kỹ năng tư duy sáng tạo và giải quyết vấn đề: UX/UI Designer cần có khả năng tìm ra giải pháp sáng tạo để cải thiện trải nghiệm người dùng và giải quyết các vấn đề thiết kế phức tạp.
  • Kỹ năng giao tiếp: UX/UI Designer phải làm việc với các bên liên quan như nhà phát triển phần mềm, quản lý sản phẩm và khách hàng để đảm bảo rằng thiết kế đáp ứng được mục tiêu của dự án.

Cơ hội nghề nghiệp

Các công ty từ startup đến các tập đoàn công nghệ lớn đều cần có một đội ngũ thiết kế UX/UI để đảm bảo rằng sản phẩm của họ không chỉ hoạt động tốt mà còn mang lại trải nghiệm tuyệt vời cho người dùng. Đây là một công việc phù hợp cho những người có đam mê về nghệ thuật, sáng tạo và nghiên cứu hành vi con người, nhưng không muốn tập trung vào các kỹ năng lập trình.

6. System Administrator

System Administrator là người chịu trách nhiệm quản lý, duy trì và đảm bảo hệ thống máy tính, mạng và các dịch vụ hạ tầng IT của doanh nghiệp hoạt động ổn định. System Administrator không yêu cầu phải có kỹ năng lập trình giỏi, thay vào đó, họ sử dụng các công cụ và phần mềm có sẵn để quản lý hệ thống, cấu hình máy chủ, và giải quyết các sự cố phát sinh.

Các kỹ năng cần thiết

  • Kỹ năng quản lý hệ thống: Quản trị viên hệ thống cần am hiểu về hệ điều hành (Linux, Windows Server), hệ thống lưu trữ và các phần mềm quản trị máy chủ.
  • Kỹ năng quản trị mạng: System Administrator phải có khả năng quản lý và cấu hình mạng, từ các thiết bị như router, switch cho đến việc giám sát lưu lượng và bảo mật mạng.
  • Kỹ năng giải quyết sự cố: Xử lý các vấn đề phát sinh trong hệ thống, chẳng hạn như sự cố máy chủ, mất kết nối mạng, hoặc lỗi bảo mật, đòi hỏi khả năng phân tích và xử lý vấn đề nhanh chóng.
  • Kỹ năng bảo mật: Đảm bảo an ninh hệ thống là một phần quan trọng của công việc, yêu cầu System Administrator có kiến thức về các biện pháp bảo mật như tường lửa (firewall), phần mềm diệt virus và phương pháp sao lưu dữ liệu.
  • Kỹ năng quản lý phần mềm và phần cứng: Quản lý và triển khai phần mềm, theo dõi tài nguyên phần cứng và đảm bảo rằng các thiết bị trong mạng luôn hoạt động tốt.

Cơ hội nghề nghiệp

System Administrator là một vị trí thiết yếu trong mọi tổ chức, từ doanh nghiệp nhỏ đến các tập đoàn lớn, nơi mà hệ thống IT đóng vai trò sống còn trong hoạt động hàng ngày. Người làm System Administrator có thể phát triển sự nghiệp lên các vai trò quản lý như IT Manager, Network Administrator, hoặc chuyên gia an ninh mạng (Security Specialist).

7. IT Business Analyst

IT Business Analyst chịu trách nhiệm phân tích, đánh giá các quy trình kinh doanh, sau đó đề xuất giải pháp công nghệ để tối ưu hóa hiệu suất và hiệu quả hoạt động của doanh nghiệp. IT Business Analyst không trực tiếp phát triển phần mềm mà làm việc với dữ liệu và thông tin để xác định nhu cầu kinh doanh, sau đó phối hợp với đội ngũ lập trình viên và các bên liên quan để đảm bảo rằng các giải pháp công nghệ đáp ứng được nhu cầu đó.

IT Business Analyst

Các kỹ năng cần thiết

  • Kỹ năng phân tích nghiệp vụ: IT Business Analyst cần có khả năng phân tích quy trình kinh doanh và xác định các vấn đề tiềm ẩn, từ đó đề xuất các giải pháp IT để giải quyết những vấn đề đó.
  • Kỹ năng giao tiếp: Vị trí này yêu cầu khả năng giao tiếp xuất sắc để trao đổi thông tin giữa các phòng ban, bao gồm cả các nhân viên không có nền tảng kỹ thuật và đội ngũ kỹ sư phần mềm.
  • Kỹ năng quản lý dự án: IT Business Analyst thường tham gia vào việc lập kế hoạch, theo dõi tiến độ và đảm bảo rằng các dự án công nghệ được hoàn thành đúng thời hạn, trong ngân sách và đáp ứng yêu cầu.
  • Kỹ năng phân tích dữ liệu: Hiểu biết về các công cụ phân tích dữ liệu và khả năng đọc, phân tích số liệu giúp Business Analyst đưa ra các quyết định chính xác dựa trên dữ liệu thực tế.
  • Kỹ năng làm việc với hệ thống IT: IT Business Analyst cần có hiểu biết cơ bản về các hệ thống phần mềm và công cụ quản lý quy trình doanh nghiệp (ERP, CRM, v.v.), mặc dù không cần phải lập trình.

Cơ hội nghề nghiệp

Với sự phát triển của chuyển đổi số và nhu cầu tối ưu hóa quy trình, cơ hội việc làm IT Business Analyst ngày càng mở rộng. Vị trí này có thể dẫn đến các cơ hội nghề nghiệp cao hơn như Product Manager, Project Manager, hoặc thậm chí là CIO (Chief Information Officer).

Tổng kết

Bài viết này đã gợi ý cho bạn 7 vị trí trong ngành CNTT không cần kỹ năng code giỏi. Mỗi vị trí đều mang lại giá trị riêng và yêu cầu những kỹ năng khác nhau. Điều quan trọng là bạn cần xác định sở thích và thế mạnh của mình để chọn con đường phù hợp. Với sự phát triển không ngừng của công nghệ, các công việc không yêu cầu kỹ năng lập trình chuyên sâu sẽ tiếp tục phát triển, mở ra nhiều cơ hội cho những ai đam mê lĩnh vực CNTT.

Xem thêm:

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

BA làm gì trong một dự án phần mềm? (P1)

BA làm gì trong một dự án phần mềm? (P1)

Bài viết được sự cho phép của tác giả Nguyễn Hoàng Phú Thịnh

Hế lôôôô anh em,

Bài viết này mình sẽ hệ thống lại rõ hơn công việc của BA theo trình tự thời gian làm dự án. Từ đó anh em sẽ có cái nhìn rõ ràng hơn về công việc của BA.

Quy trình làm dự án

Đầu tiên sẽ là quy trình tổng quan như sau.

Quy trình làm dự án
Quy trình làm dự án

Như anh em thấy quy trình làm phần mềm nó gồm 6 bước:

  • Analysis: phân tích xem mình sẽ làm những gì
  • Design: mình sẽ thiết kế phần mềm như thế nào
  • Develop: mình sẽ code ra sao
  • Test: phần mềm được đem đi test
  • Deploy: phần mềm được đưa vào sử dụng
  • Maintain: giai đoạn bảo trì, hỗ trợ khách hàng sử dụng phần mềm.

Quy trình dự án về cơ bản gồm 6 bước trên, nhưng thực tế nó sẽ linh hoạt theo từng phương pháp quản lý dự án (project management methodology).

Phương pháp quản lý dự án là những thứ như: Scrum/Agile, Waterfall, Kanban, Lean…

Ví dụ đối với Waterfall thì quy trình sẽ đi theo trình tự từ trái qua phải (không đi ngược lại), mỗi bước chỉ đi qua 1 lần.

Cụ thể như analysis xong rồi, thì mới tới giai đoạn design, rồi xong design thì mới tới develop, tương tự là test >> deploy >> maintain.

Tức mình phải đợi dự án chạy từ đầu tới cuối thì mới dòm được thành phẩm cuối cùng hình dạng nó ra sao.

Còn đối với Scrum thì anh em sẽ chia nhỏ requirements ra thành các User Story, gom vào từng Sprint Backlog để làm dần dần. Tức mình chia nhỏ ra thành từng cục để làm.

Vậy thì quy trình trên sẽ không đi từ đầu tới cuối 1 lần duy nhất, mà đi nhiều lần từ analysis -> deploy, tạo thành nhiều sprint, nhiều vòng lặp. Mỗi vòng lặp sẽ làm một số tính năng nhất định, nên thời gian sẽ được rút ngắn còn khoảng từ 2-4 tuần/ sprint.

Do đó, khách hàng sẽ thấy ngay được sản phẩm của mình thành hình dần dần, từ đó góp ý để cải thiện sản phẩm ngày một phù hợp hơn với họ.

 Scrum với Waterfall
Tuy phương pháp triển khai khác nhau, nhưng về cơ bản các bước làm dự án là như nhau

Mình nói đoạn này để anh em hiểu bản chất làm dự án phần mềm nó cũng chỉ gồm 6 bước thôi, dù cho có làm Scrum hay Waterfall, hay bất cứ phương pháp nào.

(mặc dù ở mỗi phương pháp nó có 1 tí râu ria liên quan khác nhau, cái này mình sẽ nói sau nhé anh em…)

Một điểm nữa là requirement sẽ đi xuyên suốt từ đầu đến cuối dự án thông qua 6 bước này. Là BA, chúng ta cũng sẽ phải đi xuyên suốt từ đầu đến cuối dự án qua 6 bước này luôn.

software development life cycle
Requirement xuyên suốt từ đầu đến cuối dự án

Giờ mình sẽ nói chi tiết về từng bước có trong dự án, và BA làm gì ở trỏng nhé anh em 😎

1. Analysis

Analysis là giai đoạn team dự án sẽ phân tích để hiểu được vấn đề của khách hàng và những gì mà họ đang mong đợi.

Đối với BA, đây chính là giai đoạn lấy yêu cầu.

Anh em sẽ làm rất nhiều bước nhỏ trong bước Analysis này để lấy yêu cầu một cách bài bản nhất (chứ không phải nói “lấy yêu cầu” là bay zô làm cái một, hỏi tùm lum tùm la là được)

Cụ thể Analysis gồm 6 bước nhỏ sau.

software development life cycle
6 bước nhỏ trong bước Analysis trong quy trình làm dự án.

Thực chất mình chỉ cần focus vào 2 bước Elicitation và Analysis, vì các bước còn lại khá đơn giản, đều là những bước hiển nhiên mình phải làm.

1.1. Project Definition

Mục đích của bước này là để anh em BA chúng ta hiểu được project. Hiểu được project này làm gì, khách hàng là ai, lĩnh vực gì, vấn đề của họ ra sao, mục tiêu của họ là gì, scope dự án như thế nào…

Project Definition

Problem to be solved

Ví dụ như khách hàng đang dùng hệ thống SAP gặp lỗi nhiều quá, họ muốn build mới một hệ thống khác chạy ngon hơn.

Hoặc họ đang không có hệ thống quản lý kho bãi, vẫn đang tốn tiền nhân công, hiệu suất thấp, và sai sót vẫn còn xảy ra; thì đây chính là vấn đề họ cần giải quyết

Business Goal

Ví dụ họ muốn quản lý quan hệ khách hàng bằng một phần mềm nào đó. Hoặc triển khai thành công hạ tầng IoT cho 5,000 hecta cà phê đang trồng chẳng hạn.

Business Case

Là những hiện trạng cụ thể của khách hàng. Ví dụ công ty con này mới thành lập được 5 năm, hoặc công ty mới vừa bán hàng cho thị trường Châu Mỹ được gần 1 năm.

Project Scope

Phạm vi của dự án. Là BA, anh em cần phải hiểu rõ khoản này. Thường anh em sẽ chú ý tới:

  • Organization Scope: ví dụ dự án được thực hiện tại Head Office ở Hồ Chí Minh, địa chỉ bao nhiêu đó. Công ty con ở Đà Nẵng hay Hà Nội không được áp dụng.
  • Users Scope: hệ thống có bao nhiêu người dùng, thuộc những bộ phận nào.
  • Functional Scope: cái này quan trọng nhất – mô tả những chức năng của hệ thống mà khách hàng mong muốn.
  • Integration Scope: thực chất nó là 1 Non-Functional Requirement, nhưng được tách ra phần riêng, mô tả phạm vi tích hợp: hiện tại khách hàng đang dùng những hệ thống gì, cần tích hợp những components nào, tần suất ra sao, vâng vâng…
  • Và cuối cùng là OUT OF SCOPE: anh em xác định trước những thứ sẽ nằm ngoài phạm vi dự án, kiểu như rào trước vậy đó.

Project Plan

Anh em đã nắm được lịch dự án của PM hay chưa, có khó khăn về thời gian không, theo lịch thì có đoạn nào cần gấp, dồn sức nhiều hay không… Và cuối cùng là.

Success Criteria

Cái này anh em có thể trao đổi với PM để hiểu hơn về dự án, về khách hàng: đâu là điểm họ kỳ vọng nhất, làm họ happy nhất. Focus vào điểm đó, anh em sẽ dễ đóng dự án hơn rất nhiều!

Sau khi hiểu được tổng quan dự án, anh em sẽ bắt đầu vô bước MOI MÓC YÊU CẦU – Elicitation 😎

  Dân BA có cần phải rành về kỹ thuật???

  Check list các kỹ năng cần phải có của người làm BA (Phần 1)

1.2. Elicitation

Elicitation tức là moi móc thông tin, moi móc yêu cầu từ phía khách hàng. Moi móc nghĩa là nó không có sẵn để anh em lấy, mà phải làm tùm lum tùm la mới ra được.

Elicitation
Sự khác biệt giữa Collect và Elicit

Ở bước Elicitation, anh em cần nắm được các phương pháp moi móc thông tin. Phổ biến nhất có 11 phương pháp sau:

  1. Meeting
  2. Data Analysis
  3. Interface Analysis
  4. Prototyping
  5. Business Rules Analysis
  6. Observation
  7. Bench Marking
  8. Mind Mapping
  9. Process Analysis and Modeling
  10. Survey
  11. Document Analysis

Sau khi nắm được 11 phương pháp, anh em sẽ đi vào quy trình Elicitation, gồm 4 bước nhỏ sau.

quy trình Elicitation
4 bước moi móc yêu cầu

Mình có 2 bài note nói về nội dung này, anh em bấm vào link dưới tham khảo thêm nhé:

Sau bước này anh em sẽ có output là thông tin, rất nhiều thông tin.

Trong mớ thông tin này, anh em có thể có luôn yêu cầu cụ thể, yêu cầu mơ hồ, câu trả lời từ phía khách hàng; hoặc đơn giản chỉ là những thứ mà khách hàng nói với mình vì họ nghĩ những thông tin đó là cần thiết.

1.3. Analysis

Sau khi anh em đã hiểu dự án (project definition) và moi móc được một mớ thông tin (elictation), giờ anh em sẽ lấy mớ thông tin đó ra, và bắt đầu phân tích nó.

Thường thì mọi người không hiểu “phân tích” cụ thể sẽ làm những gì. Mình cũng vậy, cho đến khi mình gặp 1 anh Manager đẹp chai mà mình rất hâm mộ. Ảnh nói rằng:

Phân tích đơn giản chỉ là sắp xếp & phân loại mọi thứ lại cho đẹp đẽ, sạch sẽ mà thôi 🙂

Hay Sandhya Jane (tác giả cuốn Business Analysis: The question and answer book) cũng có nói rằng:

“Analysis means simply breaking down the information of an object, entity, process, or anything else to understand its functioning“

Sandhya Jane

Ngẫm đi ngẫm lại thì đúng là vậy anh em ạ.

Giám đốc ngân hàng yêu cầu phân tích xem: vì sao quý này nợ xấu lại tăng cao đến như vậy?

Lúc này bộ phận kinh doanh sẽ làm gì? Chẳng phải anh sếp kinh doanh ảnh sẽ yêu cầu đổ toàn bộ dữ liệu các giao dịch cho vay trong khoảng thời gian phù hợp. Rồi phân loại rõ ràng theo các tham số: đối tượng khách hàng, phân khúc sản phẩm, hạn mức, kỳ hạn trả, vâng vâng và vâng vâng…

Anh em có nhận ra anh sếp kinh doanh này đang làm gì không? Chính xác là ảnh đang sắp xếp & phân loại mọi thứ cho ra ngô ra khoai 🙂

Để từ đó ảnh mới có thể làm tiếp công việc mà ảnh được trả hàng nghìn đô một tháng để làm, đó là: nhìn số liệu >> tìm ra vấn đề >> và giải quyết.

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

Phân tích với BA cũng tương tự như vậy.

Khi khách hàng có vấn đề trong bộ máy hoạt động, họ sẽ tìm đến mình. Và sau một loạt các buổi elicit requirement, chúng ta sẽ lấy được rất rất nhiều thông tin từ khách hàng (hoặc không).

Nhiệm vụ của anh em là phải xác định được: Đâu mới là vấn đề thực sự của khách hàng, và đâu mới là cái họ cần nhất ngay lúc này.

Hãy tưởng tưởng từ một mớ hỗn độn thông tin lấy được, chúng ta sẽ rất khó để biết được:

  • Đâu mới là vấn đề thực sự của họ
  • Đâu là những yêu cầu thực tế
  • Đâu là những yêu cầu tầm bậy tầm bạ
  • Và đâu là những thứ khách hàng thực sự nên ưu tiên vào lúc này…

Bước Analysis sẽ giúp anh em làm rõ những điều trên. Cụ thể ở bước này anh em sẽ làm những thao tác sau.

analysis
Analysis – Phân tích requirement sau khi moi móc về được

Theo trình tự, anh em sẽ:

(1) Organize

Tức là sắp xếp, tổ chức lại các requirement.

Ví dụ: tệp ảnh ra tệp ảnh, tệp ghi âm ra tệp ghi âm, thông tin về nhóm nghiệp vụ quản lý khách hàng gom chung lại 1 chỗ, nghiệp vụ quản lý chất lượng gom chung lại 1 chỗ khác, ví dụ vậy. Để mình có cái nhìn tổng quan nhất.

(2) Functional Decompose

Bước này anh em sẽ phân rã các yêu cầu thành các yêu cầu nhỏ hơn, cụ thể hơn. Mục đích là để có cái nhìn thực tế nhất về tính khả thi của các yêu cầu này.

Ví dụ họ muốn hệ thống có khả năng nhắc nhở các buổi họp định kỳ với đối tác của khách hàng (*).

Vậy thì anh em sẽ phân rã ra, để làm được yêu cầu trên thì hệ thống phải có chỗ ghi nhận được các buổi họp định kỳ đúng không anh em? Sau đó phải có một cái job nó chạy định kỳ, cứ trước 3 ngày diễn ra cuộc họp là gửi email nhắc nhở.

Vậy thì sau khi phân rã (*), anh em sẽ có như sau:

  • Tính năng lưu trữ thông tin cuộc họp
  • Tính năng gửi email nhắc nhở dựa trên thời gian cuộc họp.

Để sau này khi ngồi lại với dev, anh em sẽ dễ dàng giải thích và cũng dễ để xác nhận với khách hàng hơn, là: “à tụi em sẽ làm như vầy, như vầy nha chị…”. Kiểu vậy.

(3) Prioritize

Bước này là bước đánh số thứ tự ưu tiên cho từng yêu cầu cụ thể của khách hàng.

Ví dụ có 3 yêu cầu sau:

  • Hệ thống phải lưu trữ được thông tin khách hàng (a)
  • Hệ thống phải tự động thông báo những khách hàng đã mua hàng trên 5,000,000đ trong tháng (b)
  • Hệ thống phải tạo được đơn hàng với thông tin bảng giá lấy từ hệ thống quản lý bán lẻ A Á Ớ Bờ Cờ (c)

Thì mình sẽ đánh giá mức độ ưu tiên của yêu cầu (b) thấp hơn yêu cầu (a) và (c). Vì phải có dữ liệu khách hàng và đơn hàng thì mới có thể lọc được thông tin khách mua hàng trên 5 triệu trong tháng.

Anh em có thể tham khảo một vài tiêu chí phân loại Requirements dưới đây.

prioritize-requirement
Một vài tiêu chí phân loại requirements

Tiếp theo là 2 bước Validate và Verify. 2 bước này đều là 2 bước xác nhận, nhưng nó khác nhau ở chỗ:

(4) Validate

Do the thing right

(5) Verify

Do the right thing

Nói về bước Analysis, anh em tham khảo thêm bài note này nhé, mình có nói chi tiết kèm ví dụ ở note này: Hiểu về Requirement như thế lào cho đúng???

Sau 3 bước quan trọng đầu tiên: Project Definition >> Elicitation >> Analysis, anh em sẽ đi tiếp tới 3 bước cuối cùng.

analysis-step-in-sdlc
Nãy giờ chúng ta đã đi được 3 bước này.

1.4. Documentation

Bước documentation nôm na nghĩa là anh em sẽ tài liệu hóa, tức là đem toàn bộ những thứ làm được nãy giờ bỏ vô tài liệu.

Tài liệu đó chính là SRS, hoặc FRD, tùy loại dự án mà mình có những loại tài liệu khác nhau nhé anh em. Nhưng mục đích chung thì vẫn là để mô tả chi tiết yêu cầu của khách hàng.

Để document thì anh em sẽ áp dụng 2 thứ sau:

  1. Tận dụng các template có sẵn
  2. Dùng ngôn ngữ mô hình hóa để document.

Ngôn ngữ mô hình hóa có khoảng 20 loại. Trong đó có 2 loại phổ biến nhất là BPMN và UML.

Template thì tùy công ty. Công ty của anh em dùng template gì thì anh em cứ dùng template đó thôi. Có thời gian mình sẽ share về các template này sau nhé.

1.5. Verification

Sau khi document xong, anh em sẽ chuyển cho team verify lại một lần nữa. Cụ thể là QA hoặc PM.

Họ sẽ kiểm tra lại xem thử anh em đã document đúng chưa, đủ các phần yêu cầu chưa. Đặc biệt là PM sẽ kiểm tra lại các yêu cầu của khách hàng đã được document chính xác và hợp lý hay chưa.

1.6. Management

Bước cuối cùng là management, tức là anh em sẽ quản lý các document sau khi đã xong xuôi. Quản lý ở đây là quản lý gì?

Ví dụ nếu requirement thay đổi, tức nội dung của tài liệu SRS hoặc FRD thay đổi, thì anh em phải đánh dấu version như thế nào, duyệt nội bộ rồi gửi cho khách hàng duyệt như thế nào.

Quản lý requirement sao cho dễ keep track cũng là một vấn đề khá nhức nhối :)) anh em nào có kinh nghiệm share bên dưới cho mình nhé.

Stop station…

Dừng chân recall một chút về 6 bước nãy giờ nhé anh em. Mục đích mình làm bài bản 6 bước này là để ra được 1 loại document mô tả chi tiết yêu cầu của khách hàng.

Như mình nói ở trên nó là SRS (Software Requirement Specification) hoặc FRD (Functional Requirement Document). Và có thể là 1 số loại template khác nữa, tùy công ty.

Reuirement-analysis
Output của bước Analysis đối với BA

Trong 6 bước này, anh em lấy bước Elicitation và Analysis làm trọng tâm. Vì hầu như các bộ kỹ năng cứng của BA đều nằm ở đây hết.

Cái BA mình cần deliver được sau 2 bước này chính là REQUIREMENT. Nếu nhìn xuyên suốt qua cả 2 bước, anh em sẽ thấy requirement nó đi như sau:

elicitation-to-analysis-requirement
Luồng requirement đi từ lúc “mịt mờ” đến lúc “sáng tỏ” và được analyze.

Vậy là anh em đã đi xong giai đoạn Analysis trong quy trình làm dự án.

Bài này dài quá nên mình sẽ cắt ra. Anh em xem tiếp tập 2 ở đây nhé: Quy trình dự án, BA làm gì ở trỏng? (P2).

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

Xem thêm:

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

BA làm gì trong một dự án phần mềm? (P2)

BA làm gì trong một dự án phần mềm? (P2)

Bài viết được sự cho phép của tác giả Nguyễn Hoàng Phú Thịnh

Hế lôôô anh em, bài này mình sẽ đi tiếp quy trình làm dự án phần mềm và công việc của BA trong đó.

Ở phần trước mình đã note lại giai đoạn đầu tiên là Analysis, gồm 6 bước nhỏ: Project Definition >> Elicitation >> Analysis >> Documentation >> Verification >> Management.

software development life cycle
Recall lại 6 bước nhỏ trong giai đoạn Analysis ở bài trước

Hi vọng anh em sẽ không cảm thấy khó hiểu khi đọc đến đây.

Sau bước Analysis này chúng ta đã có tài liệu mô tả yêu cầu, tức là đã biết được khách hàng cần gì. Giờ BA và team dự án sẽ đi vào giai đoạn thiết kế hệ thống sao cho đáp ứng những yêu cầu này nhé anh em 😎

2. Design

Ở bước này, tùy level, trách nhiệm, và loại dự án, mà BA sẽ tham gia vào ít hoặc nhiều.

Thực tế xảy ra là: hiếm khi BA ghi nhận các được yêu cầu một cách chi tiết ngay ở bước analysis. Nếu có thì chỉ ở mức độ high level. Còn tiểu tiết như từng User Story thì rất khó.

Do đó thường thì ở giai đoạn này (và có thể là các giai đoạn sau), BA sẽ phải trao đổi thêm với khách hàng để làm rõ các yêu cầu (những anh em nào đã kinh nghiệm, có khả năng clarify rõ ràng mọi thứ ngay từ đầu thì những giai đoạn sau này sẽ đỡ hơn rất nhiều).

Chưa kể nếu dự án triển khai theo Agile thì yêu cầu thay đổi liên tục, đòi hỏi anh em phải quản lý các requirement bài bản và làm việc với khách hàng nhiều về các yêu cầu thay đổi này.

Đó là phía mình, còn về phía khách hàng, nhiều khi họ còn chưa chắc về những yêu cầu họ đưa ra. Mà business thay đổi thì là chuyện một sớm một chiều.

Nên đây là chuyện hết sức bình thường: Requirement sẽ luôn thay đổi không ít thì nhiều xuyên suốt dự án. Đó là lý do vì sao mình vẽ đường //Requirement// màu xanh lá trên cùng chạy xuyên suốt dự án đó anh em 😎 

Output của bước Design đối với BA

Ở bước design, anh em sẽ can thiệp sâu một ít về kỹ thuật, bao gồm những thứ như:

  • Thiết kế Database
  • Vẽ Data Flow
  • Vẽ Mockup
  • Thiết kế UX/UI
  • Thiết kế Business Process Flow
  • Thiết kế bộ phân quyền hệ thống
  • Vẽ Solution Architect

Nghe tùm lum tùm la nhưng những điểm trên không phải một mình BA thầu hết (may quá), mà phải có sự can thiệp/ support của các anh em khác, có thể là Dev, Technical Architect, hoặc PM…

Và những thứ này sẽ linh động theo tùy loại dự án. Như những dự án triển khai thì sẽ không cần thiết kế UX/UI hay vẽ mockup.

Tuy nhiên mình thấy trong các thứ trên, hầu như BA sẽ thầu hết 70%.

Solution Architect thì TA sẽ làm. Database thì BA làm cũng được, nhưng cần có sự review từ toàn team vì nó sẽ ảnh hưởng đến những thứ trong tương lai. Còn về UX/UI thì có anh em designer làm chứ BA mình không có chuyên môn để làm phần này (và thường thì cũng chẳng có BA nào đi design UX/UI cả – trừ khi thiếu resources dữ lắm thôi).

Sau cùng cả team sẽ gom các kết quả lại để ra được thành phẩm cuối cùng là: Tài liệu thiết kế.

Để cho sang thì anh em hay gọi là SDD (Software Design Document) hoặc FDD (Functional Design Document).

Ô kê, vậy là qua 2 giai đoạn (Analysis và Design), chúng ta đã có được 2 tài liệu quan trọng:

  • Tài liệu mô tả yêu cầu (SRS/FRD)
  • Tài liệu thiết kế (SDD/FDD)

Có hàng nóng trong tay, anh em developer sẽ bắt đầu HIỆN THỰC HÓA sản phẩm bằng cách viết những dòng code đầu tiên.

3. Develop

Giai đoạn này anh em BA sẽ hỗ trợ Development Team trong quá trình build sản phẩm.

Ví dụ có Use Case nào chưa rõ, anh em sẽ giải thích để dev họ hiểu hơn về mục đích của Use Case. Hoặc nếu anh em làm giai đoạn Analysis và Design không kỹ, thì giai đoạn Development sẽ lòi ra những lỗi logic giữa các yêu cầu với nhau.

Ví dụ yêu cầu này conflict yêu cầu kia. Thì lúc này anh em BA phải làm việc lại với khách hàng để làm rõ vấn đề, rồi update lại cho Development Team để anh em làm tiếp.

BA làm gì trong bước Develop?
BA làm gì trong bước Develop?

Sau khi Development Team build xong một hoặc nhiều tính năng nào đó, chúng ta sẽ phải test các tính năng này.

  6 vùng kiến thức mà Business Analyst nào cũng phải biết!

  Top câu hỏi phỏng vấn vị trí Business Analyst mới nhất

4. Test

Giai đoạn test gồm 2 giai đoạn nhỏ: Internal Testing và External Testing.

4.1. Internal Testing

Internal Testing tức là nội bộ team dự án tự kiểm tra với nhau xem thử các tính năng đã được build đúng chưa, trước khi release cho khách hàng.

Đây có thể là nhiệm vụ của BA, hoặc không.

Các Software Development Team luôn có vai trò QC. QC sẽ là người chịu trách nhiệm test các tính năng vừa mới build này. Đảm bảo Dev làm đúng theo như tài liệu yêu cầu/ thiết kế, và đảm bảo team deliver đúng như những gì đã cam kết với khách hàng.

QC sẽ viết các Test Case để kiểm tra từng tính năng một.

Còn đối với các dự án triển khai, Software Implementation Team thường sẽ không có QC. BA trong team sẽ chịu trách nhiệm cho các phần test này luôn.

Vì so với những dự án build mới từ đầu, độ chính xác của các tính năng chuẩn trong các dự án triển khai sẽ cao hơn rất nhiều.

Vì triển khai là triển khai những gì đã có sẵn. Những tính năng này đều do các hãng lớn build sẵn, nên hầu như việc sai sót là không có.

BA trong các dự án triển khai chỉ cần test lại các tính năng “khác lạ so với chuẩn”. Tức là những tính năng customized mà khách hàng yêu cầu. Chứ không cần test lại toàn bộ các tính năng từ nhỏ tới lớn mà dev build như login, authorization, CRUD, import/export…

Ngoài Test Case ra, anh em BA cần phải chuẩn bị một thứ nguy hiểm hơn, đó là: Requirement Traceability Matrix (RTM).

Output của bước Test đối với BA
Output của bước Test đối với BA

RTM cũng không có gì quá ghê gớm. Anh em chỉ cần lấy Test Cases map với Requirements là sẽ ra được RTM.

Mục đích của Requirement Traceability Matrix là để anh em trace lại được là các Requirement đã được test hay chưa, và test thành công hay thất bại. RTM sẽ giúp anh em control được “sức khỏe” của các requirements xuyên suốt dự án.

requirement-Traceability-Matrix
Ví dụ về RTM. Lấy Test Case map với Requirement, anh em sẽ có Requirement Traceability Matrix.
Test-Case
Ví dụ về Test Case

4.2. External Testing

Sau khi team đã test nội bộ với nhau và chắc chắn rằng: “à những tính năng này đã được build đúng & build đủ”. BA sẽ thực hiện các buổi User Acceptance Test (UAT) với khách hàng.

User Acceptance Test là buổi mà một vài key-users của khách hàng sẽ ngồi test lại hệ thống từ đầu đến cuối, dựa trên Test Case mà khách hàng tự viết hoặc bên đối tác viết (cái lúc nãy).

Sau khi test xong, nếu có vấn đề gì thì anh em phải sửa lại và thực hiện UAT lại. Còn nếu mọi thứ ô tô kê thì dự án sẽ qua bước tiếp theo: Deploy cho end-users sử dụng 😎

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

5. Deploy

Đối với BA, anh em có thể hiểu Deploy nghĩa là mình sẽ làm tất cả những thứ để hệ thống sẵn sàng được sử dụng. Những thứ đó có thể là:

  • Build solution từ môi trường Dev lên môi trường Production.
  • Migrate data: là chuyển toàn bộ data hiện tại của khách hàng từ hệ thống cũ sang hệ thống mới.
  • Thiết lập người dùng như: phân quyền, cập nhật tài khoản, thông tin cá nhân…
  • Hướng dẫn người dùng sử dụng hệ thống
  • Và một số thứ râu ria khác tùy dự án, như: bật audit hệ thống, kích hoạt các batch job, hoặc chuẩn bị Go-Live Checklist.
deploy-output-in-sdlc
Output của bước Deploy đối với BA

Ở bước này mình muốn highlight với anh em dòng “hướng dẫn người dùng sử dụng hệ thống” như nhiệm vụ chính của BA trong giai đoạn này. Các phần còn lại, BA và anh em Developer sẽ cùng phối hợp thực hiện.

Để training end-users, anh em sẽ cần có tài liệu hướng dẫn (User Manual). User Manual có thể có nhiều dạng: tệp pdf, video, hoặc thậm chí là tài liệu prezi,… tùy nhu cầu và cách làm của mình.

user-manual-screenshot
Ví dụ về User Manual – phiên bản pdf: 1 bên là ảnh chụp màn hình, 1 bên là hướng dẫn chi tiết.

Sau khi chuẩn bị xong User Manual, anh em sẽ tiến hành training cho end-users. Sau đó anh em sẽ làm một danh sách các điểm cần chuẩn bị để tiến hành Go-live, gọi là Go-live Checklist.

Go-live-checklist
Ví dụ về Go-live Checklist – những thứ anh em cần chuẩn bị trước khi Go-live

Xong, vậy là coi như anh em đã sẵn sàng để Go-Live, cột mốc quan trọng bậc nhất trong bất kỳ dự án nào 😎

Sau giai đoạn Deploy trước giai đoạn Maintain sẽ là cột mốc Go-live. Giả dụ anh em đã Go-live thành công đi nhé, để mình qua giai đoạn tiếp theo :v

6. Maintain

Sau khi Go-live xong, tức là khách hàng đã thật sự sử dụng hệ thống, anh em sẽ vào giai đoạn cuối cùng trong quy trình làm dự án phần mềm, đó là Maintenance – Bảo trì (hoặc cũng có thể là Warranty – Bảo hành)

Thường thì các dự án mình làm sẽ bảo trì khoảng 1-3 tháng sau Go-live.

Bảo hành tức là mình sẽ hỗ trợ khách hàng, xem thử trong quá trình sử dụng họ có gặp vấn đề gì không, bug chỗ nào để mình hỗ trợ giải quyết kịp thời.

Khi có lỗi phát sinh, khách hàng sẽ gửi lỗi này lên một trang portal để BA và anh em trong team biết mà bay vô support. Hoặc đơn giản người Contact Point bên phía khách hàng sẽ tổng hợp các lỗi định kỳ hàng tuần/ tháng và gửi email cho team dự án.

maintain-output-in-sdlc
Output của bước Maintenance đối với BA

Trong giai đoạn này, các lỗi đều sẽ được log lại để theo dõi “vòng đời lỗi” (nghe hoành tráng quáaa). Tức là lỗi từ lúc phát sinh đến lúc được giải quyết, ai là người phát hiện ra lỗi, thuộc phân hệ nào, nguyên nhân ra sao, tình trạng thế nào, và thời gian ghi nhận.

Ngoài ra, nếu anh em có các hoạt động support khách hàng tại văn phòng của họ (onsite các kiểu) hoặc online meeting, thì anh em sẽ phải làm những Activity Sheet, ghi nhận những hoạt động đó, để 2 bên có thể dễ dàng quản lý, đặc biệt trong trường hợp có chi phí phát sinh.

.

.

Ô kêêê anh em đã thấy mệt chưa. Vậy là coi như chúng ta đã đi xong một quy trình làm dự án!

Cùng nhìn lại những thứ mà BA sẽ deliver xuyên suốt dự án nhé anh em.

BA-output-though-project-cycle
Những thứ mà BA sẽ deliver xuyên suốt dự án

Mình nhắc lại là tùy kiểu quản lý dự án (project management methodology) mà quy trình trên sẽ thay đổi, nhưng về bản chất nó sẽ luôn bao gồm 6 giai đoạn trên, và công việc BA cũng sẽ không khác gì mấy trong 6 giai đoạn này.

Kết bài

Hi vọng qua bài này anh em sẽ thật sự hiểu rõ về nghề BA, về Business Analyst.

Đây 100% là các công việc BA sẽ làm trong các công ty outsource hoặc service. Còn đối với các công ty client, BA sẽ làm hơi khác một chút, nhưng cơ bản thì vai trò của BA trong công ty nào cũng giống nhau hết 🙂

Sorry anh em dạo này nhịp độ ra bài hơi chậm, mong anh em thông cảm 😥 Mình sẽ luôn cố gắng duy trì mật độ 4 bài/ tháng, anh em cứ yên tâm nhé.

Nếu có gì cần hỏi hoặc trao đổi thêm, anh em cứ còm men bên dưới cho mình nhé. Bái bai và hẹn gặp lại!

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

Xem thêm:

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

Bức tranh toàn cảnh hệ sinh thái khởi nghiệp công nghệ Việt Nam 2024

Bức tranh toàn cảnh hệ sinh thái khởi nghiệp công nghệ Việt Nam 2024

Trong bối cảnh chuyển đổi số đang diễn ra mạnh mẽ, hệ sinh thái khởi nghiệp công nghệ Việt Nam đã ghi nhận những bước phát triển vượt bậc. Năm 2023, Việt Nam đã trở thành “ngôi nhà” của hơn 3.000 startup, vươn lên vị trí thứ 3 tại châu Á. Bên cạnh đó, tổng số vốn đầu tư vào các startup công nghệ đạt 529 triệu USD, dù giảm 17% so với năm trước, nhưng vẫn cho thấy sự ổn định về số lượng thương vụ với 122 giao dịch​ (Theo Báo cáo thị trường IT Việt Nam 2024 do TopDev phát hành).

Những con số ấn tượng này không chỉ phản ánh tiềm năng to lớn mà còn là minh chứng cho sự phát triển nhanh chóng của ngành công nghệ tại Việt Nam, bất chấp những thách thức từ bối cảnh kinh tế toàn cầu. Chính phủ, các quỹ đầu tư mạo hiểm và nhà đầu tư thiên thần đã đóng vai trò quan trọng trong việc thúc đẩy hệ sinh thái này, tạo nên bức tranh khởi nghiệp đầy triển vọng cho năm 2024.

Tình hình hiện tại của hệ sinh thái khởi nghiệp công nghệ Việt Nam

Hiện tại, hệ sinh thái khởi nghiệp công nghệ Việt Nam đang chứng kiến sự phát triển mạnh mẽ, với số lượng startup tăng nhanh và vị thế ngày càng được cải thiện trên trường quốc tế. Việt Nam hiện có khoảng 3.000 startup, giữ vị trí thứ 3 trong khu vực châu Á, sau Singapore và Indonesia​. Điều này cho thấy sự bùng nổ của hệ sinh thái khởi nghiệp tại Việt Nam, đặc biệt tại các thành phố lớn như Hà Nội, TP.HCM và Đà Nẵng – nơi các cộng đồng công nghệ và startup đang tập trung phát triển​.

hệ sinh thái khởi nghiệp công nghệ Việt Nam

Xét về đầu tư, dù tổng vốn đầu tư vào các startup công nghệ trong năm 2023 giảm 17% so với năm trước, nhưng số lượng thương vụ hầu như không thay đổi. Điều này cho thấy sự ổn định và tiềm năng phát triển dài hạn của các công ty khởi nghiệp Việt Nam. Một số lĩnh vực nổi bật thu hút nhiều vốn đầu tư bao gồm chăm sóc sức khỏe, với mức tăng trưởng ấn tượng 391% so với năm trước, và giáo dục, với mức tăng 107%​.

Ngoài ra, hệ sinh thái khởi nghiệp Việt Nam còn nhận được sự hỗ trợ tích cực từ chính phủ thông qua các chính sách khuyến khích đổi mới sáng tạo và chuyển giao công nghệ. Những chương trình như Đề án 844 và Luật Hỗ trợ doanh nghiệp vừa và nhỏ đã góp phần đáng kể trong việc tạo điều kiện thuận lợi cho startup phát triển​.

  Ra mắt Báo cáo Thị trường IT Việt Nam 2024 - 2025: Cơ hội, Thách thức và Động lực Mới cho Ngành Công nghệ

  Tổng quan mức lương IT 2024: Xu hướng tăng trưởng và tương lai ngành công nghệ

Những động lực thị trường cho hệ sinh thái khởi nghiệp & đổi mới công nghệ tại Việt Nam

Những động lực thị trường đóng vai trò quan trọng trong việc thúc đẩy sự phát triển của hệ sinh thái khởi nghiệp và đổi mới công nghệ tại Việt Nam. Trước hết, sự hỗ trợ mạnh mẽ từ chính phủ thông qua các chính sách và chương trình đổi mới sáng tạo đã tạo nền tảng vững chắc cho các startup. Những chính sách của chính phủ tập trung vào việc khuyến khích chuyển giao công nghệ, đào tạo nhân lực, và thương mại hóa sản phẩm, giúp các startup có điều kiện phát triển thuận lợi​.

Bên cạnh đó, sự gia tăng đầu tư từ cả nhà đầu tư trong và ngoài nước cũng là một động lực quan trọng. Các quỹ đầu tư lớn như VinaCapital Ventures, FPT Ventures, CMC Innovation Funds,… đã góp phần không nhỏ vào việc thúc đẩy startup phát triển, đặc biệt là trong các lĩnh vực như AI, chăm sóc sức khỏe, và giáo dục.

hệ sinh thái khởi nghiệp công nghệ Việt Nam

Hội nhập quốc tế thông qua các hiệp định thương mại tự do và quan hệ đối tác chiến lược với các quốc gia như Hoa Kỳ, Hàn Quốc và Nhật Bản cũng là một động lực mạnh mẽ. Với 15 hiệp định thương mại tự do và các mối quan hệ đối tác toàn diện, Việt Nam đã mở rộng khả năng tiếp cận các thị trường lớn như Mỹ, châu Âu, Trung Quốc, ASEAN,… Điều này không chỉ giúp các doanh nghiệp khởi nghiệp tiếp cận nguồn vốn và công nghệ tiên tiến mà còn mở ra cơ hội mở rộng kinh doanh ra quốc tế​.

Ngoài ra, tiềm năng lớn từ sự phát triển của công nghệ AI và Generative AI cũng là một yếu tố thúc đẩy hệ sinh thái khởi nghiệp. Các dự án hợp tác với Google và Qualcomm nhằm phát triển nhân lực AI, cùng với việc thành lập các quỹ đầu tư dành cho Generative AI, đang tạo điều kiện thuận lợi cho sự bùng nổ của công nghệ này tại Việt Nam. Dự kiến đến năm 2030, thị trường AI toàn cầu sẽ đạt giá trị 826 tỷ USD, trong đó Việt Nam dự báo sẽ đóng góp đáng kể​.

Những thức thức mà startup công nghệ Việt Nam cần phải đối mặt

Mặc dù hệ sinh thái khởi nghiệp công nghệ tại Việt Nam đang phát triển mạnh mẽ, nhưng các startup vẫn phải đối mặt với nhiều thách thức đáng kể. Thiếu hụt nguồn nhân lực công nghệ cao là một trong những vấn đề lớn nhất. Dù Việt Nam có nguồn nhân lực trẻ và đông đảo, nhưng khả năng đáp ứng các yêu cầu kỹ thuật cao trong các lĩnh vực như AI hay Big Data còn rất hạn chế​. Điều này gây khó khăn cho các startup khi cần tuyển dụng những chuyên gia có năng lực để phát triển sản phẩm công nghệ tiên tiến.

Việt Nam thiếu hụt nguồn nhân lực công nghệ cao

Thêm vào đó, rào cản ngôn ngữ cũng là một vấn đề lớn đối với các startup công nghệ khi họ muốn mở rộng ra thị trường quốc tế. Dù trình độ tiếng Anh của người Việt đã được cải thiện, nhưng Việt Nam vẫn xếp hạng 58/113 quốc gia không nói tiếng Anh bản xứ. Điều này khiến các startup gặp khó khăn trong việc giao tiếp, hợp tác với đối tác quốc tế và tiếp cận nguồn vốn từ các nhà đầu tư nước ngoài.

Hệ thống pháp lý và hành chính chưa thực sự thuận lợi cũng là một trở ngại cho các startup. Mặc dù chính phủ đã có nhiều nỗ lực cải thiện môi trường kinh doanh thông qua các chính sách như giảm thủ tục hành chính và hỗ trợ khởi nghiệp, nhưng vẫn tồn tại những rào cản pháp lý phức tạp, khiến việc khởi động và vận hành doanh nghiệp gặp nhiều khó khăn​. Điều này đôi khi dẫn đến việc các startup phải đăng ký hoạt động tại Singapore hoặc các quốc gia khác để tận dụng sự minh bạch về pháp lý và dễ dàng huy động vốn từ các quỹ đầu tư.

Tổng kết

Hệ sinh thái khởi nghiệp công nghệ Việt Nam đang phát triển mạnh mẽ, với những tiềm năng to lớn và cơ hội vô tận dành cho các doanh nghiệp khởi nghiệp. Tuy nhiên, để có thể thành công trong bối cảnh cạnh tranh khốc liệt và thách thức từ nguồn nhân lực, hạ tầng và pháp lý, các startup cần phải có sự chuẩn bị kỹ lưỡng và khả năng thích ứng nhanh chóng với những thay đổi của thị trường.

Việt Nam đã và đang chứng tỏ là một điểm đến hấp dẫn cho các nhà đầu tư công nghệ với những bước tiến đáng kể trong các lĩnh vực như AI, Fintech và Edtech. Để hiểu rõ hơn về bức tranh toàn cảnh của thị trường IT Việt Nam, cũng như những cơ hội hấp dẫn và xu hướng công nghệ mới nổi, hãy tải ngay Báo cáo Thị trường IT Việt Nam 2024. Báo cáo sẽ cung cấp cho bạn cái nhìn chi tiết và chính xác, giúp bạn nắm bắt được những xu hướng mới nhất và chuẩn bị cho tương lai thành công.

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

Giải thuật Shell Sort và cách triển khai bằng ngôn ngữ lập trình Python

Giải thuật Shell Sort

Các giải thuật sắp xếp kinh điển như Bubble Sort, Insertion Sort, Selection Sort hay Quick Sort hẳn không còn xa lạ gì đối với các lập trình viên. Tuy nhiên thực tế trong nhiều bài toán, việc cải tiến các giải thuật trên để áp dụng cho chương trình một cách phù hợp với từng đặc thù dữ liệu tạo ra các giải thuật mới thú vị, Shell Sort là một ví dụ như vậy. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về giải thuật Shell Sort và cách triển khai bằng ngôn ngữ lập trình Python nhé. 

Giải thuật Shell Sort

Shell Sort là một giải thuật sắp xếp được cải tiến từ giải thuật sắp xếp chèn (Insertion Sort), mang lại hiệu quả sắp xếp tốt hơn trong nhiều trường hợp của bài toán thực tế. Ý tưởng chính của thuật toán này là việc khi sử dụng Insertion Sort trong nhiều trường hợp, các giá trị cần đổi chỗ rất nhiều lần, mỗi lần lại chỉ đổi chỗ với phần tử kế bên gây dư thừa các bước chuyển. Ví dụ ở hình dưới, phần tử có giá trị 1 (bé nhất trong dãy) sẽ phải lần lượt đổi chỗ với 6 phần tử nằm trước đó qua 6 bước so sánh mới có thể về đầu danh sách.

Giải thuật Shell Sort

Shell Sort sẽ bắt đầu với việc lựa chọn các phần tử có khoảng cách xa nhau hơn để đổi chỗ, sau đó sẽ thu hẹp khoảng cách lại qua từng bước và cuối cùng trở về khoảng cách bằng 1 (ứng với giải thuật sắp xếp chèn). Như ví dụ ở trên, phần tử có giá trị bằng 1 sẽ chỉ cần trải qua 2 bước so sánh để được chèn về vị trí đầu tiên của mảng.

Khoảng cách giữa các phần tử sẽ thực hiện đổi chỗ trong giải thuật Shell Sort được gọi là khoảng (interval) là số vị trí từ phần tử này đến phần tử khác trong mảng. Có một vài công thức được đưa ra cho việc tính toán khoảng trong Shell Sort, bao gồm:

    • Trình tự nguyên gốc của Shell Sort: N/2 , N/4 , …, 1 với N là số phần tử của mảng
    • Dãy tăng Knuth: 1, 4, 13, …, (3k – 1)/2 với chỉ số k bắt đầu từ 1
  • Dãy tăng Hibbard: 1, 3, 7, 15, 31, 63, 127, 255, 511…
  • Dãy tăng Papernov & Stasevich: 1, 3, 5, 9, 17, 33, 65,…
  • Dãy Pratt: 1, 2, 3, 4, 6, 9, 8, 12, 18, 27, 16, 24, 36, 54, 81….

Giải thuật Shell Sort

Thuật toán Shell Sort sẽ có hiệu suất sắp xếp phụ thuộc vào dữ liệu đầu vào cùng công thức xác định khoảng được áp dụng. Shell Sort và Insertion Sort có cùng cách thức triển khai thuật toán, chỉ khác nhau ở giá trị khoảng, với Insertion Sort thì giá trị này luôn = 1. Cũng vì thế mà Shell Sort còn được xem là giải thuật tổng quát hóa của Insertion Sort. 

  Tại sao phỏng vấn lại hỏi về thuật toán?

  C++ algorithm: Những thuật toán cơ bản trong C++

Cách hoạt động của giải thuật

Chúng ta sẽ cùng đi vào cách hoạt động của Shell Sort bằng ví dụ sắp xếp mảng số dưới đây nhé.

Giải thuật Shell Sort

Giá trị khoảng cách sử dụng công thức nguyên gốc của Shell Sort. Mảng đầu vào có độ dài N = 8, vì vậy vòng lặp đầu tiên sẽ thực hiện với khoảng = N/2 = 4. Ta sẽ có các cặp giá trị để so sánh và hoán đổi vị trí là {9, 5}, {8, 6}, {3, 4}, và {7, 1}. Kết quả thu được sẽ là:

Giải thuật Shell Sort

Tiếp tục giảm giá trị khoảng = N/4 = 2, ta sẽ có được 2 danh sách con gồm {5, 3, 9, 4} và {6, 1, 8, 7}. Việc sắp xếp lúc này thực hiện tương tự như áp dụng Insertion Sort cho từng mảng con ở trên. Kết thúc vòng lặp lần này chúng ta sẽ thu được kết quả:

Giải thuật Shell Sort

Cuối cùng, giá trị khoảng sau lần giảm này sẽ về = N/8 = 1. Mảng sẽ được thực hiện sắp xếp chèn một lượt để thu về kết quả đầu ra:

Giải thuật Shell Sort

Triển khai giải thuật

Triển khai giải thuật Shell Sort bằng ngôn ngữ lập trình Python như sau:

# Shell sort in python
def shellSort(array, n):
    # Rearrange elements at each n/2, n/4, n/8, ... intervals
    interval = n // 2
    while interval > 0:
        for i in range(interval, n):
            temp = array[i]
            j = i
            while j >= interval and array[j - interval] > temp:
                array[j] = array[j - interval]
                j -= interval

            array[j] = temp
        print('interval', interval, ': ', array)
        interval //= 2

data = [9, 8, 3, 7, 5, 6, 4, 1]
size = len(data)
shellSort(data, size)
print('Sorted Array in Ascending Order:')
print(data)

Kết quả console in ra tương ứng các vòng lặp:

Triển khai giải thuật Shell Sort bằng ngôn ngữ lập trình Python

Độ phức tạp của giải thuật

Shell Sort cũng như Insertion Sort là những giải thuật không có độ ổn định (Stability) vì nó phụ thuộc lớn vào dữ liệu đầu vào, thời gian chạy có sự chênh lệch lớn giữa trường hợp dữ liệu tốt (Best case) và trường hợp dữ liệu không phù hợp (Worst case). Cụ thể về độ phức tạp thời gian:

  • Best: O(nlog n)
  • Worst: O(n2)
  • Average: O(nlog n), khoảng O(n1.25)

Về bộ nhớ sử dụng, Shell Sort chỉ dùng biến tạm để lưu giá trị lúc hoán đổi vị trí, vì thế độ phức tạp bộ nhớ của thuật toán này là O(1).

Nếu so sánh với Insertion Sort thì Shell Sort không có sự khác biệt nhiều về độ phức tạp ở cả thời gian và bộ nhớ sử dụng. Tuy nhiên như đã nhắc ở đầu bài, giải thuật này cho phép chúng ta tiếp cận theo đặc thù của dữ liệu đầu vào, đưa ra chuỗi giá trị khoảng hợp lý để thực hiện giải thuật. Nhờ đó nó có tính ứng dụng cao trong các bài toán cụ thể khác nhau.

Kết bài

Qua bài viết trên, hy vọng các bạn đã hiểu rõ hơn về giải thuật Shell Sort và có thể dễ dàng triển khai trong nhiều ngôn ngữ lập trình khác nhau. Vận dụng tốt cách thiết lập giá trị khoảng trong Shell Sort sẽ giúp bạn tối ưu hóa việc sắp xếp cho dữ liệu của bài toán mà mình cần giải quyết. Cảm ơn các bạn đã đọc và hẹn gặp lại trong bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

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

Học lập trình có nên mua Macbook? TOP 5 MacBook cho lập trình viên

Macbook cho lập trình viên? Liệu có nên mua Macbook học IT?

Macbook là một chiếc laptop được các lập trình viên sử dụng khá nhiều và để sở hữu một chiếc Macbook không phải là điều dễ dàng bở giá thành đắt đỏ của nó. Vậy có nên bỏ một số tiền lớn để mua Macbook không, đặc biệt là để học lập trình? Câu hỏi này được rất nhiều bạn sinh viên CNTT quan tâm và cân nhắc kỹ lưỡng trước khi quyết định mua. Hãy cùng TopDev câu trả lời “học lập trình có nên xài macbook?” và giới thiệu một số mẫu macbook cho lập trình viên nên mua hiện nay.

Cấu hình MacBook tối thiểu cho lập trình viên, sinh viên CNTT

Cấu hình MacBook tối thiểu cho lập trình viên, sinh viên CNTT

Khi chọn MacBook cho sinh viên CNTT và lập trình viên, bạn cần đảm bảo máy có cấu hình đủ mạnh để xử lý các tác vụ lập trình và học tập. Dưới đây là cấu hình tối thiểu mà bạn nên đầu tư cho chiếc Macbook của mình để hỗ trợ học lập trình tốt nhất

CPU

MacBook nên được trang bị CPU chip Apple M1 trở lên của nhà Táo. Các chip này cung cấp hiệu suất mạnh mẽ và tiết kiệm năng lượng, giúp bạn xử lý các tác vụ lập trình một cách mượt mà. CPU với ít nhất 8 nhân sẽ đảm bảo khả năng xử lý đa nhiệm tốt.

RAM

Khi chạy các phần mềm lập trình và môi trường phát triển sẽ chiếm rất nhiều về dung lượng bộ nhớ RAM, vì vậy bạn nên chọn MacBook có ít nhất 8GB RAM để đảm bảo hiệu suất tốt nhất, không bị giật lag khi đang sử dụng.

Tuy nhiên, nếu có điều kiện, bạn nên nâng cấp lên 16GB RAM để đảm bảo khả năng xử lý mượt mà hơn khi làm việc với các dự án lớn hoặc chạy nhiều ứng dụng cùng lúc.

Ổ cứng (Storage)

Ổ cứng SSD là lựa chọn tốt nhất cho MacBook vì tốc độ đọc/ghi nhanh, giúp khởi động hệ điều hành và các ứng dụng nhanh chóng. Mức dung lượng tối thiểu nên là 256GB, nhưng nếu bạn làm việc với nhiều dự án lớn hoặc dữ liệu nặng, hãy cân nhắc chọn ổ cứng 512GB hoặc 1TB.

Lưu ý: Khác với các dòng laptop Windows, MacBook không thể nâng cấp RAM hay ổ cứng, vì vậy bạn hãy cân nhắc thật kĩ trước khi đưa ra lựa chọn nhé!

Màn hình

MacBook luôn được biết đến với chất lượng màn hình đỉnh khỏi bàn, màn hình Retina với độ phân giải ít nhất là 2560 x 1600 sẽ giúp bạn làm việc hiệu quả hơn.

Thông thường các lập trình viên thường phải ngồi nhiều giờ liền và nhìn các dòng code chằn chịt vì vậy nên chọn kích thước màn hình từ 14 inch trở lên.

Pin

Thời lượng pin dài là yếu tố quan trọng để bạn có thể làm việc cả ngày mà không cần sạc. Từ chip M1 trở lên, pin của MacBook đã trâu hơn rất nhiều, vượt xa các dòng laptop Windows với thời lượng pin từ 15 giờ trở lên sẽ giúp bạn làm việc liên tục mà không lo hết pin.

Xem tin tuyển lập trình viên iOS tại đây

MacBook chip Intel còn dùng được không?

MacBook sử dụng chip Intel vẫn có thể sử dụng được cho các tác vụ lập trình, nhưng có một số hạn chế so với các dòng MacBook mới sử dụng chip Apple Silicon (M1, M2, M3). Các hạn chế bao gồm:

  • Hiệu suất: Chip Apple M1, M2, M3 có hiệu suất vượt trội so với chip Intel, đặc biệt là trong các tác vụ đa nhiệm và xử lý đồ họa.Từ chip M1 trở lên, CPU hoạt động mát hơn và tiêu thụ ít điện năng hơn.
  • Thời lượng pin: MacBook sử dụng chip Apple Silicon có thời lượng pin dài hơn đáng kể so với các mẫu sử dụng chip Intel. Ví dụ, MacBook Air M1 có thể hoạt động lên đến 18 giờ, trong khi phiên bản dùng chip Intel chỉ có thời lượng pin khoảng 12 giờ.
  • Hỗ trợ phần mềm: Apple đã chuyển đổi hoàn toàn sang sử dụng chip Apple Silicon và có thể sẽ sớm ngừng cập nhật macOS cho các dòng máy sử dụng chip Intel. Điều này có nghĩa là các máy Mac sử dụng chip Intel có thể không nhận được các tính năng mới và cập nhật bảo mật trong tương lai.
  • MacBook sử dụng chip Intel hiện nay có giá trị thấp hơn nhiều so với các mẫu sử dụng chip Apple Silicon. Nếu bạn đang cân nhắc mua một chiếc MacBook mới, việc chọn một mẫu sử dụng chip Apple Silicon sẽ là lựa chọn tốt hơn về lâu dài.

Tóm lại, mặc dù MacBook sử dụng chip Intel vẫn có thể đáp ứng nhu cầu lập trình, nhưng việc chọn một chiếc MacBook sử dụng chip Apple Silicon sẽ mang lại hiệu suất tốt hơn, thời lượng pin dài hơn và hỗ trợ phần mềm lâu dài hơn.

>> Đọc thêm: Học công nghệ thông tin nên mua laptop hay PC?

Học lập trình có nên mua macbook? Vì sao?

Học lập trình có nên mua macbook? Vì sao?

Lập trình viên hay sinh siên với vào ngành IT có nên sử dụng MacBook hay không phụ thuộc vào nhiều yếu tố, bao gồm nhu cầu công việc, sở thích cá nhân và ngân sách. Dưới đây là một số lý do tại sao nhiều lập trình viên chọn MacBook:

Hệ điều hành macOS

macOS là hệ điều hành dựa trên Unix, tương tự như Linux, macOS sở hữu sự mạnh mẽ và ưu việt hơn hẳn so với Windows, với nhiều công cụ cần thiết được cài đặt sẵn. macOS cũng hỗ trợ nhiều ngôn ngữ lập trình và công cụ phát triển phổ biến như Python, Ruby, Node.js, và Docker. Ngoài ra, macOS có tính bảo mật cao hơn so với Windows, giúp bảo vệ dữ liệu và hệ thống của bạn khỏi các phần mềm độc hại và virus.

Hỗ trợ phát triển ứng dụng trên iOS

Nếu bạn phát triển ứng dụng cho hệ điều hành iOS, MacBook là lựa chọn bắt buộc vì Xcode, công cụ phát triển chính thức của Apple, chỉ có sẵn trên macOS. Điều này giúp bạn dễ dàng kiểm tra và triển khai ứng dụng trên các thiết bị iOS.

Macbook có thể phát triển phần mềm cho bất kỳ hệ điều hành nào. Ngay cả khi bạn cần học các ngôn ngữ chỉ hỗ trợ trên Windows như C# hay .NET thì việc cài song song hai hệ điều hành MacOS và Windows trên Macbook là đều rất dễ dàng và không hề bị giật lag. Còn Win thì không thể cài được MacOS trừ khi dùng tool để cố ép nó phải chạy thì nó cũng không mang lại trải nghiệm mượt mà.

Phần cứng chất lượng cao

có nên mua macbook học lập trình

MacBook nổi tiếng với thiết kế tinh tế và chất lượng phần cứng cao với vỏ ngoài được làm từ nhôm nguyên khối. Màn hình Retina cung cấp độ phân giải cao và màu sắc chính xác, rất hữu ích cho việc lập trình và thiết kế giao diện người dùng. Bàn phím của MacBook cũng được đánh giá cao về độ nhạy và độ bền.

Bạn có để ý rằng những người dùng MacBook thường không dùng chuột không? Vì Touchpad của MacBook được thiết kế hoàn hảo giúp bạn có trải nghiệm tuyệt vời có thể thay thế hoàn toàn cho chuột thông thường, đây là điều mà chưa có dòng laptop nào có thể đánh bại được Apple.

Tuy nhiên, MacBook cũng có một số hạn chế như giá thành cao và khả năng nâng cấp phần cứng hạn chế. Nếu bạn có ngân sách hạn chế hoặc cần một máy tính có khả năng nâng cấp linh hoạt, các laptop Windows hoặc Linux có thể là lựa chọn tốt hơn.

>> Có thể bạn quan tâm: Build cấu hình PC cho lập trình viên

Tổng hợp các mẫu MacBook học lập trình

Như đã đề cập ở trên, các dòng MacBook từ chip M1 trở lên đều có thể sử dụng để học tập và làm việc trong ngành IT. Nhưng để bạn có những lựa chọn tố
t nhất, thì TopDev sẽ tổng hợp 5 mẫu MacBook lập trình viên phù hợp với từng như cầu từ giá cả cho đến hiệu năng làm việc.
Mẫu MacBook CPU RAM Ổ cứng Màn hình Thời lượng pin Cổng kết nối Giá tiền
MacBook Air 13-inch (M1, 2020) Apple M1 (8 nhân CPU, 7 nhân GPU) 8GB/16GB SSD 256GB/512GB Retina 13.3 inch, 2560 x 1600 Lên đến 18 giờ 2 cổng Thunderbolt 4 từ 18 triệu đồng
MacBook Pro 13-inch (M1, 2020) Apple M1 (8 nhân CPU, 8 nhân GPU) 8GB/16GB SSD 256GB (max option lên đến 1TB) Retina 13.3 inch, 2560 x 1600 Lên đến 20 giờ 2 cổng Thunderbolt 4 từ 27.5 triệu đồng
MacBook Air 15-inch (M2, 2023) Apple M2 (8 nhân CPU, 10 nhân GPU) 8GB/16GB SSD 256GB/512GB Retina 15 inch, 2880 x 1800 Lên đến 18 giờ 2 cổng Thunderbolt 4, cổng MagSafe 3 từ 27.5 triệu đồng
MacBook Pro 14-inch (M2 Pro, 2023) Apple M2 Pro (10 nhân CPU, 16 nhân GPU) 16GB/32GB SSD 512GB/1TB Retina 14 inch, 3024 x 1964 Lên đến 17 giờ 3 cổng Thunderbolt 4, 1 cổng HDMI, khe cắm thẻ SDXC, cổng MagSafe 3 từ 46 triệu đồng
MacBook Pro 16-inch (M3 Max, 2024) Apple M3 Max (12 nhân CPU, 38 nhân GPU) 32GB/64GB  SSD 1TB (nâng cấp lên 4TB) Retina 16 inch, 3072 x 1920 Lên đến 21 giờ 3 cổng Thunderbolt 4, 1 cổng HDMI, khe cắm thẻ SDXC, cổng MagSafe 3 từ 88 triệu đồng

Ngoài cái mẫu MacBook lập trình này thì bạn có thể cân nhắc tình hình tài chính để có lựa chọn phù hợp với mình nhất. Nếu có điều kiện, bạn nên chọn các option từ 16GB và SSD từ 512GB để có thể thoải mái chạy các tác vụ nặng, vì MacBook không thể nâng cấp phần cứng.

Và nếu bạn đang tìm kiếm một chiếc laptop lập trình lý tưởng, MacBook là một sự lựa chọn hoàn hảo cho sinh viên CNTT cũng như lập trình viên lâu năm. Qua bài viết trên của TopDev chắc hẳn bạn đã có được câu trả lời cho mình về việc có nên mua macbook học lập trình không và đã có lựa chọn phù hợp cho bản thân.

Cập nhật liên tục tin tuyển dụng developer mới nhất tại TopDev

Reskill là gì? Sự khác nhau giữa Reskill và Upskill

Reskill là gì? Sự khác nhau giữa Reskill và Upskill

Bạn đã bao giờ cảm thấy kỹ năng hiện tại của mình không còn phù hợp với công việc hiện tại hoặc với những cơ hội nghề nghiệp mới? Đó chính là lúc bạn cần đến reskilling. Vậy reskill là gì? Sự khác nhau giữa reskill và upskill? Và tại sao nó lại quan trọng đối với cả cá nhân và doanh nghiệp? Cùng TopDev tìm hiểu cụ thể hơn chủ đề này trong bài viết dưới đây.

Reskill là gì?

Reskill là gì?

Reskilling là quá trình đào tạo lại hoặc phát triển các kỹ năng mới nhằm đáp ứng yêu cầu công việc hiện tại hoặc chuyển đổi nghề nghiệp. Trong bối cảnh kinh tế và công nghệ thay đổi nhanh chóng, khi nhiều công việc truyền thống dần bị thay thế bởi tự động hóa và trí tuệ nhân tạo, reskilling trở nên ngày càng quan trọng. Ví dụ, một nhân viên văn phòng có thể học kỹ năng số hóa để áp dụng công nghệ vào công việc hàng ngày.

Dưới đây là ba nhóm đối tượng chính cần thực hiện Reskilling:

  1. Nhân viên hiện tại: Những người đang làm việc trong môi trường mà yêu cầu công việc thay đổi nhanh chóng. Họ cần học thêm các kỹ năng mới để nâng cao hiệu quả công việc hoặc đảm nhận các vai trò khác trong doanh nghiệp.
  2. Người lao động bị ảnh hưởng bởi thay đổi công nghệ: Công nghệ mới như AI và tự động hóa có thể thay thế các công việc truyền thống. Để tránh thất nghiệp, những người lao động này cần reskill để chuyển sang các công việc yêu cầu kỹ năng cao hơn hoặc liên quan đến công nghệ.
  3. Người chuyển ngành: Những cá nhân muốn thay đổi sự nghiệp hoàn toàn, từ một ngành nghề không còn hấp dẫn hoặc không phù hợp với xu hướng thị trường, cần học các kỹ năng hoàn toàn mới để đáp ứng yêu cầu của ngành nghề mới.

Sự khác nhau giữa Reskill và Upskill

Sự khác nhau giữa Reskill và Upskill

Reskill và Upskill là hai khái niệm quan trọng trong phát triển nghề nghiệp, nhưng có những điểm khác biệt đáng kể.

Upskill tập trung vào việc nâng cao và cập nhật các kỹ năng hiện có trong cùng một lĩnh vực hoặc vai trò, giúp người lao động thích ứng với những yêu cầu mới của công việc, đặc biệt là những thay đổi về công nghệ và quy trình. Quá trình này thường diễn ra nhanh chóng và dễ dàng hơn.

Ngược lại, Reskill đòi hỏi việc học hoàn toàn những kỹ năng mới để chuyển sang một lĩnh vực hoặc vai trò khác, thường là để đáp ứng nhu cầu mới của thị trường lao động hoặc để chuyển đổi nghề nghiệp. Reskill thường đòi hỏi nhiều thời gian và công sức hơn so với Upskill, nhưng có thể mở ra những cơ hội nghề nghiệp mới hoàn toàn cho người lao động.

  Mẹo nâng cao kỹ năng xã hội để thành công trong công việc

  Bàn về Problem Solving Skill

Những lợi ích từ việc Reskill là gì?

Việc reskill mang lại những lợi ích vô cùng to lớn cho cả doanh nghiệp và người lao động. Hãy cùng khám phá chi tiết hơn những lợi ích này nhé:

Đối với doanh nghiệp

  • Nâng cao năng suất và hiệu quả làm việc: Nhân viên được trang bị những kiến thức và kỹ năng mới nhất, giúp họ làm việc hiệu quả hơn, giải quyết vấn đề nhanh chóng và sáng tạo.
  • Giảm chi phí tuyển dụng: Đào tạo lại nhân viên hiện có thường ít tốn kém hơn việc tuyển dụng và đào tạo nhân viên mới.
  • Tăng tính linh hoạt: Khi nhân viên được đào tạo lại, họ có thể đảm nhận nhiều vai trò khác nhau, giúp doanh nghiệp ứng phó tốt hơn với sự thay đổi trong ngành.
  • Nâng cao năng lực cạnh tranh: Nhờ đội ngũ nhân viên được trang bị kỹ năng mới, doanh nghiệp có thể bắt kịp hoặc dẫn đầu trong các xu hướng công nghệ và thị trường.
  • Nâng cao danh tiếng cho công ty: Một doanh nghiệp thường xuyên tổ chức các buổi reskill, workshop cho nhân viên sẽ giúp xây dựng hình ảnh tốt đến với các nhân viên tương lai, tăng cơ hội thu hút được nhân tài chất lượng.

Đối với người lao động

  • Mở rộng cơ hội nghề nghiệp: Reskilling giúp người lao động có khả năng đảm nhận các công việc mới, nâng cao cơ hội thăng tiến hoặc chuyển ngành.
  • Tăng tính cạnh tranh cá nhân: Học thêm kỹ năng mới giúp người lao động trở nên hấp dẫn hơn trong mắt nhà tuyển dụng và duy trì vị thế trên thị trường lao động.
  • Thích nghi với sự thay đổi: Trong bối cảnh công nghệ và công việc thay đổi liên tục, reskilling giúp người lao động không bị tụt hậu và duy trì sự nghiệp bền vững.
  • Tăng sự tự tin: Học hỏi và phát triển các kỹ năng mới giúp cá nhân tự tin hơn trong công việc, đặc biệt khi đối mặt với những thách thức mới.

Phương pháp thực hiện Reskilling cho doanh nghiệp

Phương pháp thực hiện Reskilling cho doanh nghiệp

Để thực hiện hiệu quả quá trình Reskill cho người lao động, doanh nghiệp có thể áp dụng những phương pháp sau:

Đánh giá nhu cầu kỹ năng

Doanh nghiệp cần bắt đầu bằng việc phân tích những kỹ năng hiện tại của nhân viên và dự đoán các kỹ năng sẽ cần trong tương lai. Điều này giúp xác định những vị trí có nguy cơ lỗi thời và cần reskilling để bắt kịp với xu hướng thị trường.

Cá nhân hóa lộ trình đào tạo

Mỗi nhân viên có nhu cầu học tập khác nhau, vì vậy doanh nghiệp nên xây dựng lộ trình đào tạo cá nhân hóa cho từng người. Việc áp dụng chương trình cố vấn (mentorship) cũng giúp nhân viên dễ dàng áp dụng kỹ năng mới vào công việc thực tế.

Xây dựng chương trình đào tạo

Dựa trên kết quả đánh giá, doanh nghiệp có thể thiết kế các chương trình đào tạo nội bộ hoặc hợp tác với các tổ chức đào tạo bên ngoài. Các khóa học cần được điều chỉnh để phù hợp với nhu cầu cụ thể của từng bộ phận.

Sử dụng phương pháp học trực tuyến

Công nghệ giúp tối ưu hóa quá trình đào tạo reskilling. Học trực tuyến (e-learning) là phương pháp linh hoạt, giúp nhân viên học tập mọi lúc, mọi nơi mà không làm gián đoạn công việc.

Theo dõi và đánh giá

Cuối cùng, việc theo dõi và đánh giá kết quả đào tạo là rất quan trọng. Doanh nghiệp nên thường xuyên đo lường tiến độ của nhân viên để điều chỉnh chương trình đào tạo sao cho hiệu quả nhất, đồng thời liên tục cập nhật theo xu hướng mới.

Tổng kết

Reskill là một quá trình quan trọng giúp cá nhân và doanh nghiệp thích nghi với những thay đổi nhanh chóng trong thị trường lao động hiện đại. Việc đào tạo lại kỹ năng không chỉ giúp người lao động mở rộng cơ hội nghề nghiệp mà còn giúp doanh nghiệp duy trì tính cạnh tranh và phát triển bền vững. Hãy tiếp tục theo dõi các bài viết tiếp theo của TopDev để cập nhật thêm thông tin hữu ích về những xu hướng khác trong ngành công nghệ nhé!

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

Xem thêm Top vị trí tuyển dụng IT trên TopDev

Jest là gì? Hướng dẫn thực hiện kiểm thử JavaScript với Jest

Jest là gì?

Vai trò của kiểm thử trong quá trình phát triển dự án hiện nay ngày càng quan trọng, có nhiều thư viện, framework được tạo ra để phục vụ riêng cho việc làm test. Với JavaScript, nhiều lập trình viên lựa chọn Jest làm công cụ viết unit test nhờ tính đơn giản, dễ sử dụng của nó. Bài viết hôm nay chúng sẽ sẽ cùng nhau tìm hiểu xem Jest là gì và cách để thực hiện kiểm thử JavaScript với thư viện này nhé.

Jest là gì?

Jest là một framework kiểm thử JavaScript được phát triển bởi Facebook từ năm 2011; ban đầu nó được thiết kế để dùng cho các dự án ReactJS, sau đó được team phát triển mở rộng và hiện nay đã có thể áp dụng cho nhiều dự án JavaScript khác nhau như Angular, Vue, Babel, TypeScript, Node, …

Jest là gì?

Jest thường được sử dụng cho Unit Testing (kiểm thử đơn vị). Framework này được viết theo phong cách BDD (Behavior-Driven Development – phát triển phần mềm theo hướng hành vi) tương tự như nhiều thư viện testing phổ biến hiện nay; tập trung vào việc kiểm tra trạng thái ban đầu và kết quả mong muốn của hệ thống trước và sau khi hành động hay sự kiện đó diễn ra. 

Ưu điểm của Jest:

  • Zero config: Jest tập trung vào sự đơn giản với việc nó có rất ít bước cài đặt và cấu hình; có thể hoạt động ngay sau khi cài đặt. Bạn vẫn có thể cấu hình tùy chỉnh Jest thông qua config file nếu cần
  • Snapshot: Tính năng snapshot cho phép lưu lại giá trị view của phần tử để so sánh với kết quả kiểm thử.
  • Isolate tests: cho phép kiểm thử song song giúp cải thiện thời gian chạy, đặc biệt với các dự án lớn.

Các tính năng kiểm tra dữ liệu trong Jest

Các tính năng kiểm tra dữ liệu trong Jest

Đối với một thư viện kiểm thử, thao tác quan trọng nhất chính là việc kiểm tra dữ liệu có đúng với kết quả kỳ vọng của testcase hay không. Jest cung cấp các hàm để kiểm tra tính đúng đắn của dữ liệu đầu ra đối với từng kiểu dữ liệu khác nhau, chúng ta cùng tìm hiểu cách sử dụng nhé.

1. Kiểm tra dữ liệu đặc biệt (null, undefined, true, false,…)

  • expect(value).toBeNull();  // Kiểm tra biến value là null.
  • expect(value).toBeDefined();  // Kiểm tra biến value được định nghĩa.
  • expect(value).not.toBeUndefined();  // Kiểm tra biến value không phải undefined.
  • expect(value).not.toBeTruthy();  // Kiểm tra biến value không phải là truthy.
  • expect(value).toBeFalsy();  // Kiểm tra biến value là falsy.

2. Kiểm tra dữ liệu số (Number)

  • expect(value).toBeGreaterThan(100);  // Kiểm tra giá trị lớn hơn 100.
  • expect(value).toBeLessThanOrEqual(100);  // Kiểm tra giá trị nhỏ hơn hoặc bằng 100.
  • expect(value).toBe(100);  // Kiểm tra giá trị bằng 100.

3. Kiểm tra dữ liệu chuỗi (String)

  • expect(‘TopDev’).not.toMatch(/K/);  // Kiểm tra chuỗi “TopDev” không chứa ký tự “K” không.
  • expect(‘TopDev’).toMatch(/Dev/); // Kiểm tra chuỗi “TopDev” có chứa chuỗi “Dev” không.

4. Kiểm tra dữ liệu Object

  • expect(value).toEqual({ a: 1, b: 2 }); //Kiểm tra trường của object có giống nhau không

5. Kiểm tra dữ liệu mảng (Array)

  • expect(value).toContain(‘jest’);  // Kiểm tra mảng có chứa phần tử jest không.

  Tại sao chỉ cần kiểm thử với 5 người dùng?

  Acceptance Test là gì? Phân loại Acceptance Testing

Thao tác với hàm trong Jest

Jest cũng cung cấp cho chúng ta các tính năng để làm việc với hàm, xử lý callback, kiểm thử các function bất đồng bộ. Ngoài ra, tính năng mocking trong Jest giúp hỗ trợ việc mô phỏng các module. Chúng ta cùng xem các ví dụ cụ thể nhé:

1. Thao tác với ngoại lệ (Exception)

  • expect(() => throwErrorFunc()).toThrow(‘error’);  // Kiểm tra exception của hàm throwErrorFunc có trả về giá trị error không

2. Thao tác với hàm bất đồng bộ

Với các hàm bất đồng bộ trả về Promise hoặc dùng async/ await; chúng ta sử dụng cú pháp dưới đây để kiểm thử giá trị trả về:

test("test promise function", () => {
  return fetchData().then((data) => {
    expect(data).toBe("promise");
  });
});

test("test async/await", async () => {
  const data = await fetchData();
  expect(data).toBe("async/await");
});

3. Thao tác triển khai mocking function

Jest cho phép chúng ta xây dựng mô phỏng triển khai một hàm và sử dụng nó trong testcase để thực hiện tương tự như tính năng của ứng dụng khi có lời gọi đến hàm đó:

function forEach(items, callback) {
  for (let index = 0; index < items.length; index++) {
    callback(items[index]);
  }
}
const mockCallback = jest.fn();
forEach([0, 1], mockCallback);

// Hàm mock được gọi 2 lần
expect(mockCallback.mock.calls.length).toBe(2);

// Tham số thứ nhất của lời gọi hàm thứ 1 có giá trị là 0
expect(mockCallback.mock.calls[0][0]).toBe(0);

// Tham số thứ nhất của lời gọi hàm thứ 2 có giá trị là 1
expect(mockCallback.mock.calls[1][0]).toBe(1);

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

Thực hiện kiểm thử với Jest

Để cài đặt sử dụng Jest, chúng ta sử dụng lệnh:

npm install –save-dev jest hoặc yarn add –dev jest

jest phục vụ cho việc kiểm thử nên khi cài đặt chúng ta đặt nó vào devDependencies để chỉ phục vụ cho môi trường phát triển.

Để thực hiện các test case thông qua CLI, chúng ta thêm command code dưới đây vào package.json

  “scripts”: { “test”: “jest”}

Để chạy test, chúng ta sẽ sử dụng lệnh: npm run test hoặc yarn run test

Để cấu hình Jest trong dự án, chúng ta tạo mới file jest.config.js ở thư mục root.

/** @type {import('jest').Config} */
const config = {
  verbose: true,
};

module.exports = config;

Để xem thêm các cấu hình thiết lập trong Jest, các bạn có thể tham khảo ở link sau: https://jestjs.io/docs/configuration

Jest được thiết lập với mục đích chính dành cho kiểm thử đơn vị (Unit Testing), vì vậy nó tập trung vào kiểm thử các hàm, phần tử độc lập theo đơn vị file. Để thực hiện kiểm thử file index.js, chúng ta sẽ tạo file index.test.js. Ví dụ dưới đây chúng ta thực hiện kiểm thử các hàm cộng, trừ, nhân, chia hai số được khai báo trong file index.js; ở file index.test.js chúng ta thực hiện kiểm tra với 4 testcase tương ứng bằng Jest.

//file index.js
export const sum = (a, b) => a + b;
export const mul = (a, b) => a * b;
export const sub = (a, b) => a - b;
export const div = (a, b) => a / b;

//file index.test.js
import { sum, mul, sub, div } from "./math";

test("Adding 1 + 1 equals 2", () => {
  expect(sum(1, 1)).toBe(2);
});
test("Multiplying 1 * 1 equals 1", () => {
  expect(mul(1, 1)).toBe(1);
});
test("Subtracting 1 - 1 equals 0", () => {
  expect(sub(1, 1)).toBe(0);
});
test("Dividing 1 / 1 equals 1", () => {
  expect(div(1, 1)).toBe(1);
});

Thực hiện chạy test case, kết quả thu được như dưới đây:

Thực hiện kiểm thử với Jest

Kết bài

Các dự án hiện nay luôn đòi hỏi lập trình viên phải viết unit test cho phần code mà mình viết ra, vừa nâng cao chất lượng code và vừa tăng kỹ năng lập trình. Thành thạo Jest sẽ là một ưu điểm lớn dành cho bạn trong ngôn ngữ lập trình JavaScript, vì vậy hãy thường xuyên tạo các test case cho những đoạn code của bạn bằng framework này 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

Xem thêm:

Xem thêm các tin tuyển dụng IT mới nhất trên TopDev

Nên build cấu hình PC cho lập trình viên như thế nào?

Nên build cấu hình PC cho lập trình viên như thế nào?

Trong thời đại công nghệ phát triển nhanh chóng, việc sở hữu một chiếc PC mạnh mẽ là điều cần thiết đối với lập trình viên. Một cấu hình PC tốt không chỉ giúp công việc lập trình trơn tru hơn mà còn tăng hiệu quả khi xử lý các tác vụ nặng, từ lập trình game đến trí tuệ nhân tạo (AI). Bài viết này của TopDev sẽ giúp bạn lựa chọn cấu hình PC cho lập trình viên tối ưu nhất.

Các yếu tố cốt lõi khi build PC cho lập trình viên

Các yếu tố cốt lõi khi build PC cho lập trình viên

CPU (Bộ vi xử lý)

Bộ vi xử lý (CPU) là linh kiện quan trọng nhất khi build PC nó quyết định tốc độ xử lý và hiệu suất tổng thể của máy tính, đặc biệt là cho lập trình viên. Đây là thành phần chịu trách nhiệm xử lý hầu hết các tác vụ trong suốt quá trình hệ thống hoạt động. Tất cả các lệnh từ phần cứng đến phần mềm đều phải thông qua CPU để chạy các chức năng.

Các thuật toán lập trình ngày càng tinh vi và khối lượng dữ liệu cần xử lý cũng tăng lên theo thời gian. Các phần mềm lập trình phổ biến như Visual Studio, Sublime Text, Eclipse hay Dreamweaver đều khuyến nghị cấu hình CPU tối thiểu là quad-core (4 nhân) 8 luồng (thread) và tốc độ xung nhịp khuyến nghị là từ 3.0 GHz trở lên.

  • Intel Core i5 hoặc i7: Đây là lựa chọn lý tưởng cho các lập trình viên chuyên nghiệp, đặc biệt khi làm việc với các dự án nặng như phát triển game, AI, hoặc xử lý dữ liệu lớn bạn có thể cân nhắc lên core i9.
  • AMD Ryzen 5 đến 9: Với hiệu suất tương đương nhưng giá cả phải chăng hơn, dòng Ryzen 7 hoặc 9 của AMD là sự lựa chọn lý tưởng cho lập trình viên muốn tiết kiệm chi phí nhưng vẫn cần một CPU mạnh mẽ.

Hiện nay, nên chọn chip Intel Core thế hệ 11 đến 13 và AMD Ryzen 5000 và 7000.

RAM

RAM là yếu tố quan trọng giúp máy tính hoạt động mượt mà khi chạy nhiều ứng dụng cùng lúc. Hầu hết các phần mềm lập trình sẽ ngốn ram rất nhiều do nó phải cùng lúc xử lý nhiều đoạn mã và phản hồi liên tục. Vì vậy bạn nên trang bị một lượng RAM lớn để chạy các IDE, debug hoặc mã đã biên dịch cùng lúc – điều này sẽ tiết kiệm cho bạn rất nhiều thời gian để tập trung xử lý thêm các công việc khác.

  • 16GB RAM: Đây là mức tối thiểu được khuyến nghị cho lập trình viên làm việc với các tác vụ cơ bản và chạy các phần mềm phát triển thông thường.
  • 32GB RAM: Nếu bạn thường xuyên làm việc với nhiều máy ảo, các môi trường lập trình phức tạp, hoặc các dự án lớn, 32GB RAM sẽ giúp tối ưu hiệu năng.

Nên chọn loại bộ nhớ từ DDR4 trở lên và chủ động nâng cấp thêm RAM nếu bị giật lag trong quá trình sử dụng

Ổ cứng (Storage)

Một chiếc PC với tốc độ truy xuất dữ liệu nhanh sẽ tiết kiệm thời gian cho lập trình viên khi khởi động hệ điều hành và các chương trình phát triển, đặc biệt khi cần khai thác dữ liệu có nhiều file nhỏ hoặc các lệnh phức tạp trong phần mềm lập trình.

Một chiếc SSD dạng NVMe là sự lựa chọn hàng đầu bởi tốc độ đọc/ghi của nó rất nhanh, thường được tính bằng GB/s. Hiện nay, giá của các loại SSD này cũng rất hợp lý và không chênh lệch nhiều so với các ổ SSD SATA, trong khi tốc độ của SSD NVMe cao hơn ít nhất 2-3 lần.

Bạn cũng nên lưu ý đến dung lượng của ổ cứng. Nếu bạn chỉ lắp một ổ cứng trong máy, hãy chọn ổ cứng dung lượng từ 512GB trở lên để có không gian lưu trữ thoải mái, tránh tình trạng đầy ổ cứng sau khi cài Windows và một số phần mềm cần thiết khác. Thông thường, bạn nên dành khoảng 100-120GB cho ổ C để chứa Windows.

Để tối ưu hóa hiệu suất và dung lượng lưu trữ, bạn có thể kết hợp SSD và HDD. SSD dùng để cài đặt hệ điều hành và các phần mềm lập trình, giúp tăng tốc độ xử lý. HDD dùng để lưu trữ dữ liệu lớn như mã nguồn, tài liệu và các dự án, với dung lượng từ 2TB đến 3TB.

Card đồ họa (GPU)

Mặc dù card đồ họa không phải là yếu tố bắt buộc đối với hầu hết lập trình viên, nhưng nếu bạn làm việc với đồ họa, phát triển game, hoặc AI, một GPU mạnh mẽ sẽ rất cần thiết.

  • NVIDIA GeForce RTX 3060 trở lên: Card đồ họa này đáp ứng tốt các nhu cầu về đồ họa cao cấp và xử lý AI.
  • AMD Radeon RX 6700 XT: Lựa chọn thay thế với hiệu suất tương đương cho lập trình viên cần card đồ họa mạnh.

Các linh kiện PC khác cho lập trình viên

Khi build PC cho lập trình viên, việc chọn các linh kiện như vỏ case, bo mạch chủ (mainboard) và bộ nguồn máy tính (PSU) là rất quan trọng để đảm bảo hiệu suất và độ bền của hệ thống.

Vỏ Case

Đầu tiên, bạn cần chọn vỏ case có kích thước phù hợp với bo mạch chủ và các linh kiện khác. Các loại case phổ biến bao gồm ATX, Micro-ATX và Mini-ITX. Đảm bảo case có đủ không gian để lắp đặt các linh kiện và có khả năng nâng cấp trong tương lai. Hệ thống làm mát và luồng không khí tốt là yếu tố quan trọng giúp giảm nhiệt độ và tăng tuổi thọ của các linh kiện. Bạn nên chọn vỏ case có chất liệu bền bỉ và thiết kế phù hợp với sở thích cá nhân, đồng thời có tính năng chống bụi và giảm tiếng ồn.

Bo Mạch Chủ (Mainboard)

Bo mạch chủ cần tương thích với CPU bạn đã chọn, kiểm tra socket và chipset của bo mạch chủ để đảm bảo chúng hỗ trợ CPU của bạn. Số lượng khe cắm RAM và PCIe cũng là yếu tố cần xem xét, đảm bảo bo mạch chủ có đủ khe cắm để đáp ứng nhu cầu nâng cấp trong tương lai. Đối với lập trình viên, ít nhất 16GB RAM là cần thiết, vì vậy bo mạch chủ cần hỗ trợ ít nhất 2 khe cắm RAM. Đảm bảo bo mạch chủ có đủ cổng kết nối như USB, HDMI, DisplayPort và Ethernet. Một số bo mạch chủ còn có các tính năng bổ sung như Wi-Fi, Bluetooth và âm thanh chất lượng cao.

Bộ Nguồn Máy Tính (PSU)

Bộ nguồn máy tính (PSU) cần có công suất đủ lớn để cung cấp điện cho toàn bộ hệ thống. Công suất PSU thường được tính bằng watt (W), và đối với hệ thống lập trình viên, PSU từ 500W đến 750W là phù hợp. Chọn PSU có chứng nhận hiệu suất cao như 80 Plus Bronze, Silver, Gold hoặc Platinum để tiết kiệm điện năng và giảm nhiệt độ. Độ tin cậy và bảo hành cũng là yếu tố quan trọng, chọn PSU từ các thương hiệu uy tín và có thời gian bảo hành dài để đảm bảo độ tin cậy và an toàn cho hệ thống của bạn.

Màn hình

Màn hình cũng là một trong những yếu tố quan trọng với lập trình viên. Màn hình chất lượng không chỉ giúp giảm mỏi mắt mà còn tăng cường trải nghiệm làm việc, đặc biệt khi bạn phải làm việc liên tục trong thời gian dài. Cần lưu ý các yếu tố sau khi chọn màn hình cho bộ PC lập trình:

  • Bạn nên chọn màn hình có độ phân giải cao (ít nhất là Full HD 1920×1080) để đảm bảo hình ảnh sắc nét và chi tiết.
  • Kích thước màn hình từ 24 inch trở lên sẽ giúp bạn có không gian làm việc rộng rãi hơn.
  • Ngoài ra, màn hình có tần số quét cao (60Hz trở lên) và thời gian phản hồi nhanh sẽ giúp giảm mỏi mắt khi làm việc lâu dài.
  • Một số màn hình còn có tính năng chống chói và điều chỉnh độ sáng tự động, rất hữu ích khi làm việc trong môi trường ánh sáng thay đổi

Bàn phím và chuột

Thiết bị ngoại vi cũng là yếu tố quan trọng giúp tạo ra môi trường làm việc thoải mái, nâng cao hiệu suất làm việc.

  • Bàn phím cơ: Bàn phím cơ mang lại cảm giác gõ phím tốt hơn, độ bền cao và phản hồi chính xác, rất phù hợp cho lập trình viên phải làm việc nhiều giờ liên tục.
  • Chuột có độ nhạy cao: Chuột cũng là một yếu tố quan trọng đối với lập trình viên. Bạn nên chọn chuột có độ nhạy cao (DPI từ 800 trở lên) để đảm bảo độ chính xác khi di chuyển. Chuột có thiết kế công thái học sẽ giúp giảm mỏi tay khi sử dụng lâu dài.

>> Đọc thêm: Học lập trình nên mua laptop hay PC

Giới thiệu một số mẫu cấu hình PC cho lập trình viên

Dưới đây là một số bộ PC build sẵn khác có cấu hình phù hợp cho lập trình viên:

OMEN 40L Desktop GT21-1000m

cấu hình pc cho lập trình viên  OMEN 40L Desktop GT21-1000m là một lựa chọn mạnh mẽ, đặc biệt phù hợp cho các tác vụ đòi hỏi cao như phát triển game hoặc học máy. Máy được trang bị CPU AMD Ryzen 5 7600, RAM 32GB DDR5 và ổ cứng SSD 1TB. Ngoài ra, máy còn có card đồ họa NVIDIA GeForce RTX 4060, giúp xử lý các tác vụ đồ họa phức tạp một cách mượt mà.

Victus by HP 15L Gaming Desktop TG02-2000t

build cấu hình pc cho lập trình viên

Victus by HP 15L Gaming Desktop TG02-2000t là một lựa chọn khác với hiệu suất cao và giá cả phải chăng. Máy sử dụng CPU Intel Core i7, RAM 16GB và ổ cứng SSD 512GB. Card đồ họa NVIDIA GeForce GTX 1660 Super giúp máy xử lý tốt các tác vụ lập trình và đồ họa.

Lenovo Legion Tower 5i

build pc cho lập trình viên

Lenovo Legion Tower 5i là một máy tính để bàn mạnh mẽ, lý tưởng cho lập trình viên. Máy được trang bị CPU Intel Core i7, RAM 16GB (có thể nâng cấp lên 32GB), và ổ cứng SSD 1TB. Legion Tower 5i cũng có card đồ họa NVIDIA GeForce RTX 3060, giúp xử lý các tác vụ đồ họa và lập trình một cách hiệu quả.

Acer Predator Orion 3000

build pc để học lập trình

Acer Predator Orion 3000 là một lựa chọn tuyệt vời cho những ai cần một hệ thống mạnh mẽ và linh hoạt. Máy sử dụng CPU Intel Core i7, RAM 16GB và ổ cứng SSD 512GB. Card đồ họa NVIDIA GeForce RTX 3070 giúp máy xử lý tốt các tác vụ đồ họa và lập trình phức tạp.

Những bộ PC build sẵn này đều có cấu hình mạnh mẽ và khả năng nâng cấp linh hoạt, phù hợp cho các lập trình viên cần một hệ thống ổn định và hiệu suất cao.

Tham khảo 30+ mẫu laptop lập trình hot đáng mua nhất hiện nay 

Việc lựa chọn cấu hình PC phù hợp sẽ giúp lập trình viên làm việc hiệu quả hơn, từ đó tối ưu hóa quá trình phát triển và xử lý các dự án. Hãy cân nhắc kỹ các yếu tố như CPU, RAM, và ổ cứng để xây dựng một cấu hình máy tính phù hợp nhất với nhu cầu công việc của bạn. Hy vọng bài viết này đã giúp bạn có cái nhìn tổng quan và chọn được cấu hình PC tốt nhất cho năm 2024.

Xem ngay tin đăng tuyển lập trình viên đãi ngộ tốt trên TopDev

Đọc thêm: Các mẫu macbook cho lập trình viên đáng đầu tư

Strict Mode trong JavaScript – Sử dụng Strict Mode như thế nào cho tốt?​

Strict Mode trong JavaScript

Bài viết được sự cho phép của tác giả Nguyễn Thành Nam

Có lẽ bạn đã từng thấy ‘use strict’ trong các dự án nhưng có thể bạn chỉ nhìn lướt và có thể bỏ qua nó. Cùng tìm hiểu bài viết này để hiểu rõ hơn về ‘use strict’ trong JavaScript nhé.

Giới thiệu về Strict Mode trong JavaScript

Nếu bạn đã từng viết code JavaScript, chắc hẳn bạn đã gặp những đặc điểm đặc trưng và đôi khi kỳ quặc của ngôn ngữ này. Một trong những vấn đề phổ biến là các biến không được khai báo, dẫn đến các lỗi âm thầm trong code và khiến việc debug chúng trở nên khó khăn.

Trong JavaScript, các lập trình viên thường gặp phải những lỗi nhỏ và đôi khi tạo ra kết quả không mong muốn. Để giải quyết, ECMAScript 5 (ES5) đã giới thiệu một tính năng gọi là use strict. Chế độ strict mode thực hiện các kiểm tra bổ sung và áp đặt các quy tắc chặt chẽ hơn cho code, giúp phát hiện lỗi lập trình và có thể cải thiện hiệu suất. Đây là một cập nhật quan trọng cho ngôn ngữ và được các lập trình viên sử dụng rộng rãi vì nó giúp bắt lỗi và nâng cao chất lượng code.

Strict Mode là gì?

Chế độ nghiêm ngặt (strict mode) là một tính năng đặc biệt trong JavaScript cho phép developer chủ động kích hoạt một bộ quy tắc và hạn chế nhất định, vốn dĩ không được áp dụng mặc định.

Strict mode giống như bạn có một trợ thủ, luôn để mắt đến những lỗi sai trong khi bạn code. Nó là một tập hợp đặc biệt các quy tắc giúp JavaScript cẩn thận hơn trong việc đọc và chạy code của bạn.

Strict mode giúp bắt lỗi tiềm ẩn, những lỗi mà thông thường có thể bị bỏ qua, chẳng hạn như sử dụng biến chưa khai báo hoặc định nghĩa hàm với tên tham số trùng lặp. Bằng cách bật strict mode, developer có thể viết code an toàn hơn, dễ bảo trì hơn và tương thích tốt hơn với các phiên bản JavaScript trong tương lai.

Tại sao nên sử dụng Strict Mode trong JavaScript?

Lợi ích của Strict Mode trong JavaScript:

  • Nâng cao tính bảo mật và dễ đọc code: Strict mode giúp bạn viết code an toàn hơn, ngăn chặn những lỗi tiềm ẩn. Code trở nên dễ hiểu hơn cho cả chính bạn và các developer khác khi đọc lại.
  • Bắt lỗi lập trình phổ biến: Khi kích hoạt strict mode, bạn có thêm một “lá chắn” giúp phát hiện các lỗi lập trình thường gặp. Điều này dẫn đến code dự đoán được và hoạt động ổn định hơn.
  • Tương thích tốt hơn với phiên bản JavaScript tương lai: Strict mode khuyến khích sử dụng, giúp code của bạn dễ dàng thích nghi với các phiên bản JavaScript mới.
  • Loại bỏ cú pháp gây nhầm lẫn: Strict mode loại bỏ một số cú pháp có thể gây hiểu nhầm hoặc dẫn đến vấn đề khác. Điều này giúp code của bạn rõ ràng hơn và tránh những lỗi tiềm ẩn.
  • Tối ưu hóa hiệu suất: Trong một số trường hợp, nhờ những thay đổi giúp tối ưu hóa việc thực thi code của engine JavaScript.

  Tìm hiểu về Intl.RelativeTimeFormat trong JavaScript

  Kinh nghiệm xử lý câu lệnh điều kiện trong JavaScript

Kích hoạt Strict Mode trong JavaScript

Để bật chế độ nghiêm ngặt (strict mode) trong JavaScript, bạn chỉ cần thêm dòng code sau vào đầu script hoặc hàm của mình:

'use strict';

Khi được đặt ở đầu tệp JavaScript hoặc ở đầu một hàm, câu lệnh này sẽ kích hoạt chế độ nghiêm ngặt, giúp phát hiện và ngăn chặn các lỗi tiềm ẩn.

Các lỗi và cách giải quyết của Strict Mode

Trong JavaScript, strict mode giúp bắt các lỗi lập trình thông thường bằng cách chuyển chúng thành các lỗi runtime (lỗi xảy ra khi chương trình đang chạy). Tính năng này hoạt động như một biện pháp bảo vệ chống lại các lỗi âm thầm có thể dẫn đến hành vi không mong đợi.

Dưới đây là một số ví dụ về các lỗi mà strict mode bắt được:

  • Biến không được khai báo: cố gắng gán giá trị cho một biến chưa được khai báo bằng varlet hoặc const sẽ gây ra lỗi ReferenceError. Điều này giúp phát hiện các vấn đề tiềm ẩn liên quan đến lỗi đánh máy hoặc các biến dự định khai báo nhưng bị bỏ sót.
'use strict';
x = 10; // ReferenceError: x is not defined
  • Giới hạn tên tham số hàm: định nghĩa một hàm với các tên tham số trùng lặp (ví dụ: function func(a, a)) sẽ gây ra lỗi SyntaxError. Điều này giúp thực thi việc đặt tên tham số duy nhất, ngăn chặn nhầm lẫn và lỗi.
'use strict';
function func(a, a) {
  // SyntaxError: Duplicate parameter name not allowed in this context
  return a + a;
}
  • Tên thuộc tính trùng lặp: định nghĩa nhiều thuộc tính có cùng tên trong một đối tượng hoặc danh sách tham số hàm sẽ gây ra lỗi SyntaxError. Điều này giúp ngăn chặn việc vô tình trùng lặp tên thuộc tính, có thể dẫn đến hành vi không mong đợi.
'use strict';
var obj = {
  prop: 1,
  prop: 2, // SyntaxError: Duplicate data property in object literal not allowed in strict mode
};
  • Sử dụng eval trong phạm vi cục bộ: khi bạn sử dụng eval trong một phần cụ thể của code (chẳng hạn như bên trong một hàm) và bạn đang ở chế độ strict mode, nó sẽ tạo ra một loại “bong bóng” nơi bất kỳ biến mới nào bạn tạo bên trong eval đó không ảnh hưởng đến phần còn lại của code. Điều này có thể gây nhầm lẫn vì những thay đổi bạn thực hiện bên trong eval không được chuyển sang phần chính của code.
'use strict';
var x = 10;
function evalInLocalScope() {
  eval('var x = 20;');
  return x; // Returns 10 because eval creates its own scope in strict mode
}
  • Cú pháp bát phân: các số bát phân (số bắt đầu bằng 0, ví dụ: 012) không được phép và sẽ gây ra lỗi SyntaxError. Điều này giúp ngăn chặn nhầm lẫn tiềm ẩn với các số thập phân và cải thiện độ rõ ràng của code.
'use strict';
var num = 012; //SyntaxError.
  • Xóa thuộc tính không thể xóa: việc cố gắng xóa một thuộc tính không thể xóa (chẳng hạn như thuộc tính của các đối tượng tích hợp như Object.prototype) sẽ gây ra lỗi TypeError trong chế độ strict mode. Điều này ngăn chặn việc xóa các thuộc tính quan trọng một cách không mong muốn.
'use strict';
delete Object.prototype; // TypeError: Cannot delete property 'prototype' of function Object() { [native code] }

Các ví dụ trên đã minh họa một số cách mà strict mode trong JavaScript giúp bắt các lỗi thông thường và áp dụng các quy tắc nghiêm ngặt hơn, cuối cùng dẫn đến code đáng tin cậy và dễ bảo trì hơn.

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

Sử dụng Strict Mode như thế nào cho tốt?

Cũng giống như bất kỳ công cụ nào khác, việc sử dụng strict mode một cách khôn ngoan và hiểu rõ các tác động của nó là rất quan trọng.

Khi nào sử dụng Strict Mode

  • Bật Strict Mode toàn cục: bật strict mode ở đầu các tập lệnh hoặc module của bạn là một cách thực hành tốt để đảm bảo toàn bộ code hưởng lợi từ các ưu điểm của nó. Điều này có thể được thực hiện bằng cách thêm 'use strict'; ở đầu tệp JavaScript hoặc hàm của bạn.
// Bật strict mode ở đầu script
'use strict';
const myScript = 'Strict mode activated globally!';
  • Sử dụng Strict Mode trong hàm: nếu bạn chỉ muốn sử dụng strict mode trong các hàm cụ thể, bạn có thể bật nó ở đầu các hàm đó. Điều này cho phép bạn áp dụng strict mode một cách chọn lọc, nơi nó có lợi nhất.
function myFunctionScript() {
  // Bật strict mode cho hàm
  'use strict';
  function myInnerFunction() {
    return 'Strict mode activated in function!';
  }
  return myInnerFunction();
}
  • Sử dụng Strict Mode trong Module: khi làm việc với các module JavaScript (module ES6), strict mode được bật tự động trong phạm vi của mỗi module. Điều này giúp duy trì một môi trường mã hóa nhất quán và có thể dự đoán trong mỗi module.
// Ví dụ về module ES6
export function myModuleFunction() {
  // Strict mode tự động bật trong các module ES6
  const message = 'Strict mode is active in this module!';
  return message;
}

Các lỗi tiềm ẩn cần tránh trong Strict Mode

Mặc dù strict mode mang lại nhiều lợi ích, nhưng cũng có một số lỗi tiềm ẩn mà bạn cần lưu ý:

  • Vấn đề tương thích:
    • Trình duyệt cũ: Không phải tất cả các trình duyệt, đặc biệt là các trình duyệt cũ. Điều này có thể gây ra các vấn đề tương thích.
    • Giải pháp: Đảm bảo kiểm tra code của bạn trong các môi trường và trình duyệt khác nhau để xác minh tính tương thích.
  • Tính lan truyền:
    • Lan truyền: Khi bạn kích hoạt strict mode trong một script, tất cả code trong script đó sẽ chạy trong chế độ nghiêm ngặt. Điều này có thể gây vấn đề nếu các script khác trên trang không được dự định chạy trong strict mode.
    • Giải pháp: Hãy cẩn thận về nơi bạn kích hoạt strict mode. Nếu chỉ một phần code của bạn cần chạy trong strict mode, hãy kích hoạt nó một cách chọn lọc trong các hàm hoặc module cụ thể.
  • Tất cả hoặc không có gì:
    • Phạm vi áp dụng: Strict mode áp dụng cho tất cả code trong phạm vi của nó. Nếu bạn chỉ muốn strict mode cho một số phần nhất định, bạn cần cấu trúc code của mình để tách biệt các phần đó.
    • Giải pháp: Tách biệt code chạy trong strict mode vào các hàm hoặc module khác nhau để duy trì kiểm soát về nơi áp dụng strict mode.
    // Strict mode trong một hàm
    function strictFunction() {
      'use strict';
      // Code trong hàm này chạy trong strict mode
    }
    
    // Code không dùng strict mode ở ngoài
    function nonStrictFunction() {
      // Code trong hàm này chạy không trong strict mode
    }
    
  • Ảnh hưởng đến hiệu suất:
    • Ảnh hưởng nhỏ: Việc kiểm tra lỗi bổ sung và các hạn chế mà strict mode áp đặt có thể dẫn đến việc thực thi code chậm hơn một chút.
    • Giải pháp: Cân nhắc giữa lợi ích của việc phát hiện lỗi sớm và viết code dễ bảo trì hơn với tác động nhỏ đến hiệu suất. Thông thường, lợi ích của việc sử dụng strict mode lớn hơn so với lo ngại về hiệu suất.

Kết luận

Điều quan trọng là cân nhắc các lợi ích của strict mode với các lỗi tiềm ẩn và sử dụng nó một cách thận trọng trong các dự án của bạn. Hiểu rõ được vấn đề này, bạn có thể tận dụng strict mode một cách hiệu quả để cải thiện chất lượng và độ tin cậy trong code JavaScript của mình.

Hy vọng qua bài viết này, bạn đã hiểu được thêm về Strict Mode.

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

Xem thêm:

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

TOP 10+ laptop cho lập trình viên dưới 20 triệu

Top 10+ laptop cho lập trình viên dưới 20 triệu

Chọn một chiếc laptop phù hợp là bước đầu tiên và quan trọng nhất trên con đường trở thành lập trình viên chuyên nghiệp. Với ngân sách 20 triệu đồng, bạn hoàn toàn có thể sở hữu một chiếc laptop mạnh mẽ, đáp ứng tốt các nhu cầu lập trình và làm việc hàng ngày. Trong bài viết này, chúng ta sẽ cùng khám phá những mẫu laptop cho lập trình viên dưới 20 triệu, giúp bạn dễ dàng đưa ra quyết định sáng suốt và hiệu quả.

Những lưu ý khi lựa chọn laptop lập trình 20 triệu

Với ngân sách 20 triệu đồng, điều này thật tuyệt vời vì bạn có thể chọn một chiếc laptop có cấu hình mạnh mẽ để học lập trình mà hầu như không cần quan tâm lắm về giá tiền, tầm giá 20 triệu bạn có thể chọn máy theo các cấu hình như sau.

  1. CPU: Chọn các dòng vi xử lý Intel Core i5 hoặc AMD Ryzen 5 trở lên, thậm chí còn có một số model được trang bị chip core i7 vô cùng mạnh mẽ. Các dòng CPU này đủ mạnh để xử lý các tác vụ lập trình và chạy các môi trường phát triển tích hợp (IDE) mượt mà.
  2. RAM: Tốt nhất là 16GB và có khe nâng cấp để đảm bảo khả năng đa nhiệm, xử lý các dự án lớn và khả năng mở rộng.
  3. Ổ cứng: SSD 512GB để đảm bảo tốc độ khởi động máy và truy xuất dữ liệu nhanh chóng. Nếu có thể, bạn có thể chọn SSD 1TB để có thêm không gian lưu trữ.
  4. Màn hình: Màn hình Full HD (1920×1080) với kích thước từ 14 đến 15.6 inch. Điều này giúp bạn có không gian làm việc rộng rãi và hình ảnh sắc nét.
  5. Card đồ họa: Card đồ họa tích hợp như Intel Iris Xe hoặc AMD Radeon Vega là đủ cho các tác vụ lập trình. Nếu bạn làm việc với đồ họa hoặc phát triển game, có thể cân nhắc card đồ họa rời như NVIDIA GeForce GTX 1650.
  6. Pin: Thời lượng pin từ 6-8 giờ để đảm bảo bạn có thể làm việc liên tục mà không cần sạc thường xuyên.
  7. Cổng kết nối: Đảm bảo laptop có đủ các cổng kết nối như USB Type-C, USB Type-A, HDMI, và jack tai nghe 3.5mm để kết nối với các thiết bị ngoại vi.

Trong vô vàn sự lựa chọn laptop cho sinh viên công nghệ thông tin dưới 20 triệu, TopDev sẽ giới thiệu 12 mẫu laptop lập trình trong tầm giá 20tr cập nhật liên tục để bạn dễ dàng đưa ra quyết định hơn.

>> Đọc thêm: 30+ mẫu laptop lập trình đa dạng phân khúc bạn tha hồ lựa chọn

Top 12 mẫu Laptop cho lập trình viên dưới 20 triệu

Laptop Dell Inspiron 15 3530 i5 1334U/16GB/512GB

laptop cho lập trình viên dưới 20 triệu

Mở đầu danh sách là một ứng cử viên đến từ thương hiệu DELL, laptop Dell Inspiron 15 3530 là sự lựa chọn hoàn hảo cho người dùng cần một thiết bị mạnh mẽ để đáp ứng nhu cầu học tập, làm việc và giải trí. Dell Inspiron 15 3530 với bộ vi xử lý Intel Core i5 thế hệ gen thứ 13 mới nhất hiện nay mang đến hiệu năng mạnh mẽ và tiết kiệm năng lượng với chip dòng U. Máy được trang bị RAM 16GB DDR4 và ổ cứng SSD 512GB, giúp xử lý đa nhiệm mượt mà và lưu trữ dữ liệu nhanh chóng. Màn hình 15.6 inch Full HD màn Anti Glare với tần số quét 120Hz mang lại trải nghiệm hình ảnh sắc nét và mượt mà.

Thiết kế của Dell Inspiron 15 3530 hiện đại và tinh tế với màu silver sang trọng. Máy còn được trang bị card đồ họa Intel Iris Xe, phù hợp cho cả công việc văn phòng và học lập trình. Hệ điều hành Windows 11 Home cài sẵn giúp bạn dễ dàng sử dụng và tận dụng tối đa các tính năng mới nhất.

Với trọng lượng nhẹ chỉ 1.66kg và pin bền bỉ, Dell Inspiron 15 3530 là lựa chọn lý tưởng cho những ai cần một chiếc laptop hiệu năng cao, linh hoạt và tiện dụng.

Giá bán hiện nay của Dell Inspiron 15 3530 i5 là khoảng 18 triệu đồng.

Dell Latitude 3540 i5 1335U/16GB/512GB

laptop cho lập trình viên dưới 20 triệu đồng

Tiếp theo lại là một sản phẩm đến từ DELL, Laptop Dell Latitude 3540 71038101 có thiết kế kết hợp giữa tính chuyên nghiệp và đơn giản, với màu đen chủ đạo tạo nên sự trang nhã và lịch lãm. Máy có trọng lượng khoảng 1.81 kg, dễ dàng mang theo và phù hợp cho nhiều môi trường sử dụng. Chất liệu chất lượng cao giúp máy bền bỉ và chống va đập, nắp máy thiết kế mờ tránh bám vân tay và vết xước, mặt dưới có rãnh thoáng khí giúp tản nhiệt hiệu quả.

Hiệu năng ổn định được trang bị CPU Intel Core i5-1335U, 8GB RAM DDR4 3200MHz và SSD PCIe NVMe 512GB, mang lại hiệu năng ổn định cho các tác vụ văn phòng cơ bản đặc biệt là phù hợp cho các lập trình viên tương lai. Máy khởi động nhanh chóng và xử lý đa nhiệm mượt mà.

Đặc biệt Dell Latitude 3540 sở hữu cảm biến vân tay và TPM 2.0, giúp bảo vệ các dữ liệu quan trọng. Hiện nay giá bán của chiếc laptop này vào khoảng 19-20 triệu đồng.

Apple MacBook Air M1 2020

Thật bất ngờ, trong tầm giá 20 triệu, các lập trình viên còn có thể lựa chọn Macbook!

laptop cho lập trình viên dưới 20 tr

Apple MacBook Air M1 2020 mang đến hiệu năng vượt trội nhờ chip Apple M1 8 nhân, máy được trang bị 8GB RAM Unified và ổ cứng SSD 256GB, đảm bảo tốc độ xử lý nhanh chóng và mượt mà các tác vụ từ cơ bản đến phức tạp như chỉnh sửa video, thiết kế đồ họa và lập trình. Màn hình Retina 13.3 inch sắc nét với công nghệ True Tone, kết hợp thiết kế mỏng nhẹ (1.29 kg), sang trọng, thời lượng pin lên đến 18 giờ, bạn có thể dùng thoải mái từ 1-2 ngày mà không cần cắm sạc lý tưởng cho người dùng di chuyển.

MacBook Air M1 2020 còn tích hợp Touch ID giúp bảo mật và thanh toán nhanh chóng, cùng bàn phím Magic Keyboard và trackpad Force Touch mang lại trải nghiệm gõ phím và điều khiển tối ưu. Với hai cổng Thunderbolt/USB 4, máy hỗ trợ kết nối hiện đại và tốc độ truyền tải nhanh, phù hợp cho mọi nhu cầu công việc và giải trí.

Hiện nay giá bán của MacBook Air M1 8GB/256GB vào khoảng 18-20 triệu, bạn có thể nâng cấp lên RAM 16GB với chi phí từ 3-5 triệu tùy cửa hàng. Macbook Air M1 là sự lựa chọn hoàn hảo cho laptop lập trình dưới 20 triệu và các lập trình viên code web trên iOS.

HP Pavilion 15 eg2088TU i7

laptop cho sinh viên công nghệ thông tin dưới 20 triệu

Trong chuỗi laptop cho lập trình viên dưới 20 triệu, không thể thiếu thương hiệu HP.

HP Pavilion 15-EG2088TU được trang bị CPU Intel Core i7-1260P và card đồ họa Intel Iris Xe Graphics, máy không chỉ xử lý mượt mà các tác vụ học tập và văn phòng, mà còn đáp ứng tốt nhu cầu giải trí và code. RAM 16GB cho phép đa nhiệm hiệu quả, mở nhiều tab và ứng dụng cùng lúc mà không lo giật lag. Ổ cứng SSD 512GB cung cấp không gian lưu trữ lớn và khả năng khởi động, mở ứng dụng nhanh chóng.

HP Pavilion 15-EG2088TU sở hữu thiết kế tinh tế với lớp vỏ vàng kim sang trọng, màn hình 15.6 inch độ phân giải Full HD và độ sáng 250 nits, đáp ứng tốt nhu cầu hiển thị trong nhiều môi trường như nhà, văn phòng, lớp học hay quán cafe. Công nghệ BrightView nâng cao chất lượng hình ảnh, mang đến hiển thị rực rỡ, sống động và sắc nét.

Giá bán: khoảng 19 triệu đồng

Lenovo LOQ 15IAX9 83GS001SVN

laptop cho sinh viên công nghệ thông tin dưới 20 triệu đồng

Máy được trang bị vi xử lý Intel Core i5-12450HX đáp ứng tốt mọi tác vụ từ công việc văn phòng đến chơi game. Card đồ họa RTX 2050 giúp chỉnh sửa ảnh, video 3D và chơi game một cách mượt mà.

Bộ nhớ RAM 12GB DDR5-4800 SO-DIMM cùng ổ cứng SSD 512GB mang lại không gian lưu trữ rộng rãi và khả năng mở ứng dụng nhanh chóng. Màn hình 15.6 inch Full HD với tần số quét 144Hz cho trải nghiệm hình ảnh mượt mà. Card đồ họa NVIDIA GeForce RTX 2050 phù hợp cho chơi game thiết kế đồ họa và lập trình game.

Đây là một chiếc laptop phù hợp với các lập trình viên có nhu cầu chơi game giải trí, với mức giá bán hiện nay khoảng 19 triệu đồng.

Mac mini M2 2023

Laptop học công nghệ thông tin dưới 20 triệu

Tiếp tục series laptop cho sinh viên công nghệ thông tin dưới 20 triệu, TopDev xin gợi ý chiếc Mac mini M2 2023 với thiết kế nhỏ gọn và tinh tế với vỏ nhôm nguyên khối, phù hợp cho nhiều môi trường sử dụng. Máy được trang bị bộ vi xử lý Apple M2 với 8 nhân CPU và 10 nhân GPU, mang lại hiệu năng vượt trội cho cả các tác vụ hàng ngày và công việc sáng tạo. Với 16GB RAM Unified Memory và ổ cứng SSD 256GB, Mac mini M2 đảm bảo khả năng xử lý mượt mà và tốc độ truy xuất dữ liệu nhanh chóng.

Máy có khả năng hiển thị trên hai màn hình 8K hoặc ba màn hình 4K, mang lại trải nghiệm làm việc và giải trí tuyệt vời. Với hiệu năng đồ họa cao và khả năng tiết kiệm năng lượng, Mac mini M2 là lựa chọn lý tưởng cho những ai cần một máy tính để bàn nhỏ gọn nhưng mạnh mẽ với mức giá bán vô cùng hợp lý chỉ dưới 20 triệu đồng.

>> Bài viết liên quan: Top 6 chiếc laptop cho lập trình viên dưới 15 triệu

Lenovo ThinkPad E14 GEN 5 21JK00H5VN

Trong phân phúc laptop lập trình 20 triệu, Lenovo ThinkPad là lựa chọn không thể bỏ qua.

laptop lập trình 20 triệu

Laptop Lenovo ThinkPad E14 Gen 5 21JK00H5VN với giá bán khoảng 19-20 triệu thuộc dòng ThinkPad đình đám của Lenovo với nhiều ưu điểm ấn tượng. Được trang bị vi xử lý Intel Core i5-1335U mạnh mẽ, 16GB RAM DDR4 và ổ cứng SSD 512GB, mang lại tốc độ xử lý nhanh chóng và hiệu năng ổn định cho các tác vụ lập trình và giải trí hàng ngày. Thiết kế bền bỉ và sang trọng với màu Graphite Black, khung vỏ nhôm cao cấp, và trọng lượng chỉ 1.43 kg, máy đáp ứng tiêu chuẩn quân đội MIL-STD-810H, đảm bảo độ bền và khả năng chống va đập.

Đặc biệt máy còn hỗ trợ hai khe cắm M.2 SSD, cho phép mở rộng thêm không gian lưu trữ khi cần thiết. Bàn phím của ThinkPad E14 Gen 5 được thiết kế theo phong cách truyền thống của dòng ThinkPad, nổi bật với âm thanh êm ái, độ nhạy cao và có đèn nền hỗ trợ làm việc trong điều kiện thiếu sáng.

Lenovo ThinkBook 14 G6 IRL 21KG00QMVN

laptop lập trình 20 triệu cấu hình mạnh

Laptop Lenovo ThinkBook 14 G6 IRL 21KG00QMVN sở hữu màn hình 14 inch, mang lại khả năng hiển thị rõ nét và màu sắc chân thực. Máy được trang bị CPU Intel Core i5-13500H với 12 nhân và 16 luồng, đảm bảo xử lý mượt mà mọi tác vụ văn phòng trên các ứng dụng như Word, Excel, PowerPoint. Card đồ họa tích hợp Intel Iris Xe Graphics hỗ trợ tốt cho các công việc chỉnh sửa ảnh cơ bản và chơi một số tựa game nhẹ.

Với RAM 16GB chuẩn DDR5-5200, máy có khả năng đa nhiệm ấn tượng, cho phép bạn mở cùng lúc hàng chục tác vụ mà vẫn chạy mượt mà. Ổ cứng SSD 512GB cung cấp không gian lưu trữ rộng rãi và tốc độ truy xuất dữ liệu nhanh chóng, đáp ứng nhu cầu lưu trữ tài liệu dung lượng lớn. Thiết kế tối giản, màu sắc trung tính và trọng lượng nhẹ 1.38kg giúp máy dễ dàng di chuyển và phù hợp với mọi phong cách người dùng.

Lenovo ThinkBook 14 G6 IRL 21KG00QMVN đáp ứng cho mọi nhu cầu từ học lập trình cho tới giải trí

Asus Vivobook 14 OLED A1405ZA-KM263W

laptop lập trình 20 triệu màn hình đẹp

Laptop Asus Vivobook 14 OLED A1405ZA-KM263W được trang bị bộ vi xử lý Intel Core i7-12700H với bộ nhớ đệm 24MB và xung nhịp tối đa 4.7GHz, mang lại hiệu năng mạnh mẽ và ổn định. Máy còn sở hữu 16GB RAM DDR4 và ổ cứng SSD NVMe PCIe 3.0 dung lượng 512GB, đảm bảo khả năng lưu trữ rộng rãi và tốc độ truy xuất dữ liệu nhanh chóng, có thể thao tác cùng lúc nhiều trình duyệt, phù hợp cho các coder thao tác với các IDE.

Điểm nổi bật của ASUS Vivobook 14 OLED chính là màn hình OLED 2.8K kích thước 14 inch của laptop này cung cấp khả năng hiển thị vượt trội với độ phủ màu 100% DCI-P3, mang lại hình ảnh sống động và sắc nét; trong tầm giá dưới 20 triệu khó có thể có đối thủ nào trang bị được màn hình OLED. Đây là lựa chọn lý tưởng cho những ai cần một chiếc laptop mạnh mẽ, hiệu năng cao và khả năng hiển thị ấn tượng.

Dòng Vivobook của Asus có nhiều option khác như i5 gen 12th hay 13th với nhiều mức giá giao động từ 15-20 triệu đồng.

Lenovo Ideapad Slim 3 14IRH8 83EL0023VN

laptop lập trình dưới 20tr

Laptop Lenovo Ideapad Slim 3 14IRH8 là một lựa chọn tuyệt vời cho việc học lập trình nhờ vào hiệu năng mạnh mẽ và khả năng xử lý đa nhiệm ấn tượng. Được trang bị bộ vi xử lý Intel Core i7-13620H, máy có thể chạy mượt mà các ứng dụng nặng và đòi hỏi nhiều sức mạnh xử lý, giúp bạn dễ dàng làm việc với các môi trường phát triển phần mềm và công cụ lập trình.

Với RAM 16GB, bạn có thể mở cùng lúc nhiều tác vụ và ứng dụng mà không gặp bất kỳ vấn đề nào về độ trễ, điều này rất quan trọng khi bạn cần chạy các trình biên dịch, máy ảo hoặc các công cụ phát triển khác. Ổ cứng SSD PCIe dung lượng 512GB cung cấp không gian lưu trữ rộng rãi và tốc độ truy xuất dữ liệu nhanh chóng, giúp bạn lưu trữ và truy cập các dự án lập trình một cách hiệu quả.

Màn hình 14 inch Full HD mang lại hình ảnh sắc nét và màu sắc trung thực, giúp bạn dễ dàng đọc mã nguồn và làm việc trong thời gian dài mà không bị mỏi mắt. Với những tính năng này, Lenovo Ideapad Slim 3 14IRH8 chắc chắn sẽ là người bạn đồng hành đáng tin cậy cho hành trình học lập trình của bạn.

Dell Vostro 15 3520 i5 1235U

laptop lập trình dưới 20tr

Cuối cùng là chiếc laptop đến từ DELL, Dell Vostro 3520 được trang bị bộ vi xử lý Intel Core i7-1235U, mang lại hiệu năng ổn định và khả năng xử lý tốt các tác vụ từ văn phòng đến chỉnh sửa hình ảnh. Nhưng chiếc laptop này chỉ trang bị RAM 8GB, tuy nhiên vẫn cho phép mở nhiều ứng dụng cùng lúc mà không gặp vấn đề về độ trễ. Ổ cứng SSD NVMe 512GB cung cấp tốc độ đọc và ghi dữ liệu nhanh, giúp rút ngắn thời gian load ứng dụng và khởi động máy.

Màn hình 15.6 inch Full HD mang lại trải nghiệm giải trí sống động với hình ảnh sắc nét và màu sắc trung thực. Thiết kế nhỏ gọn và tính năng bảo mật ấn tượng của Dell Vostro 3520 giúp đáp ứng nhu cầu làm việc và giải trí của người dùng hiện đại. Đây là lựa chọn lý tưởng cho những ai cần một chiếc laptop mạnh mẽ và hiệu năng cao để học lập trình, đảm bảo xử lý mượt mà các công cụ phát triển phần mềm và môi trường lập trình.

>> Ngân sách 10 triệu mua laptop học lập trình được không? Click xem ngay

Tóm lại, việc tìm kiếm một chiếc laptop lý tưởng cho lập trình viên với ngân sách dưới 20 triệu đồng không hề khó khăn như bạn nghĩ. Với những gợi ý trên, hy vọng bạn sẽ tìm được người bạn đồng hành đáng tin cậy, giúp bạn vượt qua mọi thử thách trong công việc và học tập. Hãy cân nhắc kỹ lưỡng các yếu tố như hiệu năng, dung lượng RAM, ổ cứng và màn hình để đảm bảo bạn có một công cụ hỗ trợ đắc lực trên hành trình chinh phục thế giới lập trình. Chúc bạn thành công!

999+ tin tuyển dụng IT mới nhất tại TopDev

Upskill là gì? 5 cách Upskilling bản thân hiệu quả

Trong thời đại công nghệ phát triển nhanh chóng, sự đổi mới không ngừng nghỉ đang làm thay đổi cách chúng ta làm việc và học tập. Để không bị tụt lại phía sau, việc nâng cao kỹ năng, hay còn gọi là Upskill, đã trở thành một yêu cầu cấp thiết đối với mọi cá nhân và doanh nghiệp. Vậy Upskill là gì? Tại sao nó lại quan trọng? Bài viết này sẽ giúp bạn hiểu rõ hơn về khái niệm Upskill, đồng thời cung cấp những gợi ý thiết thực để bạn tự tin vươn tới những cơ hội mới trong sự nghiệp.

Upskill là gì? Tại sao Upskilling lại quan trọng?

Upskill là quá trình nâng cao và mở rộng các kỹ năng hiện có của một cá nhân để đáp ứng các yêu cầu công việc ngày càng cao và phức tạp. Upskill giúp cá nhân cải thiện và nâng cao những kỹ năng hiện tại để trở nên chuyên nghiệp hơn trong lĩnh vực mà họ đang làm việc. Điều này có thể bao gồm việc học các công nghệ mới, cập nhật kiến thức chuyên môn hoặc phát triển các kỹ năng mềm như quản lý thời gian, giao tiếp và lãnh đạo.

upskill là gì

Tại sao Upskilling lại quan trọng?

  • Thích ứng với sự thay đổi của công nghệ: Công nghệ không ngừng thay đổi, và điều này đòi hỏi lực lượng lao động phải liên tục cập nhật kỹ năng của mình để theo kịp xu hướng mới. Việc Upskill giúp bạn duy trì sự cạnh tranh trong môi trường làm việc ngày càng phức tạp.
  • Tăng cơ hội thăng tiến trong sự nghiệp: Upskill không chỉ giúp bạn làm việc hiệu quả hơn mà còn mở ra nhiều cơ hội thăng tiến trong sự nghiệp. Với những kỹ năng nâng cao, bạn có thể đảm nhận những vai trò có trách nhiệm cao hơn, từ đó cải thiện vị trí và mức lương.
  • Gia tăng giá trị cho doanh nghiệp: Đối với doanh nghiệp, việc nhân viên thường xuyên Upskill không chỉ giúp nâng cao năng suất mà còn giảm thiểu chi phí tuyển dụng và đào tạo nhân sự mới. Những nhân viên có kỹ năng tốt hơn sẽ đóng góp nhiều hơn vào sự phát triển và thành công chung của doanh nghiệp.
  • Đáp ứng nhu cầu thị trường lao động: Thị trường lao động ngày nay đòi hỏi nhân sự có khả năng thích ứng nhanh và thành thạo nhiều kỹ năng. Việc liên tục Upskill giúp bạn trở nên linh hoạt hơn và sẵn sàng đối mặt với bất kỳ thách thức nào trong công việc.

Những kỹ năng cần Upskill trong thời đại số

Thị trường lao động ngày nay đòi hỏi người lao động phải không ngừng học hỏi và nâng cao kỹ năng để đáp ứng sự thay đổi nhanh chóng của công nghệ và nhu cầu của thị trường. Dưới đây là một số kỹ năng được đánh giá là cần thiết để upskill:

Kỹ năng chuyên môn (một số ngành nghề có nhu cầu cao)

1. Ngành lập trình

Lập trình viên cần tập trung vào việc nâng cao khả năng lập trình và phát triển phần mềm, bao gồm học các ngôn ngữ mới như Python, JavaScript, hoặc các framework phổ biến như React hoặc Angular. Trí tuệ nhân tạo (AI) và học máy (Machine Learning) cũng là lĩnh vực mà lập trình viên nên khám phá, giúp họ phát triển các ứng dụng thông minh và tự động hóa quy trình làm việc.

Bên cạnh đó, kỹ năng an ninh mạng (Cybersecurity) ngày càng trở nên thiết yếu, nhằm bảo vệ ứng dụng và hệ thống khỏi các mối đe dọa ngày càng tinh vi. Cuối cùng, lập trình viên nên rèn luyện kỹ năng phân tích dữ liệu (Data Analysis), sử dụng các công cụ như SQL hoặc Python để khai thác, phân tích và trực quan hóa dữ liệu, từ đó tạo ra các giải pháp tối ưu cho dự án của mình.

2. Ngành Marketing

Ngành Marketing

Trong ngành marketing, các kỹ năng chuyên môn cần được Upskill bao gồm phân tích dữ liệuquản lý data. Việc thành thạo các công cụ như Google Analytics, Facebook Ads Manager, và các nền tảng đo lường khác là thiết yếu để tối ưu hóa hiệu quả chiến dịch. Kỹ năng SEO cũng cần được nâng cấp liên tục để nắm bắt các thuật toán mới của công cụ tìm kiếm. Bên cạnh đó, quảng cáo trả phí (PPC)content marketing cũng là những lĩnh vực đòi hỏi người làm marketing phải không ngừng cập nhật các xu hướng và chiến thuật mới để tối ưu hóa chi phí và gia tăng hiệu quả.

3. Customer Service

Trong ngành Customer Service, những kỹ năng chuyên môn cần Upskill bao gồm: sử dụng thành thạo phần mềm CRM để quản lý thông tin khách hàng hiệu quả; phân tích dữ liệu để hiểu sâu hơn về hành vi khách hàng; và quản lý đa kênh (Omni-channel) để đảm bảo dịch vụ nhất quán trên nhiều nền tảng. Những kỹ năng này giúp nâng cao trải nghiệm khách hàng và tăng hiệu quả công việc.

4. Ngành điện – cơ khí

Khi làm việc trong ngành này, các bạn cần nắm vững công nghệ tự động hóa và điều khiển lập trình PLC, để tối ưu hóa quy trình sản xuất; hiểu biết về kỹ thuật số hóa và IoT, giúp tích hợp các thiết bị thông minh vào hệ thống cơ khí; và nâng cao kỹ năng đọc và thiết kế bản vẽ CAD/CAM, nhằm cải thiện độ chính xác trong gia công và chế tạo. Những kỹ năng này sẽ giúp kỹ sư điện – cơ khí bắt kịp xu hướng công nghệ và nâng cao hiệu suất làm việc.

Kỹ năng mềm

Kỹ năng mềm

1. Giải quyết vấn đề

Đây là kỹ năng cần thiết để đối mặt với những thách thức và tình huống khó khăn. Khả năng phân tích, đánh giá các tình huống phức tạp và đưa ra giải pháp hợp lý sẽ giúp cá nhân nâng cao hiệu quả công việc và tiết kiệm thời gian. Điều này đặc biệt quan trọng trong các lĩnh vực yêu cầu tư duy phản biện và khả năng ra quyết định nhanh chóng.

2. Kỹ năng làm việc nhóm

Trong hầu hết các ngành nghề, khả năng hợp tác và tương tác hiệu quả với người khác là rất quan trọng. Sự phối hợp tốt giữa các thành viên trong nhóm không chỉ giúp đạt được mục tiêu chung mà còn tạo ra môi trường làm việc tích cực và sáng tạo.

3. Kỹ năng linh hoạt và thích ứng

Đây là một kỹ năng mềm rất cần thiết trong bối cảnh thay đổi nhanh chóng của thị trường và công nghệ. Khả năng điều chỉnh bản thân theo những biến động của môi trường làm việc sẽ giúp nhân viên không chỉ tồn tại mà còn phát triển trong nghề nghiệp.

4. Tư duy phản biện

Kỹ năng quan trọng này giúp cá nhân phân tích thông tin một cách sắc bén và đưa ra quyết định đúng đắn dựa trên dữ liệu và sự kiện cụ thể. Kỹ năng này không chỉ giúp cải thiện chất lượng công việc mà còn góp phần vào sự phát triển bền vững của tổ chức.

5. Đổi mới và sáng tạo

Đây là yếu tố quan trọng giúp cá nhân nổi bật trong môi trường cạnh tranh. Khả năng nghĩ ra các ý tưởng mới, giải pháp sáng tạo và cách tiếp cận độc đáo sẽ giúp cải thiện quy trình làm việc và mang lại giá trị cho tổ chức.

  Top 5 kỹ năng mềm mà các kỹ sư phần mềm cần phải biết

  Mẹo nâng cao kỹ năng xã hội để thành công trong công việc

Cách lên chiến lược Upskilling hiệu quả

Dưới đây là 6 bước chi tiết để giúp bạn xây dựng một chiến lược Upskilling hiệu quả:

Đánh giá và Nghiên cứu

  • Đánh giá kỹ năng hiện tại: Hãy bắt đầu bằng việc tự đánh giá những kỹ năng bạn đang sở hữu. Xem xét kỹ lưỡng những kỹ năng nào đã giúp bạn hoàn thành tốt công việc và những kỹ năng nào cần cải thiện để đáp ứng các yêu cầu mới của công việc.
  • Nghiên cứu xu hướng và nhu cầu của thị trường lao động: Tìm hiểu về các xu hướng công nghệ, yêu cầu của ngành nghề, và những kỹ năng nào đang được nhà tuyển dụng tìm kiếm. Điều này giúp bạn định hướng rõ ràng hơn về những gì cần học hỏi và phát triển.

Xác định Mục tiêu

  • Đặt ra các mục tiêu SMART: Mục tiêu của bạn nên cụ thể (Specific), đo lường được (Measurable), khả thi (Achievable), phù hợp (Relevant), và có thời hạn (Time-bound). Ví dụ, nếu bạn muốn nâng cao kỹ năng lập trình, hãy đặt mục tiêu cụ thể như hoàn thành một khóa học Python nâng cao trong 3 tháng.

Lập Kế hoạch Học tập

  • Chọn phương pháp học tập phù hợp: Xem xét các phương pháp học tập khác nhau, chẳng hạn như khóa học trực tuyến, sách, hội thảo, hoặc tự học qua các nguồn tài liệu miễn phí. Lựa chọn phương pháp nào phù hợp nhất với phong cách học tập của bạn và mục tiêu bạn đã đặt ra.
  • Tạo lịch trình học tập cụ thể: Lập ra một kế hoạch chi tiết với lịch trình rõ ràng. Điều này bao gồm việc xác định thời gian học mỗi ngày hoặc mỗi tuần, và các mốc thời gian hoàn thành từng phần của khóa học hoặc kỹ năng mới.

Tìm kiếm Hỗ trợ

  • Kết nối với mentor hoặc chuyên gia trong lĩnh vực: Tìm kiếm sự hỗ trợ từ những người có kinh nghiệm hơn trong lĩnh vực mà bạn muốn phát triển. Mentor có thể giúp bạn tránh được những sai lầm phổ biến và cung cấp lời khuyên quý báu.
  • Tham gia cộng đồng học tập hoặc nhóm nghiên cứu: Tham gia vào các cộng đồng trực tuyến hoặc nhóm học tập để có cơ hội học hỏi từ người khác, trao đổi kiến thức, và duy trì động lực học tập.

Thực hiện và Áp dụng

  • Tuân thủ kế hoạch học tập mà bạn đã đề ra. Hãy đảm bảo rằng bạn đang tiến hành học tập một cách nghiêm túc và liên tục. Ngoài ra, để kiến thức mới không chỉ dừng lại ở lý thuyết, hãy tìm cơ hội áp dụng chúng vào công việc hàng ngày. Điều này sẽ giúp bạn nắm vững kỹ năng mới và tạo ra giá trị ngay lập tức.

Đánh giá và Điều chỉnh

  • Thường xuyên đánh giá tiến độ và hiệu quả học tập: Theo dõi quá trình học tập của bạn bằng cách đánh giá tiến độ so với mục tiêu đã đặt ra. Kiểm tra xem bạn đã đạt được những gì và những kỹ năng nào cần cải thiện thêm.

5 cách Upskill cho bản thân hiệu quả

5 cách Upskill cho bản thân hiệu quả

Để nâng cao kỹ năng của bản thân một cách hiệu quả, bạn có thể áp dụng 5 cách sau đây:

  • Tham gia khóa học trực tuyến: Các nền tảng học trực tuyến như Coursera, Udemy, hay LinkedIn Learning cung cấp hàng loạt khóa học chất lượng về nhiều lĩnh vực. Tham gia các khóa học này giúp bạn cập nhật kiến thức mới và nắm bắt các kỹ năng cần thiết một cách linh hoạt, phù hợp với lịch trình cá nhân.
  • Đọc sách và tài liệu chuyên ngành: Sách chuyên ngành, tạp chí khoa học, và các tài liệu nghiên cứu là nguồn tài nguyên quý giá để mở rộng kiến thức chuyên sâu. Đọc đều đặn không chỉ giúp bạn nâng cao kỹ năng mà còn tăng cường khả năng phân tích và tư duy chiến lược.
  • Học từ sếp hoặc đồng nghiệp của bạn: Sếp và đồng nghiệp là những nguồn kiến thức và kinh nghiệm thực tiễn vô giá. Quan sát cách họ giải quyết vấn đề, quản lý công việc, và không ngần ngại hỏi ý kiến hoặc nhờ họ chỉ dẫn sẽ giúp bạn học hỏi nhanh chóng và hiệu quả.
  • Thực hành qua dự án thực tế: Học lý thuyết cần phải đi đôi với thực hành. Tham gia hoặc tự thực hiện các dự án thực tế sẽ giúp bạn áp dụng kiến thức đã học, cải thiện kỹ năng xử lý tình huống, và tạo ra những sản phẩm thực tế thể hiện năng lực của bản thân.
  • Chủ động cập nhật kiến thức mới: Thế giới công nghệ và ngành nghề liên tục thay đổi. Chủ động tìm kiếm thông tin mới, tham gia các hội thảo, webinar, hoặc theo dõi những chuyên gia trong lĩnh vực của bạn sẽ giúp bạn luôn đi đầu trong việc nắm bắt các xu hướng và cải tiến mới.

Tổng kết

Upskill không chỉ là xu hướng, mà là yêu cầu thiết yếu trong thời đại số. Bằng cách liên tục nâng cao kỹ năng, bạn không chỉ tăng khả năng cạnh tranh trong công việc mà còn mở ra nhiều cơ hội mới trong sự nghiệp. Hy vọng bài viết này đã giúp bạn hiểu rõ Upskill là gì và cách để upskill hiệu quả. Đừng quên theo dõi TopDev để cập nhật thêm nhiều bài viết hấp dẫn về ngành CNTT và nhân sự bạn nhé!

Xem thêm:

Xem thêm IT Jobs for Developer trên TopDev

Mảng 2 chiều trong C++: Ví dụ và các bài toán liên quan

Mảng 2 chiều trong C++: Ví dụ và các bài toán liên quan

Mảng là một kiểu dữ liệu cơ bản có cấu trúc mà mọi lập trình viên đều phải nắm vững, tuy vậy khi một mảng có nhiều chiều thì cấu trúc dữ liệu này sẽ trở nên phức tạp hơn. Với ngôn ngữ lập trình thiên về khả năng tính toán như C++, cấu trúc mảng 2 chiều là một phần kiến thức quan trọng có tính ứng dụng cao giúp chúng ta có thể xử lý các bài toán lưu trữ và thao tác với dữ liệu thực tế. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về mảng 2 chiều trong C++ và làm quen với nó thông qua các ví dụ cụ thể nhé. 

Mảng 2 chiều trong C++

Trong C++, mảng 2 chiều được hiểu đơn giản là một mảng có 2 phần tử mà trong đó mỗi phần tử chính là một mảng. Định nghĩa này cũng có thể được mở rộng ra với mảng nhiều chiều. 

Mảng 2 chiều trong C++

Mảng 2 chiều có thể được biểu diễn tương tự như một bảng gồm các hàng và cột được đánh số từ 0, các phần tử trong mảng được xác định thông qua chỉ số theo hàng và cột (hàng trước cột sau). Các phần tử trong mảng có chung kiểu dữ liệu được khai báo từ trước.

Trong cấu trúc dữ liệu, mảng 2 chiều là một kiểu phổ biến và có tính ứng dụng cao trong thực tế. Với C++, một ngôn ngữ thường được sử dụng cho việc tính toán dữ liệu, thì mảng 2 chiều được sử dụng để lưu trữ dữ liệu dưới dạng ma trận trong toán học; từ đó có thể thao tác thêm, sửa, xóa dễ dàng với dữ liệu. Để hiểu rõ hơn cách hoạt động của mảng 2 chiều trong C++, chúng ta cùng tìm hiểu các thao tác với kiểu dữ liệu này nhé.

Khai báo mảng 2 chiều trong C++

Cú pháp khai báo mảng 2 chiều trong C++ như sau:

datatype arrayName[row_size][col_size];

Trong đó:

  • datatype: kiểu dữ liệu được lưu trữ trong mảng
  • arrayName: tên biến mảng 2 chiều
  • row_size, col_size: kích thước của mỗi chiều, row_size là số dòng và col_size là số cột. Khi khai báo mảng 2 chiều, bạn bắt buộc phải xác định row_size, col_size cụ thể.
  • Tổng số phần tử trong mảng = row_size * col_size. Bộ nhớ sử dụng được khởi tạo bằng sizeof(kiểu dữ liệu) * tổng số phần tử.

Ví dụ: 

#include <iostream>
using namespace std;

int main()
{
  // Mảng 2 chiều các số
  int two_d_int[2][3] =
      {
          {6, 4, 3}, // row 1
          {7, 2, 8}  // row 2
      };
  // Mảng 2 chiều các chuỗi ký tự:
  char two_d_str[4][10] = {"Blue", "Red", "Orange", "Yellow"};

  cout << two_d_str[1][1] << endl; //e
  cout << two_d_int[1][2] << endl; //8

  return 0;
}

Ở ví dụ trên, 2 biến two_d_inttwo_d_str là 2 mảng 2 chiều trong C++, two_d_int có kiểu dữ liệu int chứa các số, two_d_str có kiểu dữ liệu char chứa các ký tự. Bản thân kiểu string (chuỗi) trong C++ là một dạng mảng các ký tự, vì thế two_d_str có thể được khai báo như trên.

Thao tác nhập xuất mảng 2 chiều trong C++

Thao tác nhập xuất mảng 2 chiều trong C++ được xử lý thông qua các chỉ số hàng và cột. Lưu ý rằng khi truy cập một phần tử của mảng thì luôn phải đảm bảo chỉ số đó là hợp lệ trong phạm vi của mảng. Cú pháp xử lý nhập xuất như sau:

Lấy giá trị của phần tử trong mảng:

arrayName[i][j]

Gán giá trị cho phần tử trong mảng:

arrayName[i][j] = value;

Trong đó:

  • Chỉ số i: chỉ số hàng thứ i trong mảng, i < row_size
  • Chỉ số j: chỉ số cột thứ j trong mảng, j < col_size

Ví dụ:

#include <iostream>
using namespace std;
int main()
{
  // Mảng 2 chiều các số
  int two_d_int[2][3] =
      {
          {6, 4, 3}, // row 1
          {7, 2, 8}  // row 2
      };
  // Truy cập phần tử dòng thứ 2, cột thứ 2 của mảng
  cout << two_d_int[1][1] << endl; // 2

  // Gán giá trị phần tử dòng thứ 1, cột thứ 3 của mảng = 100
  two_d_int[0][2] = 100;
  // In lại để kiểm tra
  cout << two_d_int[0][2] << endl; // 100

  return 0;
}

  IDE C++ là gì? Tiêu chí lựa chọn IDE cho lập trình C++

  Toán tử trong C++ và thứ tự ưu tiên thực hiện

Ví dụ và bài tập thực hành mảng 2 chiều trong C++

Dữ liệu trong mảng 2 chiều được lưu trữ theo hàng và cột, vì thế không dễ để có thể hình dung và làm việc với các phần tử trong mảng. Chúng ta cùng thử giải quyết một số bài tập thực hành cơ bản khi thao tác với mảng 2 chiều trong C++ dưới đây nhé:

Bài toán 1: Liệt kê các phần tử trong mảng

Với C++, bạn không thể sử dụng lệnh in ra màn hình trực tiếp tất cả các phần tử trong mảng thông qua biến mà thông thường sẽ dùng cách duyệt bằng vòng lặp.

#include <iostream>
using namespace std;

int main()
{
  // Mảng 2 chiều các số
  int two_d_int[2][3] =
      {
          {6, 4, 3}, // row 1
          {7, 2, 8}  // row 2
      };
  // Vòng lặp in ra tất cả phần tử của mảng
  cout << "Mang vua nhap :\n";
  for (int i = 0; i < 2; i++)
  {
    for (int j = 0; j < 3; j++)
    {
      cout << two_d_int[i][j] << " ";
    }
    cout << endl;
  }

  // Mang vua nhap :
  // 6 4 3
  // 7 2 8

  return 0;
}

Từ việc sử dụng vòng lặp for để duyệt qua tất cả các phần tử trong mảng, chúng ta sẽ giải quyết được bài toán liệt kê các phần tử theo điều kiện nhất định. Thủ tục duyệt toàn bộ phần tử trong mảng sẽ còn được áp dụng để giải quyết 2 bài toán tiếp theo dưới đây.

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

Bài toán 2: Hoán vị hàng và cột

Yêu cầu của đề bài là hoán vị các phần tử trong mảng theo hàng và cột, tức là nếu phần tử ở hàng 3 cột 2 sẽ trở thành phần tử hàng 2 cột 3 trong mảng 2 chiều kết quả. Để giải quyết bài toán này, chúng ta cũng thực hiện duyệt qua tất cả phần tử trong mảng và gán giá trị phần tử cho mảng mới.

#include <iostream>
using namespace std;

int main()
{
  // Mảng đầu vào
  int input_two_d_int[4][4] = {
    {3, 1, 0, 7},
    {2, 5, 10, 3},
    {3, 7, 4, 1},
    {10, 2, 0, 3}
  };

  //Mảng đầu ra
  int output_two_d_int[4][4];

  // Thực hiện hoán vị
  for (int i = 0; i < 4; i++)
  {
    for (int j = 0; j < 4; j++)
    {
        output_two_d_int[j][i] = input_two_d_int[i][j];
    }
  }

  // In mảng đầu ra
  cout << "Mang hoan vi :\n";
  for (int i = 0; i < 4; i++)
  {
    for (int j = 0; j < 4; j++)
    {
      cout << output_two_d_int[i][j] << " ";
    }
    cout << endl;
  }

  // Mang hoan vi :
  // 3 2 3 10 
  // 1 5 7 2 
  // 0 10 4 0 
  // 7 3 1 3

  return 0;
}

Bài toán 3: Sắp xếp theo hàng

Để thực hiện việc sắp xếp mảng 2 chiều theo hàng, chúng ta đưa bài toán về thành sắp xếp các phần tử từng hàng; điều tương tự nếu muốn sắp xếp theo cột và chỉ cần thay cách duyệt mảng. Trường hợp muốn sắp xếp toàn bộ phần tử trong mảng, chúng ta có thể đơn giản biến đổi mảng 2 chiều về thành 1 chiều và thực hiện sắp xếp.

#include <iostream>
#include <bits/stdc++.h>

using namespace std;
int main()
{
  // Mảng đầu vào
  int two_d_int[4][4] = {
    {3, 1, 0, 7},
    {2, 5, 10, 3},
    {3, 7, 4, 1},
    {10, 2, 0, 3}
  };

  // Thực hiện sắp xếp theo hàng
  for (int i = 0; i < 4; i++)
    sort(two_d_int[i], two_d_int[i] + 4);

  // In mảng đã sắp xếp
  cout << "Mang sap xep :\n";
  for (int i = 0; i < 4; i++)
  {
    for (int j = 0; j < 4; j++)
    {
      cout << two_d_int[i][j] << " ";
    }
    cout << endl;
  }

  // Mang Mang sap xep :
  // 0 1 3 7 
  // 2 3 5 10 
  // 1 3 4 7 
  // 0 2 3 10

  return 0;
}

Kết luận

Qua bài viết này, hy vọng các bạn đã củng cố được thêm kiến thức về mảng 2 chiều trong C++ và có thể áp dụng nó để giải quyết được các bài toán thực tế. Từ mảng 2 chiều, chúng ta có thể dễ dàng mở rộng ra thành mảng nhiều chiều với các thao tác xử lý tương tự. 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

Xem thêm:

Xem ngay tin đăng tuyển lập trình viên đãi ngộ tốt trên TopDev

Copilot là gì? Trợ lí ảo AI từ Microsoft (Bing AI)

Copilot là gì? Trợ lí ảo AI từ Microsoft (Bing AI)

Sự ra đời của ChatGPT đã mở ra một kỉ nguyên mới về trí tuệ nhân tạo, kéo theo đó nhiều chatbot AI đình đám lần lượt xuất hiện trong đó có Copilot (trước kia là Bing AI), tuy sinh sau đẻ muộn nhưng Copilot của nhà Microsoft lại có những vượt trội đáng kể so với các đàn anh. Trong bài viết này, cùng TopDev tìm hiểu Copilot là gì, nó hoạt động ra sao, những điểm nổi bật so với chatGPT và hướng dẫn cài đặt sử dụng thật chi tiết.

Copilot là gì?

Microsoft Copilot là trợ lý chatbot AI được tích hợp vào công cụ tìm kiếm Bing, Microsoft 365 và trình duyệt Edge của Microsoft để trả lời những truy vấn tương tự như ChatGPT.

Copilot là gì?

Nhắc đến Microsoft, chắc hẳn bạn còn nhớ đến một AI đó là Bing Chat, đúng vậy Copilot chính là tên gọi mới của Bing AI, sau khi ra mắt được một năm, “Bing Chat và Bing Chat Enterprise giờ đây sẽ đơn giản trở thành Copilot” MS đã chia sẻ tại sự kiện ra mắt tại quy mô lớn ở New York vào ngày 22/09/2023.

Tên gọi mới Copilop đã được sử dụng đồng nhất trên cả Bing, Microsoft Edge và Windows 11 bắt đầu từ ngày 26/09/2023.

Copilot cũng được xây dựng trên nền tảng ngôn ngữ lớn vì vậy có khả năng tạo ra các văn bản chất lượng cao, trả lời các câu hỏi phức tạp và thực hiện các tác vụ khác như viết code, tạo văn bản, trả lời câu hỏi, dịch thuật, thậm chí tạo ra hình ảnh và sáng tạo các câu chuyện sống động.

Các tính năng nổi bật của Microsoft Copilot

Một trong những điểm mạnh vượt trội của Copilot chính là khả năng cập nhật kiến thức liên tục. Được đào tạo trên một lượng dữ liệu khổng lồ và đa dạng, bao gồm cả thông tin thực tế và các sự kiện mới nhất, Copilot luôn cung cấp cho người dùng những thông tin chính xác và cập nhật nhất. Điều này giúp Copilot vượt trội so với các mô hình ngôn ngữ khác, đặc biệt là khi bạn cần tìm hiểu về các chủ đề thời sự hoặc các sự kiện mới xảy ra. Ví dụ, bạn có thể hỏi Copilot về kết quả của một trận đấu bóng đá vừa diễn ra hoặc về tình hình thời tiết mới nhất tại một địa điểm cụ thể, và Copilot sẽ cung cấp cho bạn câu trả lời chính xác và chi tiết.

Bên cạnh đó, việc tích hợp sâu với hệ sinh thái Microsoft cũng là một lợi thế lớn của Copilot. Người dùng có thể dễ dàng sử dụng Copilot để tăng năng suất làm việc hàng ngày, từ việc tạo email chuyên nghiệp trong Outlook, soạn thảo tài liệu trong Word, cho đến việc tìm kiếm thông tin trực tiếp trong trình duyệt Edge. Việc tích hợp này tạo ra một trải nghiệm liền mạch và thuận tiện cho người dùng, giúp họ tiết kiệm thời gian và công sức.

Các tính năng nổi bật của Microsoft Copilot

Bing AI có gì khác so với ChatGPT?

Cả Copilot và ChatGPT đều là những mô hình ngôn ngữ lớn (LLM) được huấn luyện trên lượng dữ liệu khổng lồ và có khả năng tạo ra văn bản chất lượng cao, tương tác với người dùng một cách tự nhiên. Tuy nhiên Microsoft Copilot và ChatGPT của OpenAI luôn được mang ra bàn cân:

Bảng so sánh nhanh:

Tính năng Copilot ChatGPT
Nguồn dữ liệu Nguồn dữ liệu được cập nhật liên tục và mới nhất Kiến thức được cập nhật gần nhất là tháng 10/2023 ở phiên bản GPT-4o mini.
Tích hợp Tích hợp sẵn trong hệ sinh thái Microsoft Linh hoạt, có thể tích hợp vào nhiều nền tảng qua extension hay plug-in
Khả năng Thiên về cung cấp thông tin, hỗ trợ viết code, xử lí những câu hỏi mang tính học thuật Đa dạng văn phong, phong cách trả lời đa dạng gần gũi, thường để xử lí các câu hỏi hàng ngày
Chi phí Hoàn toàn miễn phí miễn phí sử dụng Bing Chat và có bản trả phí là Bing Chat Enterprise nếu bạn muốn tích hợp thêm nhiều tính năng trong Microsoft Miễn phí ở GPT-3.5, nhưng kiến thức chỉ update tới 2021, ngoài ra các mô hình GPT 4.0 trở lên phải trả phí

Xem tin tuyển dụng việc làm AI tại đây

Hướng dẫn bạn cách cài đặt Copilot đơn giản, nhanh chóng

Bạn có thể truy cập và sử dụng Microsoft Copilot bằng một số cách sau

Shortcut Copilot ở Windows Taskbar

Việc sử dụng Copilot vô cùng đơn giản chỉ bằng một cú click chuột. Đầu tiên đảm bảo rằng hệ điều hành Windows của bạn đã được cập nhật lên phiên bản mới nhất (thường là Win 10 trở lên). Bạn sẽ thấy biểu tượng Copilot xuất hiện trên thanh Taskbar như hình bên dưới, nhấp vào biểu tượng để mở giao diện của Copilot và bắt đầu.

Shortcut Copilot ở Windows Taskbar

Copilot trong Bing Search

Truy cập vào bing.com – công cụ tìm kiếm của Microsoft, bạn sẽ thấy Copilot được tích hợp trong thanh tìm kiếm, bạn chỉ gần nhấp vào biểu tượng Copilot và sử dụng

Copilot trong Bing Search

Copilot trên Microsoft Edge

Cách thứ 3, bạn cũng có thể thao tác với Copilot thông qua trình duyệt Microsoft Edge trên Windows hay MacOS. Với cách này bạn có thể chat trực tiếp với Copilot ở bên phải màn hình trong khi có thể truy cập vào các website khác ở phía bên trái.

Copilot trên Microsoft Edge

App Copilot trên Android và iOS

App Copilot trên Android và iOS

Ngày này tần suất sử dụng điện thoại của người dùng thậm chí còn nhiều hơn desktop, vì vậy App Copilot sẽ đáp ứng mọi truy vấn của bạn mọi lúc mọi nơi. Bạn có thể truy cập Appstore hoặc CH Play để tải về và sử dụng ứng dụng.

Điểm đặc biệt khi sử dụng Copilot là cho dù bằng cách nào thì bạn cũng không cần tạo tài khoản đăng nhập mà vẫn có thể sử dụng và hơn nữa là hoàn toàn miễn phí.

Và trên đây là những thông tin mới nhất về Microsoft Copilot hay tên gọi cũ là Bing AI, ta có thể thấy Copilot là bước nhảy vượt trội về công nghệ của Microsoft. Cuộc chạy đua công nghệ của các ông lớn vẫn chưa dừng lại, cùng đón chờ ai sẽ là kẻ chiến thắng trong cuộc đua AI này nhé!

Đọc thêm:

Xem các tin tuyển dụng IT mới nhất từ TopDev

6 vùng kiến thức mà Business Analyst nào cũng phải biết!

kiến thức Business Analyst

Bài viết được sự cho phép của tác giả Nguyễn Hoàng Phú Thịnh

Hello anh em 🙂

Như các bạn đã biết, một người BA sẽ phải gặp gỡ và kết nối với rất nhiều người. Do đó BA luôn cần aware tới việc nâng cao kiến thức và kỹ năng của chính mình.

Bản thân mình tốt lên. Công việc được giải quyết nhanh gọn hơn. Anh em sẽ có nhiều thời gian hơn để tiếp tục rèn luyện và nâng cao chất lượng công việc.

BABOK ver3 mô tả nhóm kiến thức (Knowledge Areas) của một người làm Business Analyst như sau.

Business Analyst

Knowledge Areas và Underlying Competencies

Đọc trong BABOK, thường mình sẽ dễ bị lẫn lộn giữa Knowledge Areas và Underlying Competencies.

  • Underlying Competencies nôm na là các kỹ năng cần của một người làm BA.
  • Còn Knowledge Areas là các nhóm kiến thức mà một người làm công việc Business Analyst cần phải có (nó là nhóm kiến thức đại diện cho các lĩnh vực chuyên môn của BA).

Underlying Competencies provides a description of the behaviorscharacteristicsknowledge, and personal qualities that support the practice of business analysis.

Knowledge Areas represent areas of specific business analysis expertise that encompass several tasks.

Nguồn: BABOK v3

Anh em nên hiểu tách biệt vậy cho rõ ràng. Kỹ năng là gồm cả cứng và mềm. Thời gian tu luyện sẽ cho biết được kỹ năng của người này cao hơn, hay thấp hơn với người khác.

Còn kiến thức là thứ nền tảng, là kim chỉ nam cho toàn bộ hoạt động của BA. 100% các công việc thường ngày của BA đều dựa trên nhóm kiến thức này.

Và cũng giống như kỹ năng, đây là những thứ mà mình tin rằng không chỉ đơn thuần rèn luyện, học hỏi là có. Mà quan trọng là phải được tích lũy từ những kiến thức cơ bản, rồi áp dụng thực tế, chinh chiến qua nhiều dự án thì mới rút kinh nghiệm và thẩm thấu được.

Ô kê hiểu sơ bộ vậy rồi, giờ thì cùng tìm hiểu về Knowledge Areas nhé anh em 😎

1. Lên kế hoạch và theo dõi tiến độ

Planning  Monitoring, đây là 2 kỹ năng không thể thiếu của một người làm Business Analyst. Đây là hai kỹ năng có ảnh hưởng trực tiếp đến các đầu mối công việc trong dự án.

Nhóm kiến thức về planning và monitoring được đưa lên đầu trong sơ đồ bởi vì tầm quan trọng và độ bao quát của nó.

Anh em cũng biết là planning thì không có sai hoặc đúng, mà chỉ là phù hợp hay không mà thôi. Phù hợp là đảm bảo được những resources hiện có và yêu cầu của dự án.

Resources là cả về nhân lực, vật lực và cả khả năng tiếp cận được công nghệ mới.

PM đưa ra plan cho dự án có sát với thực tế hay không, tùy thuộc rất nhiều vào kinh nghiệm của anh này.

Một anh BA lên plan cho internal team cùng làm việc. Hay đơn thuần là những task công việc cho chính bản thân, cũng đòi hỏi phải tích lũy nhiều góc nhìn và trải nghiệm thì mới sát thực tế được.

Lên kế hoạch và theo dõi tiến độ
Plan anh em eiii…!!!

Thường thì mình sẽ thấy thoải mái và có động lực làm việc hơn khi có mục tiêu rõ ràng.

Từ những mục tiêu nhỏ, đạt được nó, rồi đi tiếp đến một mục tiêu khác. Tiếp tục đạt được nó, rồi lại đi tiếp đến một mục tiêu khác. Đạt được nó, đạt được nó và mình sẽ đạt được mục đích đề ra ban đầu từ việc đạt được những mục tiêu nhỏ này.

Như vậy, mình có thể keep track được tiến độ công việc. Điều này mang lại sự chủ động trong công việc. Và dĩ nhiên, xuất phát điểm phải bắt đầu từ những việc nhỏ.

Điều này giúp mình bám sát kế hoạch và chủ động thay đổi nếu có phát sinh. Và đặc biệt là nó giúp mình luôn ở thế chủ động, không bị task đè 😀

Chỗ mình ngồi có 2 cái bảng nhỏ. Sáng lên công ty mình hay viết lên bảng 3-4 tasks mà mình muốn làm trong ngày. Ngồi làm là luôn nhìn thấy nó. Đập thẳng vào mặt nên auto nhớ, muốn quên cũng không được 🙂

2. Moi móc và cấu kết với anh em

2.1. Moi móc thông tin – Elicitation

Elicit là động từ, danh từ là Elicitation, nghĩa là moi móc, đào bới.

Trong bối cảnh Business Analyst, elicit nghĩa là moi móc thông tin nhằm lấy được requirement. Dùng eilicit chính xác hơn so với get, hay gather.

Elicit là moi móc những thông tin từ khi nó còn “chưa tồn tại”, chưa được hình thành nữa. Thường là thông tin chưa có sẵn, chưa được phát biểu ra (unstated). Mình phải moi móc, phải elicit cho ra được thông tin, thành thông tin đã được phát biểu (stated).

Còn get hay gather thường chỉ dùng cho những thông tin đã có sẵn. Mình chỉ việc lấy về hoặc tập hợp lại thôi. Giống như đi hái hoa bắt bướm thì hoa với bướm có sẵn rồi, chỉ đi bắt, đi lụm về thôi. Còn requirement thì đâu dễ ăn như vậy.

Anh em xem thêm bài mình chém gió về Requirement và chuyện moi móc thông tin nhé.

2.2. Cấu kết với anh em – Collaboration

Collaboration, nghĩa là cộng tác, hợp tác, cấu kết với anh em cùng làm 1 cái gì đó, tốt cho dự án.

Không chỉ đơn thuần là teamwork, mà một người BA còn phải làm cho cả team cộng tác với mình và cộng tác với nhau một cách hiệu quả nhất.

Làm việc tốt với mọi người vẫn là chưa đủ. BA cần phải đảm bảo các thành viên khác làm việc trơn tru và hiểu ý nhau nữa.

Là một người nắm nhiều thông tin trong dự án, nên kết nối mọi người là “nghĩa vụ cao cả” của một người làm BA.

Cấu kết với anh em

Nghe có vẻ không liên quan, nhưng anh em hãy thử hình dung như thế này nhé.

Một anh tester và một anh dev xích mích với nhau về một tính năng. Ai cũng có lý của mình hết. Lúc này người nắm nhiều thông tin nhất là BA, sẽ nhảy vào can thiệp để giải quyết vấn đề cho mọi người.

BA sẽ cố gắng giải thích theo góc độ lập trình và cả góc độ người dùng để hai bên thấy rõ được góc nhìn của nhau.

Tuy đây không phải là một trong những yêu cầu công việc của BA, nhưng BA nên có nhận thức về điều này. Nó như một underlying responsibility của BA.

Điều này sẽ giúp công việc của team trơn tru hơn.

Và dĩ nhiên, làm tốt thì sẽ rất là tốt, làm không khéo có thể gây ra những ảnh hưởng tiêu cực khác. Nên chủ đề của bài này vẫn mong anh em luôn chú trọng nâng cao kỹ năng và kiến thức của mình. Từ đó giúp giải quyết công việc một cách hiệu quả hơn 🙂

  Dân BA có cần phải rành về kỹ thuật???

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

3. Quản lý requirements

Có bốn loại requirement trong một dự án:

  • Business Objective Requirements
  • Stakeholder Requirements
  • Solution Requirements
  • Transition Requirements

Việc quản lý dòng đời các requirements bắt đầu từ lúc khởi tạo cho đến khi các requirements được xử lý.

Thực tế thì requirement rất hay thay đổi hoặc thêm mới. Thay đổi lớn có, nhỏ có. Tùm lum tùm la hết. Và dĩ nhiên, nếu không kiểm soát tốt, nó sẽ là một mớ hỗn độn, phá nát dự án ở mọi khía cạnh (từ time, budget, scope cho đến resources).

Không phải lúc nào cũng gật đầu “accept” một requirement mới. Và không phải lúc nào cũng “reject” những requirement mới này.

Việc quản lý requirement như thế nào phụ thuộc rất nhiều vào việc dự án được triển khai theo phương pháp nào: Waterfall, RUP hay Agile.

Mỗi phương pháp đều có những đặc điểm riêng. Và requirements trong các phương pháp này cũng được quản lý rất khác biệt.

Thường thì trong dự án triển khai theo kiểu Waterfall hay RUP, requirements được chốt rất rõ ràng ngay từ đầu. Trong quá trình triển khai, sự thay đổi là có nhưng không đáng kể.

Còn Agile thì lại welcome to change. Mật độ thay đổi requirement trong những dự án này khá thường xuyên.

Nhưng quan trọng nhất, anh em BA cần phải học cách:

  • Hiểu được sự xuất hiện của các requirement.
  • Kiểm soát được các requirement từ lúc khởi tạo, có sự thay đổi cho tới khi được xử lý >> control được sự kỳ vòng từ phía users.

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

4. Hiểu về chiến lược của khách hàng

BABOK nó dùng từ Strategy Analysis, dịch trắng ra là “phân tích chiến lược”. Mình thấy dùng từ này nó đao to búa lớn quá, nên mình nghĩ một cách đơn giản: chỉ cần anh em hiểu về chiến lược của khách hàng, là đã đủ để phục vụ công việc của một người làm BA.

Hiểu về chiến lược của khách hàng là sao?

Khi làm giải pháp, rõ ràng anh em phải nắm được giải pháp đó làm ra, để giải quyết vấn đề gì. Và rồi mình mapping vấn đề đó với bối cảnh hiện tại của khách hàng, xem thử có suy ra được điều gì đáng chú ý hay không.

Từ đó, anh em mới có góc nhìn rộng nhất về tổng quan bài toán mà khách hàng đang gặp.

Ví dụ mình đang làm giải pháp CRM cho một doanh nghiệp F&B. Cái sâu sa họ muốn là gì, có phải chỉ đơn thuần là 1 giải pháp quản lý bán hàng? (trong khi thực tế là họ vẫn đang chạy một con local CRM rất ngon).

Thu gom nhiều yếu tố, mình có thể suy ra được: họ đang muốn chuyển đổi toàn bộ giải pháp IT của họ. Từ nhiều cục, họ muốn tất cả centralize lại thành một cục, một nền tảng, nhưng có nhiều giải pháp trong đó.

Họ vừa chuyển đổi thành công ERP sang nền tảng Microsoft, giờ tiếp theo sẽ là CRM, sau đó là e-Office, POS và kể cả toàn bộ cơ sở hạ tầng.

Đó chính là mong muốn sâu sa nhất của họ. Những giải pháp hiện tại chạy tốt, nhưng về cơ bản, nó đang không tập trung, và data vẫn đang nằm rải rác rất nhiều nơi. Và điều này không đáp ứng được hướng đi lâu dài của BOD.

Khi hiểu được điều này, anh em sẽ có hướng tiếp cận khách hàng phù hợp hơn. Cách đề xuất và đánh giá giải pháp phù hợp hơn, so với việc, chỉ nghĩ một cách đơn giản cục bộ là họ chỉ đang cần một giải pháp về CRM.

Và một lần nữa, giải pháp mình đề xuất đáp ứng được nhu cầu hiện tại của khách hàng. Nhưng nó cũng phải map được với hướng đi lâu dài của họ trong tương lai.

5. Phân tích và thiết kế

Analysis and Design, chắc chắn ai làm Business Analyst cũng đều làm cái này.

Requirement Analysis and Design để đơn giản thì mình có thể hiểu là một loạt các việc bao gồm:

  • Tổ chức và sắp xếp các requirement một cách có cấu trúc.
  • Phân loại rõ các loại requirement.
  • Verify requirement với internal team.
  • Validate requirement với khách hàng.
  • Làm tài liệu và mô hình hóa các requirement phù hợp với từng stakeholders cụ thể.
  • Cùng với team đề xuất solutions phù hợp.
  • Xác định những solution nào đáp ứng được business needs.
  • Có thể là ước tính được những giá trị mà solution đó mang lại như thế nào so với các solution khác. Hoặc có thể show cho khách hàng thấy Return On Investment là như thế nào.

6. Đánh giá giải pháp

Cái này thì rõ ràng quá rồi chứ hả anh em.

Không thể nào đi thuyết phục khách hàng ăn một món ăn dở, mà ngay cả mình cũng ghét nữa 🙂 Mình phải đánh giá một cách rất khách quan và tâm huyết với giải pháp mình đem lại thì mình mới có thể deliver một cách hoàn chỉnh nhất có khách hàng được.

Như mình có nói ở trên, không chỉ hiệu quả trong thời điểm hiện tại mà còn phải phù hợp với hướng đi lâu dài của khách hàng.

.

.

Ô kê mình sẽ tạm kết bài này ở đây. Hi vọng qua bài này, anh em hiểu được: 6 Knowledge Areas của một người làm BA, tức nhóm kiến thức chuyên môn của một người làm BA. Nó bao gồm:

  • Business Analysis Planning and Monitoring – Lên kế hoạch và theo dõi tiến độ
  • Elicitation and Collaboration – Moi móc và cấu kết
  • Requirements Life Cycle Management – Quản lý requirements
  • Strategy Analysis – Hiểu chiến lược của khách hàng
  • Requirements Analysis and Design Definition – Phân tích và thiết kế
  • Solution Evaluation – Đánh giá giải pháp

Mỗi ngành nghề có những kiến thức chuyên môn nhất định, và BA cũng có nhóm kiến thức chuyên môn của riêng mình.

Hiểu và cố gắng áp dụng nó vào công việc và cuộc sống. Mình cũng đang cố gắng từng ngày, nhưng nhớ áp dụng một cách linh hoạt và đừng rập khuôn nhé anh em 🙂

Hẹn gặp anh em ở những bài sau. Bái baiii!

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

Xem thêm:

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