Home Blog Page 6

Prettier là gì? Hướng dẫn định dạng code với Prettier trong dự án

Prettier là gì

Một thách thức lớn đối với team phát triển phần mềm khi làm việc nhóm ngoài việc đảm bảo code chạy tốt thì đó là việc xây dựng được bộ mã nguồn đủ chuẩn theo đúng format, mang tính đồng bộ, nhất quán để có khả năng bảo trì tốt trong tương lai. Và để làm được điều này thì chúng ta sẽ cần đến các công cụ định dạng code như Prettier. Vậy Prettier là gì, bài viết hôm nay mình sẽ giúp các bạn trả lời cho câu hỏi trên cùng một vài hướng dẫn định dạng code sử dụng Prettier trong dự án nhé.

Prettier là gì?

Prettier là một công cụ giúp tự động định dạng (format) code theo một chuẩn được thống nhất từ trước nhằm duy trì sự nhất quán của toàn bộ source code trong dự án. Prettier được cung cấp dưới dạng thư viện mã nguồn mở, hoàn toàn miễn phí và hỗ trợ đa dạng các ngôn ngữ khác nhau từ ngôn ngữ lập trình (JavaScript, TypeScript,…), đến các ngôn ngữ hiển thị (HTML, CSS,…) và các loại định dạng dữ liệu (JSON, Markdown,…)

Prettier là gì?

Để thực hiện việc format code với Prettier, chúng ta có nhiều lựa chọn sử dụng tùy vào thời điểm và nhu cầu của team phát triển dự án, bao gồm:

  • Thông qua các Editor plugin: cài đặt plugin Prettier trực tiếp trên Editor mà bạn sử dụng, ví dụ như với IDE Visual Studio Code, bạn có thể tải và cài đặt package Prettier formatter for Visual Studio Code. Mỗi lần viết code xong, lưu lại (save) thì code của bạn sẽ được tự động format
  • Thông qua CLI (giao diện dòng lệnh): Prettier hỗ trợ chạy lệnh để thực hiện format code cho một số file hoặc toàn bộ source code dự án. Vì thế bạn có thể sử dụng thông qua CLI và gọi ra lúc cần.
  • Thông qua Pre-commit Hook: đây là cách mà nhiều dự án áp dụng để tránh trường hợp thành viên trong team vô tình hoặc cố ý không chịu cài đặt Prettier trên IDE hay không chạy lệnh format qua CLI. Code sẽ được tự động format bởi Prettier ngay trước khi commit và push lên Git services.

Lợi ích khi sử dụng Prettier

Trong lập trình, việc viết code một cách gọn gàng, dễ đọc là tiêu chuẩn cơ bản mà một lập trình viên cần đạt được. Tuy nhiên việc định dạng code một cách thủ công là một thách thức nhất là khi làm việc nhóm, sẽ dễ xảy ra tình trạng mỗi thành viên có một style format code khác nhau. Vì vậy, Prettier ra đời giúp cho chúng ta giải quyết được vấn đề trên, vừa tiết kiệm được thời gian thực hiện và đảm bảo sự nhất quán khi làm việc nhóm.

Lợi ích khi sử dụng Prettier

Có nhiều thư viện cũng cho phép bạn định dạng code trong dự án, tuy nhiên Prettier sẽ mang lại cho bạn nhiều lợi ích nổi trội hơn công cụ khác khi sử dụng bao gồm:  

  • Hỗ trợ nhiều ngôn ngữ lập trình khác nhau: JavaScript, JSX, Angular, Vue, Flow, TypeScript, CSS, HTML, JSON, Markdown, YAML,… và một số phiên bản mở rộng của các ngôn ngữ trên.
  • Dễ sử dụng: Prettier có thể dễ dàng cài đặt và sử dụng mà không mất thời gian cấu hình. Việc định dạng diễn ra ngay khi save code giúp bạn tiết kiệm được thời gian, tăng năng suất làm việc; tạo sự nhất quán trong dự án.
  • Cho phép tùy chỉnh: Prettier cho phép người dùng tùy chỉnh cấu hình source code tùy thuộc theo dự án, ngôn ngữ; từ đó bạn có thể áp dụng một số quy tắc dựa trên sở thích cá nhân hay của tổ chức vào code viết ra.
  • Có khả năng kết hợp với các công cụ kiểm tra mã nguồn khác: Prettier có thể kết hợp với ESLint (công cụ kiểm tra source code) bằng cách đọc cấu hình từ file .editorconfig. Việc kết hợp 2 thư viện này giúp bạn vừa đảm bảo chất lượng, vừa đảm bảo thẩm mỹ trong source code của mình.

  Setup Eslint và Prettier cho dự án React theo chuẩn coding style guide của Airbnb

  4 lý do để VS Code là Text Editor ưa thích của mọi lập trình viên

Hướng dẫn định dạng code với Prettier

Như đã đề cập ở phần trên, bạn có thể sử dụng Prettier theo nhiều cách khác nhau, tùy vào mục đích và thời điểm cần định dạng code. Phần này mình sẽ hướng dẫn các bạn cách áp dụng Prettier định dạng code thông qua việc sử dụng CLI và tích hợp vào Visual Studio Code nhé.

Sử dụng Prettier qua dòng lệnh

Chúng ta có thể sử dụng Prettier trực tiếp qua dòng lệnh (CLI) với cú pháp:

  • Kiểm tra code có tuân theo tiêu chuẩn của Prettier hay không: npx prettier –write index.js
  • Định dạng code với Prettier: npx prettier –write index.js

Sử dụng Prettier qua dòng lệnh

Bạn có thể sử dụng CLI trên cho file hoặc thư mục; hoặc có thể thêm những lệnh trên vào trước các thủ tục commit code (hook pre-commit) để đảm bảo rằng source code của bạn tuân thủ theo định dạng Prettier.

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

Tích hợp Prettier vào VS Code

Trong VS Code, bạn hãy tìm extension Prettier và cài đặt, kích hoạt nó cho dự án của bạn.

Tích hợp Prettier vào VS Code

Lúc này bạn đã có thể sử dụng ngay tính năng định dạng file của Prettier bằng cách chuột phải và chọn Format Document hoặc sử dụng các tổ hợp phím tắt Shift + Alt + F (hay Ctrl + Shift + P). Để sử dụng tính năng tự động format code ngay khi lưu, hãy bật tính năng Format On Save của VS Code.

Tích hợp Prettier vào VS Code

Để cấu hình Prettier, bạn có thể lựa chọn điều hướng File/ Preferences/ Settings/ Extensions và lựa chọn Prettier. Bạn cũng có thể cấu hình cách mà bạn muốn Prettier hoạt động thông qua thiết lập với key prettier trong file package.json hoặc tạo file .prettierrc.

Tích hợp Prettier vào VS Code

Bạn có thể tham khảo thêm một số các thuộc tính cấu hình trong Prettier ở link dưới đây:

https://prettier.io/docs/en/configuration

Kết bài

Tạo ra những dòng code sạch và đẹp là một phần công việc của lập trình viên và sử dụng Prettier sẽ giúp bạn đơn giản hóa công việc trên. Tận dụng những thiết lập tùy chỉnh của công cụ Prettier còn giúp bạn cá nhân hóa và tạo ra phong cách viết code riêng của bản thân. Cảm ơn các bạn đã đọc bài, hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

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

RDBMS là gì? Khám phá hệ quản trị cơ sở dữ liệu quan hệ

RDBMS là gì? Khám phá hệ quản trị cơ sở dữ liệu quan hệ

Trong kỷ nguyên dữ liệu lớn, hệ quản trị cơ sở dữ liệu đóng vai trò cực kỳ quan trọng trong việc lưu trữ, quản lý và truy xuất thông tin. Một trong những loại DBMS phổ biến nhất là Hệ quản trị cơ sở dữ liệu quan hệ. Trong bài viết này, hãy cùng TopDev tìm hiểu khái niệm RDBMS là gì và chức năng cũng như đi sâu vào thành phần của một hệ quản trị cơ sở dữ liệu quan hệ.

RDBMS là gì?

RDBMS là viết tắt của từ Relational Database Management System – Hệ quản trị cơ sở dữ liệu quan hệ, là một hệ quản trị cơ sở dữ liệu (DBMS) dựa trên mô hình dữ liệu quan hệ, RDBMS được thiết kế để lưu trữ và quản lý dữ liệu có cấu trúc bằng dạng bảng với các cột ứng với các thuộc tính và các hàng đại diện cho các bản ghi. Dữ liệu trong RDBMS được tổ chức một cách logic và có hệ thống, giúp việc truy xuất, cập nhật và phân tích thông tin trở nên dễ dàng và hiệu quả.

Hầu hết các hệ quản trị cơ sở dữ liệu quan hệ thương mại sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL) để thao tác với cơ sở dữ liệu.

Vào những năm 1970, mô hình cơ sở dữ liệu quan hệ (RDBMS) được phát triển, đánh dấu một bước ngoặt quan trọng trong lịch sử cơ sở dữ liệu. Kể từ đó, nhiều hệ quản trị cơ sở dữ liệu quan hệ đã được ra đời như MySQL, MS SQL Server, Oracle,…

Phân biệt RDBMS và DBMS

Phân biệt RDBMS và DBMS

RDBMS là một loại DBMS, trong đó dữ liệu được tổ chức và lưu trữ theo một mô hình quan hệ. Mô hình quan hệ sử dụng các bảng để lưu trữ dữ liệu và các mối liên kết giữa các bảng để biểu diễn các mối quan hệ thực tế.

Các DBMS như MySQL, Oracle, PostgreSQL, SQL Server đều là RDBMS.

Sự khác biệt chính:

Đặc điểm DBMS RDBMS
Mô hình dữ liệu Có thể là quan hệ, mạng, phân cấp, đối tượng… Chỉ sử dụng mô hình quan hệ
Cấu trúc dữ liệu Linh hoạt, tùy thuộc vào loại DBMS Cấu trúc bảng, hàng, cột
Ngôn ngữ truy vấn Có thể sử dụng nhiều loại ngôn ngữ Chủ yếu sử dụng SQL
Tính năng Tùy thuộc vào loại DBMS Các tính năng cơ bản của DBMS cộng thêm các tính năng đặc trưng của mô hình quan hệ (khóa chính, khóa ngoại, chuẩn hóa…)

Lưu ý: Mọi RDBMS đều là DBMS nhưng không phải mọi DBMS đều là RDBMS.

Tham khảo việc làm SQL tại đây

Tính năng chính của Hệ quản trị cơ sở dữ liệu quan hệ

RDBMS cung cấp một loạt các tính năng phù hợp để lưu trữ, quản lý và thao tác dữ liệu có cấu trúc. Dưới đây là một số tính năng chính của RDBMS:

Tính nguyên tử (Atomicity)

Tính nguyên tử là một tính chất quan trọng trong RDBMS, đảm bảo rằng mỗi giao dịch cơ sở dữ liệu được xử lý một cách toàn vẹn. Nếu một giao dịch không thể hoàn thành (ví dụ, do lỗi hệ thống), mọi thay đổi mà giao dịch đó tạo ra sẽ không được áp dụng. Điều này giúp duy trì độ chính xác và đáng tin cậy của dữ liệu, đảm bảo rằng dữ liệu không bị rối loạn do các giao dịch không hoàn thành.

Tính nhất quán (Consistency)

Tính nhất quán đảm bảo rằng khi một giao dịch được thực hiện, nó sẽ không làm vi phạm các ràng buộc đã xác định trong cơ sở dữ liệu, như các quy tắc về khóa chính, khóa ngoại, và các ràng buộc khác. Điều này có nghĩa rằng sau khi giao dịch hoàn tất, cơ sở dữ liệu sẽ vẫn trong trạng thái hợp lệ và nhất quán.

Tính bền vững (Durability)

Tính bền vững có nghĩa là một khi giao dịch đã được xác nhận và hoàn thành, kết quả của nó sẽ được lưu trữ vĩnh viễn trong cơ sở dữ liệu, ngay cả khi xảy ra các sự cố như mất điện, lỗi hệ thống hoặc hỏng hóc phần cứng. RDBMS thường sử dụng các phương thức sao lưu và nhật ký để đảm bảo rằng dữ liệu có thể được phục hồi dễ dàng trong trường hợp không mong muốn xảy ra.

Cấu trúc dữ liệu

Trong RDBMS, dữ liệu được tổ chức và lưu trữ ở dạng bảng, gồm các hàng (records) và cột (fields). Điều này làm cho việc quản lý, truy vấn và thao tác dữ liệu trở nên dễ dàng hơn. Mỗi bảng thường đại diện cho một thực thể cụ thể (chẳng hạn như nhân viên hoặc sản phẩm), và các cột đại diện cho các thuộc tính của thực thể đó.

Chỉ mục (Indexes)

RDBMS tạo ra các chỉ mục để cải thiện hiệu suất truy xuất dữ liệu. Chỉ mục hoạt động giống như bảng tra cứu, cho phép hệ thống xác định nhanh chóng vị trí dữ liệu trong bảng mà không cần phải duyệt từng dòng. Việc sử dụng chỉ mục giúp tăng tốc độ tìm kiếm, truy vấn và lọc dữ liệu, đặc biệt là đối với các tập dữ liệu lớn.

Bảng ảo (Views)

Trong RDBMS, tính năng tạo bảng ảo (hay còn gọi là views) cho phép người dùng tạo ra các truy vấn lưu trữ mà không cần thay đổi cấu trúc dữ liệu gốc. Bảng ảo thực chất là một truy vấn được lưu trữ, có thể truy xuất dữ liệu từ một hoặc nhiều bảng khác nhau. Tính năng này rất hữu ích khi cần bảo vệ dữ liệu quan trọng, vì nó cho phép người dùng truy cập vào một phần dữ liệu mà không cần biết đến toàn bộ dữ liệu gốc. Bảng ảo cũng giúp đơn giản hóa việc truy vấn cho người dùng bằng cách cung cấp một giao diện dễ hiểu hơn.

Các khái niệm cơ bản trong RDBMS

Bảng, hàng, cột

  • Bảng (Relation): Là một cấu trúc để lưu trữ dữ liệu, tương tự như một bảng trong Excel. Mỗi bảng đại diện cho một thực thể trong thế giới thực (ví dụ: khách hàng, sản phẩm).
  • Bản ghi (Record):Mỗi hàng trong bảng đại diện cho một bản ghi dữ liệu cụ thể (ví dụ: một khách hàng cụ thể).
  • Thuộc tính (Attribute):Mỗi cột trong bảng đại diện cho một thuộc tính của bản ghi (ví dụ: tên, địa chỉ, số điện thoại).

Khóa chính, khóa ngoại

  • Khóa chính (Primary Key): Là một hoặc nhiều cột duy nhất xác định một hàng trong bảng. Khóa chính đảm bảo rằng mỗi hàng là duy nhất.
  • Khóa ngoại (Foreign Key): Là một cột trong một bảng tham chiếu đến khóa chính của một bảng khác. Khóa ngoại được sử dụng để thiết lập mối quan hệ giữa các bảng.

Ràng buộc SQL

Ràng buộc SQL (SQL Constraints) là các quy tắc được định nghĩa để kiểm soát dữ liệu được lưu trữ trong các bảng của cơ sở dữ liệu quan hệ. Các ràng buộc này giúp đảm bảo tính toàn vẹn và chính xác của dữ liệu. Sau đây là một số ràng buộc SQL phổ biến:

  • NOT NULL: Đảm bảo rằng một cột không được phép có giá trị null.
  • UNIQUE: Đảm bảo rằng tất cả các giá trị trong một cột phải là duy nhất.
  • PRIMARY KEY: Định nghĩa một hoặc nhiều cột làm khóa chính của bảng, mỗi bản ghi phải có một giá trị duy nhất.
  • FOREIGN KEY: Liên kết một cột (hoặc nhóm cột) trong một bảng với một cột (hoặc nhóm cột) trong một bảng khác.
  • CHECK: Đảm bảo rằng các giá trị trong một cột phải thỏa mãn một điều kiện xác định.
  • DEFAULT: Cung cấp một giá trị mặc định cho một cột khi không có giá trị nào được cung cấp.

Mối quan hệ

Các bảng trong RDBMS được liên kết với nhau thông qua các mối quan hệ. Các loại mối quan hệ phổ biến bao gồm:

  • Một-một: Một hàng trong bảng này liên kết với tối đa một hàng trong bảng kia.
  • Một-nhiều: Một hàng trong bảng này có thể liên kết với nhiều hàng trong bảng kia.
  • Nhiều-nhiều: Một hàng trong bảng này có thể liên kết với nhiều hàng trong bảng kia và ngược lại.

RDBMS hoạt động như thế nào?

RDBMS hoạt động như thế nào?

Như đã đề cập, RDBMS hoạt động dựa trên mô hình dữ liệu quan hệ và lưu trữ dữ liệu dưới dạng bảng. Mỗi hệ thống sẽ có số lượng bảng khác nhau, mỗi bảng có một khóa chính duy nhất. Khóa chính sau đó được sử dụng để xác định từng bảng. Trong bảng có hàng và cột, mỗi hàng đại diện cho một thực thể riêng biệt, trong khi mỗi cột chứa thông tin về một thuộc tính cụ thể của thực thể đó.

Để đảm bảo tính toàn vẹn và nhất quán của dữ liệu, RDBMS sử dụng các khóa chính (primary key) và khóa ngoại (foreign key) đểquản lý và bảo đảm tính toàn vẹn, nhất quán của dữ liệu trong cơ sở dữ liệu. Khóa chính đảm bảo mỗi bản ghi là duy nhất, trong khi khóa ngoại tạo ra các mối quan hệ giữa các bảng, giúp dữ liệu luôn được liên kết một cách chính xác.

Note: Khóa chính có thể là tổ hợp của 2 hoặc nhiều field được gọi là Khóa tổ hợp

Người dùng sử dụng ngôn ngữ truy vấn SQL (Structured Query Language) để tương tác với dữ liệu trong RDBMS. Các truy vấn SQL cho phép người dùng lấy, thêm, sửa, xóa dữ liệu trong các bảng.

Tuyển dụng Oracle lương thưởng hấp dẫn

NoSQL vs RDBMS

Trong những năm gần đây, NoSQL (Not Only SQL) đã nổi lên như một lựa chọn thay thế cho RDBMS, đặc biệt là khi xử lý lượng dữ liệu lớn và có cấu trúc linh hoạt. Tuy nhiên, RDBMS vẫn giữ vai trò quan trọng trong nhiều ứng dụng.

Tính năng RDBMS NoSQL
Cấu trúc dữ liệu Cấu trúc, bảng, hàng, cột Linh hoạt, không có cấu trúc cố định
Mối quan hệ Mối quan hệ rõ ràng giữa các bảng Mối quan hệ đơn giản hoặc không có
Truy vấn SQL, mạnh mẽ Các ngôn ngữ truy vấn khác nhau, đơn giản hơn
Khả năng mở rộng Khó mở rộng Dễ mở rộng
Ứng dụng điển hình Hệ thống quản lý khách hàng, ngân hàng, ERP Dữ liệu lớn, ứng dụng web thời gian thực

Khi nào nên chọn RDBMS?

  • Ứng dụng yêu cầu tính nhất quán cao và dữ liệu có cấu trúc rõ ràng.
  • Cần thực hiện các truy vấn phức tạp và các giao dịch phức tạp.
  • Yêu cầu bảo mật cao.

Khi nào nên chọn NoSQL?

  • Dữ liệu có cấu trúc không cố định hoặc thay đổi thường xuyên.
  • Yêu cầu khả năng mở rộng cao và hiệu suất tốt.
  • Dữ liệu có khối lượng lớn.

>> Xem phân tích chi tiết tại bài viết: So sánh RDBMS và NoSQL

RDBMS là một công cụ mạnh mẽ để quản lý dữ liệu có cấu trúc. Việc lựa chọn giữa RDBMS và NoSQL phụ thuộc vào yêu cầu cụ thể của từng ứng dụng. Hiểu rõ các đặc điểm và ứng dụng của RDBMS sẽ giúp bạn đưa ra quyết định đúng đắn khi thiết kế và triển khai cơ sở dữ liệu.

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

CRM là gì? Giải thích CRM đơn giản ai cũng hiểu

CRM là gì

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

Hế lô a ji nô mô tô anh em. Mình đã trở lại với 1 bài viết khác, nguy hiểm và chém gió hơn xưa 😎

Bài này mình sẽ viết về CRM, một thứ rất phổ biến trong tất cả các ngành nghề nói chung và ngành phần mềm nói riêng.

Thật ra hồi xưa mình cũng chả hiểu CRM là gì hết. Mà hồi đó cũng chả có ai giải thích được cho mình hiểu CRM nó là cái vẹo gì cả.

Đến khi đi làm có dịp tiếp xúc thực tế thì mới biết được bản chất nó là gì. Bài này mình sẽ share góc nhìn cá nhân của mình về CRM, chủ yếu là cảm nhận của mình. Để qua đó anh em có thể hiểu hơn về nó, hiểu CRM thật sự nó là cái gì 😀

Okê, lét gô!!!

1. CRM là Customer Relationship Management

Giờ lên google search 1 phát là ra ngay: CRM tức là quản trị quan hệ khách hàng. Cái này thì ai cũng search được, nên mình không nói lại nữa. Để bắt đầu thì anh em đọc một đống ví dụ ngay sau đây.

Một shop bán hàng online, mỗi tháng họ có khoảng 150 đơn hàng. Đâu đó trong 150 đơn hàng này là có những khách hàng đã quay lại mua hàng của họ nhiều lần. Đó là dấu hiệu của CRM.

Cũng một shop bán giày đá banh khác. Khách đến mua cần được tư vấn về các loại giày đá banh.

Tư vấn xong, dù khách có mua hay không, shop này vẫn xin số điện thoại của khách ghé quán. Lần sau có thông tin hàng mới về hay khuyến mãi gì thì shop sẽ nhắn tin báo. Đó là CRM.

Hoặc lâu lâu Viettel nhắn tin chúc mừng sinh nhật anh em. Đó cũng là CRM.

Shopee gửi mail báo sắp tới là sinh nhật Shopee, mời anh em ghé nhà Shopee để… mua đồ giảm giá. Đó cũng là CRM.

Tự nhiên lâu lâu cái Mocha nó nhắn tin, kêu cài app Mocha dùng đi, tặng cho 50 phút nội mạng gọi miễn phí. Đó là CRM.

Hay chả hiểu sao tự nhiên mấy trung tâm Wall Street, ILA nó cứ hay gọi mình lên test tiếng Anh, tiếng Mã Lai gì đấy. Đó cũng là CRM.

Hoặc bữa mình có mua máy khoan trên Tiki, cái tợ nhiên lâu lâu lên lại Tiki thấy Tiki hỏi: “Bạn có hài lòng với sản phẩm máy khoan ABCXYZ đã mua? Bạn có thể để lại cảm nhận của mình được hôn?”

Hoặc hôm bữa mình thấy có shop bán quà lưu niệm tổ chức minigame “xếp-hình” trên facebook. Ham quá nhảy vào chơi, thế là được quà. Đó là CRM.

Mình có cài cái app MOMO vào điện thoại. Thấy suốt ngày MOMO thông báo hot deals, hết cái này khuyến mãi rồi tới cái kia giảm giá. Ngày nào cũng nhận được tin. Một ngày mà MOMO không nhắn tin cho mình thì chắc lạ lắm. Đó là CRM.

Hay đơn giản hơn. CRM là tất cả các hoạt động mình làm với khách hàng, để họ nhớ tới mình nhiều hơn.

crm là gì

Giống như anh em đi cua gái vậy. Phải thể hiện tốt thì chị em mới nhớ tới mình. Bán hàng cũng vậy. Đôi lúc bao nhiêu khách hàng mới không quan trọng bằng khách hàng cũ quay lại mua hàng bao nhiêu lần.

Một khi khách hàng đã nhận diện được mình, đã tin tưởng mình thì việc họ đến với mình để mua hàng thì nằm trong bàn tay. CRM là một khái niệm về các chiêu thức để làm được điều này.

Tuy nhiên, các anh em hiểu tới đây thôi thì chưa đủ. CRM nó còn 1 nửa vòng tròn trước đó nữa!

Cũng là ví dụ từ một shop online khác.

Khi anh A ảnh mua sách từ FAHASA thì anh A trở thành khách hàng của FAHASA. Còn khi anh A chưa mua sách của FAHASA thì anh A ảnh là người dưng của FAHASA.

Cái đoạn sau khi anh A ảnh mua sách và trở thành khách hàng rồi, thì chuyện chăm sóc ảnh là điều đương nhiên.

NHƯNG,

Khi anh A ảnh đang là người dưng, không quen biết gì hết, mà đùng cái mình biến ảnh thành khách hàng của mình thì việc này cũng được gọi là CRM.

Nó là nửa vòng tròn thường bị hiểu thiếu về CRM.

CRM không chỉ quản lý các hoạt động giữa người bán và người mua (sau khi người mua đã mua hàng). Mà nó còn quản lý luôn các hoạt động giữa người bán và “người dưng”. Để sau một thời gian, “người dưng” đó trở thành khách hàng của mình.

Vậy chốt lại CRM là tổng hợp các cách, các hình thức, các kỹ xảo, các tuyệt chiêu, các best practice để: Biến một người dưng mua hàng của mình, trở thành khách hàng của mình, khiến họ nhớ tới mình và quay lại, tiếp tục mua hàng của mình lần thứ 2, thứ 3 và lần thứ “n”.

Khái niệm nó là vậy, còn đưa vào áp dụng thì CRM nó tồn tại chủ yếu ở 3 hoạt động rõ rệt là: Marketing – Sales – Customer Service.

Mình có một ví dụ cơ bản thường gặp nhất cho anh em. Ví dụ một shop bán hoa online.

Shop bán hoa này vừa rồi mới mua 1500 data khách hàng từ công ty bảo hiểm, từ Mobiphone, hoặc từ một tổ chức, trường học nào đó.

Sắp tới mùa 8/3, họ sẽ chia nhau ra alo cho anh em, giới thiệu sản phẩm rồi tư vấn quà tặng vợ, tặng mẹ, tặng bà ngoại. Hoa này thì ý nghĩa gì, hoa kia ý nghĩa gì, hoa này mua trước bao ngày, hoa kia thì phải bỏ hộp giấy, vâng vâng và mây mây.

Từ 1500 người dưng, sau khi gọi xong họ xác định được có khoảng 850 người có vẻ hứng thú về việc tặng hoa mùa 8/3 (có vẻ thôi nhé anh em). Đây là hoạt động Marketing.

Trong 850 người này, đội Sales của shop sẽ bắn 850 cái email về các câu chuyện ý nghĩa về việc tặng hoa cho người phụ nữ. Rồi là đang có hot deal giảm giá, mua trước ngày 8/3 khoảng 365 ngày thì được giảm giá 69%, ví dụ vậy. Rồi là chương trình đóng gói sẵn, tặng quà tận nơi cho đối tượng, rồi giúp khách hàng viết những câu chúc hoành tráng nhất chẳng hạn. Đây là hoạt động Sales.

Các hoạt động này chứ dàn trải theo từng tuần, từng ngày. Trong 850 người có vẻ hứng thú, shop xác định được có khoảng 600 người đăng ký nhận tư vấn từ shop.

Rồi từ 600 người, xuống còn 400 người đặt hàng online50 người yêu cầu gửi báo giá. Trước 8/3 khoảng 2 ngày, shop tổng kết họ nhận được 378 đơn hàng từ 1500 data ban đầu. Đem về doanh thu hơn 89 chai bia sau hơn 1 tháng kick-off chiến dịch.

Sau khi thu về 89 triệu từ chiến dịch, shop bắt đầu tăng cường các hoạt động bên lề cho 378 người khách đã mua hàng này.

Nào là gửi bản tin cách chăm sóc cây, hoa tại bàn làm việc, tại nhà. Rồi chọn hoa tặng người yêu sao cho phù hợp. Rồi thì tặng hoa không nhất thiết chờ 8/3 hay valentine. Rồi ý nghĩa các loài hoa. Lâu lâu tổ chức game tri ân khách hàng, tặng 10 tấm vé may mắn lên Đà Lạt nghỉ dưỡng tại Resort vườn hoa nhiệt đới trong 3 ngày 2 đêm.

Đối với những khách đã mua hàng, hoa mua về có vấn đề gì thì shop hỗ trợ chăm sóc, giải đáp các thắc mắc, khiếu nại nhiệt tình. Shop còn có chính sách đền bù nếu hoa bị dập trong quá trình vận chuyển nữa.

Nhờ đó, cứ khách này giới thiệu khách khác. 378 người khách cũ đã giới thiệu được cho hơn 150 người khác, mua hoa, và trở thành khách hàng thân thiết của cửa hàng. Đó là hoạt động Customer Service.

Tức là shop này đã dùng CRM, để biến 1500 người dưng thành 378 người khách hàng. Rồi từ 378 người khách này, họ giới thiệu cho hơn 150 người khách khác. Đó là sức mạnh của CRM.

Rõ ràng là nếu áp dụng thành công, phù hợp với đối tượng khách hàng, phù hợp với sản phẩm và xu hướng thị trường thì CRM là một thứ không thể thiếu đối với các doanh nghiệp.

Để hình dung rõ nhất về hoạt động CRM, anh em cứ tưởng tượng nó như 1 cái phễu (sales funnel) như hình dưới đây.

Về cơ bản, Sales Funnel sẽ như thế này
Về cơ bản, Sales Funnel sẽ như thế này (Hình chôm từ pushalert.co)

Như hình trên, stage đầu tiên (discovery) sẽ lấy thông tin “người dưng” từ các Social Media, Website,… Rồi tương tác với họ, rồi bán hàng, rồi theo dõi và chăm sóc khách hàng.

Các stage không nhất thiết phải như vậy.

Nó hoàn toàn có thể linh động thay đổi. Thay đổi tên cho tới cách thức vận hành, tùy vào mục đích sử dụng của mình 🙂

  Use Case Diagram và 5 sai lầm thường gặp

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

2. Và ở đâu nó cũng… tồn tại

Bản chất của CRM nó tồn tại xung quanh chúng ta.

Trong cuộc sống thì ai chả cần duy trì mối quan hệ. Tạo dựng mối quan hệ đã khó, duy trì nó còn khó hơn. Bạn bè thì nhiều mà bạn thân được tầm mấy đứa.

Nói về hệ thống CRM, thì… cũng không có nhiều cái để nói lắm :)) Nó cũng apply i chang concept như mình chém gió bên trên. Tuy nhiên có một ý mình muốn chia sẻ thế này. Hệ thống CRM không phải là một cái gì đó ghê gớm lắm.

Đơn giản hệ thống CRM nó chỉ là một cái tool.

Mà tool thì có nhiều loại, nhiều cấp độ, nhiều tính năng, tùy level sử dụng. Nhưng quan trọng nhất vẫn là: sử dụng như thế nào mà thôi.

Tất cả các doanh nghiệp từ nhỏ tới lớn. Từ một cái shop online nhỏ xinh cho tới một công ty mấy nghìn nhân viên bự chà bá lửa thì họ vẫn-đều-đang-áp-dụng hệ thống CRM đấy thôi. Đó chính là Excel!

Họ vẫn đang lưu thông tin khách hàng của họ vào Excel hết cả thôi. Làm việc và cập nhật ngay trên này.

Kể cả những form mẫu, biểu mẫu trong quá trình bán hàng cũng làm bằng Excel hết. Tức là cả thế giới đều vẫn đang dùng hệ thống CRM, nhưng là mức sơ khởi, ở mức chỉ keep track được thông tin khách hàng thôi. Đó là Excel.

Sau này khi lượng khách hàng đông, Excel không đáp ứng đủ khả năng. Thì họ mới tìm đến các công cụ khác, xịn hơn, nguy hiểm hơn để dùng.

Những công cụ này không những giúp lưu trữ thông tin, mà còn tự động hóa được. Tự động gửi mail, tự động nhận diện, phân loại khách hàng, tự động nhắc nhở Salesman.

Nói chung là tự động hết.

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

Các hệ thống tiên tiến ngày nay sẽ keep track hết toàn bộ các hoạt động của Salesman với khách hàng. Từ email, phone call, fax, appointment, cho tới các buổi cà phê ngoài giờ, các hoạt động khác với khách hàng như chạy bộ, cầu lông, tennis, đi hội thảo, abc, xyz.

Đều được các hệ thống CRM này lưu trữ lại hết, tự động hoặc thủ công, thì tùy vào tính năng của hệ thống.

Các hệ thống xịn xịn hiện nay đều có thể chạy Marketing Automation
Các hệ thống xịn xịn hiện nay đều có thể chạy Marketing Automation. Ví dụ như CleverReach.

Đó là bối cảnh IT, và dưới góc nhìn của BA. Nhưng nếu nhìn qua lăng kính đời sống hằng ngày của anh em mình thì sao?

CRM là Customer Relationship Management. Cái vế chính của khái niệm này là cụm: Relationship Management.

Như mình nói ở trên thì mối quan hệ là một thứ rất quan trọng. Không chỉ có thời này mới quan trọng, mà trước giờ nó cũng đã rất quan trọng rồi. Buôn có bạn, bán có phường mà.

Thiệt ra thì anh em mình vẫn luôn làm hoạt động CRM mỗi ngày đó thôi.

Lâu lâu lên facebook kiếm mấy đứa lâu ngày không nói chuyện, ping nó hỏi thăm vài câu. Hoặc lâu lâu ngồi lọc lại danh sách friend trên facebook. Hoặc lâu lâu rủ mấy thằng bạn ra cà phê ngồi chém gió (cái này chắc thường xuyên chứ không có lâu ?). Mấy cái này chính xác là relationship management.

Liên quan tới CRM, giờ có thể anh em sẽ bắt gặp một số khái niệm mới như CEM (Customer Engagement Management) hoặc xRM (whatever Relationship Management).

Về bản chất thì cũng như nhau, nhưng mỗi khái niệm sẽ có một bối cảnh và mục đích sử dụng riêng.

Thường nói về CRM thì anh em sẽ hay nghe tới mấy ông lớn như Salesforce, Zoho, Dynamics 365 hay Oracle CRM. Nhưng hệ thống thì cũng chỉ là hệ thống. Con người vận hành hiệu quả thì hệ thống phát huy tác dụng. Và ngược lại 🙂

Bài này mình chia sẻ góc nhìn của mình về CRM, về khái niệm và các hoạt động CRM. Hi vọng anh em sẽ thấy bài này dễ hiểu và thực tế. Có gì cần trao đổi thêm thì anh em cứ còm men phía dưới nhé.

Hẹn gặp anh em ở các bài sau. Bái bai!!!

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

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

MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất

Trong bối cảnh phát triển phần mềm ngày càng đa dạng và phức tạp, việc lựa chọn một hệ quản trị cơ sở dữ liệu (DBMS) phù hợp đóng vai trò quan trọng trong việc đảm bảo hiệu năng, tính ổn định và khả năng mở rộng của ứng dụng. MySQL và SQL Server, hai trong số những DBMS phổ biến nhất hiện nay, đều sở hữu những ưu điểm riêng biệt. Bài viết này sẽ tiến hành so sánh MySQL và SQL Server, nhằm cung cấp cho người đọc cái nhìn toàn diện và khách quan, từ đó đưa ra lựa chọn tối ưu cho dự án của mình.

Nhắc lại Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS)

RDBMS là hệ quản trị cơ sở dữ liệu quan hệ mạnh mẽ, hiệu quả trong việc lưu trữ, quản lý và thao tác dữ liệu có cấu trúc. Nền tảng của RDBMS nằm ở mô hình quan hệ, được đề xuất bởi E.F. Codd vào năm 1970. Mô hình này tổ chức dữ liệu thành các bảng, bao gồm các hàng và cột. Mỗi hàng đại diện cho một bản ghi hoặc một thể hiện của một thực thể, trong khi mỗi cột đại diện cho một thuộc tính hoặc tính chất của thực thể đó.

Một trong những điểm mạnh chính của RDBMS là khả năng thiết lập mối quan hệ giữa các bảng bằng cách sử dụng khóa chính và khóa ngoại. Tính năng này cho phép thao tác và truy xuất dữ liệu phức tạp bằng cách sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL), một ngôn ngữ chuẩn được thiết kế đặc biệt để quản lý các cơ sở dữ liệu quan hệ.

RDBMS có tính toàn vẹn dữ liệu, tính nhất quán và hiệu quả trong việc quản lý khối lượng dữ liệu có cấu trúc lớn.

Giới thiệu SQL, MySQL và SQL Server

Giới thiệu SQL, MySQL và SQL Server

SQL

SQL là viết tắt của Structured Query Language (Ngôn ngữ truy vấn có cấu trúc). Theo hướng dẫn của ANSI (Viện Tiêu chuẩn Quốc gia Hoa Kỳ), SQL là ngôn ngữ chuẩn để duy trì và quản lý cơ sở dữ liệu. Do đó tuy có thay đổi nhỏ về cú pháp nhưng hầu hết các truy vấn của cơ sở dữ liệu để truy xuất, thêm hoặc thao tác dữ liệu đều dựa trên cú pháp SQL chuẩn.

Bạn có thể sử dụng SQL để quản lý nhiều hệ quản trị cơ sở dữ liệu quan hệ, chẳng hạn như MySQL, SQL Server, Oracle và MS Access.

Việc làm SQL mới nhất tại TopDev

MySQL

MySQL là hệ quản trị cơ sở dữ liệu quan hệ được phát triển và phát hành vào năm 1995 hiện thuộc sở hữu của Oracle Corporation.

MySQL là một trong những RDBMS mã nguồn mở đầu tiên được phát triển và ra mắt. Được thiết kế và viết bằng ngôn ngữ lập trình C và C++, MySQL tương thích với tất cả các hệ điều hành chính. Nó là một thành phần cốt lõi của một chồng phần mềm ứng dụng web mã nguồn mở phổ biến rộng rãi được gọi là LAMP, viết tắt của Linux, Apache, MySQL, PHP/Perl/Python.

SQL Server

SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ mạnh mẽ được phát triển bởi Microsoft. Nó cung cấp một nền tảng để lưu trữ, quản lý và truy xuất dữ liệu cho các ứng dụng và dịch vụ khác nhau. SQL Server hỗ trợ SQL, một ngôn ngữ lập trình được sử dụng để giao tiếp với cơ sở dữ liệu. Nó cho phép người dùng tạo, sửa đổi và xóa cơ sở dữ liệu, bảng và view, cũng như thực hiện các thao tác khác nhau như truy vấn, sắp xếp, lọc và nối dữ liệu. SQL Server cũng cung cấp các tính năng nâng cao như khả năng sẵn sàng cao, bảo mật và khả năng mở rộng, làm cho nó trở thành một lựa chọn phổ biến cho các doanh nghiệp mọi quy mô.

Sau khi điểm qua các khái niệm, ta có thể hiểu tóm gọn, SQL là một ngôn ngữ truy vấn, MySQL và SQL Server là hai hệ quản trị cơ sở dữ liệu quan hệ sử dụng SQL để quản lý và các thao tác khác với cơ sở dữ liệu.

Tuyển dụng MS SQL Server lương thưởng hấp dẫn

SQL vs MySQL

SQL vs MySQL

Chắc hẳn nhiều bạn bắt đầu học về cơ sở dữ liệu sẽ nhầm tưởng SQL và MySQL là một. Nhưng nhu đã giải thích khái niệm ở trên. SQL và MySQL hoàn toàn khác nhau:

Đặc điểm SQL MySQL
Định nghĩa Ngôn ngữ truy vấn chuẩn để tương tác với cơ sở dữ liệu quan hệ. Hệ quản trị cơ sở dữ liệu quan hệ sử dụng ngôn ngữ SQL.
Chức năng chính Truy vấn, thao tác dữ liệu trong cơ sở dữ liệu. Lưu trữ, quản lý và truy xuất dữ liệu.
Tính linh hoạt Ít linh hoạt, tuân theo chuẩn. Linh hoạt cao, nhiều tùy chọn cấu hình.
Cộng đồng Rất rộng lớn và đa dạng. Lớn mạnh, tập trung vào mã nguồn mở.
Cập nhật Ít thay đổi, ổn định. Thường xuyên cập nhật, nhiều phiên bản.
Hệ điều hành Không phụ thuộc hệ điều hành. Hỗ trợ nhiều hệ điều hành.
Công cụ Không có công cụ quản lý tích hợp. Có công cụ quản lý MySQL Workbench.
Engine lưu trữ Chỉ hỗ trợ một loại. Hỗ trợ nhiều loại engine lưu trữ.
Bảo mật Tương đối cao, tuân theo chuẩn. Có thể tùy chỉnh, nhưng cần cấu hình cẩn thận.
Mở rộng Khó mở rộng. Dễ dàng mở rộng nhờ cộng đồng và các module.

So sánh chi tiết giữa MySQL và SQL Server

Đặc điểm MySQL SQL Server Giải thích chi tiết
Nhà cung cấp MySQL AB (thuộc Oracle) Microsoft MySQL ban đầu được phát triển bởi một công ty Thụy Điển, sau đó được Oracle mua lại. SQL Server hoàn toàn thuộc sở hữu của Microsoft.
Giấy phép Mã nguồn mở (GPL), bản quyền thương mại Thương mại MySQL có phiên bản cộng đồng miễn phí (GPL) và phiên bản thương mại cho doanh nghiệp. SQL Server chỉ có bản quyền thương mại với nhiều phiên bản khác nhau (Express, Standard, Enterprise).
Hệ điều hành Windows, Linux, macOS Windows, Linux (từ SQL Server 2017) MySQL có tính tương thích cao với nhiều hệ điều hành. SQL Server trước đây chủ yếu chạy trên Windows nhưng đã mở rộng sang Linux từ phiên bản 2017.
Công cụ quản lý MySQL Workbench SQL Server Management Studio (SSMS) MySQL Workbench là một công cụ trực quan để thiết kế, quản lý cơ sở dữ liệu MySQL. SSMS là công cụ tương tự cho SQL Server và còn tích hợp với các dịch vụ đám mây Azure.
Ngôn ngữ lập trình SQL procedural language T-SQL, tích hợp .NET Cả hai đều hỗ trợ SQL tiêu chuẩn nhưng có các extension riêng. T-SQL của SQL Server mạnh mẽ hơn với tích hợp .NET, cho phép tạo các thủ tục lưu trữ phức tạp.
Sao lưu và phục hồi Hot backup (bằng công cụ bên thứ ba), MySQL Enterprise Backup Nhiều công cụ tích hợp (full backup, differential backup, transaction log backup) MySQL cần công cụ bên thứ ba cho sao lưu nóng, trong khi SQL Server cung cấp nhiều tùy chọn sao lưu trực tiếp.
Khả năng sẵn sàng cao Replication (master-slave, master-master), MySQL Cluster AlwaysOn Availability Groups, database mirroring, log shipping Cả hai đều có các cơ chế đảm bảo dữ liệu luôn sẵn sàng, nhưng với các đặc điểm khác nhau. AlwaysOn của SQL Server được đánh giá cao về tính năng.
Engine lưu trữ InnoDB (mặc định), MyISAM, Memory Một engine duy nhất nhưng có nhiều tính năng (partitioning, compression, in-memory) MySQL cho phép chọn engine lưu trữ phù hợp với từng loại dữ liệu, trong khi SQL Server sử dụng một engine duy nhất nhưng cung cấp nhiều tùy chọn cấu hình.
Hỗ trợ JSON Từ phiên bản 5.7 Từ SQL Server 2016 Cả hai đều hỗ trợ lưu trữ và truy vấn dữ liệu JSON, nhưng với cú pháp và tính năng khác nhau.
Cộng đồng Lớn mạnh, mã nguồn mở Lớn, tập trung vào doanh nghiệp Cộng đồng MySQL rất lớn và hoạt động, trong khi cộng đồng SQL Server cũng lớn nhưng tập trung vào các doanh nghiệp sử dụng Microsoft.
Chi phí Miễn phí (bản cộng đồng), bản thương mại có phí Chỉ có bản thương mại, nhiều mức giá khác nhau MySQL có lựa chọn miễn phí, trong khi SQL Server chỉ có bản trả phí.

Khi nào nên lựa chọn MySQL hay SQL Server?

Việc lựa chọn giữa MySQL và SQL Server phụ thuộc chặt chẽ vào quy mô, đặc thù của dự án và các mục tiêu kinh doanh cụ thể. MySQL, với tính linh hoạt cao, cộng đồng rộng lớn và chi phí hợp lý, có bản sử dụng miễn phí thường được ưu tiên cho các dự án vừa và nhỏ, các ứng dụng web đòi hỏi khả năng tùy biến cao.

Trong khi đó, SQL Server, với sự hỗ trợ mạnh mẽ của Microsoft, các tính năng nâng cao và khả năng tích hợp sâu rộng, tỏ ra phù hợp với các doanh nghiệp lớn, các ứng dụng đòi hỏi tính bảo mật và ổn định cao. Khi đưa ra quyết định, các yếu tố như hiệu năng, khả năng mở rộng, chi phí, kinh nghiệm của đội ngũ và sự phù hợp với hệ sinh thái công nghệ hiện có cần được cân nhắc kỹ lưỡng.

Hơn nữa cả hai cơ sở dữ liệu đều được hỗ trợ tốt bởi các nhà cung cấp đám mây lớn như AWS, Azure và Google Cloud, vì vậy đây là hai RDBMS được sử dụng rất phổ biến hiện nay.

>> Xem thêm: Hệ quản trị cơ sở dữ liệu là gì? Top 15 DBMS phổ biến nhất hiện nay

Bài viết trên của TopDev đã phân biệt sự khác nhau giữa SQL, MS SQL Server và MySQL, cùng với các bảng so sánh thật chi tiết, hi vọng nó đã giúp bạn hiểu về ba khái niệm này cũng như có sự lựa chọn phù hợp cho dự án của mình.

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

5 điều bạn cần phải biết khi bắt đầu một công việc mới

5 điều bạn cần phải biết khi bắt đầu một công việc mới

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

Khi bắt đầu một công việc mới, bạn sẽ có chút phấn khích với những cơ hội được phát triển, mối quan hệ mới. Đồng thời chắc hẳn cũng có chút lo lắng về việc làm sao để hoà nhập hay liệu mình có làm tốt công việc không? Dưới đây là một vài ‘bí kíp’ để bạn chuẩn bị bắt đầu công việc mới một cách tự tin nhất.

1/ Tìm hiểu về đồng nghiệp làm việc cùng

Dù làm công việc gì, có đồng nghiệp dễ thương và hỗ trợ sẽ giúp ích cho mình rất nhiều trong công việc. Một ‘bí kíp’ đầu tiên mình thường khuyên các bạn mới đi làm đó là hãy dành thời gian làm quen với đồng nghiệp trong một vài tuần đầu tiên.

Cách làm là có thể mời đồng nghiệp ăn trưa, cà phê. Không cần quá lê thê dài dòng, gặp nhau khoảng 30-45 phút là đủ để tìm hiểu về nhau. Khi nói chuyện với đồng nghiệp mới thì bên cạnh việc hỏi han cũng hãy chia sẻ về bản thân một chút, tránh để người khác cảm thấy khó chịu như đang bị hỏi cung.

2/ Hỏi sếp về định hướng và mục tiêu

Hỏi sếp về định hướng và mục tiêu

Khi đi làm bạn cần hiểu rằng mỗi công ty, mỗi nhân sự có những cách quản lý và con người làm việc khác nhau. Có công ty quy trình rõ ràng nghiêm ngặt, sếp khó tính, có công ty chẳng có quy trình gì cả, sếp dễ tính. Một trong những vấn đề có thể gặp ở những công ty ít quy trình đó là bạn không biết mình cần làm gì hoặc mục tiêu công việc cụ thể là gì trong thời gian đầu đi làm.

Giải pháp là hỏi sếp và hỏi đồng nghiệp xung quanh. Sếp là người chịu trách nhiệm cho kết quả làm việc của mình, vì vậy đừng ngại hỏi sếp về kì vọng của sếp. Nếu sếp có kì vọng chưa rõ ràng, hãy hỗ trợ sếp bằng việc đề xuất một vài kì vọng từ phía bản thân.

Một ví dụ về đặt mục tiêu khi mới đi làm là “Kế hoạch 30-60-90 ngày” – trong 3 mốc thời gian trên bạn muốn đạt được gì? Hãy suy nghĩ và trình bày kế hoạch này với sếp, sau đó cứ đến từng mốc thì gặp sếp để review. Nhiều sếp sẽ rất thích nhân viên có sự chủ động như vậy.

Ngoài việc gặp sếp thì cũng cần sắp xếp thời gian gặp đồng nghiệp. Các anh chị đã làm ở công ty một thời gian sẽ biết người từng làm ở vị trí của bạn thường ngày công việc làm gì, tiếp xúc với phòng ban nào.

3/ Hãy nhìn xa, rộng để hiểu hơn về doanh nghiệp

Một trong những ‘bí kíp’ để tạo động lực cho bạn làm việc tốt hơn đó là hãy tìm hiểu sâu về doanh nghiệp mình đang làm việc. Nếu bạn đang làm việc cho một doanh nghiệp lớn có hàng ngàn nhân viên, sẽ rất dễ dàng để bạn tìm được những thông tin về tầm nhìn, sứ mệnh, giá trị cốt lõi. Nếu là một doanh nghiệp nhỏ, hãy nghe câu chuyện khởi đầu của người lập nên doanh nghiệp. Mình tin rằng những điều trên khi bạn hiểu kĩ sẽ giúp bạn cảm thấy ‘thuộc về’ hơn nơi mình đang làm việc, từ đó có động lực đóng góp và cống hiến nhiều hơn.

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

  4 cách giúp bạn thoát khỏi nhàm chán trong công việc

4/ Dành riêng cho thực tập sinh: đừng để thời gian của mình trống

Nếu bạn đi thực tập, bạn có thể rơi vào 2 trường hợp đó là:

  • không có quá nhiều việc để làm
  • có quá nhiều việc lặt vặt không đúng chuyên môn

Những điều cần làm khi là Thực tập sinh

Hãy nhớ rằng khi mình đi thực tập là đi học. Học ở đây không chỉ là học về chuyên môn công việc. Chúng ta còn học nhiều thứ khác như cách thích nghi với môi trường công sở, mối quan hệ đồng nghiệp, quan sát cách vận hành của một doanh nghiệp… Vì vậy hãy xem mỗi trải nghiệm khi đi làm thực tập đều là một cơ hội để học, đừng ngại làm những việc ngoài chuyên môn. Nếu thời gian của bản thân hơi rảnh khi đi làm thực tập, hãy đề xuất với các anh chị đồng nghiệp xem mình có thể làm gì để hỗ trợ các anh chị ấy không?

5/ Hãy nhẫn nại

Bạn là một nhân viên mới, vì vậy bạn và mọi người chắc chắn cần thời gian để làm quen và thích ứng với nhau. Vì vậy nếu thời gian đầu bạn có cảm thấy chưa ‘thuộc về’ nơi này, mọi người có vẻ xa cách, công việc có vẻ khó thì đó cũng là chuyện hoàn toàn bình thường. Từ từ bạn sẽ dần quen hơn với công việc, các đồng nghiệp cũng từ từ chào đón bạn hơn, bạn sẽ thấy vui hơn với mỗi ngày đi làm.

Chúc bạn thành công.

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

Xem thêm:

Xem thêm IT Jobs for Developer trên TopDev

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áo cáo Thị trường IT Việt Nam 2024 - 2025

Trong bối cảnh công nghệ không ngừng tiến bộ trên toàn cầu, vai trò của lập trình viên ngày càng được coi trọng. Những tiến bộ về trí tuệ nhân tạo (AI), điện toán đám mây (Cloud) và dữ liệu lớn (Big Data) đã khiến nhu cầu nhân lực trong lĩnh vực CNTT tăng vọt tại nhiều quốc gia, bao gồm cả Việt Nam. Đây không chỉ là một nghề hấp dẫn bởi cơ hội việc làm rộng mở mà còn bởi mức thu nhập đầy hứa hẹn mà nó mang lại.

Năm 2024, ngành công nghệ thông tin tại Việt Nam tiếp tục duy trì đà phát triển mạnh mẽ, kéo theo sự tăng trưởng về mức lương của lập trình viên. Với Báo Cáo Thị Trường IT Việt Nam 2024 do TopDev phát hành, sẽ cung cấp cho chúng ta cái nhìn tổng quan về mức lương của toàn ngành, phân tích các yếu tố ảnh hưởng đến thu nhập, so sánh giữa các vị trí và khu vực khác nhau, cũng như dự đoán xu hướng trong tương lai gần.

Tổng quan mức lương IT năm 2024

Trong bối cảnh toàn cầu đối mặt với những biến động kinh tế, nhiều doanh nghiệp trên khắp thế giới, bao gồm Việt Nam, đang gặp phải các vấn đề nghiêm trọng liên quan đến dòng tiền, mở rộng kinh doanh và tăng trưởng kinh tế. Chi phí nhân sự, cùng với chi phí vận hành và marketing, đã được thắt chặt tối đa để đảm bảo hiệu quả kinh doanh và ổn định tài chính. Các doanh nghiệp hiện đang tập trung vào việc nâng cao năng suất, tối ưu hóa quy trình làm việc và tinh giản các hoạt động. Tuy nhiên, so với các ngành khác, mức lương của các vị trí liên quan đến CNTT vẫn vượt trội hơn hẳn.

Báo cáo Thị trường IT Việt Nam 2024

Theo Báo Cáo Thị Trường IT Việt Nam 2024, hơn 70% các vị trí trong ngành CNTT nhận mức lương từ 1.000 USD trở lên, cho thấy sự chênh lệch đáng kể so với nhiều lĩnh vực khác. Điều này cho thấy giá trị mà các chuyên gia CNTT có thể mang lại, đặc biệt trong bối cảnh các doanh nghiệp đang dựa vào công nghệ để tăng cường hiệu quả và duy trì sự cạnh tranh.

mức lương lập trình viên 2024 - báo cáo thị trường IT việt nam 2024 -1

Bên cạnh đó, mức lương IT còn phụ thuộc vào nhiều yếu tố như vị trí địa lý, cấp bậc hay số năm kinh nghiệm. Theo báo cáo có thể thấy, tại TP. Hồ Chí Minh, khoảng 32,10% lập trình viên nhận mức lương từ 1.600 USD trở lên, trong khi ở Hà Nội con số này là 20,55%. Các thành phố khác như Đà Nẵng và các tỉnh thành nhỏ hơn có mức lương thấp hơn so với hai thành phố lớn, tuy nhiên vẫn giữ sự ổn định ở khoảng 600 – 1.500 USD.

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

mức lương lập trình viên 2024 - báo cáo thị trường IT việt nam 2024 -2

Báo cáo từ TopDev về mức lương IT năm 2024 cho thấy một sự chuyển đổi rõ rệt trong yêu cầu về trình độ đối với các vị trí trong ngành CNTT. Các vị trí Middle (3-4 năm kinh nghiệm) và Senior (5+ năm kinh nghiệm) tiếp tục gia tăng tỷ trọng, cho thấy một xu hướng rõ ràng: các doanh nghiệp đang ưu tiên tuyển dụng các lập trình viên có kinh nghiệm. Điều này là hệ quả từ sự phát triển và mở rộng của các dự án công nghệ phức tạp, đòi hỏi nhân lực có khả năng giải quyết những vấn đề kỹ thuật cao hơn và đảm bảo chất lượng sản phẩm cuối cùng.

Bên cạnh đó, yêu cầu cho các vị trí quản lý trong ngành CNTT cũng đang tăng lên, thể hiện qua sự gia tăng tỷ trọng các các vai trò Leader/Manager. Trong khi đó, số lượng cơ hội cho Intern và Fresher lại đang giảm dần. Điều này cho thấy sự cạnh tranh khốc liệt cho các vị trí đầu vào, khi các công ty tập trung vào tuyển dụng nhân sự có kinh nghiệm ngay từ đầu để tiết kiệm chi phí đào tạo và tối ưu hóa nguồn lực.

mức lương lập trình viên 2024 - báo cáo thị trường IT việt nam 2024 -3

Mức lương khởi điểm của lập trình viên Fresher dao động từ 415 đến 510 USD/tháng, với mức trung bình khoảng 480 USD. Sau khi tích lũy kinh nghiệm trong 1-2 năm, mức lương của lập trình viên Junior tăng lên đáng kể, đạt trung bình khoảng 780 USD/tháng. Mức lương dao động từ 510 USD đến 950 USD, cho thấy tốc độ tăng nhanh chóng sau những năm đầu tiên làm việc. Mức lương IT sẽ tỉ lệ thuận với vị trí làm việc, ở vai trò Director/Architect mức lương có thể lên đến 2.590 USD.

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

Mức lương IT không chỉ phụ thuộc vào số năm kinh nghiệm mà còn bị ảnh hưởng lớn bởi các công nghệ mà họ sử dụng. Các công nghệ mới nổi như Cloud (AWS, Azure, GCP), AI/ML (TensorFlow), và các công nghệ liên quan đến DevOps (Kubernetes) đang dẫn đầu về mức lương. Điều này hoàn toàn dễ hiểu khi nhu cầu về nhân tài trong các lĩnh vực này đang tăng cao, trong khi nguồn cung lại tương đối hạn chế.

Bên cạnh các công nghệ mới, các ngôn ngữ lập trình truyền thống như Java, Python, PHP vẫn giữ được vị thế quan trọng và mức lương ổn định. Đây là những ngôn ngữ có cộng đồng lớn, tài liệu phong phú và được ứng dụng rộng rãi trong nhiều dự án. Điều này cho thấy việc nắm bắt các kỹ năng mới và công nghệ tiên tiến là yếu tố quyết định để lập trình viên đạt được mức lương cao hơn trong ngành CNTT.

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

Dựa theo báo cáo, những vị trí có mức lương cao nhất trong ngành lập trình thường yêu cầu các kỹ năng đặc thù như Phân tích Dữ liệu (Data Analyst), Điện toán Đám mây (Cloud), DevOps, Máy học (Machine Learning) và Trí tuệ Nhân tạo (AI). Trong bối cảnh các doanh nghiệp đẩy mạnh quá trình chuyển đổi số, vai trò của các dịch vụ đám mây và DevOps ngày càng trở nên quan trọng. Các công ty đang tìm cách tối ưu hóa quy trình làm việc, duy trì và phát triển hệ thống công nghệ, dẫn đến nhu cầu tuyển dụng kỹ sư Cloud và DevOps tăng vọt.

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

Bên cạnh đó, các vai trò liên quan đến Data & Analytics cũng có mức thu nhập ổn định, dao động từ 1.000 – 2.000 USD/tháng. Các vị trí liên quan đến Product & Project Management cũng có mức lương tương đương, thể hiện sự quan trọng của vai trò này trong việc duy trì và phát triển các dự án công nghệ, đảm bảo hiệu suất và tiến độ công việc.

Trái ngược với các vị trí đòi hỏi kỹ năng chuyên môn cao, những công việc mang tính hỗ trợ như IT Helpdesk, SRE (Site Reliability Engineer) và Tester lại có mức lương khiêm tốn hơn, thường dưới 1.000 USD/tháng. Mặc dù đây vẫn là các vai trò cần thiết, mức thu nhập của các vị trí này phản ánh sự chênh lệch về yêu cầu kỹ năng và trách nhiệm so với các lĩnh vực chuyên sâu như Cloud hay AI.

Tổng kết

Năm 2024 đánh dấu nhiều thay đổi quan trọng trong mức lương và nhu cầu tuyển dụng lập trình viên tại Việt Nam. Các vị trí có kỹ năng đặc thù như Cloud, DevOps, AI và Machine Learning tiếp tục dẫn đầu với mức lương hấp dẫn, trong khi các vai trò hỗ trợ có mức lương thấp hơn nhưng vẫn giữ vai trò không thể thiếu trong hệ sinh thái công nghệ.

Báo Cáo Thị Trường IT Việt Nam 2024 do TopDev phát hành không chỉ cung cấp cái nhìn toàn diện về mức lương IT mà còn đi sâu vào các xu hướng công nghệ, nhu cầu tuyển dụng và thách thức trong ngành. Đây sẽ là tài liệu quan trọng giúp lập trình viên định hướng nghề nghiệp, cũng như hỗ trợ các doanh nghiệp trong việc xây dựng chiến lược tuyển dụng hiệu quả.

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

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

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ệ

Báo cáo Thị trường IT Việt Nam 2024 - 2025

Ngày phát hành: Tháng 9/2024

Hồ Chí Minh, Việt Nam – TopDev hân hạnh công bố Báo cáo Thị trường IT Việt Nam năm 2024 – 2025 với chủ đề “Vietnam IT & Tech Talent Landscape”, một bản phân tích toàn diện về bối cảnh công nghệ và nhân lực IT tại Việt Nam. Báo cáo này cung cấp một cái nhìn chi tiết về những xu hướng phát triển, thách thức, và cơ hội đầu tư trong lĩnh vực IT tại Việt Nam, trong bối cảnh quốc gia đang dẫn đầu khu vực Đông Nam Á về tốc độ tăng trưởng kinh tế và công nghệ.

Báo cáo Thị trường IT Việt Nam 2024

1. Việt Nam – Trung tâm Công nghệ Mới của Khu vực ASEAN

Bất chấp những biến động kinh tế toàn cầu, thị trường CNTT Việt Nam vẫn duy trì đà tăng trưởng mạnh mẽ, trở thành một trong những điểm sáng của khu vực ASEAN. Theo dự báo của Ngân hàng Thế giới (WB), Việt Nam tiếp tục nằm trong nhóm các quốc gia có tốc độ tăng trưởng GDP nhanh nhất trong 30 năm qua, với mức tăng trưởng năm 2023 đạt 5.05% và được dự báo sẽ đạt 5.5%  – 6.0% vào năm 2024.

Báo cáo Thị trường IT Việt Nam 2024

Sự gia tăng dòng vốn đầu tư trực tiếp nước ngoài (FDI) là yếu tố then chốt giúp Việt Nam củng cố vị thế là trung tâm công nghệ khu vực. Nửa đầu năm 2024, Việt Nam đã thu hút được 11,63 tỷ USD thặng dư thương mại, phần lớn nhờ vào các khoản đầu tư từ các quốc gia như Mỹ, Nhật Bản, Hàn Quốc​. Những công ty đa quốc gia như Samsung, Intel và LG không ngừng mở rộng các trung tâm nghiên cứu và phát triển (R&D) tại Việt Nam, biến quốc gia này thành một điểm đến hàng đầu cho các trung tâm công nghệ khu vực​.

Cùng với việc Việt Nam nâng cấp mối quan hệ với Mỹ và Hàn Quốc lên mức Đối tác Chiến lược Toàn diện, các ngành công nghệ cao như chất bán dẫntrí tuệ nhân tạo (AI) đang trở thành trọng tâm phát triển. Bên cạnh đó, việc hiện đại hóa cơ sở hạ tầng công nghệ và nguồn nhân lực lành nghề cũng đóng góp đáng kể vào sự tăng trưởng của ngành CNTT Việt Nam. Chính phủ đã đề ra các chiến lược nhằm nâng cao kỹ năng công nghệ và thúc đẩy chuyển đổi số, trong đó có việc tích hợp AI và các công nghệ đám mây vào giáo dục và doanh nghiệp. Điều này đảm bảo rằng Việt Nam không chỉ là điểm đến đầu tư hấp dẫn, mà còn là trung tâm đổi mới sáng tạo hàng đầu tại ASEAN.

2. Thị trường việc làm IT: Sự bùng nổ và cơ hội tuyển dụng

Thị trường việc làm IT tại Việt Nam đang chứng kiến sự bùng nổ chưa từng có, đặc biệt trong các lĩnh vực như trí tuệ nhân tạo (AI), dữ liệu lớn (Big Data), điện toán đám mây, và an ninh mạng. Nhu cầu tuyển dụng nhân sự công nghệ cao đang tăng mạnh, với mức lương cho các chuyên gia trong các lĩnh vực này liên tục gia tăng. Theo Báo cáo, mức lương trung bình của lập trình viên tại Việt Nam vào năm 2024 ước tính dao động từ 1.100 đến 3.000 USD mỗi tháng, tùy thuộc vào kỹ năng và kinh nghiệm​. Đặc biệt, các vị trí chuyên sâu như kỹ sư AIchuyên gia bảo mật thông tin có thể nhận được mức lương vượt xa con số trung bình, nhờ vào sự khan hiếm nhân lực và tầm quan trọng của những vai trò này trong các doanh nghiệp​.

Báo cáo Thị trường IT Việt Nam 2024

Sự phát triển nhanh chóng của thị trường công nghệ không chỉ mở ra nhiều cơ hội việc làm mà còn đặt ra những thách thức lớn đối với các doanh nghiệp. Một trong những thách thức đáng kể là sự thiếu hụt nguồn nhân lực có kỹ năng chuyên môn sâu. Theo số liệu từ Bộ Thông tin và Truyền thông, thị trường IT Việt Nam cần bổ sung ít nhất 500.000 lao động công nghệ từ nay đến năm 2025 để đáp ứng nhu cầu​. Điều này đặt ra yêu cầu cấp bách đối với doanh nghiệp trong việc triển khai các chương trình đào tạo upskilling và reskilling cho nhân viên.

Báo cáo Thị trường IT Việt Nam 2024

3. Đổi mới sáng tạo khởi nghiệp: Việt Nam – Vùng đất của cơ hội

Hệ sinh thái khởi nghiệp công nghệ tại Việt Nam đang trên đà phát triển mạnh mẽ, nhờ vào sự hỗ trợ tích cực từ Chính phủ và các nhà đầu tư quốc tế. Theo báo cáo, Việt Nam hiện đứng thứ 3 trong khu vực Đông Nam Á về số lượng dự án khởi nghiệp nhận được đầu tư. Trong năm 2023, tổng vốn đầu tư vào các startup công nghệ tại Việt Nam đạt 529 triệu USD, tập trung chủ yếu vào các lĩnh vực giáo dục, y tế, và thương mại điện tử, những ngành có tiềm năng tăng trưởng và mang lại nhiều giá trị xã hội​.

Vốn đầu tư theo ngành - Báo cáo Thị trường IT Việt Nam 2024

Một điểm nhấn quan trọng trong Báo cáo là sự hợp tác chặt chẽ giữa các doanh nghiệp khởi nghiệp trong nước và các nhà đầu tư quốc tế. Những sáng kiến như chương trình Qualcomm Vietnam Innovation Challenge đã mở ra cơ hội cho các doanh nghiệp khởi nghiệp Việt Nam tiếp cận với những công nghệ tiên tiến hàng đầu, đặc biệt trong lĩnh vực trí tuệ nhân tạo và viễn thông. Đồng thời, chương trình Google for Startups Accelerator đã cung cấp các nguồn lực hỗ trợ như vốn đầu tư và kỹ thuật cho các startup, giúp họ tăng tốc phát triển và mở rộng ra thị trường quốc tế​.

4. Chuyển đổi số và các xu hướng công nghệ mới

Việt Nam đang chứng kiến một làn sóng chuyển đổi số toàn diện, lan tỏa mạnh mẽ trên nhiều lĩnh vực quan trọng như tài chính, ngân hàng và dịch vụ công. Báo cáo chỉ ra rằng các sáng kiến về chuyển đổi số đang mang lại sự thay đổi đáng kể trong cách thức vận hành của doanh nghiệp, với trọng tâm là tích hợp các công nghệ tiên tiến như trí tuệ nhân tạo, điện toán đám mây và phân tích dữ liệu​.

Báo cáo Thị trường IT Việt Nam 2024

Nền kinh tế số của Việt Nam hiện chiếm khoảng 16.5% GDP quốc gia và dự kiến sẽ tiếp tục tăng trưởng với tốc độ 20% hàng năm​. Đây là một cơ hội lớn cho các doanh nghiệp trong nước và quốc tế tham gia vào cuộc cách mạng công nghệ này, đặc biệt trong bối cảnh các doanh nghiệp cần đẩy mạnh chuyển đổi số để giữ vững vị thế trong nền kinh tế toàn cầu. Các giải pháp số hóa như ngân hàng trực tuyến, thương mại điện tử, và chính phủ điện tử đã trở thành những thành phần cốt lõi của nền kinh tế số, mở ra nhiều cơ hội phát triển và đầu tư. Theo Báo cáo eConomy SEA 2023 của Google, GMV của Việt Nam dự kiến sẽ tăng từ 30 tỷ USD trong năm 2023 lên 43 tỷ USD vào năm 2025, điều này càng củng cố tiềm năng phát triển mạnh mẽ của nền kinh tế số tại Việt Nam.

Cùng với đó, Việt Nam hiện đang được đánh giá là một trong những quốc gia tiên phong trong việc ứng dụng công nghệ mới tại khu vực ASEAN​. Các xu hướng như 5G, Internet vạn vật (IoT) cũng đang nhanh chóng được triển khai, giúp thúc đẩy quá trình chuyển đổi số và hiện đại hóa cơ sở hạ tầng công nghệ. Đồng thời, với sự hỗ trợ mạnh mẽ từ Chính phủ và dòng vốn đầu tư quốc tế, Việt Nam đang trên đà trở thành một trung tâm công nghệ lớn của khu vực, thu hút ngày càng nhiều doanh nghiệp và chuyên gia công nghệ tham gia vào quá trình đổi mới sáng tạo.

5. Những thách thức và cơ hội tương lai

Mặc dù thị trường IT Việt Nam đang có tiềm năng phát triển vượt bậc, nhưng vẫn tồn tại những thách thức lớn mà các doanh nghiệp và nhà đầu tư cần phải đối mặt. Một trong những thách thức chính là hạ tầng công nghệ, đặc biệt trong bối cảnh mạng 5G, các trung tâm dữ liệu và dịch vụ đám mây đang dần trở thành nhu cầu tất yếu. Để có thể tiếp tục phát triển bền vững, Việt Nam cần phải tăng cường đầu tư vào nâng cấp cơ sở hạ tầng, đảm bảo đủ khả năng đáp ứng nhu cầu phát triển công nghệ ngày càng tăng​.

Ngoài ra, vấn đề an ninh mạng và bảo mật dữ liệu cũng đặt ra áp lực lớn cho các doanh nghiệp IT. Trong thời đại mà các cuộc tấn công mạng ngày càng tinh vi, việc tuân thủ các tiêu chuẩn an ninh mạngquy định bảo mật dữ liệu trở thành yêu cầu bắt buộc nếu các doanh nghiệp muốn tham gia vào chuỗi cung ứng toàn cầu. Điều này đòi hỏi các doanh nghiệp không chỉ cải tiến công nghệ mà còn phải tập trung đào tạo nguồn nhân lực có chuyên môn cao về bảo mật dữ liệu​.

Cũng theo báo cáo, một trong những thách thức lớn đối với thị trường lao động IT là sự gia tăng yêu cầu tuyển dụng các vị trí có kinh nghiệm, đặc biệt trong các lĩnh vực phức tạp như an ninh mạng và trí tuệ nhân tạo. Nhu cầu về những chuyên gia giàu kinh nghiệm vượt xa nguồn cung, tạo áp lực lớn lên các doanh nghiệp trong việc thu hút và giữ chân nhân tài. Điều này khiến các doanh nghiệp không chỉ cần tập trung tuyển dụng mà còn phải triển khai các chương trình đào tạo nội bộ để phát triển và nâng cao tay nghề của đội ngũ nhân viên

Ông Park JongHo, CEO TopDev, chia sẻ: “Báo cáo lần này của TopDev không chỉ là một bản phân tích thị trường mà còn là chiếc la bàn cho các doanh nghiệp và nhà đầu tư đang có mong muốn khai phá tiềm năng của ngành IT tại Việt Nam. Chúng tôi tin rằng Việt Nam sẽ tiếp tục vươn lên, trở thành trung tâm công nghệ và đổi mới sáng tạo hàng đầu của khu vực.

Mặc dù đối mặt với nhiều thách thức, ngành công nghệ thông tin Việt Nam vẫn thể hiện sự phát triển mạnh mẽ và tiềm năng to lớn trong năm 2024. Để hiểu rõ hơn về bức tranh toàn cảnh thị trường IT Việt Nam, những cơ hấp dẫn cũng như xu hướng công nghệ mới nổi, độc giả có thể tham khảo chi tiết trong Báo cáo Thị trường IT Việt Nam 2024 do TopDev thực hiện tại đây.

BẢN TIẾNG VIỆT

ENGLISH VERSION

Về TopDev

Được thành lập vào năm 2015 bởi Applancer JSC với sứ mệnh “Make IT Vietnam Better”, TopDev đã trở thành nền tảng Tuyển dụng IT hàng đầu tại Việt Nam với website hơn 1 triệu truy cập mỗi tháng, và hơn 250.000 lượt tải ứng dụng di động và 750.000 thành viên đăng ký. Tầm nhìn của TopDev là tối ưu quy trình thu hút nhân tài CNTT, giúp cả người tìm việc và nhà tuyển dụng dễ dàng hơn thông qua dịch vụ và tính năng tiện lợi để tìm ra cơ hội việc làm phù hợp. Bên cạnh đó, TopDev còn là đơn vị tổ chức 02 sự kiện Công nghệ thường niên lớn nhất Việt Nam: Vietnam Mobile Summit & Vietnam Web Summit với quy mô hàng nghìn người tham dự tại TP.HCM & Hà Nội. Ngoài ra, từ năm 2016 TopDev đã công bố Báo cáo Thị trường CNTT Việt Nam thường niên với sự tin tưởng & kiểm chứng của nhiều doanh nghiệp, tổ chức & chính phủ.

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

Đừng để hệ thống bị tấn công bởi 4 vấn đề security cơ bản này!

Đừng để hệ thống bị tấn công bởi 4 vấn đề security cơ bản này!

Bài viết được sự cho phép của tác giả Võ Doãn Thành

1. Cuộc trò truyện với ông anh

Nói về security thì có vô vàng các vấn đề mà có thể gặp phải trong quá trình phát triển ứng dụng hoặc xây dựng cơ sở hạ tầng.

Ứng dụng của bạn càng có nhiều lớp bảo vệ thì “có thể” việc giúp an toàn thông tin cho người dùng càng cao và tăng độ tin cậy của người dùng với ứng dụng.

Mình nói “có thể” tức việc hiểu và tận dùng các lớp bảo mật chỉ giúp ứng dụng có thêm nhiều lớp chắn không có nghĩa là an toàn được 100%.

Vì giờ các pháp sư hacker rất là chuyên nghiệp.

Hổm mình có nói chuyện với ông anh làm chung. Ảnh thì chuyên làm về security. Ảnh kể cho mình nghe 1 tràng ý như thế này.

  • Mục đích việc hiểu về security (cả về lý thuyết và phướng án phòng chống) không phải là để em có thể chống lại các cuộc tấn công (attacks) mà là giúp em phát hiện ra mình có đang bị tấn công hay không.
  • Càng nhiều lớp bảo vệ giống như em có nhiều bức tường thành để bảo vệ cung điện. Nhưng vấn đề nếu 1 trong các bức tường của em mà chỉ cần có khe nức mà em không phát hiện thì rất dễ bị kẻ địch họ thổi khí độc vào và hạ bệ các binh lính và không cần đập phá thành làm gì.
  • Hacker giờ xịn xò lắm. Họ sẽ không cần phải đánh sập server của em hoặc chiếm quyền kiểm soát gì cả. Đơn giản là họ tới và lấy những thức cần thôi. Ví dụ 10% doanh thu mỗi tháng của ứng dụng.

Bạn có cảm thấy rùng mình khi nghe câu chuyện trên không? Có khi ứng dụng đang bị hack mà do chẳng có chuyện gì xảy ra nên chúng ta cứ cho mình đang an toàn.

Có rất nhiều bài học về security nhưng mình nghĩ 4 vấn đề dưới đây khá là phổ biến mà ít được chú ý. Security thì cần cho tất cả mọi người kể cả developers nữa nha.

2. SQL Injection (SQLi)

Vấn đề và cách hoạt động:

SQLi là một loại tấn công mạng khai thác lỗ hổng trong cách một ứng dụng web tương tác với database.

Kẻ tấn công có thể chèn mã SQL độc hại vào các nơi như form đăng nhập, thanh search hoặc bất kỳ trường nào chấp nhận dữ liệu từ người dùng.

Mã chèn này sẽ lừa database của ứng dụng thực thi các hành động không mong muốn, có thể dẫn đến sự xâm nhập.

Vấn đề này thường xảy ra khi chúng ta query thẳng trực tiếp data của người dùng vào database.

Ví dụ:

Với form đăng nhập thì ta cần thông tin như username và password để xác minh danh tính người dùng.

Với user bình thường sẽ là

SELECT * FROM users WHERE username='abc123' AND password='anything';

Còn đối với hacker sẽ gửi username là “admin’–“

SELECT * FROM users WHERE username='admin'--' AND password='anything';

Lúc này câu SQL bên trên nó chỉ thực hiện tới “SELECT * FROM users WHERE username=’admin'” vì từ khúc “–” nó hiểu là đang comment.

Rất dễ dàng bị chiếm user admin hoặc thay đổi dữ liệu không mong muốn.

Giải pháp:

Parameterized Queries: Sử dụng các truy vấn có tham số để tách biệt đầu vào của người dùng khỏi câu lệnh SQL.

Input Validation: Xác thực tất cả đầu vào của người dùng để đảm bảo chúng khớp với định dạng mong đợi và không chứa các ký tự độc hại.

Giờ đa số chúng ta đều dùng ORM thì các vấn đề này có thể giảm thiểu. Chỉ trường hợp mình dùng thẳng raw query thôi.

// Prepare the SQL statement with placeholders for username and password
PREPARED_STATEMENT = "SELECT * FROM users WHERE username = ? AND password = ?";

// Bind user input to the prepared statement parameters
username_param = username
password_param = password

// Execute the prepared statement with the bound parameters
results = database_connection.execute(PREPARED_STATEMENT, username_param, password_param)

3. Cross-Site Scripting (XSS)

Vấn đề và cách hoạt động:

XSS là một lỗ hổng bảo mật web cho phép kẻ tấn công chèn các đoạn mã độc hại vào các trang web đáng tin cậy.

Các đoạn mã này sau đó được thực thi trong trình duyệt web của nạn nhân khi họ truy cập vào trang web bị lỗ hổng.

Kẻ tấn công có thể sử dụng XSS để đánh cắp thông tin nhạy cảm, chuyển hướng người dùng đến các trang web độc hại hoặc làm gián đoạn chức năng của trang web.

Ví dụ:

Ví dụ kinh điển mà chúng ta có thể thấy đó là việc comment trên các forum. Hacker sẽ comment 1 nội dung gì đó mà không phải là text.

Nó là 1 đoạn mã javascript để đọc các nội dung cookies xong sau đó gửi sang 1 web khác.

Hacker sẽ đánh cắp các thông tin của người dùng. Vì khi người dùng load comments tiếp theo vô tình load lên đoạn comment chứ đoạn script của hacker.

Giải pháp:

Input Validation and Sanitization: Xác thực tất cả dữ liệu đầu vào từ người dùng để đảm bảo nó phù hợp với các định dạng mong đợi và loại bỏ bất kỳ ký tự độc hại tiềm ẩn nào. Bạn cũng có thể làm sạch dữ liệu đầu vào bằng cách chuyển đổi các ký tự đặc biệt thành các dạng vô hại (ví dụ: < trở thành &lt;).

Output Encoding: Trước khi hiển thị dữ liệu đầu vào của người dùng trên trang web, hãy mã hóa nó một cách thích hợp để ngăn nó bị diễn giải như mã. Điều này bao gồm việc chuyển đổi các ký tự đặc biệt thành các thực thể HTML hiển thị dưới dạng văn bản, không thực thi như mã.

Content Security Policy (CSP): Triển khai CSP định nghĩa các nguồn cho phép cho các đoạn mã và tài nguyên khác. Điều này hạn chế trình duyệt thực thi bất kỳ đoạn mã nào không đến từ các nguồn được phê duyệt.

  LocalStorage và Cookies - chọn cái nào để lưu JWT Tokens hiệu quả và an toàn?

  Một số phương pháp bảo mật hiệu quả dành cho webhook

4. Denial-of-Service (DoS) Attack

Vấn đề và cách hoạt động:

DoS attack nhằm mục đích làm gián đoạn hoạt động bình thường của một trang web, máy chủ hoặc mạng bằng cách áp đảo nó với một lượng lớn lưu lượng truy cập.

Lưu lượng truy cập quá mức này ngăn cản người dùng hợp pháp truy cập vào tài nguyên bị tấn công.

Các cuộc tấn công DoS thường được sử dụng để tống tiền hoặc đơn giản là gây rối loạn và hỗn loạn.

Ví dụ:

Với vấn đề này thì dễ dàng hình dung nhất. Đó là bạn có 1 website nhưng hacker không muốn nó hoạt động bình thường hoặc công ty đối thủ không muốn khách hàng có thể mua hàng từ công ty của bạn.

Hacker sẽ tạo các script để gọi tạo ra các requests liên tục tới các server mà website bạn đang có. Lúc sẽ các server sẽ trì trệ hoặc tệ có thể down. Do phải handle 1 lượng requests lớn từ hacker.

Trải nghiệm người dùng sẽ tệ đi và có thể ảnh hưởng lớn tới doanh thu.

Giải pháp:

Traffic Filtering: Triển khai các tường lửa và giải pháp bảo mật mạng để lọc lưu lượng đáng ngờ và chặn các mẫu tấn công đã biết.

Rate Limiting: Hạn chế số lượng yêu cầu mà một địa chỉ IP đơn lẻ có thể gửi trong một khung thời gian cụ thể. Điều này có thể giúp ngăn chặn một nguồn duy nhất làm quá tải hệ thống.

Resource Scaling: Cân nhắc mở rộng hạ tầng (ví dụ: sử dụng các dịch vụ dựa trên cloud) để xử lý các đột biến lưu lượng không mong đợi.

DDoS Protection Services: Nhiều nhà cung cấp dịch vụ bảo mật cung cấp các dịch vụ bảo vệ DDoS giúp nhận diện và giảm thiểu các cuộc tấn công DDoS. (Mình dùng Cloudflare nha.)

Incident Response Plan: Có sẵn một kế hoạch để phản ứng hiệu quả với các cuộc tấn công DoS, bao gồm xác định nguồn tấn công, giảm thiểu tác động và khôi phục hoạt động bình thường.

Xem thêm các việc làm ASP.NET Core trên TopDev

5. Cross-Site Request Forgery (CSRF)

Vấn đề và cách hoạt động:

CSRF, còn được gọi là XSRF hoặc Sea Surf, là một lỗ hổng bảo mật web cho phép kẻ tấn công lừa trình duyệt của người dùng đã xác thực thực hiện các hành động trái phép trên một trang web đáng tin cậy.

Kẻ tấn công lợi dụng phiên làm việc đáng tin cậy của người dùng với trang web để thực hiện các hành động thay mặt cho nạn nhân.

Ví dụ:

Gần đây chúng ta được cảnh báo khá là nhiều về việc giả mạo các trang web của ngân hàng. Hacker sẽ gửi 1 tin nhắn nhìn thì rất giống như nội dung được gửi từ ngân hàng thiệt.

Sau khi nạn nhân click vào link giả mạo thì giao diện và cách thức rất là giống như trang web thật. Sau đó nạn nhân đăng nhập ở trang giả mạo thì hacker đã có đầy đủ thông tin username và password của nạn nhân.

Sau đó hacker có thể vào trang web thiệt của ngân hàng để làm các hành động như đánh cắp tiền.

Giải pháp:

Token CSRF: Tạo các token duy nhất cho mỗi form trên trang web và nhúng chúng dưới dạng các trường ẩn. Server sẽ xác thực các token này trước khi xử lý các form gửi đi. Điều này đảm bảo rằng chỉ có các form hợp lệ do người dùng gửi mới được xử lý, ngay cả khi kẻ tấn công lừa người dùng nhấp vào liên kết độc hại.

Double Submit Cookies: Áp dụng cookie với các biện pháp bảo mật bổ sung như cờ HttpOnly và thuộc tính SameSite. Những tính năng này có thể giúp ngăn cookie bị gửi trong các yêu cầu cross-site do kẻ tấn công khởi xướng.

User Education: Giúp người dùng hiểu về các rủi ro khi nhấp vào các liên kết đáng ngờ hoặc truy cập các trang web không đáng tin cậy.

6. Kết luận

Giờ chúng ta hiểu được tầm quan trọng của việc hiểu về security. Nó giúp chúng ta tránh được những rủi ro như mất cắp dữ liệu, chiếm quyền kiểm soát hoặc tệ nhất là mất tiền.

Bất cứ ai từ developers tới người dùng để phải nhận thức rõ về việc tự bảo vệ bản thân trước những tấn công mạng.

Hãy cập nhật thêm những kiến thức về an ninh mạng sẽ giúp bạn tránh những mất mát không mong muốn.

7. Câu hỏi mở rộng

Thường thì mình thấy các websites đa số sẽ lưu token vào localStorage để tiện cho mục đích sử dụng.

Vậy rủi ro khi dùng localStorage có hay không? Nếu là bạn thì bạn có dùng localStorage không hay dùng phương pháp nào giúp bảo vệ token cho người dùng?

Bài viết gốc được đăng tải tại LinkedIn Thanh Vo

Xem thêm:

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

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

Cloud Engineer là gì

Công nghệ điện toán đám mây (Cloud Computing) phát triển mạnh mẽ và đóng vai trò then chốt trong nền công nghiệp 4.0 hiện nay, đồng thời cũng mang lại cho chúng ta nhiều cơ hội nghề nghiệp mới, trong đó có Cloud Engineer. Bài viết hôm nay chúng ta cùng nhau tìm hiểu xem Cloud Engineer là gì và cần trang bị những kỹ năng nào để trở thành một Kỹ sư đám mây nhé.

Cloud Engineer là gì?

Cloud Engineer – Kỹ sư đám mây là người chịu trách nhiệm thiết lập, giám sát và vận hành các hoạt động hệ thống đám mây (Cloud System). Là người có kiến thức trong lĩnh vực điện toán đám mây, Cloud Engineer sẽ giúp phân tích cơ sở hạ tầng dữ liệu của tổ chức, doanh nghiệp hiện tại; từ đó chuyển đổi dữ liệu này sang môi trường lưu trữ đám mây trên Internet; sau đó vận hành và thực hiện các công việc bảo trì, cập nhật phần mềm.

Cloud Engineer là gì?

Tại sao các tổ chức, doanh nghiệp lại cần đến vị trí Cloud Engineer?

Trong bối cảnh phát triển công nghệ hiện nay, điện toán đám mây (Cloud Computing) đã trở thành một lĩnh vực đi đầu, mang đến sự đổi mới và nâng cao hiệu quả cho các hoạt động kinh doanh của tổ chức. Cloud Engineer được xem là kiến trúc sư của quá trình chuyển đổi này với bộ kỹ năng chuyên môn toàn diện và có hiểu biết sâu sắc về cả hoạt động của doanh nghiệp cũng như nền tảng kỹ thuật đáp ứng. 

Công việc cụ thể của một kỹ sư đám mây bao gồm:

  • Phân tích thực trạng cơ sở hạ tầng lưu trữ dữ liệu hiện tại của tổ chức, từ đó đưa ra đề xuất kế hoạch xây dựng và triển khai hệ thống đám mây phù hợp.
  • Tiến hành triển khai chuyển đổi dữ liệu sang lưu trữ đám mây sử dụng các nền tảng điện toán đám mây phổ biến hiện nay như Amazon Web Services (AWS), Microsoft Azure hay Google Cloud Platform (GCP).
  • Vận hành, quản trị và bảo trì hệ thống đám mây của tổ chức, đảm bảo các hoạt động ổn định và hiệu quả; đồng thời áp dụng các biện pháp bảo mật chặt chẽ giúp theo dõi, giám sát và ngăn chặn rủi ro an ninh thông tin.
  • Hỗ trợ tư vấn các vấn đề kỹ thuật liên quan đến lưu trữ dữ liệu đám mây đến các phòng ban, bộ phận trong tổ chức. Tạo và hướng dẫn sử dụng đảm bảo hoạt động hiệu quả ở các bộ phận của hệ thống đám mây.
  • Tìm hiểu và áp dụng các công nghệ mới lên hệ thống đám mây hiện tại nhằm nâng cấp hoặc mở rộng khi có nhu cầu của tổ chức.

Những kỹ năng cần có của một Cloud Engineer

Để trở thành một Cloud Engineer, bạn cần trang bị nhiều kỹ năng đa dạng khác nhau về kỹ thuật cũng như làm việc nhóm, đồng thời còn luôn có tư duy cập nhật công nghệ mới trong bối cảnh phát triển và thay đổi liên tục của công nghệ điện toán đám mây hiện nay.

Những kỹ năng cần có của một Cloud Engineer

Cùng liệt kê ra một số kỹ năng chính mà kỹ sư đám mây cần trang bị nhé:

1. Hiểu biết về Cloud Computing

Đây là điều cơ bản nhất liên quan đến công việc của một Cloud Engineer, vì thế bắt buộc bạn cần có hiểu biết và kinh nghiệm làm việc thực tiễn đối với một hoặc một vài Cloud Provider lớn như AWS, GCP hay Azure. Các giải pháp mà kỹ sư đám mây đưa ra dành cho tổ chức sẽ xoay quanh các nhà cung cấp Cloud trên, nắm được chi tiết những gì hệ thống cloud cung cấp sẽ giúp bạn trong quá trình làm việc hàng ngày.

2. Kỹ năng lập trình (Programming)

Một kỹ sư đám mây cũng cần viết code, lập trình để tạo ra được các ứng dụng liên kết với các Cloud services (dịch vụ đám mây) như API hay Web services. Các ngôn ngữ lập trình phổ biến sử dụng ở vị trí công việc này bao gồm Python, Java hay Go.

  So sánh AWS, Google Cloud và Azure năm 2024

  Hành trình 10 tháng chinh phục trọn bộ 4 level chứng chỉ AWS

3. Kiến thức về mạng, giao thức Internet (Networking)

Đây cũng là một kỹ năng cơ bản mà Cloud Engineer cần có do đặc thù công việc, luôn luôn chạy trên Cloud thông qua mạng nên cần có kiến thức, hiểu biết về địa chỉ IP (IP Address), các giao thức Internet (TCP/IP, HTTP, SSL, …). 

4. Kỹ năng quản trị CSDL (Database management)

Các dịch vụ Cloud đều cung cấp các giải pháp quản trị dữ liệu, và vì thế để vận hành được hệ thống Cloud thì kỹ sư đám mây cũng cần biết các kỹ năng liên quan đến quản trị CSDL. Tùy vào hệ thống mà tổ chức lựa chọn, bạn cũng nên trang bị hiểu biết về RDBMS hoặc NoSQL; bên cạnh đó là các loại Storage (File, Block, Object) sẽ được sử dụng.

5. Hiểu biết về các công nghệ tự động trên Cloud

Các công nghệ tự động hóa áp dụng cho việc deploy code, đẩy nhanh các process trong chu trình phát triển phần mềm và quản lý cơ sở hạ tầng như CI/CD hay DevOps là những thứ mà Cloud Engineer cũng phải trang bị để có thể hợp tác cùng các bộ phận, team phát triển khác trong dự án.

6. Hiểu biết về Container (Containerization)

Container là những packages đóng gói ứng dụng (application) cùng các phụ thuộc cần thiết đi kèm (dependencies) để chạy được ứng dụng đó trên nhiều môi trường khác nhau, cụ thể ở đây là Cloud Platform. Cloud Engineer cần nắm được các công nghệ container như Docker, Kubernetes để có thể deploy chúng lên các dịch vụ Cloud.

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

Ngoài những kỹ năng trên thì một số kỹ năng cần thiết khác mà kỹ sư đám mây cũng cần trang bị như: hiểu biết về hệ điều hành Linux, các kỹ thuật liên quan đến bảo mật và khôi phục dữ liệu, các kỹ thuật ảo hóa giúp tạo ra nhiều hệ thống chạy ứng dụng,… Cloud Engineer đồng thời cũng là vị trí thường xuyên làm việc với các đội nhóm khác, là cầu nối và hỗ trợ các đội phát triển, vận hành hệ thống; vì vậy mà việc trang bị các kỹ năng mềm liên quan đến làm việc nhóm hay kỹ năng báo cáo cũng là điều cần thiết.

Tham khảo việc làm Cloud cao, hấp dẫn trên TopDev!

Nhu cầu tuyển dụng vị trí Cloud Engineer

Hiện nay, nhiều tổ chức, doanh nghiệp đã và đang thực hiện việc chuyển đổi hạ tầng cơ sở dữ liệu của mình lên cloud, vì thế mà nhu cầu tuyển dụng vị trí Cloud Engineer cũng đang tăng lên theo từng năm. Thuật ngữ Cloud Engineer có thể được các nhà tuyển dụng sử dụng chung cho một số vai trò khác nhau tùy theo tính chất công việc cụ thể theo nhu cầu của tổ chức, bao gồm:

  • Cloud Architect: thiết kế các hệ thống cloud
  • Cloud Software Engineer: xây dựng, triển khai các phần mềm cloud
  • Cloud Security Engineer: đảm bảo bảo mật hệ thống cloud
  • Cloud System Engineer: vận hành hệ thống cloud
  • Cloud Network Engineer: vận hành mạng cloud

Nhu cầu tuyển dụng vị trí Cloud Engineer

Mỗi vị trí sẽ tập trung vào một loại Cloud Computing cụ thể, đòi hỏi kỹ sư đám mây có những hiểu biết chuyên môn kỹ thuật cũng như kinh nghiệm làm việc trên từng nền tảng khác nhau. Vì lý do đó mà hiện nay không hề thiếu lựa chọn công việc dành cho các Cloud Engineer với những mức lương hấp dẫn. Theo thống kê tại Việt Nam, lương của Cloud Engineer nằm trong top đầu ngành, tương đương với các vị trí như kỹ sư AI hay chuyên viên phân tích dữ liệu. Rõ ràng, đây là cơ hội lớn dành cho các bạn đang có ý định học và theo đuổi con đường trở thành một kỹ sư đám mây trong tương lai.

Kết bài

Qua bài viết này, hy vọng các bạn đã có cái nhìn rõ ràng hơn về vị trí Cloud Engineer, về công việc mà kỹ sư đám mây đảm nhận cũng như những kỹ năng mà họ được trang bị. Để trở thành một Cloud Engineer, bạn sẽ cần phải học hỏi rất nhiều về mặt kỹ thuật cũng như tích lũy kinh nghiệm làm việc với các hệ thống điện toán đám mây hiện nay. Mình nghĩ đây là một vị trí rất tuyệt vời và nếu có ý định, đừng ngần ngại tìm hiểu và học tập để có kế hoạch phát triển phù hợp với bản thân. 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:

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

Swagger và Postman: 8 điểm khác nhau bạn nên biết

so sánh Swagger với Postman

SwaggerPostman là hai nền tảng phổ biến giúp chúng ta làm việc với API từ thiết kế, kiểm thử và tạo tài liệu mô tả. Để lựa chọn sử dụng công cụ nào giữa hai nền tảng trên, bạn cần nắm được những điểm khác nhau cơ bản liên quan để xem nó có đáp ứng được nhu cầu và mục đích sử dụng trong dự án hay không. Bài viết hôm nay chúng ta cùng đi so sánh Swagger với Postman để trả lời cho câu hỏi trên nhé.

Swagger là gì?

Swagger là một framework được sử dụng để thiết kế, tài liệu hóa và kiểm thử các API, nó cho phép tạo ra các tài liệu API theo định dạng chuẩn và có thể tương tác.

Swagger là gì?

Swagger cung cấp ba công cụ chính để hỗ trợ nhà phát triển bao gồm:

  • Swagger Editor: công cụ giúp tạo ra mô tả chi tiết về các API bao gồm endpoint, parameters và responses
  • Swagger Codegen: công cụ giúp tự động tạo mã thực thi các API cho các ngôn ngữ lập trình khác nhau 
  • Swagger UI: là công cụ phổ biến nhất trong Swagger, cho phép tạo các tài liệu HTML, CSS từ file cấu hình giúp cho công việc nghiên cứu và sử dụng API.

Postman là gì?

Postman là một nền tảng cho việc xây dựng và sử dụng API, nó đơn giản hóa từng bước trong vòng đời  phát triển API, từ đó giúp chúng ta tạo ra các API tốt hơn, nhanh hơn và dễ dàng hơn.

Postman là gì?

Postman cung cấp các tính năng chính như:

  • API repository: lưu trữ thông tin mô tả về các API
  • API tools: thiết kế, kiểm thử, viết tài liệu hướng dẫn sử dụng các API
  • API collaboration: tạo ra các workspace khác nhau để chia sẻ thông tin các API theo nhóm làm việc
  • API governance: thiết lập các quy tắc cần tuân theo khi tạo và chạy kiểm thử API
  • API integrations: tích hợp với các hệ thống khác trong quá trình phát triển phần mềm như CircleCI, Gitlab, Jenkins, …

So sánh Swagger với Postman

So sánh Swagger với Postman

Chúng ta sẽ cùng so sánh hai công cụ này theo từng tiêu chí cụ thể sau:

1. Về trọng tâm mục đích sử dụng

Mục đích chính của Swagger là việc thiết kế, xây dựng tài liệu và chuẩn hóa các API. Yếu tố này khiến có Swagger không được sử dụng rộng rãi bởi nhiều đối tượng khác nhau như Postman mà thường được sử dụng cho các dự án liên quan đến xây dựng API. Trong khi đó, Postman phục vụ cho nhiều đối tượng khác như trong dự án, từ lập trình viên, kiểm thử viên, quản lý hay cả khách hàng cũng có thể dễ dàng sử dụng để kiểm tra API và từ đó tham gia vào quá trình phát triển các API cho hệ thống.

2. Về tính dễ sử dụng

Nếu bạn là người mới bắt đầu làm việc với Swagger, có thể bạn sẽ cảm thấy công cụ này khá khó sử dụng và cần thời gian để làm quen. Thực tế thì Swagger luôn cần đầu tư thời gian cho những thiết lập ban đầu, kể cả với những API đơn giản. Swagger đòi hỏi bạn cung cấp tài liệu về API một cách rõ ràng, chi tiết ngay từ đầu; vì thế nó có thể tạo ra sự nặng nề nếu bạn chưa làm quen và hiểu hết về công dụng của nền tảng này.

Ngược lại thì Postman cho thấy đây là một công cụ tuyệt vời dành cho những người mới bắt đầu, hay chỉ có nhu cầu đơn giản là kiểm tra xem API có hoạt động hay không. Giao diện thân thiện với những thiết lập đơn giản giúp bạn dễ dàng nhìn vào và sử dụng được ngay. Tất nhiên Postman có nhiều tính năng phức tạp mà bạn cần phải học, tìm hiểu mới có thể sử dụng; tuy nhiên về tính dễ sử dụng thì Postman vẫn được đánh giá cao hơn Swagger.

  Import RAML vào Postman

  Sử dụng Swagger UI trong jersey REST WS project

3. Về khả năng hỗ trợ API 

Swagger được thiết kế chủ yếu cho các API theo kiểu REST, vì thế nếu API của bạn không phải kiểu REST thì sẽ có thể gặp một vài vấn đề với công cụ này. Postman hỗ trợ cả RESTful services và SOAP services. Cả 2 nền tảng này đều hỗ trợ tất cả các phương thức HTTP phổ biến như GET, POST, PUT, DELETE, PATH, …

4. Về khả năng tạo tài liệu

Postman cho phép người dùng tạo tài liệu mô tả API mở mức độ cơ bản, thường sử dụng để ghi chú các thông tin cần thiết cho việc chia sẻ trong team phát triển khi sử dụng. Với Swagger, tài liệu hóa API được xem là tính năng cốt lõi của công cụ này, vì thế tài liệu API sinh ra từ Swagger có đầy đủ các tính năng toàn diện, có thể tương tác với người dùng và được dùng để làm tài liệu chính thức cho các bản mô tả chi tiết về API.

5. Về khả năng hỗ trợ sinh mã

Swagger có các bộ SDK tích hợp với nhiều ngôn ngữ lập trình khác nhau như Java, Node.js, Ruby, Python, … giúp chúng ta có thể dễ dàng sinh tài liệu mô tả một cách nhanh chóng và hiệu quả. Từ các mô tả API, bạn cũng có thể sinh source code bằng các ngôn ngữ lập trình trong Swagger, điều này có được nhờ việc chuẩn hóa API tốt cùng nhiều khai báo thiết lập chi tiết. Postman cũng có sự hỗ trợ trong quá trình tạo và sinh mã code; tuy nhiên công cụ này chỉ hỗ trợ ở mức cơ bản.

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

6. Về khả năng tích hợp tự động

Postman sinh ra để tham gia vào quá trình phát triển phần mềm, vì thế nó được thiết kế để tích hợp dễ dàng vào hệ sinh thái này. Nó có khả năng tích hợp nhiều công cụ DevOps khác như CI/CD (Travis CI, CircleCI), quản lý source code (GitLab, BitBucket), giao tiếp (Slack, Microsoft Teams, Trello), máy chủ (Jenkins) hay các công cụ kiểm thử khác (Selenium, Junit),… Nhiều ràng buộc cũng có thể được tích hợp vào Postman giúp nó tham gia sâu hơn vào quá trình kiểm thử API nói riêng và phát triển phần mềm nói chung. Swagger cũng có một số tính năng liên quan đến tự động hóa quy trình cũng như có thể tích hợp một vài công cụ khác, tuy nhiên nó thường được sử dụng như một nền tảng độc lập nhiều hơn.

7. Về quy mô sử dụng

Postman được sử dụng rộng rãi bởi nhiều đối tượng khác nhau trong team phát triển dự án từ Developer, Tester, BA hay cả khách hàng cũng có thể thường xuyên sử dụng. Các công ty công nghệ xem Postman là một công cụ hữu ích tham gia vào quy trình phát triển phần mềm của họ; ngoài ra, nó còn được các nhà cung cấp dịch vụ phần mềm (SaaS – software-as-a-service) xem như một tính năng đảm bảo hoạt động của API trên nền tảng của họ.

Swagger thường được lựa chọn bởi các công ty, tổ chức ưu tiên việc thiết kế, xây dựng và kinh doanh xoay quanh API. Phương pháp tiếp cận là việc chuẩn hóa API ngay từ đầu bằng công cụ Swagger cung cấp, đồng thời tạo ra các tài liệu chi tiết có cấu trúc rõ ràng. 

8. Về chi phí sử dụng

Cả hai nền tảng này đều cung cấp miễn phí để bạn có thể sử dụng. Swagger là một công cụ open-source và bạn có thể tải về và triển khai chạy ở local hay server của mình. Postman cung cấp ở dạng ứng dụng có sẵn trên nhiều nền tảng khác nhau từ Windows, MacOS hay Linux. Tuy nhiên một số tính năng cao cấp liên quan đến khả năng làm việc nhóm hay hỗ trợ từ xa chỉ được tích hợp trên phiên bản có tính phí của Postman.

Với những điểm khác biệt ở trên, chúng ta có thể phần nào trả lời cho câu hỏi so sánh Swagger với Postman, nên lựa chọn công cụ nào cho dự án của bạn:

  • Nếu nhu cầu của bạn là cần một công cụ để thiết kế, chuẩn hóa cũng như tạo tài liệu mô tả API cho người dùng sử dụng; hãy lựa chọn Swagger. Những công ty lớn tập trung vào việc phát triển và kinh doanh xung quanh API cũng đang sử dụng Swagger như: MOSICA, DatamedIQ GmbH, H&R Block, Shiji Group, Keeggo, ePayPolicy, …
  • Nếu nhu cầu của bạn tập trung vào việc kiểm thử, có thể tự động hóa quá trình kiểm thử và tham gia vào quy trình phát triển của dự án thì Postman là lựa chọn phù hợp cho bạn. Thực tế hiện nay, Postman được sử dụng rộng rãi và dành cho hầu hết các đối tượng tham gia dự án. Google, Microsoft, hay Adobe cũng sử dụng công cụ này trong các team phát triển dự án của họ.

Kết bài

Qua bài viết so sánh Swagger với Postman này, hy vọng các bạn đã có thể tự tin lựa chọn cho mình công cụ sử dụng cho các công việc liên quan đến API trong dự án sắp tới. Cả SwaggerPostman đều là những nền tảng có tính ứng dụng cao và bạn hoàn toàn có thể kết hợp cả hai công cụ này giúp ích cho công việc thiết kế, xây dựng và kiểm thử API. 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:

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

Học lập trình nên mua laptop hay PC (máy tính để bàn)?

Học công nghệ thông tin nên mua laptop hay PC? [Giải đáp chi tiết]

Một trong những câu hỏi lớn mà những ai bắt đầu học lập trình thường đặt ra là: “Học công nghệ thông tin nên mua laptop hay PC? Việc lựa chọn một thiết bị phù hợp để đồng hành cùng hành trình chinh phục thế giới lập trình là quyết định quan trọng. Mỗi thiết bị, dù là laptop hay máy tính để bàn, đều sở hữu những ưu điểm và hạn chế riêng, phù hợp với từng nhu cầu và mục tiêu khác nhau. Bài viết này của TopDev sẽ cung cấp một cái nhìn tổng quan và sâu sắc về hai lựa chọn này, giúp bạn đưa ra quyết định sáng suốt nhất.

Tại sao nên sử dụng Laptop để lập trình?

Laptop ra đời để giải quyết các vấn đề về kích thước, khối lượng cũng như tính di động mà PC không thể đáp ứng được. Laptop với thiết kế nhỏ gọn, dễ dàng mang theo và sử dụng ở bất kỳ đâu. Thông thường, laptop được trang bị pin, giúp người dùng có thể sử dụng mà không cần kết nối với nguồn điện liên tục. Đây là một lợi thế lớn cho những ai cần di chuyển thường xuyên hoặc học tập ở nhiều không gian khác nhau.

laptop học lập trình

Ưu điểm

  • Tính di động: Laptop cho phép bạn học lập trình ở bất kỳ đâu, từ lớp học, văn phòng làm việc hay quán cà phê.
  • Tiết kiệm không gian: Nếu bạn sống trong không gian nhỏ, laptop là lựa chọn tối ưu hơn so với PC.
  • Không cần nguồn điện: Laptop thường được trang bị pin, cho phép sử dụng mà không cần kết nối với ổ điện. Điều này rất hữu ích khi bạn ở những nơi không có ổ điện hoặc trong các tình huống khẩn cấp.
  • Đa dạng tính năng: Nhiều laptop hiện nay được trang bị các tính năng tiên tiến như cảm biến vân tay, webcam chất lượng cao, và màn hình cảm ứng. Thường thì dùng PC sẽ phải trang bị riêng webcam.
  • Kết nối không dây: Laptop thường hỗ trợ kết nối Wi-Fi và Bluetooth, giúp bạn dễ dàng kết nối với nhiều thiết bị khác nhau và sử dụng Internet ở bất kỳ đâu.

>> Xem thêm: Các mẫu laptop học CNTT đáng đầu như nhất.

Nhược điểm

  • Hiệu suất hạn chế: So với PC, laptop thường có hiệu suất thấp hơn, đặc biệt là các dòng laptop giá rẻ.
  • Khó nâng cấp: Nâng cấp linh kiện trên laptop thường khó khăn, chỉ có một số linh kiện có thể thay thế như RAM hay SSD, trong khi CPU và GPU thường không thể nâng cấp được.

Có nên lập trình bằng PC?

PC là máy tính để bàn với cấu hình mạnh mẽ hơn, thường được sử dụng cho những công việc yêu cầu hiệu suất cao như lập trình game, thiết kế đồ họa, hay các dự án lớn. PC thường có khả năng nâng cấp linh kiện dễ dàng hơn, từ đó giúp người dùng kéo dài tuổi thọ và hiệu suất của máy.

PC khi học lập trình

Ưu điểm

  • Cấu hình mạnh mẽ: PC thường cho hiệu suất tốt hơn, phù hợp với những ai học lập trình về lập trình game hay phát triển phần mềm lớn.
  • Dễ dàng nâng cấp: Bạn có thể dễ dàng thay thế các linh kiện như card đồ họa, CPU, hay RAM để nâng cấp hiệu suất.
  • Màn hình kích thước lớn: Với PC, bạn có thể tự do lựa chọn màn hình có độ phân giải và kích thước phù hợp, thường thì kích thước màn hình PC sẽ lớn hơn laptop, thậm chí bạn có thể sử dụng 2 màn hình nếu muốn.
  • Giá thành rẻ hơn laptop: Đối với cùng cấu hình và hiệu năng, PC thường có giá thành rẻ hơn laptop.

Nhược Điểm

  • Không thể mang đi: PC cố định ở một vị trí, khiến bạn khó khăn khi muốn học ở nhiều nơi khác nhau.
  • Cần nguồn điện liên tục: Nếu bạn muốn dùng PC, bạn cần phải có một nguồn điện ổn định, điều này có thể là một bất tiện nếu bạn học ở những nơi không có ổ điện hoặc khi cúp điện đột ngột có thể những file code sẽ chưa kịp lưu.

Vậy câu trả lời cho học IT nên mua laptop hay PC là gì? Cùng xem qua bảng tổng hợp so sánh giữa laptop và PC sau:

Laptop Máy tính để bàn (PC)
Tính di động Cao Thấp
Hiệu năng Hiệu năng thấp hơn PC với cùng tầm giá, khó nâng cấp. Cao, dễ nâng cấp
Giá thành Cao hơn Thấp hơn
Khả năng di chuyển Có thể mang đi bất cứ đâu Cố định không thể di chuyển
Pin Trang bị  pin có thể sử dụng không cần nguồn điện trực tiếp Bắt buộc phải cắm điện trực tiếp mới dùng được
Màn hình Màn hình nhỏ hơn PC, thường tối đa chỉ 16 inch Nhiều kích cỡ màn hình để lựa chọn, thường nhỏ nhất là 21 inch.

>> Đọc tiếp: Cấu hình PC cho lập trình viên bạn nên biết!

Các yếu tố cần xem xét khi quyết định

Nhu cầu sử dụng

Nếu bạn chỉ học lập trình cơ bản (HTML, CSS, JavaScript), một chiếc laptop với cấu hình trung bình có thể đủ đáp ứng nhu cầu của bạn. Tuy nhiên, nếu bạn định học những công nghệ yêu cầu hiệu suất cao hơn như phát triển game hay machine learning, bạn có thể sẽ cần đến một chiếc PC với cấu hình mạnh mẽ.

Ngân sách

Ngân sách là yếu tố quan trọng ảnh hưởng đến quyết định của bạn. Vai trò của giá cả không chỉ nằm ở chi phí mua mà còn ở chi phí bảo trì và nâng cấp. Thường thì, bạn có thể mua một chiếc PC có cấu hình tương đương với chi phí thấp hơn so với laptop.

Tính di động

Nếu bạn muốn học lập trình trong khi di chuyển, laptop sẽ là lựa chọn lý tưởng. Ngược lại, nếu bạn muốn có một nơi học tập ổn định và không cần di chuyển nhiều, PC có thể là sự lựa chọn hợp lý hơn.

Khả năng nâng cấp

Như đã đề cập, PC dễ dàng nâng cấp hơn nhiều so với laptop. Nếu bạn dự định giữ máy trong một thời gian dài và không muốn phải thay thế hoàn toàn, một chiếc PC có thể phù hợp hơn.

Cách chọn laptop và PC phù hợp với việc học IT

Đối với sinh viên ngành Công nghệ Thông tin, việc lựa chọn một chiếc laptop hay PC phù hợp là vô cùng quan trọng để hỗ trợ quá trình học tập và làm việc hiệu quả. Dưới đây là các tiêu chí cần xem xét khi lựa chọn máy tính, bao gồm CPU, RAM, card đồ họa và ổ cứng.

CPU

CPU

CPU đóng vai trò quan trọng trong việc đảm bảo máy tính của bạn có thể xử lý tốt các tác vụ lập trình. Để học tập hiệu quả, bạn nên chọn các CPU có hiệu suất cao như Intel Core i5 hoặc i7 thế hệ mới nhất, hoặc các CPU từ AMD như Ryzen 7. Những CPU này đủ mạnh để bạn có thể chạy mọi chương trình lập trình mới nhất mà không gặp tình trạng giật, lag. Một số CPU bạn có thể tham khảo gồm:

  • Intel Core i5-12600K
  • Intel Core i7-12700K
  • AMD Ryzen 7 5800X

RAM

Dung lượng RAM ảnh hưởng trực tiếp đến khả năng chạy đồng thời nhiều chương trình và ứng dụng. Đối với sinh viên CNTT, mức RAM tối thiểu là 8GB để đảm bảo máy có thể hoạt động mượt mà trong hầu hết các tác vụ lập trình cơ bản. Tuy nhiên, nếu bạn làm việc với các dự án lớn hoặc yêu cầu đồ họa nặng, hãy cân nhắc nâng cấp lên 16GB hoặc 32GB RAM để đảm bảo khả năng xử lý. Ngoài ra, tốc độ RAM cũng rất quan trọng, vì tốc độ càng cao thì khả năng truy cập dữ liệu của máy càng nhanh. Tốc độ RAM thường được đo bằng MHz (megahertz), do đó hãy chọn loại có tốc độ cao để đảm bảo hiệu suất tốt nhất.

Card đồ họa (GPU)

GPU

Mặc dù không phải lúc nào cũng cần card đồ họa mạnh cho việc lập trình, nhưng đối với những sinh viên làm việc với đồ họa, game, hay AI thì GPU chuyên dụng sẽ rất cần thiết. Một số phần mềm yêu cầu GPU để xử lý hình ảnh, giúp tăng tốc độ và hiệu suất làm việc. Các mẫu card đồ họa bạn có thể tham khảo bao gồm:

  • NVIDIA GeForce GTX 1650
  • AMD Radeon RX 5500 XT
  • NVIDIA GeForce RTX 3050

Những card đồ họa này không chỉ hỗ trợ tốt cho việc lập trình mà còn đáp ứng tốt các nhu cầu giải trí như chơi game hoặc xử lý đồ họa.

Ổ cứng (Storage)

Khi chọn ổ cứng, bạn nên ưu tiên loại SSD (Solid State Drive) vì nó giúp máy khởi động nhanh hơn và truy cập dữ liệu nhanh chóng hơn so với ổ cứng HDD truyền thống. SSD NVMe với tốc độ đọc/ghi vượt trội sẽ là lựa chọn lý tưởng, giúp tối ưu hóa hiệu suất hệ thống. Dung lượng tối thiểu nên là 256GB, nhưng nếu có điều kiện, bạn nên chọn 512GB hoặc 1TB để có không gian lưu trữ rộng rãi hơn cho các dự án và tài liệu học tập. Nếu bạn cần nhiều không gian lưu trữ mà vẫn muốn tiết kiệm chi phí, có thể kết hợp SSD cho hệ điều hành và ứng dụng chính, cùng HDD để lưu trữ dữ liệu.

Vậy học công nghệ thông tin nên mua laptop hay PC?

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

  • Nếu bạn cần tính di động và linh hoạt, hãy chọn laptop. Đây là lựa chọn tốt nhất cho những người học lập trình đang ở trong tình huống phải di chuyển nhiều hoặc sống ở không gian hẹp.
  • Nếu bạn có nhu cầu sử dụng cao hơn và không lo lắng về việc di chuyển, hãy chọn PC. Cấu hình mạnh mẽ hơn, khả năng nâng cấp linh hoạt và giá cả hợp lý hơn sẽ giúp bạn tiết kiệm hơn trong tương lai.

Nếu bạn có điều kiện tài chính và có nhu cầu sử dụng cả PC và laptop, thì tất nhiên, bạn có thể mua cả hai!

Cuối cùng, không có lựa chọn nào là hoàn hảo cho tất cả mọi người, cả laptop và PC đều có những ưu nhược điểm riêng để bạn cân nhắc lựa chọn tùy thuộc vào nhu cầu sử dụng và tài chính. Hy vọng rằng bài viết này đã giúp bạn có cái nhìn rõ ràng hơn về việc chọn laptop hay PC cho việc học lập trình.

Bài viết liên quan: Học lập trình có nên mua Macbook?

Việc làm cho lập trình viên update mới nhất, ứng tuyển ngay!

Laptop cho lập trình viên giá rẻ dưới 10 triệu

Laptop cho lập trình viên giá rẻ dưới 10 triệu

Việc lựa chọn một chiếc laptop lập trình phù hợp với ngân sách luôn là một bài toán khó, đặc biệt là với những bạn sinh viên, freelancer hay những người mới bắt đầu sự nghiệp lập trình với mức ngân sách hạn chế. Bài viết này của TopDev sẽ giúp bạn tổng hợp những thông tin cần thiết để đưa ra quyết định sáng suốt nhất khi chọn mua laptop lập trình dưới 10 triệu đồng.

Laptop lập trình dưới 10 triệu nên chọn cấu hình như thế nào?

Để có thể đáp ứng tốt các tác vụ lập trình, một chiếc laptop cần có cấu hình ổn định, với tầm giá 10 triệu thì ta không thể yêu cầu quá cao nhưng ít nhất phải đảm bảo các tiêu chí dưới đây để có thể học lập trình ổn:

  • CPU: Nên chọn các dòng CPU Intel Core i3 hoặc i5 thế hệ 10 trở lên, hoặc AMD Ryzen 3 hoặc Ryzen 5.
  • RAM: Tối thiểu 8GB RAM, để có thể chạy đa nhiệm mượt mà và các phần mềm lập trình nặng.
  • Ổ cứng: Ưu tiên SSD để tăng tốc độ khởi động và truy xuất dữ liệu. Dung lượng tối thiểu 256GB.
  • Card đồ họa: Card đồ họa tích hợp (onboard) của Intel hoặc AMD là đủ để đáp ứng nhu cầu lập trình cơ bản. Tuy nhiên, nếu bạn có nhu cầu làm việc với đồ họa 3D hoặc các phần mềm nặng hơn, hãy cân nhắc chọn một chiếc laptop có card đồ họa rời. Tuy nhiên trong tầm giá dưới 10 triệu thì rất khó để tìm một chiếc laptop có card rời, nên cân nhắc tăng ngân sách nếu bạn thật sự có nhu cầu.
  • Màn hình: Nên chọn màn hình có độ phân giải Full HD trở lên để bạn có thể thoải mái làm việc vì thời lượng nhìn màn hình khi học và làm lập trình khá nhiều.
  • Cổng kết nối: Đầy đủ các cổng kết nối cần thiết như USB, HDMI, LAN để kết nối với các thiết bị ngoại vi.

>> Tổng hợp 30+ mẫu laptop lập trình nhiều phân khúc đáng mua nhất 2024

Danh sách laptop lập trình giá rẻ dưới 10 triệu

Laptop Acer Aspire 3 A315 58 54XF

Laptop Acer lập trình dưới 10 triệu

Acer Aspire 3 A315-58-54XF là một lựa chọn đáng cân nhắc cho những ai đang tìm kiếm một chiếc laptop vừa túi tiền, hiệu năng ổn định để phục vụ cho công việc và học lập trình. Acer Aspire 3 A315 là một chiếc laptop 15.6 inch, sở hữu thiết kế đơn giản, hiện đại và trọng lượng khá nhẹ được trang bị cấu hình khá ổn định với:

  • CPU: Intel Core i5-1135G7, thuộc thế hệ thứ 11 Tiger Lake, đảm bảo khả năng xử lý mượt mà các tác vụ văn phòng, học tập, giải trí.
  • RAM: 8GB DDR4, đủ để chạy đa nhiệm nhiều ứng dụng cùng lúc, được trang bị một khe RAM nâng cấp 4GB.
  • Ổ cứng: SSD 512GB NVMe PCIe, giúp máy khởi động nhanh, tốc độ truy xuất dữ liệu nhanh chóng.
  • Màn hình: Màn hình 15.6 inch Full HD, tần số quét 60Hz
  • Khối lượng: 1.7 kg

Với cấu hình trên, chiếc laptop này đáp ứng tốt các nhu cầu sử dụng hàng ngày như lướt web, xem phim, làm việc với các ứng dụng văn phòng (Word, Excel, PowerPoint), lập trình với các ngôn ngữ cơ bản. So với các đối thủ cùng cấu hình, Acer Aspire 3 A315-58-54XF có mức giá khá cạnh tranh chỉ dưới 10 triệu đồng.

>> Đọc thêm: Top 11 laptop học IT dưới 20 triệu

Laptop Lenovo IdeaPad 1 15AMN7 R5 7520U

Laptop Lenovor lập trình dưới 10 triệu

Lenovo IdeaPad 1 15AMN7 R5 7520U/8GB/256GB là một lựa chọn đáng cân nhắc trong phân khúc laptop giá rẻ, đặc biệt với bộ vi xử lý AMD Ryzen 5 7520U, 8GB RAM và ổ cứng SSD 256GB, máy vận hành mượt mà các tác vụ hàng ngày như lướt web và chạy ổn các ứng dụng lập trình.

Thông số kỹ thuật chi tiết:

  • Hệ điều hành: Windows 11 Home
  • Bộ vi xử lý: AMD Ryzen 5 7520U
  • Bộ nhớ trong: 8GB LPDDR5
  • Ổ cứng: SSD NVMe PCIe 256GB
  • Màn hình: 15.6 inch, Full HD (1920 x 1080), tấm nền TN
  • Card đồ họa: AMD Radeon 610M
  • Cổng kết nối: USB 3.2 Gen 1, USB-C 3.2 Gen 1, HDMI, jack tai nghe 3.5mm

Với tầm giá khoảng 9 triệu đồng, thật khó có model nào qua được Lenovo IdeaPad hiệu năng xử lý nhờ sử dụng chip AMD Ryzen 5 thế hệ mới. Đây là một sự lựa chọn đáng cân nhắc cho các bạn sinh viên đang tìm kiếm laptop lập trình viên giá rẻ dưới 10 triệu đồng.

Laptop HP 15S-FQ5231TU 8U241PA

Laptop HP lập trình dưới 10 triệu

HP 15S-FQ5231TU 8U241PA là một chiếc laptop 15.6 inch, được thiết kế với vẻ ngoài hiện đại, gọn nhẹ và trọng lượng vừa phải, rất phù hợp để mang theo bên mình. Máy được trang bị cấu hình ổn định, đáp ứng tốt nhu cầu làm việc văn phòng, học tập và giải trí cơ bản.

Thông số kỹ thuật chính:

  • Màn hình: 15.6 inch, Full HD (1920 x 1080 pixels), tấm nền IPS
  • Bộ vi xử lý: Intel Core i3-1215U
  • Bộ nhớ RAM: 8GB DDR4
  • Ổ cứng: SSD 256GB PCIe NVMe
  • Đồ họa: Intel UHD Graphics
  • Hệ điều hành: Windows 11 Home
  • Kết nối: Wi-Fi 6, Bluetooth 5.1, USB-C, USB-A, HDMI, jack tai nghe 3.5mm
  • Pin: 3 cell, thời lượng sử dụng khá tốt
  • Trọng lượng: Khoảng 1.69 kg

Tuy chỉ có chip core i3 nhưng với thế hệ gen thứ 12 khá mới hiện nay, HP 15S-FQ5231TU 8U241PA đủ thực hiện các tác vụ cơ bản để lập trình, là một lựa chọn đáng cân nhắc nếu bạn đang tìm kiếm một chiếc laptop gọn nhẹ, hiệu năng ổn định và giá cả phải chăng. Hiện nay model HP 15S-FQ5231TU 8U241PA đang có giá chỉ 9-10 triệu đồng.

Laptop ASUS VivoBook Go 14 E1404FA-NK113W

Laptop Asus lập trình dưới 10 triệu

ASUS VivoBook Go 14 E1404FA-NK113W là một chiếc laptop 14 inch, sở hữu thiết kế hiện đại, mỏng nhẹ và màu sắc trẻ trung, đây là một trong những mẫu laptop được ưa chuộng hiện nay, đặc biệt phù hợp với các bạn học lập trình đang tìm kiếm mẫu laptop giá rẻ dưới 10 triệu. Máy được trang bị cấu hình khá ổn định với:

  • CPU: AMD Ryzen 3 7320U, thuộc thế hệ mới của AMD, đảm bảo khả năng xử lý mượt mà các tác vụ văn phòng, học tập, giải trí.
  • RAM: 8GB LPDDR5, đủ để chạy đa nhiệm nhiều ứng dụng cùng lúc.
  • Ổ cứng: SSD 256GB NVMe PCIe, giúp máy khởi động nhanh, tốc độ truy xuất dữ liệu nhanh chóng.
  • Màn hình: Màn hình 14 inch Full HD, viền màn hình siêu mỏng, mang đến trải nghiệm hình ảnh sống động.
  • Bàn phím và touchpad của Asus Vivobook Go 14 E1404FA-NK113W cũng được thiết kế tốt, cứng cáp phù hợp cho các coder.

Những chiếc laptop Asus luôn nổi bật với vẻ ngoài thanh lịch và hiện đại, mặc dù với mức giá chỉ dưới 10 triệu đồng Vivobook Go 14 E1404FA-NK113W cũng được trang bị vẻ ngoài rất đẹp mắt với bề mặt kim loại tạo cảm giác chắc chắn và sang trọng.

Laptop ASUS ExpertBook B1 B1502CBA-NJ1261W

Laptop Asus lập trình giá rẻ dưới 10 triệu

Tiếp theo trong danh sách laptop lập trình viên giá rẻ dưới 10 triệu đồng lại là một sản phẩm từ nhà Asus. ASUS ExpertBook B1 B1502CBA-NJ1261W là một chiếc laptop được thiết kế đặc biệt, cấu hình mạnh mẽ và các tính năng hữu ích, chiếc laptop này sẽ là người bạn đồng hành đắc lực trong công việc hàng ngày của bạn.

Cũng tương tự như những model trước, ASUS ExpertBook B1 B1502CBA-NJ1261W có thông số kỹ thuật đáp ứng yêu cầu cơ bản để lập trình, chi tiết:

  • Bộ vi xử lý: Intel Core i3-1215U thế hệ 12, mang đến hiệu năng xử lý nhanh chóng, mượt mà cho các tác vụ văn phòng, lập trình cơ bản.
  • Bộ nhớ: 8GB RAM DDR4, đủ để chạy đa nhiệm nhiều ứng dụng cùng lúc.
  • Ổ cứng: SSD 256GB NVMe PCIe
  • Màn hình: Màn hình 15.6 inch Full HD, độ sáng 250 nits, chống lóa, góc nhìn rộng, mang đến trải nghiệm hình ảnh sống động.
  • Hệ điều hành: Windows 11 Home, giao diện thân thiện, dễ sử dụng.
  • Bàn phím gõ êm, touchpad rộng rãi, hỗ trợ các cử chỉ đa điểm, mang đến trải nghiệm nhập liệu thoải mái.

Giá bán hiện tại của chiếc laptop này tất nhiên cũng chỉ dao động từ 9-10 triệu, nếu bạn muốn nâng cấp lên core i5 hay i7 thì chỉ cần thêm từ 3 đến 5 triệu đồng.

Laptop Dell Vostro 3520 F0V0VI3

Laptop Dell lập trình dưới 10 triệu

Cuối cùng trong danh sách là một ứng cử viên đến từ nhà Dell. Với bộ vi xử lý Intel Core i3-1215U thế hệ mới, kết hợp cùng RAM 8GB DDR4, Dell Vostro 3520 F0V0VI3 đảm bảo hiệu năng mạnh mẽ, xử lý đa nhiệm mượt mà các tác vụ văn phòng, học tập và giải trí. Ổ cứng SSD 512GB PCIe tốc độ cao không chỉ giúp máy khởi động nhanh chóng mà còn rút ngắn thời gian truy xuất dữ liệu, tăng hiệu suất làm việc.

Màn hình Full HD 15.6 inch sắc nét, sống động, mang đến trải nghiệm hình ảnh tuyệt vời cho người dùng. Bàn phím được thiết kế khoa học, hành trình phím hợp lý, tạo cảm giác thoải mái khi thao tác.

Tóm tắt thông số kỹ thuật:

  • Bộ vi xử lý: Intel Core i3-1215U thế hệ 12
  • Bộ nhớ RAM: 8GB DDR4
  • Ổ cứng: SSD 512GB NVMe PCIe
  • Màn hình: 15.6 inch Full HD
  • Hệ điều hành: Windows 11 Home được cài đặt sẵn theo máy

Dell Vostro 3520 F0V0VI3 là một lựa chọn đáng cân nhắc trong tầm giá dưới 10 triệu đồng để sở hữu chiếc laptop lập trình ổn định.

Xem thêm: TOP 6 laptop lập trình dưới 15 triệu học CNTT tốt nhất

Việc chọn mua laptop lập trình dưới 10 triệu đòi hỏi bạn phải cân nhắc kỹ lưỡng về nhu cầu sử dụng, ngân sách và các yếu tố kỹ thuật. Hy vọng rằng bài viết này của TopDev đã cung cấp cho bạn những thông tin cần thiết để đưa ra quyết định đúng đắn.

Việc làm cho lập trình viên đãi ngộ tốt trên toàn quốc, ứng tuyển ngay!

Tản mạn về Software và Product: Một vài suy nghĩ vu vơ

Tản mạn về Software và Product

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

Đã bao giờ anh em thắc mắc: Product trong ngành công nghệ là gì? Nó khác gì với các “software” thông thường? Và ranh giới giữa một thứ được xem là “product” và một thứ “chỉ-được-xem-là-software” là gì 🙂 ?

Chả hiểu bằng một ma lực nào đó mà thời gian qua, các câu hỏi này cứ liên tục trôi nổi trong đầu mình. Nay mình note ra vài thứ (có thể xem là) trải nghiệm cá nhân về 2 khái niệm: product và software này.

Hi vọng có dịp cùng anh em chém gió, đàm đạo sôi nổi về topic này 😎

Product vs Software

Nói theo ngôn ngữ marketing thì “Product is anything that can be offered to the market that satisfied a want or need.

Anything ở đây có thể là vô hình hoặc hữu hình. Hữu hình như cái chén, cái muỗng, cái dĩa. Đến những thứ vô hình như: tour du lịch, excel, bữa ăn tối tại nhà hàng, hay dịch vụ sửa xe…

Bài note này mình chỉ nói đến các “digital products”, tức những thứ như: Excel, Mương14, Facebook, hay các game như PUBG mà anh em vẫn đang chơi hằng ngày.

Với định nghĩa này thì product và software có vẻ không khác gì nhau. Nhưng thực tế nếu nhìn theo khía cạnh quality of service thì sự khác biệt ở đây là cả… 1 bầu trời nghệ thuật.

Product vs Software

Mình lấy Momo ra làm ví dụ.

Mình dùng app này cũng khá lâu rồi. Nhưng Momo chưa từng làm một người dùng cuối như mình thấy thất vọng. Có vẻ hơi dễ dãi nhưng sự thật là mình chưa-từng-một-lần phàn nàn khi sử dụng sản phẩm này.

Với trải nghiệm cá nhân, quả không gì bằng một công cụ tiện lợi, mượt mà. Và luôn là một cái gì đó, có thể khiến người dùng “wow” mỗi khi sử dụng.

Momo không còn đơn thuần chỉ là một “tool dùng để thanh toán” khi cần. Mà hơn hết nó đã trở thành 1 “sản phẩm” cho nhu cầu tài chính cá nhân mọi lúc, mọi nơi và tại mọi thời điểm (câu này nghe giống quảng cáo vãi ae :)) ).

Thường khi rảnh tay anh xem sẽ có thói quen mở Facebook lên lướt lướt đúng không. Có tin được không khi thi thoảng rảnh rỗi mình lại có thói quen mở… Momo để lướt xem các chương trình khuyến mãi. Thay vì mở Facebook để lướt?!?!

Cả 2 hành vi này đều đem lại “phần thưởng” cho mình là được cập nhật thông tin ngay tức thời.

Nhưng để một người dùng bình thường như mình làm điều này một cách rất tự nhiên và mang lại được một cảm xúc tích cực, thì anh em có thể thấy team Momo đã làm quality of service cho sản phẩm của mình tốt như thế nào.

  Product Manager là gì? Có gì khác biệt trong công việc của Owner Product với Product Manager?

  Check list những thứ cần phải học để trở thành Software Architect

Khác biệt

Quay lại các software mà anh em đang làm, những sản phẩm này thường “sống tốt” được ở những môi trường nào?

Software

Thường khi outsource hoặc làm phần mềm cho một khách hàng nào đó, end-user sẽ được gói gọn trong một tệp người khá rõ ràng.

Có nhiều yếu tố, nhưng mình chỉ muốn nói đến 2 yếu tố khác biệt rõ nhất giữa 1 software và 1 product đó là:

  • Số lượng người dùng
  •  Và môi trường sử dụng

Tại một thời điểm nhất định, số lượng người dùng sẽ được giới hạn ở một con số nào đó. Thường khách hàng có thể có 20, 50, hoặc cả trăm người dùng. Con số có thể nhiều hơn, nhưng chắc chắn vẫn trong tầm ước lượng và kiểm soát của anh em.

Còn các yếu tố liên quan đến môi trường sử dụng của end-users có thể như:

  • Thiết bị họ dùng: nào là yêu cầu phần cứng, hệ điều hành, màn hình các kiểu…
  • Hoặc đơn giản như việc end-users phải được training đầy đủ, bài bản, quành tráng thì mới có thể sử dụng được phần mềm của anh em.

Khi đã rõ 2 điều trên, anh em sẽ đỡ vả hơn rất rất nhiều trong việc maintain khi đưa phần mềm vào sử dụng thực tế. Mặc dù sự thật khá phũ là “làm xong” phần mềm đã là 1 câu chuyện đau đớn, đưa vào sử dụng còn đớn đau hơn gấp bội.

Đó là câu chuyện của việc cho ra đời một software thông thường. Còn với product thì sao?

Product

Hoàn toàn khác. Chắc chắn nó là một câu chuyện hoàn toàn khác.

Làm product, mọi thứ sẽ vô định hơn nhiều so với việc anh em làm một software có scope rõ ràng.

Số lượng end-users? Anh em sẽ phải luôn trong thế chuẩn bị cho các trường hợp khẩn cấp: lượng users sử dụng tăng cao, tăng đột biến..., bất kể lễ lộc hay weekend.

Còn nói về môi trường sử dụng thì là một câu chuyện dài, rất dài.

Đã là Product thì anh em sẽ phải quăng sản phẩm của mình vào scope đúng nghĩa của chữ “market”.

Tức sản phẩm của anh em phải sẵn sàng để sống tốt trong một thứ gọi là “the real world”. Nơi mọi thứ oái ăm, lạ đời nhất hoàn toàn đều có thể diễn ra.

Sự thật 169% là anh em sẽ không tài nào lường trước được end-users họ sẽ làm gì với cái apps của mình.

Sẽ có một nghìn lẻ một trường hợp người dùng không thao tác theo luồng mình nghĩ đến từ đầu. Mà sẽ theo một cái luồng oái ăm nào đó. Mặc dù nghe vô lý nhưng lại rất thuyết phục.

Hồi đó mình có làm một sản phẩm giúp các bạn Đại lý đi tuyển nhân viên bán hàng.

Toàn bộ quy trình đầu đến cuối đều được làm online hết. Trong đó có đoạn: bạn ứng viên phải làm 1 bài đánh giá tính cách, xem thử bạn có thật sự phù hợp với công việc này hay không.

Bài trắc nghiệm đơn giản chỉ là một web page, ứng viên sẽ nhận link bài đánh giá qua email >> mở ra >> làm.

Thực tế là bài đánh giá khá dài. Vừa trả lời trắc nghiệm, lẫn trả lời tự do. Và vì được code khá lâu, trên một nền tảng cũ nên bài trắc nghiệm này không responsive trên trình duyệt web được. Tức người dùng phải mở bằng laptop để có được “trải-nghiệm-đúng-nhất”.

Nhưng cái mắc cười là: hầu như 90% ứng viên (những người dùng rất bình thường trong cái gọi là “the real world” kia) lại làm bài trắc nghiệm trên… điện thoại.

Và anh em thử tưởng tượng một web page không responsive, nhập liệu cả chục cái free text, và chỉ có 1 nút Submit lẻ loi chật vật hiển thị giữa một rừng cả mấy chục fields, trên cái màn hình điện thoại vỏn vẹn chỉ tầm 4-5 inch!?!?! Chưa kể còn không submit kết quả được trên trình duyệt Safari 9 trở về trước…

Rõ ràng những thứ “ngó bộ hiển nhiên” nhưng lại bị bỏ qua một cách “rất tự nhiên” như vầy thì quality of service là một con số 0 tròn trĩnh.

Một sai lầm rất đáng trách của người làm câu chuyện phân tích & thiết kế như mình. Hoặc các anh em đang play role BA/ PO cho sản phẩm của mình.

Và sự thật là sản phẩm của anh em cần phải được quăng vào thế giới thực tế. Và PHẢI được dùng bởi người dùng thực tế ngoài kia, thì khả năng hoàn thiện sản phẩm” mới tốt dần lên được.

Cùng đồng ý một điều là sẽ không có bất cứ sản phẩm công nghệ nào đạt được mức độ hoàn thiện ngay từ NHỮNG lần build đầu tiên cả. Cái gì cũng vậy, cần thời gian để cải thiện và nâng cấp dần dần.

Nhưng mấu chốt là anh em cần có FEEDBACK từ người dùng thì mới có thể làm được sự “cải thiện, và nâng cấp dần dần” đó. Và xuyên suốt quá trình lấy feedback từ người dùng, cái khó nhất vẫn luôn là: làm sao để họ chịu dùng sản phẩm của mình.

Nhưng…

Một thực trạng là anh em sẽ rất hay bị dí deadline trong môi trường các công ty outsource. Nào là khách hàng ép, dự án rush, nhu cầu gấp. Nói chung đụng đâu cũng thấy… nước sôi đổ tới háng hết. Dẫn tới timeline của anh em bị bóp nghẹt không thương tiếc.

Thử hỏi “làm xong” còn chưa kịp huống chi nói đến chuyện “làm đẹp”. Nó giống kiểu: anh em đang làm bài kiểm tra mà mắc ị vậy.

Và cứ vậy, project này qua project khác, software này qua software khác, nó cứ như một nùi tả pí lù. Cứ “xong” theo kiểu bị dí, bị ép. Shit của ông này cứ chồng lên shit của ông khác, and so on, you know….

Chưa kể những dự án enhancement hay migration. Tức làm trên cái có sẵn, rồi cải tiến lên phù hợp với new biz hoặc technology nào đó.

Ver1 đã tệ, thì với cách làm cũ dù có làm thêm thì cũng chỉ là một cục tệ ver2 khác. Tức là trước chỉ có 1 cục, giờ ghép vào thành 2 cục tệ, what da fuck???

Ngoài ra, làm product là gắn liền với sự cải tiến liên tục.

Sẽ có chặn bắt đầu, nhưng thường không có chặn kết thúc như khi anh em làm các project outsource thông thường. 500 anh em sẽ phải liên tục theo dõi quá trình sử dụng của người dùng. Đưa ra những cải tiến kịp thời và phù hợp với thị trường hay chiến lược của sản phẩm.

Và thị trường hay nhu cầu của biz thì luôn thay đổi, thậm chí thay đổi từng giờ, từng ngày. Nên sẽ không bao giờ có chuyện “làm xong dự án” khi anh em làm product.

Product vs Software

Nói gì nói anh em sẽ phải luôn gắn liền cuộc sống của mình với sản phẩm mình làm.

Nghĩa là, sản phẩm mà có shit, thì anh em vẫn là người hốt. Dù có lấp liếm được đến đâu đi chăng nữa, thì sau cùng vẫn chính là mình. Chính mình là người đi dọn những đống shit đó.

Cho nên?

Do it one time, do it right

Vì không có thời gian nên anh em phải hết sức cố gắng làm chuẩn ngay từ đầu. Bất kể anh em có làm một product triệu đô, hay đơn thuần đang outsource một software thông thường đi chăng nữa.

Khái niệm “chuẩn” của mỗi người là khác nhau. Nhưng chắc chắn, quality của “chuẩn” nó sẽ HƠN NHIỀU so với “tàm tạm để test”, hay “vầy là ổn rồi”, hay “kệ m* nó đi vầy là được rồi!!!

Nếu làm đúng ngay từ đầu, anh em sẽ đỡ tốn thời gian quay lại chỉnh sửa. Đó là nguyên lý.

Một function dù khó cỡ nào, nếu cố gắng phân tích đúng ngay từ đầu, thì nỗ lực sửa, fix bugs là rất ít.

Đặc biệt, công việc của người làm phân tích & thiết kế như BA mà sai ngay từ đầu, thì rất dễ đẩy công sức của 500 anh em xuống biển. Đã không có thời gian, nay còn tự bóp mình. Kịch bản rất dễ đẩy các anh em vào con đường phạm pháp, quynh đệ tương tàn…

Làm việc có tâm, sâu sắc hơn một chút

Thêm một ý nữa là dù ít hay nhiều, hãy để tâm hơn một xíu ngay trong quá trình làm sản phẩm của mình. Dù cho anh em có đang outsource “theo đơn đặt hàng” cho một software nào đó.

Chúng ta, Biz Analyst, hay Dev, hay thậm chí cả QC khi design, build hay test một tính năng nào đó, HÃY LUÔN cố gắng đặt mình vào thế của người dùng cuối.

Dù biết thế giới này đã có rất nhiều yếu tố thọt vào đít anh em mỗi sớm thức dậy: deadline, sếp chửi, khách hàng dí, thằng chung team làm ẩu xém toang tám chục lần, vâng vâng và mây mây.
Nhưng hãy cố quan tâm đến góc nhìn của người dùng được chừng nào, hay chừng đấy.

Nếu vẫn thấy app mình ổn, quay sang dòm mấy cái app đang nổi, rồi quay lại dòm app mình lần nữa, thấy sao anh em :)))

Đầu bếp nấu một món theo công thức có sẵn mà không quan tâm đến thực khách là ai, khẩu vị ra sao thì chắc chắn: món đó chỉ dừng ở mức “có thể ăn” của thực khách. Hoàn toàn không để lại ấn tượng hay feelings tốt đẹp gì về món đó cả. Thậm chí vài ngày sau là quên bà nó mất mình đã từng ăn món đó ở chỗ này.

Tạm kết

Trên là vài dòng suy nghĩ vu vơ về một software thông thường và một productNó như kiểu giữa một chiếc xe chạy được, và phiên bản hoàn chỉnh của chiếc xe đó vậy.

Theo đó là ranh giới vô cùng mong manh, nhưng cũng là cả một bầu trời khác biệt nếu nhìn theo góc độ quality of service.

Với một software làm ra mà mình vô cùng tâm huyết, mình hay nói vui với anh em là “nâng tầm product” cho software đó 🙂 Nói trắng ra là hoàn chỉnh sản phẩm hơn mỗi ngày. Để sản phẩm ngày càng tiệm cận đến mức độ hoàn thiện cao nhất mà nó có thể.

Một lần nữa, nói vậy nhưng thực tế sẽ luôn gặp trở ngại để làm được như vậy. Cái THÚ ở đây là nằm ở khả năng luồng lách vượt trở ngại của anh em, để hoàn thiện sản phẩm được đến mức nào mà thôi.

Chúc anh em may mắn, mình đi lấp liếm fix bugs tiếp đây, baiiii.

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

Xem thêm:

Tuyển dụng lập trình viên đãi ngộ tốt trên toàn quốc, ứng tuyển ngay!

SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?

SearchGPT là một bước tiến vượt bậc của Open AI

Trong kỷ nguyên số, công cụ tìm kiếm đã trở thành một phần không thể thiếu trong cuộc sống của chúng ta. Google đã trở thành công cụ tìm kiếm thống lĩnh thị trường trong nhiều năm qua. Tuy nhiên, sự xuất hiện của SearchGPT, một công cụ tìm kiếm mới dựa trên trí tuệ nhân tạo (AI), đang hứa hẹn sẽ mang đến một cuộc cách mạng trong lĩnh vực này. Cùng TopDev tìm hiểu thật cặn kẽ về SearchGPT và có khác biệt nổi bật nào so với Google Search không nhé.

SearchGPT là gì?

SearchGPT là công cụ tìm kiếm sử dụng trí tuệ nhân tạo (AI) được phát triển bởi OpenAI – ra mắt chính thức vào 25/7/2024. Khác với các công cụ tìm kiếm truyền thống chỉ đơn thuần liệt kê các liên kết, SearchGPT sử dụng công nghệ AI để hiểu sâu hơn về ý định của người dùng và cung cấp các câu trả lời trực tiếp, tổng hợp từ nhiều nguồn thông tin khác nhau.

SearchGPT có khả năng truy vấn thông tin theo thời gian thực, truy cập được link gốc, tăng độ tin cậy của kết quả trả về.

Ngay sau khi SearchGPT ra mắt cổ phiếu công ty Alphabet (công ty mẹ của Google) bốc hơi 3% – tương đương hơn 60 tỷ USD, nhìn vào đây ta đủ thấy SearchGPT là một đối thủ đáng gờm mà Google phải dè chừng.

Những tính năng nổi bật của SearchGPT

SearchGPT, với sự kết hợp tinh tế giữa công nghệ tìm kiếm truyền thống và trí tuệ nhân tạo tiên tiến, đã tạo nên một bước đột phá trong việc truy xuất thông tin. Dưới đây là những đặc điểm nổi bật làm nên sự khác biệt của công cụ này:

Độ chính xác của thông tin cao

Search GPT được xây dựng trên mô hình LLM hiện đại nhất của Open AI hiện tại là GPT-4. Vì vậy nguồn tài nguyên sẽ không bị giới hạn và lấy được những thông tin mới nhất theo thời gian thực tế.

Để tránh vấn đề “ảo giác AI” mà cái AI model hiện tại đang mắc phải thì Search GPT kết nối với các nhà xuất bản, bản tin, cơ quan truyền thông bằng cách trích dẫn nội dung và gắn đường dẫn liên kết đến các bài báo.

Khả năng hiểu sâu ý định người dùng

Không chỉ đơn thuần là một công cụ tìm kiếm các từ khóa, SearchGPT có khả năng hiểu ngữ cảnh một cách sâu sắc. Công cụ này có thể nắm bắt được ý nghĩa ẩn sau câu hỏi, thậm chí cả những câu hỏi phức tạp, đòi hỏi sự suy luận logic và tổng hợp thông tin đa chiều. Nhờ đó, người dùng có thể đặt câu hỏi một cách tự nhiên, gần gũi với ngôn ngữ giao tiếp hàng ngày.

Cung cấp câu trả lời toàn diện và trực quan

Thay vì liệt kê một danh sách dài các liên kết như Google search, hay chỉ đưa ra câu trả lời được tổng hợp bằng AI, SearchGPT tổng hợp thông tin từ nhiều nguồn đáng tin cậy để đưa ra một câu trả lời ngắn gọn, súc tích và dễ hiểu và có gắn thêm nguồn tham khảo để tăng độ tin cậy và tính xác thực của thông tin. Ngoài văn bản, công cụ này còn có khả năng trình bày kết quả dưới dạng hình ảnh, video, đồ thị, giúp người dùng tiếp cận thông tin một cách trực quan và sinh động hơn.

Khả năng học hỏi và phát triển không ngừng

SearchGPT được xây dựng trên nền tảng của các thuật toán học máy tiên tiến, cho phép công cụ này tự học và cải thiện khả năng hiểu ngôn ngữ và cung cấp thông tin chính xác qua thời gian. Nhờ đó, SearchGPT ngày càng trở nên thông minh hơn và đáp ứng tốt hơn nhu cầu của người dùng. Nếu bạn bắt đầu và đang thảo luận về điện thoại iPhone của Apple thì những truy vấn tiếp theo SearchGPT sẽ tự hiểu được Apple đang nhắc đến là hãng điện thoại chứ không phải quả táo.

Xem việc làm AI mới nhất tại đây

So sánh SearchGPT và Google Search

Việc ra mắt SearchGPT không chỉ là bước đột phá của OpenAI mà còn đặt ra thách thức lớn đối với Google, cùng xem hai công cụ tìm kiếm này có điểm gì khác nhau trong bảng tổng hợp dưới đây:

Tính năng Google Search SearchGPT
Cách thức hoạt động Liệt kê các liên kết đến các trang web có liên quan Hiểu ý định của người dùng và cung cấp câu trả lời trực tiếp
Kết quả tìm kiếm Các trang web Câu trả lời tổng hợp, các đoạn trích văn bản, liên kết đến các trang web có liên quan
Giao diện Đơn giản, tập trung vào các liên kết Thân thiện hơn, giao diện dạng chat, tăng tính tương tác.
Công nghệ Dựa trên thuật toán PageRank và Machine Learning để xếp hạng các trang web. Sử dụng AI để hiểu ngữ cảnh, trả lời câu hỏi phức tạp
Độ chính xác thông tin Cung cấp thông tin cập nhật và chính xác hơn nhờ vào việc thu thập dữ liệu liên tục Phụ thuộc vào thông tin đầu vào của model, có thể không cập nhật thông tin mới nhất
Khả năng xử lý Không thể trả kết quả đúng với những truy vấn phức tạp. Xử lý được dễ dàng các câu hỏi phức tạp và có thể giải thích chi tiết hơn nữa.

Cách sử dụng Search GPT đơn giản nhất

Hiện tại, Search GPT đang chỉ là phiên bản dạng “nguyên mẫu” và có khoảng 10,000 người dùng được đăng ký trải nghiệm sản phẩm. Hiện tại số lượng người trải nghiệm đã đủ, ở đây TopDev vẫn sẽ hướng dẫn các bước sử dụng SearchGPT dựa vào thông tin được publish bởi Open AI.

Bước 1: Bạn có thể vào website: chatgpt.com/search để đăng nhập hoặc đăng ký (nếu bạn đã có tài khoản chatGPT, có thể đăng nhập bằng tài khoản này)

Cách sử dụng Search GPT đơn giản nhất

 

Bước 2: Sau khi đăng ký thành công, bạn đăng nhập vào tài khoản đã được xác nhận trên website SearchGPT.

Bước 3: Nhập truy vấn vào ô “What are you looking for?” và nhấn Enter để đi đến kết quả tìm kiếm

Search GPT dùng ra sao?

Bước 4: Search GPT sẽ trả lại kết quả đã được AI tóm tắt từ những nguồn uy tín kèm theo nguồn link gốc của thông tin.

sử dụng search GPT

Bước 5: Bạn có thể tiếp tục hỏi thêm những thông tin chuyên sâu về chủ đề tìm kiếm trong chatbox tại ô “Ask a follow-up…”.

Dù hiện tại SearchGPT chỉ là một nguyên mẫu thử nghiệm tuy nhiên với những tính năng nổi bật như đã nêu trên chắc hẳn SearchGPT sẽ là một mô hình tìm kiếm bằng AI được nhiều người dùng ưa chuộng. Sự ra mắt của SearchGPT cũng đánh dấu thêm một bước ngoặt quan trọng trong cuộc cạnh tranh khốc liệt giữa OpenAI và Google. Theo dõi TopDev để cập nhật những tin tức mới nhất về công nghệ bạn nhé!

Bài đọc thêm: AI Chatbot là gì? Các nền tảng tạo AI Chatbot tốt nhất hiện nay

999+ Việc làm IT hot nhất tại TopDev

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

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

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

Nếu bạn đang định xây dựng tính năng để tính toán khoảng thời gian tương đối (như “sau 3 ngày nữa”, “4 tháng trước”, “1 phút trước”) mà không cần sử dụng thư viện bên ngoài?

Trong bài viết này, chúng ta sẽ tìm hiểu về Intl.RelativeTimeFormat, một tính năng để định dạng thời gian tương đối (hỗ trợ nhiều ngôn ngữ) trong JavaScript.

I. Giới thiệu về Intl.RelativeTimeFormat

Intl.RelativeTimeFormat là một phần của bộ công cụ quốc tế hóa (i18n – Internationalization) trong JavaScript. Nó cho phép bạn định dạng các khoảng thời gian tương đối (như “sau 3 ngày nữa”, “4 tháng trước”, “1 phút trước”) một cách dễ dàng và chính xác. Đặc biệt nó có hỗ trợ hiển thị nhiều ngôn ngữ khác nhau và bạn cũng không cần sử dụng thư viện bên ngoài để xử lý.

Tại sao nên sử dụng Intl.RelativeTimeFormat?

  1. Hỗ trợ đa ngôn ngữ: Intl.RelativeTimeFormat hỗ trợ nhiều ngôn ngữ (bao gồm cả tiếng việt).
  2. Đơn giản và dễ sử dụng: Đối tượng này cung cấp các phương thức để định dạng thời gian tương đối mà không cần phải tự viết các chức năng phức tạp.
  3. Đảm bảo tính chính xác: Định dạng chính xác và phù hợp với ngữ cảnh văn hóa của từng ngôn ngữ.

II. Cách sử dụng Intl.RelativeTimeFormat

⚡️ Tạo đối tượng Intl.RelativeTimeFormat

Để sử dụng Intl.RelativeTimeFormat, bạn cần tạo một đối tượng mới từ lớp này. Dưới đây là cú pháp cơ bản:

const rtf = new Intl.RelativeTimeFormat('vi', { numeric: 'auto' });
  • 'vi' là mã ngôn ngữ dành cho tiếng Việt.
  • { numeric: 'auto' } là một tùy chọn định dạng, cho phép tự động chuyển đổi giữa dạng số và dạng từ (vd: “trong 1 ngày” thay vì “trong một ngày”).

⚡️ Định dạng thời gian tương đối

Dưới đây là cách sử dụng đối tượng Intl.RelativeTimeFormat để định dạng thời gian tương đối:

console.log(rtf.format(-1, 'day')); // "1 ngày trước"
console.log(rtf.format(0, 'seconds')); // "bây giờ"
console.log(rtf.format(5, 'minute')); // "sau 5 phút"

❗️ Chú ý: dấu “-” thể hiện thời gian ở quá khứ. Khi bằng 0 là thời gian hiện tại, lớn hơn 0 là tương lai.

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

  Hằng số và tính bất biến trong JavaScript

III. Các tùy chọn định dạng

Intl.RelativeTimeFormat cung cấp một số tùy chọn để tùy chỉnh định dạng thời gian tương đối:

  1. numeric: Chấp nhận hai giá trị 'always' và 'auto'.
    • 'always' sẽ luôn sử dụng dạng số (vd: “trong 1 ngày”).
    • 'auto' sẽ tự động chuyển đổi giữa dạng số và dạng từ (vd: “ngày mai” thay vì “sau 1 ngày”).
  2. style: Chấp nhận các giá trị 'long''short', và 'narrow'. (Lưu ý: kết quả trả về có thể giống nhau nếu không có từ phù hợp của ngôn ngữ đó)
    • 'long': Định dạng đầy đủ (vd: “1 day ago”).
    • 'short': Định dạng ngắn gọn (vd: “1 day ago”).
    • 'narrow': Định dạng tối giản (vd: “1d ago”).

Ví dụ với các tùy chọn khác nhau

const rtfLong = new Intl.RelativeTimeFormat('en', { style: 'long' });
const rtfShort = new Intl.RelativeTimeFormat('en', { style: 'short' });
const rtfNarrow = new Intl.RelativeTimeFormat('en', { style: 'narrow' });

console.log(rtfLong.format(-1, 'day')); // "1 day ago"
console.log(rtfShort.format(-1, 'day')); // "1 day ago"
console.log(rtfNarrow.format(-1, 'day')); // "1d ago"

IV. Các đơn vị thời gian được hỗ trợ

Intl.RelativeTimeFormat hỗ trợ nhiều đơn vị thời gian khác nhau bao gồm:

  • second (giây)
  • minute (phút)
  • hour (giờ)
  • day (ngày)
  • week (tuần)
  • month (tháng)
  • quarter (quý)
  • year (năm)

Ví dụ về các đơn vị thời gian

console.log(rtf.format(-30, 'second')); // "30 giây trước"
console.log(rtf.format(2, 'week')); // "sau 2 tuần nữa"

V. Kết hợp tuỳ chọn

Bạn có thể kết hợp các tùy chọn để đạt được định dạng mong muốn cho từng ngữ cảnh, ngôn ngữ cụ thể.

VD: Bạn có thể kết hợp nhiều tùy chọn để đạt được kết quả mong muốn:

const rtfCustom = new Intl.RelativeTimeFormat('vi', {
  numeric: 'auto',
  style: 'long'
});

console.log(rtfCustom.format(-3, 'month')); // "3 tháng trước"
console.log(rtfCustom.format(1, 'year')); // "năm sau"

VI. FAQs

Một số câu hỏi thường gặp khi sử dụng Intl.RelativeTimeFormat (FAQs)

  1. Intl.RelativeTimeFormat là gì? Intl.RelativeTimeFormat là một API trong JavaScript cho phép định dạng thời gian tương đối cho nhiều ngôn ngữ khác nhau.
  2. Làm thế nào để tạo đối tượng Intl.RelativeTimeFormat? Bạn có thể tạo đối tượng bằng cách sử dụng cú pháp new Intl.RelativeTimeFormat('vi', { numeric: 'auto' }).
  3. Có thể sử dụng Intl.RelativeTimeFormat cho những đơn vị thời gian nào? Intl.RelativeTimeFormat hỗ trợ các đơn vị thời gian như giây, phút, giờ, ngày, tuần, tháng, quý, và năm.
  4. Các tùy chọn định dạng của Intl.RelativeTimeFormat là gì? Các tùy chọn bao gồm numeric (always, auto) và style (long, short, narrow).
  5. Có thể kết hợp nhiều tùy chọn khi sử dụng Intl.RelativeTimeFormat không? Có, bạn có thể kết hợp các tùy chọn để đạt được định dạng mong muốn cho từng ngữ cảnh cụ thể.

VII. Kết luận

Intl.RelativeTimeFormat là một công cụ mạnh mẽ và dễ sử dụng để định dạng thời gian tương đối trong JavaScript. Bằng cách hỗ trợ nhiều ngôn ngữ và cung cấp các tùy chọn định dạng linh hoạt, nó giúp việc quốc tế hóa ứng dụng của bạn trở nên dễ dàng hơn. Hãy thử áp dụng Intl.RelativeTimeFormat vào dự án của bạn và trải nghiệm sự tiện lợi mà nó mang lại!

Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về cách sử dụng Intl.RelativeTimeFormat trong JavaScript.

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

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

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

Ô kieee xin chàoooo anh em. Đây là tập 2 của chuỗi bài note: Những kỹ năng cần có của người làm Business Analyst 😎 

Nếu chưa đọc tập 1 thì click ngay đừng ngại. Review nội dung trước đó cho anh em đỡ quên:

TỔNG QUAN

1. ANALYTICAL THINKING
1.1. Conceptual & Visual Thinking
1.2. Creative & Innovative
1.3. Problem Solving

1.4. Decision Making

Mình từng gặp một trường rất trớ trêu: dự án đã đóng rồi, hợp đồng thì cũng đã thanh lý, nhưng mình cứ bị kẹt vô thế nửa nạc nửa mỡ.

Số là dự án đã qua 3 tháng bảo hành và đã đóng hoàn toàn dựa trên hợp đồng. Nhưng khách hàng thì cứ ỡm ờ. Lúc thì nói muốn ký gói bảo hành một năm, lúc thì không thấy đá động phản hồi gì hết.

Mà oải cái là anh chàng Contact Point bên khách hàng cứ lâu lâu nhắn mình, nhờ support cái này, cái kia.

  • Về lý, team mình không việc gì phải tiếp tục support. Nếu muốn support, khách hàng phải ký hợp đồng Maintenance, không nói nhiều.
  • Về tình, team mình không thể nói không support, vì còn phải giữ mối quan hệ cho những deal sau này (rất có thể là những deal lớn). Đặc biệt là khi họ đang nửa nạc nửa mở nói muốn ký tiếp hợp đồng Maintenance. Nghĩa là miếng ăn đang cận kề trước mặt…, nên không nỡ phũ được.

Nếu tạm bỏ qua các quyết định về lãi lỗ (vì có thể ký hợp đồng maintenance nhưng team mình vẫn lỗ), thì dưới vai trò BA, anh em sẽ giải quyết vấn đề này như thế nào?

Rõ ràng anh em phải ra quyết định đúng không nào: Support hay không support, không support hay support nói một lời.

Ngoài ra, anh em vẫn có thể raise lên để mấy sếp giải quyết. Quyết định nào cũng có cái lợi, cái hại. Nó tùy thuộc vào anh em. Kỹ năng ra quyết định của mình là ở chỗ này.

Dự án sau đó có êm hay không, mọi người có còn happy với nhau hay không chính là nằm ở những quyết định của mình trong dự án.

Như mình, mình không thích ỡm ờ, nhưng vì “một lý do nào đó”, khách hàng không rõ ràng, hoặc “không muốn rõ ràng”. Tuy nhiên, nếu khách hàng muốn nửa nạc nửa mỡ, thì mình cũng sẽ nửa nạc nửa mỡ. Thích ba rọi, thì có ngay ba rọi.

Những điểm nào mình có thể trả lời ngay, “low_energy”, thì mình hoàn toàn có thể support họ. Còn những vấn đề khác phức tạp hơn, đòi hỏi “high_energy” hơn thì mình sẽ tìm cách từ chối khéo.

Decision Making

Và mình cũng sẽ linh động từng case, theo khả năng có thể phát sinh thêm những issue khác. Cố gắng triệt để những vấn đề này. Vì nếu có ký maintenance thì team mình cũng sẽ là bên phải giải quyết.

Nên dù gì người được lợi nhất vẫn là cả khách hàng và team dự án mà thôi 🙂

Đây chỉ là cách để mình dung hòa mối quan hệ và lợi ích của 2 bên. Và nó có khoảng thời gian nhất định, chứ không thể kéo dài suốt được. Đặt một hạn chót, và cho khách hàng “chỉ được ỡm ờ” tối đa trong khoảng thời gian này. Sau thời gian này, mọi thứ cần phải rõ ràng.

Trên là ví dụ điển hình gần đây nhất mình gặp phải. Còn anh em gặp trúng những ca củ chuối nào, kể bên dưới còm men nhé.

Rõ ràng là xuyên suốt dự án có rất nhiều trường hợp mà anh em BA phải ra quyết định một mình.

Kỹ năng giải quyết vấn đề thì luôn đi kèm với kỹ năng ra quyết định. Còn việc ra quyết định thì luôn đi kèm với hai chữ “trách nhiệm” 🙂

Đừng để người khác phải đổ vỏ cho những quyết định của mình, meo meo…

Mỗi quyết định đưa ra đều dẫn đến một cánh cửa nào đó.

Cửa dẫn dự án đến đích có, dẫn xuống vực cũng có. Một lần nữa, đi cánh cửa nào là tùy vào kinh nghiệm và khả năng chịu khó quan sát, học hỏi của chính bản thân mình.

Nên làm để rèn luyện

✅ Chịu khó quan sát, hỏi người khác vì sao họ lại làm như vậy.
✅ Xông pha nhận các dự án mới, task mới.
✅ Dám làm những cái mới >> dễ sai >> dám nhận trách nhiệm >> học cái sai >> có kinh nghiệm >> lần sau quyết định đỡ sai hơn.
✅ Nên có mentors cho mình.
✅ Tập hỏi 5 Whys cho các vấn đề cá nhân thường ngày.
✅ Chịu khó đọc sách (học được nhiều câu từ, cách diễn giải hay >> tăng khả năng ăn nói, diễn đạt hiệu quả hơn).
✅ Suy nghĩ kỹ trước khi nói. Đặc biệt là những anh em hay hấp tấp như mình, và cả những anh em hay nóng tính.
✅ Tải game Plant vs. Zombies 2Clash RoyaleFootball Manager… về chơi, hoặc các game puzzle, chiến thuật khác >> tăng khả năng tư duy logic, dàn xếp đội hình.
✅ Tập vẽ mind map.
✅ Ngủ sớm, dậy sớm >> tỉnh táo hơn >> quyết định sáng suốt hơn >> vấn đề được giải quyết tốt hơn.
✅ Ăn trái cây nhiều >> tránh lão hóa, tăng đẹp chai, cu te, tăng độ minh mẫn, suy nghĩ thấu đáo hơn.
✅ Chơi đá banh, nhảy dây, bắn thun các kiểu…, miễn là thể thao lành mạnh.

1.5. System Thinking

Kỹ năng cuối cùng trong nhóm Analytical Thinking đó là System Thinking 😎

System Thinking nghĩa là Tư duy hệ thống.

Tư duy hệ thống là khi mình hiểu và nhìn nhận vấn đề trên một góc nhìn tổng quan nhất. Để khi có một vấn đề phát sinh, tư duy hệ thống sẽ giúp chúng ta hầu như tự động nhìn nhận được những thứ bên trong hoặc những thứ liên quan đến đối tượng đó, mà có thể bị tác động. Từ đó tính toán hay làm gì tiếp là tùy vào anh em.

Như mình có note ở bài Bí kíp chân truyền của BA, cái quan trọng nhất là mình nhìn bất kỳ một hệ thống nào dưới góc độ các components và relationship giữa chúng với nhau.

Tư duy này giúp ích anh em BA rất nhiều trong quá trình làm dự án.

Ví dụ ngay lúc đầu, chúng ta vẽ ABCDEFGH để làm. Tầm 3 tháng sau, khách hàng thay F bằng K ==> vấn đề bắt đầu phát sinh.

Nếu không có tư duy hệ thống, chúng ta sẽ rất mịt mờ, và thường không có khuynh hướng cân nhắc xem thử:

  • Rút ông F ra, thế ông K vào thì nó sẽ ảnh hưởng gì tới những ông A, B, C, D, E, G, H còn lại.
  • Và ảnh hưởng gì tới nguyên cụm ABCDEFGH ban đầu?

Đây là việc anh em phải làm rất thường xuyên với bất kỳ change request nào, dù to hay nhỏ.

Do đó, những ai có tư duy hệ thống sẽ có khuynh hướng phân tích điều này một cách tự nhiên, đầy đủ  rõ ràng hơn bao giờ hết.

System Thinking

Sau cùng thì, những gì mình phân tích được sẽ giúp ích cho chính chúng ta.

Nên, tư duy theo hướng hệ thống là tốt, nhưng không phải là thứ bắt buộc, vì đâu ai kiểm chứng được là anh đã tư duy hệ thống hay chưa!?!?

Stakeholders chỉ quan tâm: có vấn đề mới nảy sinh đó, giờ BA nó trả lời như vầy, team nó xử lý như vầy ==> rồi kết qua đem lại có đáp ứng đúng kỳ vọng các bên hay không?

==> Người ta chỉ quan tâm kết quả sau cùng mà thôi.

Nên chuyện tư duy có tổng quát hay không không ai kiểm chứng được ngay, mà người ta chỉ dựa vào kết quả làm được.

Nên khi có vấn đề phát sinh, thường thì BA (đặc biệt là mình) sẽ có khuynh hướng “skip” qua bước này. Đặc biệt là lúc bị Mr. Deadline dí sát đít. Vì lo mà cắm đầu làm cho xong chứ ngồi đó tư duy với chả hệ thống@79mahf*#mjd@@….

Do đó qua bài note này, hi vọng anh em sẽ chú ý hơn về khoản này để tránh phiền hà về sau 🙂

Có những thứ tưởng như nhỏ nhặt nhưng phiền phức vô cùng.

Như trường hợp mình gặp: khách hàng đòi đổi một trường dữ liệu từ Option Set sang Multi Option Set. Cấu trúc dữ liệu thay đổi, chấp nhận. Nhưng đó chưa phải ác mộng.

Cái kinh khủng nhất là những report có dính tới field đó.

Lúc mình làm thì hệ thống không query data theo dữ liệu Multi Option Set được, nên không thể visualize lên report. Buộc phải dùng một field text trung gian >> copy giá trị trên field Multi Option Set đó ra field text >> rồi mới query data dựa tên field text này.

Và team phải làm như vầy cho… toàn bộ những field Option Set liên quan tới field mà khách hàng thay đổi, đắng lòng…

Do đó, nếu BA nhìn nhận vấn đề chưa đầy đủ, chưa thấy được những khía cạnh hoặc các thành tố khác có thể bị tác động ==> anh em team nhà sẽ rất dễ bị bóp.

Và quan trọng trên hết, anh em phải trang bị đủ kiến thức thì mới có được một góc nhìn bao quát và đầy đủ nhất được.

Nên làm để rèn luyện

✅ Phải trao đổi mọi thứ thật rõ ràng với team nhà trước khi confirm bất cứ thứ gì với khách hàng.
✅ Luôn phản hồinói cho người khác hiểu anh em đang nghĩ gì trong các buổi họp >> mọi người sẽ xem xét góc nhìn đó đã bao quát hay chưa, hay còn phiến diện quá. ==> Đi họp đừng có im im, ngồi rung đùi từ đầu tới cuối buổi nhé anh em (anh em tìm hiểu thêm về Thinking Out Loud)
✅ Đọc nhiều về lĩnh vực, sản phẩm mình đang làm.
✅ Quan sát xem những senior thường nghĩ gì khi có vấn đề phát sinh.
✅ Đa phần mọi người sẽ suy nghĩ rất phiến diện ==> thử suy nghĩ ngược 180 độ với hướng suy nghĩ của họ ==> anh em sẽ suy nghĩ bao quát hơn (ít nhất là so với người đó).
✅ Hằng ngày, đi ăn bún bò, hủ tiếu, đi uống cà phê, mua trà sữa, hoặc thấy cô lao công chùi nhà vệ sinh, hãy chú ý nhiều hơn tới quy trình công việc của họ.
✅ Tải game ăn cặp Pokemon, hoặc các game tìm điểm chung ==> tăng độ nhạy trong việc nhận diện điểm giống nhau ==> khả năng phát hiện ra các pattern trong đời sống xung quanh sẽ cao hơn.
✅ Lâu lâu thử tìm điểm chung giữa những phần mềm có trong trong điện thoại, giữa các loại xe máy trên đường, hoặc giữa mấy đứa bạn trẻ trâu xung quanh mình, xem thử những thứ đó có đặc tính gì giống nhau hay không.

2. Communication

Cuối cùng cũng đến, đó là nhóm các kỹ năng về giao tiếp 😎

Thường anh em sẽ chỉ chú ý đến chuyện giao tiếp qua đường nói thôi. Nhưng thực ra còn những khoản khác mình cũng cần chú ý như sau.

2.1. Verbal

Đầu tiên là đường nói.

Rõ ràng anh em BA chúng ta cần đường nói rất nhiều. Từ lúc elicit requirement, đến lúc trao đổi nội bộ, làm việc với đồng bọn ở nhà.

Nói không ai hiểu, coi như tèo.

Nói người ta hiểu sai ý, cũng tèo.

Nói một ý, nhưng phải diễn tả đi diễn tả lại 8 tỷ lần người ta mới hiểu, cũng tèo luôn.

Nói ẩn dụ nhiều quá, người ta tưởng mình đá đểu, cũng tèo luôn.

Đi cà phê với anh em, nói chuyện nhạt quá, không ai thèm chơi, thèm nói chuyện với mình ==> tèo của tèo luôn.

Đi lấy requirement, không dẫn dắt được buổi workshop, nội dung đi lệch hướng ==> tèo nguyên buổi workshop.

Gặp vấn đề, biết root cause ở đâu, thậm chí biết luôn cách giải quyết cho máu, nhưng không thể nào giải thích cho đồng bọn hiểu ==> cả đám cùng tèo.

System Thinking

Và còn hàng ngàn những ví dụ khác, mà khi anh em không giao tiếp tốt bằng đường nói, sẽ rất là ác mộng với người làm BA.

Có 2 điểm mình thấy rất quan trọng đối với đường nói, đó là: Âm điệu và Âm lượng.

  • Âm điệu của giọng nói là tiếng trầm bổng của giọng mình nói
  • Âm lượng của giọng nói là mình nói có nhỏ xí, lí nhí trong miệng không, hay mình nói to, rõ ràng…

Mình thấy 2 điều này là cực kỳ quan trọng. Vì nó phần nào sẽ giúp anh em thu hút được sự chú ý của người nghe.

Anh em thử để ý trong các buổi meeting, sẽ có những người nói mà chả có ma nào nghe. Những thanh niên này nói một hồi thì bà con mới để ý là… người đó đang nói.

Ngược lại, có những người, mà vừa mới mở miệng ra nói vài chữ, là đã thu hút được sự chú ý của đông đảo quần chúng nhân dân rồi.

Sự khác biệt do đâu?

Có thể người đó rất xịn xò mà ai cũng nể. Có thể là sếp, sếp của sếp, vợ của sếp, ghệ của sếp, vâng vâng.

Nhưng ngoài những yếu tố “nho nhỏ” trên thì theo mình quan trọng nhất vẫn nằm ở âm điệu và âm lượng của giọng nói.

Tuy nhiên, không phải cứ nói to, trầm, mạnh mẽ là sẽ thu hút được mọi người.

Mình có quen chị kia, hễ chỉ nói là đùng cái mọi người chú ý liền. Lạ lùng vậy đó. Mà được cái là chỉ nói không to, thậm chí là có phần hơi nhỏ, nhưng khi chỉ nói thì lại có sức hút lạ lùng.

Ngoài nội dung có giá trị cho người khác, thì đâu đó mình tin rằng âm điệu và âm lượng góp phần nhiều tạo nên “hiệu ứng thu hút” hiệu quả như vầy.

Nên làm để rèn luyện

✅ Phải tranh-thủ-từng-tí-cơ-hội-một để thuyết trình, nói chuyện trước đám đông. Đám càng đông, càng nguy hiểm >> càng tốt (vì đám đông sẽ phản hồi lại, chém lại, ném mắm tôm sầu riêng lại những gì anh em nói ==> anh em sẽ tập dần cách đỡ, cách phản hồi, và quan trọng nhất là cách xử lý của mình sẽ ngày một tốt hơn)
✅ Chịu khó đi hát ka ra ô kê với đồng bọn. Chú ý tập hát lấy hơi từ bụng, anh em sẽ hát khỏe hơn, nguy hiểm hơn, và lòe được nhiều người hơn 😎
✅ Đi cà phê thì chịu khó nói chuyện, chém gió với nhau ==> tập hình thành lối diễn giải, và cân bằng ngữ điệu của mình cho phù hợp.
✅ Tập phát âm rõ, chữ nào hay ngọng thì nói chậm lại.
✅ Đi present cho khách hàng, có run quá thì phải NÓI CHẬM lại. Vì bản năng mình khi run sẽ auto bắn rất nhanh, nhưng không, cần phải chậm lại.
✅ Sáng dậy chịu khó chạy bộ, hoặc đi làm chịu khó leo thang bộ ==> tập thở, điều phối cách lấy hơi cho đều, cho khỏe.
✅ Và sau tất cả, một trong những điều quan trọng nhất để nói tốt là phải…

2.2. Listening

Listening – lắng nghe người khác.

Nãy là mình nói tốt rồi, giờ thì mình phải nghe tốt. Làm BA mà nghe ẩu là dễ dính chưởng lắm. Vì có những cái, tưởng như đơn giản, mà nếu không nghe kỹ thì là một mớ hầm bà lằng trong đó.

Chưa kể nếu làm với khách hàng nước ngoài, partner nước ngoài, chắc gì mình đã hiểu rõ những yêu cầu (và cả những ý đồ, mong muốn đằng sau lời họ nói).

Do đó, nguyên tắc của BA là cứ phải xác nhận lại những gì mình nghe, để đảm bảo rằng: mình nghe đúng những gì đối phương diễn giải.

Anh em đừng lo. Nếu có thanh niên nào phàn nàn kiểu như: ơ thằng này cùi bắp, tiếng anh, tiếng em cùi bắp, gì mà cứ hỏi tới hỏi lui, rồi xác nhận tới lui tùm lum tùm la…. Thì cứ kệ bà nó.

Mình cứ xác nhận lại cho chắc những gì mình nghe đi cái đã. Công việc của mình, mình cứ làm, không cần quan tâm bố con thằng nào ồn ào hết.

Vì nếu nghe không cẩn thận, hiểu sai ý, thì những gì mình phản hồi lại sẽ rất trớt quớt, khi đó thì càng tệ nữa. Khách hàng sẽ nghĩ sai về mình. Sau này làm việc còn khó hơn.

Chưa kể, nghe ẩu – hiểu sai ==> sẽ mang về một mớ thông tin đầy rẫy sự nguy hiểm cho đồng bọn đang ngóng trông ở nhà. Lúc đó vô dự án càng teooooo nữa.

Nên gì đi chăng nữa thì hãy nhớ: Listening một cách đàng quàng, cẩn thận, và luôn luôn phản hồi lại để đảm bảo mình hiểu đúng ý người nói.

Mindful Listening: Lắng nghe một cách chuyên tâm nhất – phiên bản tàu khựa (Nguồn ảnh: Pinterest/JohnDonaldson14)
Mindful Listening: Lắng nghe một cách chuyên tâm nhất – phiên bản tàu khựa (Nguồn ảnh: Pinterest/JohnDonaldson14)

Có thể anh em sẽ quen với hình trên. Bà con đồn nhau rằng: chữ “lắng nghe” tiếng Trung rất có ý nghĩa, bởi vì nó là sự kết hợp của:

  • Lắng nghe đơn thuần,
  • Kết hợp suy nghĩ,
  • Kèm theo quan sát,
  • Không thể thiếu sự tập trung – tôn trọng người nói,
  • Và cảm nhận bằng cả trái trym.

Sau cùng, lắng nghe tốt là cội nguồn của cả nhóm kỹ năng Giao tiếp này.

Nên làm để rèn luyện:

✅ Những buổi workshop quan trọng, hãy luôn ghi âm để về nghe lại ==> tránh nghe sót, nghe sai ý (nhưng nhớ xin phép bà con trước nhé anh em).
✅ Luôn phản hồi lại nếu mình không chắc về những gì nghe được.
✅ Mạnh dạn nói: “Tiếng Anh tao không được tốt lắm, vui lòng nói chậm giúp tao”Khi mình làm việc với các Support Partners của Microsoft, mình toàn miss, hiểu sai ý nó. Nó hỏi A, mình đi cắm đầu trả lời B, rất nhiều và rất nhiều lần như vậy.
Và khi mọi thứ được chậm lại, công việc sẽ dễ dàng hơn cho cả hai. Đặc biệt là khi nói chuyện với những accent mà anh em nghe không quen (như Ấn, Mexico, hay Bồ Đào Nha chẳng hạn…)
✅ Nếu trao đổi qua điện thoại, hoặc online meeting, hãy luôn đảm bảo là sẽ có người ghi Meeting Minutes sau cuộc trao đổi. Vì nói qua điện thoại, hay online meeting sẽ khó nghe hơn rất nhiều ==> nên có biên bản để đảm bảo mọi người cùng đi chung một hướng.

.

.

.

Tập 2 tạm kết tại đây. Nếu có phản hồi gì thì anh em cứ còm men bên dưới cho mình biết nhé 🙂

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

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

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

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

Thời gian qua có nhiều anh em hỏi mình về ngành MIS. Và đặc biệt là câu hỏi: sau này ra trường, làm BA thì cần có những kỹ năng – kiến thức chuyên ngành như thế nào???

Do đó, như lời giới thiệu ở trên, chuỗi bài này mình sẽ note về chủ đề: những kỹ năng cần có của một người làm công việc Business Analyst. 

Là một bài khá fundamental, nhưng cũng là dịp để bản thân mình dòm lại: thật sự BA cần có những kỹ năng nào, và liệu mình đã có đủ hết những kỹ năng đó hay chưa.

Bắt đầu thôi nào!

Tổng quan một chút

Trong bất kỳ ngành nghề nào, chúng ta đều cần tới: Kiến thức và kỹ năng cần có của ngành nghề, công việc đó.

Business Analyst cũng vậy, sẽ có:

  • Nhóm các Kiến thức chuyên môn – Knowledge Areas (có thể hiểu là kỹ năng cứng).
  • Và nhóm các Kỹ năng cần thiết – Underlying Competencies (có thể hiểu là kỹ năng mềm).

List dài những kỹ năng dưới đây là mình tham khảo từ BABOK v3.0. Nhìn khá dài và chuối, nhưng anh em khoan hẳn hoang mang, vì mình sẽ cố gắng đưa nó về sát thực tế nhất cho anh em dễ hình dung.

Nếu đọc có gì không ổn, chưa rõ, hoặc cần thảo luận thêm thì cứ quăng mình cái boong, à nhầm, quăng mình cái còm men để tăng tính tương tác nhé anh em.

Ô keiii, lét sờ gâu anh em eiiii 😎

1. Analytical Thinking

Đầu tiên là nhóm kỹ năng về Tư duy phân tích.

“Tư duy phân tích” nghe thì có vẻ hơi đao to búa lớn, nhưng thực tế anh em cứ hình dung vầy cho đơn giản. Mấu chốt nằm ở từ phân tích, nên hiểu “phân tích” như thế nào cho thực tế nhất.

Như trong bài note Quy trình làm dự án của BA, mình có diễn giải từ “phân tích” mang nghĩa như sau:

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

Từ một BA Manager nọ

…hoặc

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

Sandhya Jane – Author of Business Analysis: The Question and Answer book

Mục đích sau cùng của việc phân tích là để mình hiểu được cái mình phân tích, hiểu được bản chất vấn đề.

Còn “tư duy” là hoạt động của hệ thần kinh, giúp chúng ta nhìn nhận những thứ xung quanh mình. Từ đó định hướng cho các hành động phù hợp hơn, hiệu quả hơn với tình huống mà mình đang gặp.

Vậy nên, người có tư duy phân tích là người có thiên hướng sắp xếp và phân loại các tiểu tiết của vấn đề, để qua đó: hiểu được bản chất của vấn đề. 

Và 5 thứ sau đây sẽ giúp hình thành nên tư duy phân tích của anh em.

1.1. Conceptual & Visual Thinking

Trong bối cảnh Business Analyst, tư duy phân tích thể hiện rõ ở hai mặt: Conceptual và Visual.

  • Conceptual là góc nhìn theo hơi hướng trừu tượng – khái quát vấn đề
  • Còn Visual là góc nhìn mang hơi hướng trực quan – dùng hình ảnh cụ thể để mường tượng rõ vấn đề.

Khi làm việc với khách hàng, nói về concept chung của phần mềm có thể sẽ gây bối rối cho khách hàng. Vì họ chưa hình dung được nó là cái gì. Mọi thứ vẫn còn chung chung và trừu tượng quá.

Thay vào đó, việc demo ngay các chức năng có trên phần mềm sẽ khiến khách hàng dễ hình dung hơn (đó là Visual)

Conceptual & Visual Thinking
Visual thinking cho phép khách hàng “nhìn được”, “tưởng tượng được” và “ánh xạ” hình ảnh đó ngay trong đầu.

Visual Thinking

Nói về Visual Thinking thì đây là thứ anh em sẽ rất-rất-rất cần khi làm BA.

Vì có nhiều thứ mình sẽ rất khó để hình dung rõ vấn đề. Đặc biệt là các vấn đề quá sâu về chuyên môn, như chuyện coding chẳng hạn.

Chưa kể anh em còn phải giải thích, document lại cho các bên hiểu rõ vấn đề đang gặp phải.

Khi trao đổi với anh em đì ve lốp pơ, sẽ có những thuật ngữ, mà nếu mình chưa từng tận tay làm thực tế, thì thề luôn, là hầu như rất khó để mường tượng, và hiểu nó một cách “bản chất nhất”.

Nó nằm ở cả quá trình lấy yêu cầu với khách hàng. Ví dụ những thứ như API, Web Service… Hai thứ này thật sự rất khó gặm với những ai chưa làm thực tế bao giờ.

Những thứ thư: nhận và gửi data như thế nào, hay những hạn chế của những “available API” ảnh hưởng đến solution requirement ra sao???

Tất cả những thứ này sẽ gây rất nhiều khó khăn cho anh em nếu không hiểu rõ nó.

Đối với những trường hợp khá là trừu tượng như vầy thì hãy nhờ đến Visual Thinking.

Hãy nhờ một chuyên gia về khái niệm, lĩnh vực đó, diễn tả lại cho anh em hiểu thông qua… hình vẽ.

Vẽ là thứ rất quan trọng với anh em BA mình. Khi mọi thứ đã được phác thảo rõ ràng ra về hình ảnh, thì bản chất vấn đề sẽ dần lộ diện.

Mấu chốt là vẽ như thế nào cho hiệu quả. Cái này thì rõ ràng cần phải học và tích lũy rất nhiều.

Visual Thinking

  Mới ra trường không kinh nghiệm, sao làm BA?

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

Conceptual Thinking

Conceptual Thinking nghĩa là tư duy theo hơi hướng trừu tượng, bao quát vấn đề.

Trừu tượng nghĩa là tổng quát hóa một cái gì đó, không cần care chi tiết bên trong nó có gì. Và thường thì bà con vẫn hiểu khái niệm trừu tượng đó khi chúng ta nói ra. Vì trừu tượng là thứ dựa trên một hình tượng nào đó, và được hình dung trong đầu.

Cái này có vẻ lạ. Thường thì khi trừu tượng quá, khó hiểu quá thì mình mới cần áp dụng Visual Thinking để mọi thứ được phác thảo ra rõ ràng, để dễ mường tượng hơn.

Vậy thì ngược lại, Conceptual Thinking – tư duy theo hướng trừu tượng thì được dùng khi nào?

Đó là khi anh em cần nhìn vấn đề dưới bức tranh tổng quan. Để xác định được các component chung nhất trong bức tranh tổng quan đó. Và relationship giữa chúng với nhau.

Ví dụ trong giai đoạn pre-sales, anh em thường phải gặp những người là C-Level bên phía khách hàng. Mà đã là C-Level rồi thì góc nhìn của họ thường rất bao quát và trừu tường.

Họ luôn nhìn bài toán từ trên cao, và đó phải là cách tiếp cận của BA khi làm việc với những người này.

Mình từng bị dập tơi bời không biết bao nhiêu lần khi cứ nói detail thế này thế kia với “nhầm đối tượng”.

Cách tiếp cận chỉ là một chuyện. Nếu anh em không suy nghĩ bao quát, tổng quát hóa, sẽ rất khó để hiểu được ý đồ thật sự mà khách hàng mong muốn.

Cuối cùng, Conceptual Thinking và Visual Thinking thường phải đi chung, và bổ trợ cho nhau. Không phải cứ tổng quát hóa là không cần visualize, mà hễ visualize thì không được visualize một bức tranh tổng quát.

Vậy chốt lại, để rèn luyện được Tư duy phân tích, anh em cần có Tư duy tổng quát hóa và Tư duy bằng hình ảnh 🙂

Nên làm để rèn luyện

✅ Đọc thêm về Design Thinking.
✅ Tập vẽ bằng bút, tập thể hiện ý đồ bằng nét vẽ của mình.
✅ Tập vẽ mind map.
✅ Đọc bộ Hình vẽ thông minh của Dan Roam (hiểu cách ổng dùng hình ảnh để giải quyết vấn đề như thế nào)
✅ Chịu khó quan sát (cả top-down và bottom-up)
✅ Tập làm Power Point, thể hiện ý tưởng bằng hình vẽ trên Power Point.
✅ Tập present trước đồng bọn.
✅ Thử nghe một câu chuyện phức tạp nào đó, rồi thể hiện lại bằng hình ảnh cho người khác hiểu.

1.2. Creative & Innovative

Tiếp theo là Creative và Innovative. Cả 2 đều kiểu kiểu sáng tạo, nhưng nó khác nhau ở chỗ:

  • Creative là biết làm, biết cách để làm, nói về cách làm, thường nghiêng về smart, tiếng Việt dịch là SÁNG TẠO.
  • Còn Innovative nghĩa là nghĩ khác, tạo ra cái mới, cách làm mới, là sáng tạo của sáng tạo, tiếng Việt dịch là ĐỘT PHÁ.

Và dĩ nhiên, dù có sáng tạo hay đột phá thứ dữ cỡ nào thì cũng phải mang lại kết quả tích cực; chứ hổng có sáng tạo tầm bậy tầm bạ.

Mình cũng không ít lần phát sinh “ý tưởng vĩ đại” để update dữ liệu của khách hàng, theo kiểu bulk update. Nghĩa là update nguyên cục. Và cũng không ít lần ôm mỏ máo khi làm tầm bậy tầm bạ.

Cứ tưởng sáng tạo để tiết kiệm thời gian, mà ai dè còn tốn thời gian hơn cả chục lần để đi đổ đống vỏ mình gây ra, đắng lòng…

Nhiều lúc overload với đống công việc theo kiểu hành chính, hoặc update dữ liệu khá thủ công. Chúng ta cần tìm ra cách làm cho nhanh, cho hiệu quả. Dù có hỏi người này, người kia, tự mình google, hay tự mình nghĩ ra thì cũng đều rất cần thiết cho công việc BA hằng ngày.

Nó giúp chúng ta tiết kiệm được thời gian, để tập trung vào cái cần thiết hơn, và tạo ra được nhiều kết quả hơn.

Nên làm để rèn luyện

✅ Chịu khó đọc chuyên mục các mẹo (tips) của các tools hay dùng như Office365, Draw.IO, Jira…
✅ Chú ý quan sát, copy cách người khác làm.
✅ Bản thân mình tự thử nhiều cách khác nhau để làm một cái gì đó (mặc dù có thể fail, tốn thời gian hơn, nhưng ít nhất cũng biết được vài cách không thành công. Và đặc biệt là bản thân mình dạn hơn, dám thử nhiều cái mới hơn)
✅ Nên tracking những task mình làm trong ngày (để đo lường được hiệu quả >> cuối ngày xem lại >> tìm cách nâng cao hiệu suất).
✅ Có một chỗ ghi note thật nhanh trên điện thoại. Có ý tưởng một phát là rút điện thoại ra, rẹt rẹt, ghi âm lại liền. Hoặc chỉ cần 2-3 chạm là đã nhập ý tưởng được rồi.
✅ Lâu lâu đi lòng vòng nói chuyện với đồng bọn để refresh. Sẵn xem thử đồng bọn có gì hay không để về bắt chước.
✅ Đặt deadline cho các task mình làm >> càng gấp >> càng dễ nghĩ cách khác làm nhanh hơn.

Creative & Innovative

1.3. Problem Solving

Chắc chắn không chỉ BA, mà ai cũng cần kỹ năng này hết, kỹ năng giải quyết vấn đề.

Kỹ năng này cần xuyên suốt mọi lúc mọi nơi. Từ lúc chưa có dự án, tới lúc làm dự án. Thậm chí đóng dự án rồi mà vẫn còn một đống vấn đề phát sinh cần giải quyết.

Người có kỹ năng giải quyết vấn đề tốt là người nhạy với các thông tin nhận được.

Giả dụ khi mình nhận được thông tin, về một vấn đề cần phải giải quyết đi chẳng hạn. Là ngay lập tức trong đầu mình xác định được ngay vấn đề đang gặp là vấn đề gì. Hoặc chí ít nhìn nhận được nó thuộc khía cạnh, lĩnh vực nào, liên quan tới mình không, liên quan nhiều hay ít, abc, xyz...

Vì thực sự trong quá trình làm dự án sẽ có rất nhiều “problem” xảy ra. Nhỏ có, to có, bự chà bá cũng có.

Là người “đầu mối thông tin”, hầu như anh em BA sẽ phải can thiệp đến 96,69% các vấn đề xảy ra.

Từ những thứ nho nhỏ như sắp tới hạn deliver rồi mà anh em đì ve lốp pơ cứ nghỉ liên tục, cả team bị pending không ăn nhậu được gì. Hoặc tới deadline rồi mà khách hàng vẫn chưa chịu gửi master data, vâng vâng…

Cho đến những thứ mệt não hơn như: đang lúc demo cho khách hàng mà server ở nhà bị… tụt bà nó, không connect zô được.

Đây là trường hợp mình gặp rất nhiều, nội kể lại không cũng thấy ớn ớn.

Lần đó đi khách hàng cũng toàn nhân vật thứ dữ. Mặc dù đã nhắn nhủ anh em ở nhà là ráng support tốt, để anh em ra chiến trường demo cho suôn sẻ. Thì y như rằng, lần nào cũng có chuyện.

Lần đó có một ông Marketing Director. Khi đi tới phần nói về Social Listening, tích hợp với Facebook thì ổng có vẻ khoái. Vì trước giờ chưa có partner nào show cho ổng xem được cái này. Và thực sự business của họ đang rất có nhu cầu về khoản này.

Một phần cũng tự tin vì giải pháp mà team đã chuẩn bị. Phần khác vì thấy ổng khoái nên mình chém khá cao hứng.

Đến hồi quan trọng nhất: “bây giờ em sẽ demo cho anh xem ví dụ cụ thể mà bên em đã chuẩn bị cho bên mình”.

Nghe vậy ổng khoái lắm, gật đầu lia lịa.

Cái ai dè, login vô hệ thống bị failed, báo lỗi thiếu quyền các kiểu. Lúc này mình cũng hơi tái táiii. Nhờ anh PM chém gió câu giờ, mình ping về nhà nhờ anh em Dev support.

Mà hình như anh em đang vi vu đâu đó, gọi cháy máy không được. Thấy sốt ruột quá, nghĩ bụng: “chết mẹ rồi, lỡ chém mạnh quá mà không show được gì thì hố chết...”

Hồi sau anh em gọi lại, đưa cho cái account khác, thử login nhưng vẫn failed. Thử vào trình duyệt ẩn, vẫn failed.

Thôi thì cũng đã hơn 20 phút trôi qua, bèn dùng phương án B. Show hình, thay cho live demo. May hôm trước có nghe lời anh PM, chịu khó screenshot trước vài tấm sơ cua, hú vía.

Với những trường hợp gặp sự cố với khách hàng như vậy, mình nghĩ sẽ thiên nhiều về kinh nghiệm chinh chiến của anh em.

Còn những thứ trao đổi nội bộ với nhau, để cùng giải quyết 1 vấn đề nào đó thì có phần thiên nhiều về soft skills của mình hơn (dĩ nhiên là kinh nghiệm dự án cũng rất quan trọng).

Có những người khi gặp vấn đề, họ sẽ cứ phang phang vào mình, nói đủ thứ trên trời dưới đất, búa lua xua hết.

Nhiệm vụ của mình là cần phải bình tĩnh lại >> từ từ nhìn nhận đâu là vấn đề cốt yếu mà người đó đang gặp.

Cái này rất khó, vì khi gặp những thứ mà anh em không phải chuyên môn, như những term về kỹ thuật đi chẳng hạn. Hoặc có quá nhiều thông tin chồng chéo nhau, mother of phức tạp của phức tạp. Thì cái cần ở đây là mình phải đủ bình tĩnh và tỉnh táo dể nhận diện vấn đề.

Khi đã hiểu vấn đề, anh em mới nghĩ tới phương án giải quyết.

Có thể có nhiều phương án, nhưng việc chọn phương án nào là tốt nhất ở thời điểm hiện tại mới là quan trọng. Mỗi phương án nó đều mở ra 1 cánh cửa mới.

Và không bao giờ có công thức chung cho từng hoàn cảnh cụ thể.

Cùng tình huống đó, nhưng ở bối cảnh A, con người A’ thì giải quyết khác. Nhưng với bối cảnh B, và con người B’, thì lại phải giải quyết khác.

Nên khoản này đòi hỏi anh em phải chú ý quan sát nhiều. Học hỏi và gặp nhiều sự cố thì sẽ rèn luyện được kỹ năng này.

Ngoài ra, kỹ năng Giải quyết vấn đề sẽ luôn đi kèm với một thứ quan trọng không kém, đó là…

.

Xem tiếp tập 2 nhé anh em: Kỹ năng cần có của người làm BA (Tập 2) ?

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

Top 6 laptop học CNTT dưới 15 triệu đáng mua nhất

Việc lựa chọn một chiếc laptop phù hợp cho việc học Công nghệ Thông tin (CNTT) là điều rất quan trọng, đặc biệt là với sinh viên hoặc người mới bắt đầu. Với ngân sách dưới 15 triệu, có rất nhiều sự lựa chọn tuyệt vời giúp bạn có thể lập trình và làm việc hiệu quả. Trong bài viết này, chúng ta sẽ cùng tìm hiểu những tiêu chí cần xem xét khi mua laptop và điểm qua danh sách các mẫu laptop học CNTT dưới 15 triệu tốt nhất.

Tiêu chí lựa chọn cấu hình laptop lập trình dưới 15 triệu

Trước khi đi vào danh sách laptop học lập trình dưới 15 triệu nên chọn mua, chúng ta phải xác định rõ một chiếc laptop học lập trình thì nên sở hữu những đặc điểm, thông số kỹ thuật nào.

Dưới đây là những yếu tố cơ bản bạn cần xem xét khi chọn mua laptop để học lập trình:

Bộ vi xử lý (CPU)

CPU là trái tim của bất kỳ máy tính nào. Đối với lập trình, bạn cần một chiếc laptop có bộ vi xử lý đủ mạnh để xử lý các tác vụ đa nhiệm và chạy các phần mềm phát triển như Visual Studio, Android Studio hoặc Eclipse một cách mượt mà. Trong tầm giá dưới 15 triệu, các CPU như Intel Core i5 hoặc AMD Ryzen 5 là lựa chọn phù hợp.

Bộ nhớ RAM

RAM quyết định khả năng xử lý đa nhiệm của laptop. Để học lập trình, tối thiểu bạn cần một máy tính có 8GB RAM. Nếu có thể, hãy tìm những mẫu laptop có khe cắm hỗ trợ nâng cấp RAM, nếu máy không thể nâng cấp thì nên chọn tối thiểu 16GB.

Ổ cứng SSD

Những chiếc laptop trong tầm giá 15 triệu hiện nay đa số đều đã trang bị ổ cứng SSD thay vì ổ cứng HDD truyền thống, mang lại tốc độ truy xuất dữ liệu nhanh hơn rất nhiều.

Với việc học tập lập trình, bạn nên chọn laptop có ổ SSD ít nhất 256GB để đảm bảo dung lượng lưu trữ đủ cho các tài liệu học tập và phần mềm.

Card đồ họa (GPU)

Đối với sinh viên học CNTT, một chiếc laptop có card đồ họa rời không quá cần thiết trừ khi bạn làm việc nhiều với đồ họa hoặc lập trình game.

Màn hình

Màn hình là yếu tố quan trọng giúp bạn làm việc thoải mái trong thời gian dài. Kích thước màn hình 14 inch hoặc 15.6 inch với độ phân giải Full HD (1920 x 1080) là lý tưởng để làm việc và học tập.

Dưới đây là tóm tắt các tiêu chí cơ bản để lựa chọn laptop lập trình dưới 15 triệu:

CPU Tối thiểu là core i5
RAM  Từ RAM 8GB trở lên, nên có khe nâng cấp
Ổ cứng Tốt nhất từ SSD 256GB
Màn hình  Chuẩn Full HD
Card đồ hoạ Cần thiết nếu bạn học lập trình game

Danh sách laptop dưới 15 triệu phù hợp học lập trình

Dưới đây là danh sách 8 mẫu laptop tốt nhất dưới 15 triệu, phù hợp cho việc học lập trình và các nhu cầu học tập khác.

Laptop Dell Precision 3560 – Intel Core i5-1135G7

Dell Precision 3560 là một trong những dòng laptop workstation nổi bật của Dell, được thiết kế dành cho các tác vụ chuyên dụng như lập trình, thiết kế đồ họa, và kỹ thuật. Với bộ vi xử lý Intel Core i5-1135G7, đây là sự lựa chọn tuyệt vời cho những người dùng cần hiệu suất ổn định trong một thiết kế mỏng nhẹ và bền bỉ.

laptop dưới 15 triệu - Laptop Dell Precision 3560 - Intel Core i5-1135G7

Cấu hình chi tiết:

  • CPU: Intel Core i5-1135G7 (4 lõi, 8 luồng, xung nhịp cơ bản 2.4 GHz và tối đa 4.2 GHz).
  • RAM: 8GB DDR4, có thể nâng cấp lên 32GB.
  • Ổ cứng: SSD 256GB, cho tốc độ truy xuất dữ liệu nhanh.
  • Card đồ họa: Intel Iris Xe Graphics tích hợp, đủ để xử lý đồ họa cơ bản và chạy các phần mềm lập trình.
  • Màn hình: 15.6 inch Full HD (1920 x 1080), mang đến hình ảnh sắc nét.
  • Pin: Pin 4-cell 64 Wh, thời lượng sử dụng kéo dài từ 8 đến 10 giờ tùy vào tác vụ.
  • Trọng lượng: Khoảng 1.59 kg, tương đối nhẹ so với các dòng máy workstation.

Giá thành: Hiện laptop Dell Precision 3560 đang có giá tầm 11-12 triệu cho phiên bản chip core i5, nếu bạn nâng cấp lên phiên bản core i7 thì sẽ cộng thêm khoảng 2 triệu đồng.

Dell Latitude 7420 – Intel Core i5-1145G7

Dell Latitude 7420 là một trong những mẫu laptop doanh nghiệp cao cấp của Dell, nổi bật với thiết kế mỏng nhẹ, tính di động cao, và hiệu năng mạnh mẽ. Được trang bị bộ vi xử lý Intel Core i5-1145G7 thế hệ thứ 11, Latitude 7420 mang đến khả năng xử lý mạnh mẽ, tiết kiệm năng lượng và khả năng bảo mật cao, phù hợp cho cả người dùng doanh nghiệp và cá nhân cần một thiết bị mạnh mẽ, linh hoạt trong công việc. Ngoài ra, với thiết kế thời thượng và trọng lượng nhẹ, đây là lựa chọn lý tưởng cho những người thường xuyên di chuyển.

phân khúc laptop lập trình dưới 15 triệu

Thông số kỹ thuật chi tiết của Dell Latitude 7420:

Thông số Chi tiết
CPU Intel Core i5-1145G7 (4 nhân, 8 luồng, tối đa 4.4GHz)
GPU Intel Iris Xe Graphics tích hợp
RAM 16GB LPDDR4x 4267MHz
Ổ cứng SSD 256GB PCIe NVMe, có tùy chọn nâng cấp
Màn hình Cảm ứng, 14 inch FHD (1920 x 1080), WVA, 250nits, NTSC 45%, 60Hz, Anti-Glare
Pin  3-cell, 42 WHr
Trọng lượng Khoảng 1.31 kg

Với màn hình chất lượng, hiệu suất mạnh mẽ, và các tính năng bảo mật tiên tiến, đây là một trong những lựa chọn hàng đầu trong phân khúc laptop học CNTT dưới 15 triệu. Hiện laptop Dell Latitude 7420 Core i5-1145G7 likenew (hiện model này đã ngưng sản xuất hàng mới) đang được bán với giá dao động từ 12-14 triệu, tùy cửa hàng và chương trình ưu đãi.

Laptop Dell Inspiron 15 3530 – Intel Core i5-1335U

Tiếp theo cũng là một con máy đến từ hãng Dell, dòng Inspiron, Dell Inspiron 15 3530 – Intel Core i5-1335U, là mẫu laptop tầm trung được thiết kế dành cho người dùng phổ thông, sinh viên và nhân viên văn phòng với nhu cầu sử dụng đa dạng. Được trang bị bộ vi xử lý Intel Core i5-1335U thế hệ 13, máy cung cấp hiệu suất mạnh mẽ cho các tác vụ hàng ngày như lướt web, soạn thảo văn bản, và tất nhiên cũng phù hợp để viết code và chạy chương trình.

laptop học lập trình dưới 15 triệu

Cùng tham khảo thông số kỹ thuật chi tiết của Dell Inspiron 15 3530:

Thông số Chi tiết
CPU Intel Core i5-1335U (10 nhân, 12 luồng, tối đa 4.6GHz)
GPU Intel Iris Xe Graphics tích hợp
RAM 16GB DDR4 3200MHz
Ổ cứng SSD 512GB PCIe NVMe
Màn hình 15.6 inch Full HD (1920 x 1080), LED, chống chói, 120Hz 250 nits
Pin Pin 3-cell 41 Whr
Trọng lượng Khoảng 1.65 kg

Với ưu điểm là thiết kế sang trọng, Dell Inspiron 15 3530 là một lựa chọn tuyệt vời cho người dùng cần một chiếc laptop màn hình lớn, hiệu năng ổn định với giá cả phải chăng chỉ khoảng 13-15 triệu đồng.

Laptop Acer Aspire 3 A315

Acer Aspire 3 A315 là một trong những sản phẩm mới nhất của Acer trong phân khúc laptop Acer Aspire tầm trung. Được trang bị bộ vi xử lý Core i5-1235U, laptop này sẽ mang đến hiệu suất xử lý mạnh mẽ cho các tác vụ hàng ngày. Bạn có thể thực hiện các tác vụ đa nhiệm mượt mà và nhanh chóng. Một trong những ưu điểm của chiếc laptop này đó là thời lượng pin, với một lần sạc đầy Acer Aspire A315 có thể hoạt động liên tục lên đến 9 tiếng, cho phép bạn sử dụng cả ngày mà không cần lo lắng về việc sạc pin.

laptop giá dưới 15tr cho dev

Cấu hình chi tiết:

  • CPU: Intel Core i5-1235U (10 lõi, 12 luồng, xung nhịp tối đa 4.4 GHz).
  • RAM: 8GB DDR4, có thể nâng cấp lên 12GB.
  • Ổ cứng: SSD 256GB, có thể nâng cấp thêm lên 512GB.
  • Card đồ họa: Intel Iris Xe Graphics tích hợp, đủ để xử lý đồ họa cơ bản và chạy các phần mềm lập trình.
  • Màn hình: 15.6 inch Full HD (1920 x 1080), với tấm nền IPS
  • Pin: Pin 4-cell 64 Wh, thời lượng sử dụng kéo dài từ 8 đến 10 giờ tùy vào tác vụ.
  • Trọng lượng: Khoảng 1.7kg

Với những ưu điểm và thông số cơ bản đáp ứng được tiêu chí của một chiếc laptop lập trình, nhưng Acer Aspire 3 A315 lại có một mức giá vô cùng bất ngờ, chỉ hơn 10 triệu đồng là bạn đã có thể sở hữu em máy mạnh mẽ bên trong, tao nhã, tinh tế bên ngoài.

HP Laptop 15s-fr5005TU Core i7-1260P

Laptop HP là một dòng sản phẩm laptop cao cấp đến từ Mỹ, được biết đến với thiết kế thanh lịch và thời thượng cùng hiệu năng sử dụng cực đỉnh. Nếu bạn muốn tìm một chiếc laptop lập trình 15 triệu trở xuống, HP Laptop 15s-fr5005TU Core i7-1260P là một trong những lựa chọn đáng cân nhắc.

laptop học cntt dưới 15 triệu

Laptop HP 15s-fr5003TU được trang bị bộ vi xử lý Intel Core i7-1260P thế hệ thứ 12 của Intel, kết hợp với 16GB RAM và ổ cứng SSD 512GB. Từ đó mang lại cấu hình mạnh mẽ cho các tác vụ từ cơ bản đến nâng cao. Tham khảo cấu hình chi tiết của chiếc laptop này:

Thông số Chi tiết
CPU  Intel® Core™ i7-1260P ( 12 Cores/ 16 ThreadsUpto 4,70 GHz, 18 MB Intel® Smart Cache)
GPU Intel Iris Xe Graphics tích hợp
RAM 16GB DDR4 3200MHz
Ổ cứng  512GB M.2 PCIe NVMe SSD
Màn hình 15.6 inch Full HD (1920 x 1080), màn IPS, chống chói, chống lóa 250 nits
Pin Pin 3-cell 41 Whr
Trọng lượng Khoảng 1.8 kg

HP Laptop 15s-fr5005TU Core i7-1260P chắc chắn là một lựa chọn không thể bỏ qua cho sinh viên học lập trình. Với bộ vi xử lý Intel Core i7 thế hệ mới, RAM 16GB và ổ cứng SSD 512GB, nhưng laptop này chỉ có giá khoảng 14-15 triệu đồng, có thể các cửa hàng khác nhau sẽ có chênh lệnh về giá nhưng vẫn đáp ứng tiêu chí máy học lập trình tốt giá rẻ.

Laptop Lenovo V14 G4 IRU 83A000BGVN

Laptop Lenovo V15 G4 IRU thuộc dòng laptop sinh viên, giá rẻ cấu hình mạnh được nhiều người dùng lựa chọn. Với chip Intel Core i5-13420H với 8 lõi, 12 luồng, tần số turbo tối đa 4.6GHz và RAM 16GB DDR4 3200MHz, đây là một chiếc laptop đáp ứng hoàn hảo cho việc lập trình.

laptop học IT dưới 15 triệu

Thông số kỹ thuật:

  • CPU: Intel Core i5-13420H, 8C (4P + 4E) / 12T, P-core 2.1 / 4.6GHz, E-core 1.5 / 3.4GHz, 12MB
  • Loại card đồ họa: Intel UHD Graphics
  • RAM 16GB DDR4-3200 (8GB Soldered DDR4-3200 + 8GB SO-DIMM DDR4-3200)
  • Ổ cứng: 512GB SSD M.2 2242 PCIe 4.0×4 NVMe
  • Màn hình: 14 inches, 1920 x 1080 pixels (FullHD), IPS, độ sáng 350 nits, chống chói, độ phủ màu 45% NTSC
  • Pin: 38Wh
  • Trọng lượng: 1.43kg

Laptop Lenovo V14 G4 IRU 83A000BGVN là một mẫu laptop học tập trang bị bộ vi xử lý mạnh mẽ, dung lượng RAM lớn trong một thiết kế bền bỉ, với mức giá khoảng 13 triệu đồng, hẹn đáp ứng tốt mọi nhu cầu lập trình cho các lập trình viên tương lai.

Việc chọn lựa laptop phù hợp cho việc học CNTT dưới 15 triệu đòi hỏi sự cân nhắc kỹ lưỡng về cấu hình, nhu cầu sử dụng và tính năng. Những dòng máy tính trên đều là các lựa chọn tốt cho sinh viên hoặc những ai mới bắt đầu học lập trình. Tùy theo mục đích sử dụng, bạn có thể lựa chọn cho mình một chiếc laptop phù hợp để hỗ trợ tốt nhất cho công việc học tập và phát triển kỹ năng lập trình.

999+ tin tuyển dụng việc làm IT mới nhất tại TopDev

Bài viết liên quan:

15 GitHub Repositories giúp lập trình viên phát triển kỹ năng

15 GitHub Repositories giúp lập trình viên phát triển kỹ năng

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

GitHub không chỉ là nơi để chia sẻ mã nguồn mà còn là một kho tàng tài nguyên quý giá cho lập trình viên muốn nâng cao kỹ năng của mình. Từ các dự án mã nguồn mở cho đến tài liệu học tập chuyên sâu, GitHub cung cấp một nền tảng tuyệt vời để bạn cải thiện khả năng lập trình và tiếp cận những kiến thức mới.

Trong bài viết này, chúng ta sẽ khám phá một số repositories nổi bật mà bạn có thể tham khảo để phát triển kỹ năng lập trình.

1. FreeCodeCamp

FreeCodeCamp

FreeCodeCamp là một nền tảng học lập trình nổi tiếng, và repository của nó là một trong những nguồn tài liệu học tập phong phú nhất trên GitHub. Với hơn 40,000 giờ học miễn phí và hàng loạt bài tập thực hành từ cơ bản đến nâng cao, FreeCodeCamp giúp bạn nắm vững các kỹ năng lập trình như HTML, CSS, JavaScript, và nhiều ngôn ngữ khác. Repository này không chỉ là tài liệu học tập mà còn chứa nhiều dự án thực tế, giúp bạn áp dụng kiến thức vào thực tiễn.

🔗 https://github.com/freeCodeCamp/freeCodeCamp

2. Awesome

“Aweome” là một danh sách tuyển chọn các tài nguyên học tập, công cụ phát triển, và dự án mã nguồn mở trên nhiều lĩnh vực khác nhau của lập trình. Danh sách này liên tục được cập nhật bởi cộng đồng, bao gồm mọi thứ từ lập trình web, học máy, cho đến các công cụ DevOps. Nếu bạn đang tìm kiếm các tài liệu hoặc công cụ giúp nâng cao kỹ năng, thì đây chính là nơi bắt đầu.

🔗 https://github.com/sindresorhus/awesome

3. The Algorithms

The Algorithms

The Algorithms là một repository tuyệt vời cho những ai muốn hiểu sâu hơn về cách các thuật toán hoạt động. Dự án này chứa các triển khai của nhiều thuật toán phổ biến bằng nhiều ngôn ngữ lập trình khác nhau, từ Python đến Java và C++. Bạn có thể học được cách áp dụng các thuật toán trong thực tế và cải thiện kỹ năng lập trình thuật toán của mình.

🔗 https://github.com/orgs/TheAlgorithms/repositories

4. CS50x

CS50x là một khóa học nhập môn khoa học máy tính nổi tiếng của Harvard, và repository của nó chứa toàn bộ tài liệu học tập và bài tập thực hành của khóa học. Dù bạn mới bắt đầu hay đã có nền tảng, CS50x cung cấp một lộ trình học tập có cấu trúc rõ ràng, giúp bạn xây dựng kiến thức từ cơ bản đến nâng cao trong lập trình và khoa học máy tính.

🔗 https://github.com/cs50

5. Developer Roadmap

Developer Roadmap là một dự án hướng dẫn chi tiết về các kỹ năng và công nghệ mà bạn cần nắm vững để trở thành một lập trình viên chuyên nghiệp. Repository này cung cấp các bản đồ lộ trình học tập cho nhiều lĩnh vực khác nhau như front-end, back-end, DevOps, v.v. Mỗi bản đồ đều được xây dựng dựa trên các công nghệ và kỹ năng được yêu cầu nhiều nhất trong ngành, giúp bạn định hướng học tập một cách hiệu quả.

🔗 https://github.com/kamranahmedse/developer-roadmap

6. Project-Based Learning

Nếu bạn là người thích học qua thực hành, Project-Based Learning sẽ là repository phù hợp với bạn. Nó cung cấp một danh sách các dự án thực tế mà bạn có thể tự tay thực hiện để nâng cao kỹ năng lập trình. Từ việc xây dựng ứng dụng web, trò chơi, cho đến các công cụ CLI, bạn sẽ tìm thấy những dự án thú vị và thách thức để thử sức.

🔗 https://github.com/practical-tutorials/project-based-learning

7. JavaScript30

JavaScript30

JavaScript30 là một khoá học miễn phí với 30 dự án thực hành bằng JavaScript. Không cần bất kỳ thư viện hay framework nào, bạn sẽ học cách xây dựng các ứng dụng chỉ với JavaScript thuần. Đây là cách tuyệt vời để nắm vững ngôn ngữ này và cải thiện kỹ năng lập trình của mình một cách nhanh chóng.

🔗 https://github.com/wesbos/JavaScript30

8. LeetCode Patterns

LeetCode Patterns là một công cụ hữu ích cho những ai muốn rèn luyện kỹ năng giải quyết vấn đề và chuẩn bị cho các kỳ thi lập trình. Repository này phân loại các bài tập trên LeetCode theo các mẫu phổ biến, giúp bạn dễ dàng tiếp cận và học hỏi các kỹ thuật giải quyết vấn đề hiệu quả.

🔗 https://github.com/SeanPrashad/leetcode-patterns

9. Clean Code JavaScript

Repository này lấy cảm hứng từ cuốn sách “Clean Code” của Robert C. Martin, áp dụng các nguyên tắc của lập trình sạch vào JavaScript. Đây là một tài nguyên tuyệt vời cho bất kỳ ai muốn viết mã nguồn sạch, dễ hiểu và bảo trì. Các ví dụ trong repository giúp bạn thấy rõ cách áp dụng lý thuyết vào thực tế, từ đó nâng cao chất lượng mã nguồn của mình.

🔗 https://github.com/ryanmcdermott/clean-code-javascript

10. You-Dont-Know-JS

You-Dont-Know-JS

“You Don’t Know JS” là một series sách nổi tiếng giúp bạn hiểu sâu về JavaScript. Repository này chứa toàn bộ nội dung của series, được tổ chức theo từng cuốn sách, từ cơ bản đến nâng cao. Dù bạn đã có kinh nghiệm hay mới bắt đầu, series này sẽ giúp bạn khám phá các khía cạnh chưa biết của JavaScript và nâng cao kỹ năng lập trình của mình.

🔗 https://github.com/getify/You-Dont-Know-JS

11. coding-interview-university

Nó cung cấp một danh sách các tài liệu và nguồn học tập đã được chọn lọc kỹ lưỡng, thích hợp cho những ai đang chuẩn bị cho các buổi phỏng vấn lập trình hoặc muốn củng cố kiến thức cơ bản về khoa học máy tính.

🔗 https://github.com/jwasham/coding-interview-university

12. javascript-algorithms

Các thuật toán và cấu trúc dữ liệu sử dụng ngôn ngữ JavaScript kèm theo giải thích và liên kết đến các tài liệu tham khảo.

Bộ sưu tập này chứa các thuật toán và cấu trúc dữ liệu là lựa chọn hoàn hảo cho các lập trình viên muốn hiểu rõ cách hoạt động của các thuật toán và cách triển khai chúng một cách hiệu quả.

Nó là công cụ tuyệt vời cho cả việc học tập và chuẩn bị cho các buổi phỏng vấn.

🔗 https://github.com/trekhleb/javascript-algorithms

13. javascript-questions

Danh sách các câu hỏi (nâng cao) về JavaScript kèm theo giải thích.

Kho lưu trữ này bao gồm một loạt các câu hỏi về JavaScript, được thiết kế để kiểm tra và nâng cao hiểu biết của bạn về ngôn ngữ này.

Đây là nguồn tài nguyên tuyệt vời cho cả lập trình viên mới và giàu kinh nghiệm muốn mở rộng kiến thức về JavaScript.

🔗 https://github.com/lydiahallie/javascript-questions

14. front-end-interview-handbook

Kho lưu trữ này là một hướng dẫn toàn diện để chuẩn bị phỏng vấn Front End, bao gồm các câu hỏi kiểm tra, thử thách lập trình, và các khái niệm về thiết kế hệ thống.

Nó là sự lựa chọn lý tưởng cho các lập trình viên Front End đang chuẩn bị cho các buổi phỏng vấn kỹ thuật và muốn nâng cao kỹ năng giải quyết vấn đề.

🔗 https://github.com/yangshun/front-end-interview-handbook

15. tech-interview-handbook

Tech Interview Handbook cung cấp các tài liệu được chọn lọc kỹ càng để chuẩn bị cho phỏng vấn lập trình, bao gồm thuật toán, cấu trúc dữ liệu, và các kỹ thuật phỏng vấn.

Đây là nguồn tài nguyên quý giá cho các lập trình viên muốn chuẩn bị một cách hiệu quả cho các buổi phỏng vấn kỹ thuật.

🔗 https://github.com/yangshun/tech-interview-handbook

Kết luận

GitHub là một kho tài nguyên vô giá cho lập trình viên ở mọi cấp độ. Các repositories được liệt kê trong bài viết này cung cấp cả lý thuyết lẫn thực hành, giúp bạn nâng cao kỹ năng một cách toàn diện. Dù bạn đang ở giai đoạn nào trong hành trình lập trình, việc sử dụng hiệu quả các tài nguyên này sẽ giúp bạn tiến bộ nhanh chóng và đạt được mục tiêu của mình.

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

Xem thêm:

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

Non-Functional Requirements là gì và nó quan trọng như thế nào?

Non-Functional Requirements là gì

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

Chuyện là nhà mình có cái xô bể, chắp vá cũng được 7-8 lớp. Về bản chất, nó vẫn đựng nước được. Nhưng ngoài điểm đó ra, nó trông như đồ bỏ.

Mẹ mình thì vẫn khoái dùng cái xô này, và không nỡ vứt nó đi :3

Nhưng mỗi lần về quê mình lại chẳng muốn dùng nó tí nào? Kỳ cục zậy đó? Cùng là một cái xô bể, nhưng có người muốn dùng, có người không.

Đó là vấn đề của Quality of Service. Ánh xạ qua thế giới phần mềm, nó chính là Non-Functional Requirement 😎

1. Các loại requirement trong một dự án phần mềm

Như anh em đã biết, hoặc chưa biết: một giải pháp, một sản phẩm, hay một phần mềm nào đó đều có các yêu cầu cụ thể (requirement) cho các giải pháp, sản phẩm hay phần mềm đó.

Là một người làm Business Analyst, chúng ta sẽ làm rất nhiều thứ xoay quanh các requirement này.

Requirement thì có 4 loại:

  • Business Requirement
  • Stakeholder Requirement
  • Solution Requirement
  • Transition Requirement.

Bất kỳ phần mềm nào cũng vậy? Sinh ra đều phải có mục đích. Tức mỗi phần mềm đều có các yêu cầu của riêng nó. Mà các yêu cầu này không phải là ít.

Một phần mềm có rất-rất-rất nhiều yêu cầu. Nào là phải làm được cái này, cái kia, nào là phải đẹp, phải nhanh, phải abc, xyz…

Chính vì có quá nhiều requirement, xuất phát từ nhiều đối tượng khác nhau. Lộn xộn quá, nên người ta mới gom nó lại, rồi chia thành 4 loại requirement như trên, để anh em BA chúng ta có thể dễ dàng moi móc và quản lý được nó.

Cụ thể 4 loại nó như thế nào thì mình sẽ để dành nói ở bài sau. Bài này mình sẽ tập trung nói về Solution Requirement.

Ô kê, Solution Requirement được chia nhỏ thành 2 loại sau:

  • Functional requirement
  •  Non-Functional requirement.

Có một số ví dụ cho anh em dễ hình dung hơn:

Ly nước:

  • Functional Req: ly đựng được nước
  • Non-Functional Req: ly rớt không bể.

Mũ bảo hiểm:

  • Functonal Req: có đèn chiếu sáng, nhấp nháy lòe loẹt trong đêm
  • Non-Functional Req: chịu được lực va đập lên tới 3000 Newton.

Ly chè đậu đen của bà Bảy đầu xóm:

  • Functional Req: chóng đói, bổ sung vitamin đậu đen.
  • Non-Functional Req: ăn xong có khăn giấy lau miệng, hoặc ăn xong không đau bụng.

Phần mềm ABCDXYZ:

  • Functional Req: quản lý thông tin khách hàng
  • Non-Functional Req: có nút Help – hướng dẫn người dùng online ngay trên hệ thống.

Đó là một vài ví dụ để anh em hình dung được thế nào là Functional Req và Non-Functional Req.

Vậy Functional Requirement là gì?

Functional Requirement

2. Functional Requirement là gì?

Functional Requirement là:

The capabilities that a solution must have in terms
of the behavior and information 
that the solution will manage

Trên là định nghĩa của BABOK, nhưng thôi, đọc nghe dài dòng tùm lum tùm la quá. Rút gọn lại anh em có thể hiểu Functional Requirement là những thứ mà giải pháp có thể làm được.

Hay cụ thể hơn, Functional Requirement là nói về: Behaviors và Functions (Hành vi và Chức năng) của giải pháp.

Ví dụ:

  • Ly thì phải đựng được nước
  • Mũ bảo hiểm phải có đèn phát sáng
  • Ly chè ăn zô là đỡ đói
  • Hệ thống ABCDXYZ quản lý được thông tin khách hàng.

Vậy còn lại.

  Thái cực trong lập trình - Functional Programming

  Functional programing nên và không nên

3. Non-Functional Requirement là gì?

BABOK ver3.0 định nghĩa Non-Functional Requirement như sau:

Not relate directly to the behaviour of functionality of the solution, but rather describe conditions under which a solution must remain effective or qualities that a solution must have.

Lại dài loằng ngoằng, nhưng không sao, đọc cũng dễ hiểu. Càng về sau BABOK định nghĩa càng dễ hiểu mà, hehe.

Non-Functional Requirement là những thứ:

  • Không liên quan trực tiếp tới hành vi – chức năng của giải pháp
  • Nhưng lại là các điều kiện giúp hệ thống chạy tốt và đảm bảo được chất lượng như yêu cầu.

Rút gọn 2 dòng trên, mình có cách định nghĩa trực quan hơn như sau:

Non-Functional Requirement = Quality of Services

Tức Non-Functional Requirement là những thứ liên quan đến CHẤT LƯỢNG sản phẩm.

Sản phẩm đó đáp ứng được mục đích sử dụng là 1 chuyện, nhưng nó phải đảm bảo tốt về mặt trải nghiệm người dùng thì mới thật sự đẳng cấp 😎

3.1. Non-Functional Requirement quan trọng đến mức nào?

Quay lại cái xô ở đầu bài. , là giải pháp để đựng nước và được dùng cho các mục đích khác nhau.

  • Functional Req của cái Xô là đựng được nước. Chỉ nhiêu đó thôi.
  • Còn Non-Functional Req của cái Xô là: xô làm bằng nhựa không giòn, phơi nắng không bể, không mọc rêu, không trơn, kiểu dáng thon gọn, vừa tay cầm.

Rõ ràng, cái xô ở nhà mình chỉ đạt được mỗi Functional Requirement, còn Non-Functional Requirement thì.. thấy gớm.

Mẹ mình thích dùng vì mẹ mình chỉ quan tâm đến Functional Requirement, tức là chức năng của nó, chỉ cần đựng được nước là được.

Còn mình không thích dùng vì nó không đáp ứng được Non-Functional Requirement, những requirement mà đáng lý ra một cái xô phải có. Đã zậy, còn lủng lỗ, chấp vá tùm lum tùm la, thấy ớn.

Điều này nói lên được vấn đề gì?

Nó nói lên được: User họ quan tâm điều gì?

À há…

Mấu chốt là ở chỗ này.

Nếu user giống mẹ mình, không care nhiều đến Non-Functional, ok anh em trong vùng an toàn.

Cứ thoải mái, chỉ cần cho hệ thống chạy được là được. Tức là hệ thống chỉ cần làm được những thứ mà khách hàng yêu cầu là được.

Còn nếu user giống mình, rất rất quan tâm đến Non-Functional thì…, well, có vẻ hơi mệt với anh em. Đối với họ, không những hệ thống phải chạy được, mà hệ thống còn phải chạy nhanh, gọn, và đẹp nữa.

Non-Functional Requirement

Và một khi mình nắm được mức độ kỳ vọng của users, mình sẽ biết cách làm họ hài lòng hơn.

Đã không ít lần mình và đồng bọn đang bon bon về đích, tưởng chừng sẽ Go-Live êm xuôi trót lọt. Mà phải khựng lại cả thảy 4-5 lần cũng chỉ vì cái chữ Non-Functional Requirement này.

Khách hàng liên tục complain về nhóm users sử dụng iPad nhập liệu quá lâu, và touch quá nhiều trên màn hình để có thể… hoàn thành được một giao dịch.

Hay việc tìm kiếm các keyword trên hệ thống cũng gặp trở ngại.

Ví dụ, có một dữ liệu mang tên: “Chú Bảy đẹp chai cute hột me tốt bụng”. Thì khi user nhập keyword: “đẹp chai me” thì hệ thống không tìm ra kết quả.

Nhưng nếu user nhập keyword: “đẹp chai cute hột me” thì kết quả mới nhả ra. Tức hiện tại hệ thống chỉ tìm được kết quả theo các keyword là một string theo đúng thứ tự từ trái sang phải.

Trong khi users họ lại muốn: chỉ cần nhập keyword “đẹp chai me”, thì hệ thống sẽ nhả ra tất cả các kết quả chứa 3 từ khóa “đẹp”“chai”, và “me” riêng biệt, không cần care đến thứ tự. Ví dụ:

  • Ông Sáu đẹp chai cute hột me khiêm tốn
  • ABC đẹp cute chai me hột khiêm tốn
  • XYZ đẹp me chai cute khiêm tốn hột…

Rõ ràng đó chính là các Non-Functional Requirement mà mình, một người BA không hề nắm được, cũng như không làm rõ ngay từ đầu, khiến cho anh em tốn khá nhiều effort để setup lại mọi thứ cho phù hợp với các “quality of services” này.

Đau thương, chỉ có thể chốt lại được bằng từ đau thương 😥

….

Do đó nếu có ai hỏi mình: Non-Functional Req quan trọng đến mức nào? Thì mình tự tin trả lời ngay: quan trọng như Functional Requirement vậy.

Non-Functional Requirement
Nhiều lúc chưa cần quan tâm behind the scenes chạy như thế nào, lớp front end mà chuối là users cũng bỏ chạy rồi 🙂

Mình tự tin đặt 2 thằng này ngang hàng nhau. Và đây thường là điểm GAP rất lớn giữa…

3.2. Non-Functional Requirement tạo ra GAP lớn giữa…

…anh em làm outsource và làm product.

Thường những người làm triển khai/ outsource – như mình không quan tâm nhiều đến các Non-Functional Requirement. Vì end user của các giải pháp mình làm thường không phải là “end consumer”.

Mà end user thì không phải trả tiền để sử dụng hệ thống, end consumer mới là người trả tiền để sử dụng hệ thống.

Tức là end consumer mới là người sử dụng thông qua hệ thống.

Ví dụ anh em outsource làm hệ thống quản lý khách sạn Millennium, thì end user của hệ thống này là các Quản trị viên của hệ thống, các nhân viên phòng ban. Tức họ là ai? Là người của khách sạn. Không phải khách hàng.

Họ sẽ dụng hệ thống như một công-cụ-trung-gian giúp họ quản lý khách sạn tốt hơn mà thôi.

Còn đối với anh em làm product. Product ở đây có thể là ứng dụng đặt phòng trực tuyến của khách sạn Millennium. End user chính là end consumer. Họ vừa là người dùng ứng dụng, vừa là người trả tiền để sử dụng dịch vụ của Millennium.

Do đó, vấn đề “quality of service” của ứng dụng, hay các yếu tố non-functional của ứng dụng có làm họ vui hay không? Có làm họ thấy thoải mái khi sử dụng hay không? Ứng dụng chạy mượt không? vâng vâng… luôn được chú trọng hàng đầu.

Những yếu tố này góp phần KHÔNG-HỀ-NHỎ trong việc khách hàng ra quyết định: có tiếp tục sử dụng dịch vụ nữa hay không.

Chưa kể, làm product phục vụ end consumer, anh em phải phục vụ tới hơn cả triệu người dùng. Chứ không phải lẻ tẻ vài ba chục, hay chỉ vài trăm người dùng như những hệ thống quản lý back-end.

Chắc hẳn anh em còn nhớ vụ Momo lắc lì xì.

Chỉ trong vòng một ngày 24/1, Momo phải chịu tải lên đến hơn 2 triệu lượt đăng nhập và lắc cùng một lúc. Tức là hơn 2 triệu lượt CCU (concurrent users). Điều này có nghĩa đội ngũ anh em Momo phải liên tục xử lý tình trạng tắt nghẽn server. Kinh khủng!

Hoặc lâu lâu app có vấn đề gì thì phải lo cắm đầu fix ngay, kể cả có holiday hay weekend.

Vì giả dụ anh em down cái app được quảng cáo thiệt ngon về xài, mà mới chạm có 3-4 cái thấy lag banh chành, nút bấm gì mà tùm lum tùm la. Thì ngay lập tức: app bị delete cái một, và suốt đời nằm gọn trong blacklist.

Do đó, đây là GAP không hề nhỏ, liên quan đến “tư duy hành nghề” của những anh em làm outsource muốn chuyển qua làm product. Tuy nhiên, miễn là đừng ẩu và luôn chú ý cẩn thận thì mình nghĩ GAP cũng không quá lớn 🙂

.

Ô kê, hi vọng mình đã chém đủ mạnh để anh em hiểu về tầm quan trọng của Non-Functional Requirement (NFR). Biết nó quan trọng, chúng ta sẽ chú ý đến nó hơn.

Chú ý kể cả khi anh em đang làm triển khai những SaaS nhé. Những Software as a Service như Dynamics 365 của Microsoft. Có những thứ NFR mà mình chẳng thể can thiệp được, ví dụ như Security hay Accessibility của những SaaS này.

Những yếu tố NFR này đều được các hãng build sẵn thành một gói để chúng ta tiện triển khai và sử dụng.

Tuy nhiên, BA cũng cần nắm rõ những yếu tố NFR này ngay từ đầu dự án để tránh out of scope sau này, cũng như giải thích trước cho khách hàng để họ hiểu những điểm mạnh và hạn chế của giải pháp (tránh đòi thêm sau này).

Những NFR này thì các hãng đều có sẵn official document, anh em có thể dễ dàng tìm thấy bằng cụ Gồ 🙂

Câu hỏi cuối cùng, Non-Functional Requirement (NFR) gồm những loại nào?

Phần dưới đây mình sẽ nói sơ lược về các loại NFR hay gặp nhất, từ những gì mình lượm lặt được trong quá trình làm việc cũng như chia sẻ từ các bậc tiền bối 😎

4. Các loại Non-Functional Requirement?

Sorry anh em, vì phần bốn này dài quá nên mình sẽ tách ra ở bài tiếp theo. Mình sẽ để link ở đây, vị trí này, anh em đón đọc nhé.

Phần này sẽ nói về các loại NFR, kèm các ví dụ cụ thể luôn cho anh em dễ hình dung 😎

Tóm tắt

Bài này mình sẽ đúc kết bằng những dòng sau cho anh em dễ nhớ:

  • Có 4 loại requirement: Business Req, Stakeholder Req, Solution Req và Transition Req (mình sẽ nói rõ hơn ở bài sau)
  • Solution Requirement gồm: Functional và Non-Functional Req.
  • Functional Requirement nói lên behaviors và functions của giải pháp (what the system do?)
  • Non-Functional Requirement nói lên quality of services của giải pháp (how the system work?)

Hẹn gặp anh em ở bài sau nhé 🙂

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

Xem thêm:

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