Home Blog Page 32

Giải mã bí quyết quản lý nhân viên IT là Gen Z thành công

Giải mã bí quyết quản lý nhân viên IT là Gen Z thành công

Thế hệ Gen Z (sinh từ năm 1995 đến 2012) đang dần chiếm lĩnh thị trường lao động, đặc biệt là trong lĩnh vực công nghệ. Với tư duy sáng tạo, khả năng thích ứng nhanh chóng và tinh thần trách nhiệm cao, Gen Z được kỳ vọng sẽ là nguồn nhân lực quan trọng cho sự phát triển của các doanh nghiệp.

Tuy nhiên, để quản lý nhân viên IT là Gen Z hiệu quả, các nhà quản lý cần có những hiểu biết và kỹ năng phù hợp. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về những đặc điểm tính cách, thói quen tìm việc để đưa ra các bí quyết quản lý nhân viên IT là Gen Z hiệu quả nhất.

Vì sao nhân sự Gen Z lại quan trọng đến vậy?

Theo số liệu của Tổng cục Thống kê, tại Việt Nam, số lượng Gen Z trong độ tuổi lao động (từ 15 tới 24 tuổi) vào năm 2019 là khoảng 13 triệu người. Tới năm 2025, Gen Z dự kiến sẽ chiếm 1/3 dân số trong độ tuổi lao động tại Việt Nam, và sẽ có ảnh hưởng lớn tới thị trường lao động trong nước.

bí quyết quản lý nhân viên IT là Gen Z

Dưới đây là một số số liệu cụ thể về nhân sự Gen Z trên thị trường lao động hiện nay:

  • Tỷ lệ Gen Z tham gia thị trường lao động: Theo một nghiên cứu của Anphabe, tỷ lệ Gen Z tham gia thị trường lao động tại Việt Nam năm 2023 là khoảng 25%.
  • Ngành nghề mà Gen Z quan tâm: Gen Z có xu hướng quan tâm đến các ngành nghề liên quan đến công nghệ, truyền thông, sáng tạo và giáo dục.
  • Yêu cầu về môi trường làm việc: Gen Z có xu hướng tìm kiếm môi trường làm việc linh hoạt, có cơ hội phát triển bản thân và được tôn trọng.

Với những số liệu trên, có thể thấy Gen Z đang dần trở thành lực lượng lao động chủ chốt tại Việt Nam. Các doanh nghiệp cần có những hiểu biết và kỹ năng phù hợp để thu hút và phát triển nhân sự Gen Z.

Những thách thức khi quản lý nhân viên IT là Gen Z 

Gen Z là thế hệ được biết đến với tư duy sáng tạo, khả năng thích ứng nhanh chóng và tinh thần trách nhiệm cao. Tuy nhiên, Gen Z cũng có những thách thức nhất định trong việc quản lý.

Một số thách thức phổ biến bao gồm:

  • Tính độc lập cao: Gen Z có tính độc lập cao. Họ không muốn bị kiểm soát chặt chẽ và muốn được tự do thể hiện bản thân. Điều này có thể khiến các nhà quản lý khó khăn trong việc giám sát và hướng dẫn công việc của họ.
  • Có nhu cầu được giao tiếp cao: Gen Z có nhu cầu được giao tiếp cao. Họ muốn được tham gia vào các cuộc thảo luận và được lắng nghe ý kiến của người khác. Điều này có thể khiến các nhà quản lý cần dành nhiều thời gian để trò chuyện và lắng nghe nhân viên của mình.
  • Mong muốn được thăng tiến nhanh chóng: Gen Z mong muốn được thăng tiến nhanh chóng. Họ muốn có cơ hội phát triển bản thân và khẳng định giá trị của mình. Điều này có thể khiến các nhà quản lý cần có kế hoạch phát triển nghề nghiệp rõ ràng cho nhân viên của mình.

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

  Các nguyên tắc 5W1H – 5W2H – 5W1H2C5M

Bí quyết nào để quản lý nhân viên IT là Gen Z thành công?

Để quản lý nhân viên IT là Gen Z hiệu quả, các nhà quản lý cần có những hiểu biết và kỹ năng phù hợp. Dưới đây là một số bí quyết cụ thể:

1. Tạo môi trường làm việc linh hoạt

Tạo môi trường làm việc linh hoạt

Tạo môi trường làm việc linh hoạt là một trong những bí quyết quan trọng để quản lý nhân viên IT là Gen Z hiệu quả. Có nhiều cách để tạo môi trường làm việc linh hoạt cho nhân viên IT là Gen Z. Dưới đây là một số gợi ý:

  • Cho phép nhân viên làm việc từ xa: Đây là cách đơn giản nhất để tạo môi trường làm việc linh hoạt cho nhân viên. Các nhà quản lý có thể cho phép nhân viên làm việc từ xa một phần hoặc toàn thời gian, tùy theo nhu cầu của họ.
  • Cho phép nhân viên làm việc theo giờ giấc linh hoạt: Các nhà quản lý có thể cho phép nhân viên linh hoạt về giờ giấc làm việc, miễn là họ hoàn thành công việc đúng deadline và hiệu quả.

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

2. Ưu tiên sức khỏe tinh thần

Gen Z là thế hệ sinh ra trong thời kỳ bùng nổ của công nghệ và internet, họ thường xuyên phải đối mặt với căng thẳng và áp lực từ công việc. Có nhiều cách để các nhà quản lý ưu tiên sức khỏe tinh thần cho nhân viên IT là Gen Z. Dưới đây là một số gợi ý:

  • Tạo môi trường làm việc tích cực: Các nhà quản lý cần tạo môi trường làm việc tích cực, nơi nhân viên cảm thấy được tôn trọng và được hỗ trợ.
  • Cung cấp các chương trình chăm sóc sức khỏe tinh thần: Các nhà quản lý có thể cung cấp các chương trình chăm sóc sức khỏe tinh thần cho nhân viên, chẳng hạn như tư vấn, trị liệu, hoặc các lớp học về quản lý căng thẳng.

3. Tạo cơ hội cho nhân viên phát triển bản thân

Tạo cơ hội cho nhân viên phát triển bản thân

Gen Z là thế hệ có nhu cầu được phát triển bản thân cao. Họ muốn học hỏi những điều mới và nâng cao kỹ năng của mình. Dưới đây là một số gợi ý:

  • Tổ chức các khóa đào tạo và hội thảo: Các nhà quản lý có thể tổ chức các khóa đào tạo và hội thảo để nhân viên có cơ hội học hỏi các kỹ năng mới.
  • Trao quyền cho nhân viên: Các nhà quản lý cần trao quyền cho nhân viên để họ có thể tự chủ trong công việc của mình. Điều này sẽ giúp nhân viên có cơ hội phát triển các kỹ năng lãnh đạo và quản lý.

4. Ưu tiên các đãi ngộ khác bên cạnh lương

Bên cạnh mức lương thì điều Gen Z quan tâm là các yếu tố như môi trường làm việc, sự cân bằng giữa công việc và cuộc sống, và cơ hội phát triển bản thân. Dưới đây là một số đãi ngộ khác bên cạnh lương mà các nhà quản lý có thể ưu tiên cho nhân viên IT là Gen Z:

  • Môi trường làm việc linh hoạt và cơ hội phát triển bản thân
  • Các lợi ích sức khỏe và phúc lợi: Gen Z quan tâm đến sức khỏe và phúc lợi của bản thân. Họ muốn được hưởng các lợi ích như bảo hiểm sức khỏe, bảo hiểm nhân thọ, và các chương trình chăm sóc sức khỏe khác.
  • Các hoạt động ngoại khóa: Gen Z quan tâm đến các hoạt động ngoại khóa. Họ muốn có cơ hội kết nối với nhau và giải tỏa căng thẳng.

5. Kế hoạch thăng tiến nghề nghiệp rõ ràng

Có kế hoạch thăng tiến nghề nghiệp là một trong những cách quan trọng để giữ chân nhân viên Gen Z. Gen Z là thế hệ có nhu cầu được thăng tiến nhanh chóng. Họ muốn có cơ hội phát triển bản thân và khẳng định giá trị của mình.

Kế hoạch thăng tiến nghề nghiệp rõ ràng

Các nhà quản lý cần có kế hoạch thăng tiến nghề nghiệp rõ ràng cho nhân viên IT là Gen Z. Kế hoạch này cần bao gồm các mục tiêu và thời hạn cụ thể. Các nhà quản lý cần thường xuyên đánh giá hiệu suất của nhân viên để đảm bảo họ đang đi đúng hướng để đạt được các mục tiêu của mình.

Tóm lại

Gen Z là thế hệ nhân viên có nhiều tiềm năng và đóng góp quan trọng cho sự phát triển của doanh nghiệp. Để thành công trong việc quản lý nhóm nhân viên IT Gen Z, việc tạo ra một môi trường thúc đẩy sự phát triển cá nhân và chuyên môn, cùng việc đưa ra mục tiêu rõ ràng và cơ hội thăng tiến là chìa khóa quan trọng. Sự linh hoạt trong cách tiếp cận, sự tận tâm trong việc hỗ trợ và định hình định hướng cho sự nghiệp của họ có thể thúc đẩy tinh thần làm việc và sự cam kết đối với công việc. Chúc bạn thành công!

Xem thêm:

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

Các Types (kiểu dữ liệu) trong TypeScript (P3)

Typescript cơ bản từ A đến Z cho người mới

Tác giả: Trần Anh Tuấn

Tiếp nối ở bài trước, chúng ta đã học được cũng nhiều kiến thức về Typescript rồi. Ở bài viết này chúng ta sẽ cùng tìm hiểu thêm về nhiều Types hay ho khác của Typescript như unionintersectionutilitiy,…

Lưu ý khi đặt tên Type hoặc Interface thì nên đặt tên dễ hiểu và chữ cái đầu IN HOA nhé. Ví dụ như Permissions, UserName, Role…

>> TypeScript là gì? Tại sao nên chọ TypeScript? << Đọc bài viết này để giải đáp

Union Type

Mình muốn tạo ra một Type có tên là Role để chứa các quyền của người dùng như là AdminGuest, và User. Người dùng sẽ có 1 trong 3 quyền này cho nên chúng ta sẽ viết nó như sau

type Role = "Admin" | "User" | "Guest";

Ngoài ra Union Type còn dùng khi khai báo kiểu dữ liệu cho biến mà mình có đề cập đến cho các bạn ở những bài trước như là

let age: number | string = '5';

Đi sâu hơn vào nó thì sẽ có một vài trường hợp như sau để các bạn nhớ. Vì là Union nghĩa là hoặc Type này hoặc Type kia.

type NetworkLoadingState = {
  state: "loading";
};
type NetworkFailedState = {
  state: "failed";
  code: number;
};
type NetworkState =
  | NetworkLoadingState
  | NetworkFailedState;
const state: NetworkState = {
    state: "loading"
  };
state.code = {};
// Property 'code' does not exist on type 'NetworkLoadingState'.

Mình khai báo 2 Types là NetworkLoadingState và NetworkFailedState, sau đó mình khai báo tiếp 1 Type là NetworkState là Union Type. Khi mình dùng const state: NetworkState thì mình sử dụng được là state bởi vì 2 Types đều có chung key là state.

Tuy nhiên khi mình dùng state.code thì lại báo lỗi, mình có ghi là bởi vì Union là hoặc cho nên có thể là nó chạy vào NetworkLoadingState, mà thằng này thì không có key là code.

function printId(id: number | string) {
  console.log(id.toUpperCase());
// Property 'toUpperCase' does not exist on type 'string | number'.
// Property 'toUpperCase' does not exist on type 'number'.
}

Một ví dụ khác khi khai báo params cho function và sử dụng các phương thức dựa vào params. Nếu là string thì có thể sử dụng .toUpperCase() tuy nhiên nếu là number thì sẽ không có các phương thức đó. Cho nên chương trình sẽ bắn ra lỗi ngay lập tức.

Để giải quyết vấn đề đó thì có thể kiểm tra Type của params dựa vào typeof như thế này

function printId(id: number | string) {
  if (typeof id === "string") {
    // In this branch, id is of type 'string'
    console.log(id.toUpperCase());
  } else {
    // Here, id is of type 'number'
    console.log(id);
  }
}

Intersection Type

Ngược lại với Union Type đó chính là Intersection Type(& và). Và Type này và Type kia. Nghĩa là sử dụng được hết toàn bộ các keys từ nhiều Types luôn.

type Student = {
  name: string;
  age: number;
}
type Person = {
  name: string;
}
type People = Person & Student;
const people: People = {
  name: 'xiaoming',
}
// Property 'age' is missing in type '{ name: string; }' but required in type 'Student'.

Như ví dụ trên thì các bạn sẽ thấy mình không truyền vào key là age nên chương trình sẽ báo lỗi ngay vì nó bắt buộc khi sử dụng Intersection Type. Một điều nữa là phải nhất quán khi khai báo nhé, chú ý age là number nhưng lại sử dụng là string cũng sẽ lỗi.

const people: People = {
  name: 'xiaoming',
  age: '24'
}
// Type 'string' is not assignable to type 'number'.

Một điều cuối, cẩn thận khi khai báo như thế này, khi các bạn không xác định Type cho key mà là một giá trị nào đó thì 2 Type đó không được trùng key, nếu không thì nó sẽ trả ra never, mà never chúng ta đã học ở bài phần 1 rồi.

Type never không gán được bất kỳ giá trị nào!

type Student = {
  name: 'evondev';
}
type Person = {
  name: 'tuanpzo';
}
type People = Person & Student; // never
// Error
const people: People = {
  name: 'xiaoming',
}

Tham khảo việc làm Typescript hấp dẫn tại TopDev

Utility Types

Utility types thì có rất nhiều tuy nhiên ở đây mình sẽ liệt kê kèm ví dụ minh họa cho các bạn những cái thông dụng thôi nhé.

Partial<Type>

Nó sẽ tạo ra một Type mới dựa vào Type gốc nhưng sẽ thay đổi toàn bộ keys thành optional(không bắt buộc dấu ?)

type Todo = {
  title: string;
  description: string;
};

function updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {
 return { ...todo, ...fieldsToUpdate };
}
updateTodo({ title: "test", description: "" }, { description: "test" });

Mình có type là Todo với 2 keys là bắt buộc, các bạn để ở chỗ fieldsToUpdate mình có dùng Partial<Todo> cho nên param fieldsToUpdate lúc này nó sẽ trông như code ở dưới.

Cho nên khi mình gọi hàm updateTodo thì param đầu tiên buộc phải đầy đủ title và description, tuy nhiên param thứ 2 thì mình chỉ cần truyền description là được rồi, không báo lỗi gì cả.

type Todo = {
  title?: string;
  description?: string;
};

Required<Type>

Ngược lại với Partial<Type> ở trên thì thằng này sẽ biến các keys thành bắt buộc, cho dù ban đầu nó là optional(?) đi chăng nữa

type Todo = {
  title?: string;
  description?: string;
};

function updateTodo(todo: Todo, fieldsToUpdate: Required<Todo>) {
  return { ...todo, ...fieldsToUpdate };
}
updateTodo({ title: "test", description: "" }, { description: "test" } Error);
// Property 'title' is missing in type '{ description: string; }' but required in type 'Required<Todo>'

Record<Keys, Type>

Nó sẽ tạo ra Type có các Keys và Value. Mình sẽ nói trường hợp đơn giản trước cho các bạn như này, nhìn vào rất dễ hiểu đúng không ? Keys là string và Value là Number.

const example: Record<string, number> = {
  a: 1,
  b: 2,
  c: 3,
};

Tiếp tục mình khai báo 2 Type tương ứng là CatInfo và CatName sau đó mình lại sử dụng Record để tạo ra các thông tin cho các chú mèo như sau. Lúc này từng chú mèo(CatName) sẽ có các thông tin như nhau(CatInfo) là age và breed. Quá xịn phải không nào.

type CatInfo = {
  age: number;
  breed: string;
}

type CatName = "miffy" | "boris" | "mordred";

const cats: Record<CatName, CatInfo> = {
  miffy: { age: 10, breed: "Persian" },
  boris: { age: 5, breed: "Maine Coon" },
  mordred: { age: 16, breed: "British Shorthair" },
};

Readonly<Type>

Như tên gọi của nó, sẽ làm cho các keys trở nên Readonly(chỉ đọc chứ không được sửa). Nhìn ví dụ cho dễ thông não nè.

Interface cũng tương tự như Type thôi. Mình sẽ nói chi tiết về sự khác nhau giữa chúng ở bài sau nhé.

interface Todo {
  title: string;
}

const todo: Readonly<Todo> = {
  title: "Delete inactive users",
};

todo.title = "Hello";
// Cannot assign to 'title' because it is a read-only property.

Pick<Type, Keys>

Pick nghĩa là chọn ra những keys mà các bạn muốn từ một Type nào đó. Đôi khi trong quá trình code có rất nhiều keys từ Type, nhưng chúng ta chỉ sử dụng vài cái trong đó, lúc này Pick<Type> là một lựa chọn tuyệt vời.

Mình lấy ra 2 keys là title và completed từ interface Todo

interface Todo {
  title: string;
  description: string;
  completed: boolean;
}

type TodoPreview = Pick<Todo, "title" | "completed">;

const todo: TodoPreview = {
  title: "Clean room",
  completed: false,
};

Omit<Type, Keys>

Ngược lại với Pick<Type, Keys> thì Omit<Type, Keys> sẽ lấy toàn bộ các keys từ Type nào đó sau đó loại bỏ ra một số keys(string hoặc union) không cần thiết.

interface Todo {
  title: string;
  description: string;
  completed: boolean;
  createdAt: number;
}

type TodoPreview = Omit<Todo, "description">;
// remove description
const todo: TodoPreview = {
  title: "Clean room",
  completed: false,
  createdAt: 1615544252770,
};

Extract<Type, Union>

Dùng để trích xuất Type từ Union Type

type T0 = Extract<"a" | "b" | "c", "a" | "f">; 
// type T0 = "a"
type T1 = Extract<string | number | (() => void), Function>; 
// type T1 = () => void

type Shape =
  | { kind: "circle"; radius: number }
  | { kind: "square"; x: number }
  | { kind: "triangle"; x: number; y: number };

type T2 = Extract<Shape, { kind: "circle" }>
// type T2 = { kind: "circle"; radius: number;}

Exclude<UnionType, ExcludedMembers>

Ngược lại với Extract ở trên thì nó sẽ loại bỏ những ExcludedMembers từ UnionType

// remove a
type T0 = Exclude<"a" | "b" | "c", "a">;
// type T0 = "b" | "c"

// remove a and b
type T1 = Exclude<"a" | "b" | "c", "a" | "b">; 
// type T1 = "c"

// remove Function
type T2 = Exclude<string | number | (() => void), Function>;
// type T2 = string | number;

NonNullable<Type>

Dùng để loại bỏ undefined và null ra khỏi Type

type T0 = NonNullable<string | number | undefined>;
// type T0 = string | number;

Tạm kết

Phần 3 tạm dừng ở đây nhé các bạn. Ở bài này chúng ta đã học thêm được khá nhiều Types mới rồi, kiến thức cũng có thêm 1 chút. Ở bài số 4 chúng ta sẽ tìm hiểu sự biệt giữa interface và type, cũng như tìm hiểu thêm về Mapped và Index Type cùng một số kiến thức liên quan tới chúng.

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

Nhiều bài học TypeScript hơn tại đây:

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

System Design là gì? Tìm hiểu quy trình System Design và các khái niệm liên quan

System Design là gì? Top 10 khái niệm System Design nên biết

System Design là một kỹ năng cần thiết đối với các kỹ sư phần mềm đang tham gia hay muốn xây dựng các ứng dụng phức tạp; nó đòi hỏi khả năng tư duy sáng tạo và có hệ thống về cách giải quyết vấn đề cũng như việc áp dụng kiến thức kỹ thuật để thực hiện các giải pháp một cách hiệu quả. Bài viết hôm nay chúng ta cùng nhau điểm qua top 10 khái niệm System Design mà mọi lập trình viên nên biết để có thể tự tin hơn khi tham gia vào các dự án lớn trong tương lai nhé.

System Design

System Design là gì?

System Design (thiết kế hệ thống) là quá trình xác định kiến trúc (architecture), thành phần (component), module và giao diện (interfaces) của một hệ thống để đáp ứng các yêu cầu cụ thể, cũng như xác định các công nghệ và công cụ sẽ được sử dụng để triển khai hệ thống.

Các bước trong quá trình System Design

Xác định yêu cầu

  • Thu thập yêu cầu: Liên hệ với khách hàng, người dùng, và các bên liên quan để hiểu rõ mong muốn và nhu cầu cụ thể của họ.
  • Phân tích yêu cầu: Xem xét và phân loại các yêu cầu thành yêu cầu chức năng (những gì hệ thống phải làm) và phi chức năng (hiệu suất, bảo mật, tính khả dụng).

Thiết kế cấp cao (High-Level Design)

High-Level Design (HLD) là bước quan trọng trong quá trình thiết kế hệ thống, nơi chúng ta xác định kiến trúc tổng thể và cấu trúc chính của hệ thống. Các bước chi tiết bao gồm:

  • Xác định kiến trúc hệ thống: Trong bước này, kiến trúc tổng thể của hệ thống được xác định. Hệ thống được chia thành các thành phần lớn, mỗi thành phần có chức năng riêng. Sử dụng các sơ đồ như sơ đồ kiến trúc, sơ đồ luồng dữ liệu (DFD), và sơ đồ quan hệ thực thể (ERD) để biểu diễn cấu trúc và mối quan hệ giữa các thành phần.
  • Xác định thành phần chính: Sau khi xác định kiến trúc, các thành phần chính của hệ thống được liệt kê và mô tả. Mỗi thành phần chính được xác định với vai trò và chức năng cụ thể trong hệ thống. Các mối quan hệ và cách tương tác giữa các thành phần này cũng được làm rõ.
  • Phân tích và mô hình hóa yêu cầu: Yêu cầu chức năng và phi chức năng của hệ thống được phân tích chi tiết. Các yêu cầu này được mô hình hóa bằng cách sử dụng các mô hình biểu diễn như Use Case để mô tả tương tác giữa người dùng và hệ thống.

Thiết kế cấp thấp (Low-Level Design)

Low-Level Design là bước tiếp theo sau HLD, nơi các thành phần và mô-đun của hệ thống được chi tiết hóa. Các bước chi tiết bao gồm:

  • Xác định chi tiết các thành phần: Các thành phần lớn từ HLD được chia nhỏ thành các mô-đun nhỏ hơn. Mỗi mô-đun được mô tả chi tiết về cách hoạt động và tương tác với nhau. Điều này đảm bảo rằng tất cả các phần của hệ thống đều được định rõ và có thể phát triển một cách độc lập.
  • Tạo biểu đồ lớp và biểu đồ tuần tự: Biểu đồ lớp được sử dụng để mô tả cấu trúc nội bộ của từng mô-đun. Biểu đồ tuần tự mô tả cách các đối tượng trong hệ thống tương tác qua từng bước. Những biểu đồ này giúp đảm bảo rằng tất cả các tương tác trong hệ thống đều được xác định rõ ràng và có thể thực hiện được.
  • Xác định giao diện và phương thức: Các giao diện giữa các mô-đun và các phương thức được sử dụng trong hệ thống được xác định rõ ràng. Điều này giúp đảm bảo rằng tất cả các mô-đun có thể tương tác với nhau một cách hiệu quả và không có sự xung đột.
  • Kiểm tra và xem xét thiết kế chi tiết: Thực hiện các bài kiểm tra mô phỏng để đảm bảo thiết kế hoạt động đúng như mong đợi. Đánh giá lại thiết kế để tìm và khắc phục bất kỳ lỗi hoặc điểm yếu nào. Điều này đảm bảo rằng thiết kế cuối cùng là chính xác và hiệu quả.

Kiểm tra và xác thực thiết kế

Thực hiện các bài kiểm tra mô phỏng để đảm bảo thiết kế hoạt động đúng như mong đợi. Đánh giá lại toàn bộ thiết kế để tìm ra và khắc phục các lỗi hoặc điểm yếu.

Triển khai và bảo trì

Đưa hệ thống vào sử dụng thực tế. Quá trình này có thể bao gồm việc cài đặt phần mềm, cấu hình hệ thống, và đào tạo người dùng. Liên tục giám sát, khắc phục lỗi, và cập nhật hệ thống để đảm bảo nó hoạt động ổn định và đáp ứng các yêu cầu mới.

10 khái niệm liên quan đến System Design

Scalability – Khả năng mở rộng

Khả năng mở rộng là khả năng của một hệ thống có thể xử lý tải tăng lên mà không làm giảm hiệu suất. Để làm được điều này thì khi thiết kế, các kỹ sư cần xem xét đến yếu tố liên quan đến việc phân chia dữ liệu, cân bằng tải và bộ nhớ đệm. 

Availability – Tính khả dụng

Tính khả dụng hay tính sẵn sàng là khả năng mà một hệ thống có thể duy trì hoạt động ngay cả khi một số thành phần bị lỗi. Để thiết kế được một hệ thống đảm bảo tính khả dụng thì bạn cần đến các yếu tố dự phòng, chuyển đổi dự phòng, kết hợp với việc hệ thống có khả năng chịu lỗi.

Consistency – Tính nhất quán

Tính nhất quán là một thuộc tính của hệ thống trong đó tất cả các nodes đều nhìn thấy cùng một dữ liệu tại cùng một thời điểm. Để đảm bảo được thuộc tính này, bạn cần xem xét đến yếu tố như sao chép dữ liệu, giao dịch phân tán và giải quyết xung đột.

3 tính chất trên được xem là những yếu tố cơ bản cần có khi thiết kế một hệ thống. Nó cũng được thường xuyên đề cập đến trong các định lý, lý thuyết khi xây dựng một hệ thống tiêu chuẩn. Chẳng hạn như định lý CAP; trong đó Partition Tolerance là khả năng chịu lỗi của hệ thống đề cập đến việc hệ thống đảm bảo phải hoạt động bình thường dù các kết nối của các node trong hệ thống bị đứt gãy.

Consistency trong system design

  Avalability vs Consistency

Partition – Phân vùng

Phân vùng là quá trình chia dữ liệu thành các phần nhỏ hơn và giúp dễ quản lý hơn. Các yếu tố như kiểu truy cập dữ liệu, phân phối dữ liệu và sao chép dữ liệu sẽ được xem xét đến khi bạn muốn thực hiện phân vùng dữ liệu trên hệ thống một cách hiệu quả.

Trong hệ thống cơ sở dữ liệu, Data Partitioning hay phân vùng dữ liệu thông thường được chia thành 2 loại:

  • Theo chiều ngang – còn được gọi là sharding là cách chia các hàng của bảng thành các bảng nhỏ hơn và lưu trữ trên các server
  • Theo chiều dọc – thực hiện chia các cột của bảng thành các bảng riêng biệt giúp giảm số lượng cột để nhằm cải thiện hiệu suất truy vấn

Load Balancing – Cân bằng tải

Cân bằng tải là quá trình phân phối lưu lượng mạng trên nhiều server để tránh tình trạng quá tải. Cân bằng tải đóng vai trò quan trọng đặc biệt trong các tình huống mà lưu lượng truy cập tăng đột biến hoặc khi lượng request đến các server không đồng đều. 

Để thực hiện cân bằng tải thì kỹ sư hệ thống thường áp dụng một số thuật toán để xác định phân phối lưu lượng truy cập đến như:

  • Round Robin: phân phối tuần tự, đồng đều các request
  • Least Connections: chỉ định request đến server có ít hoạt động nhất
  • IP Hash: Sử dụng hash-function để xác định máy chủ cho request dựa trên IP của khách

Load Balancing trong system design

Caching – Bộ nhớ đệm

Caching là một quá trình lưu trữ dữ liệu thường xuyên truy cập vào bộ nhớ để giúp truy cập nhanh hơn trong những lần sau. Bộ nhớ đệm là một lớp lưu trữ tốc độ cao, thông thường nằm giữa ứng dụng và nguồn dữ liệu. Khi dữ liệu được ứng dụng yêu cầu, hệ thống sẽ thực hiện tìm kiếm trong bộ đệm trước; nhờ có tốc độ truy xuất cao sẽ giúp tiết kiệm thời gian, tăng hiệu suất của xử lý. Nếu dữ liệu yêu cầu không được tìm thấy thì hệ thống mới xử lý đến bước tìm kiếm trong nguồn dữ liệu.

Nhắc đến System Design thì không thể không nhắc đến các thiết kế kiến trúc phổ biến hiện nay bao gồm Monolith, SOA và Microservices. Trong đó Monolith là một mô hình truyền thống phù hợp với các dự án quy mô nhỏ. Các hệ thống hiện nay để đáp ứng được với nhu cầu tăng cao và sự tích hợp của nhiều dịch vụ khác nhau thì SOA và Microservices được ưu tiên lựa chọn.

Caching trong system design

Tham khảo việc làm Database hấp dẫn tại TopDev!

Microservices

Microservices là một cách tổ chức các ứng dụng như một tập hợp các dịch vụ được liên kết một cách lỏng lẻo và có thể triển khai một cách độc lập. Mỗi service trong hệ thống sẽ đảm nhận một phần chức năng hoặc domain cụ thể trong ứng dụng và có thể giao tiếp với các service khác thông qua các APIs được quy định trước. Để xây dựng được kiến trúc Microservices, chúng ta cần quan tâm xem xét đến các yếu tố như ranh giới giữa các dịch vụ con cùng khả năng giao tiếp giữa chúng.

SOA – Service-Oriented Architecture

Kiến trúc hướng dịch vụ là một cách tiếp cận thiết kế phần mềm mà trong đó các ứng dụng được xây dựng như một tập hợp các dịch vụ. Khác biệt chính giữa SOA và Microservices là phạm vi áp dụng: trong khi SOA thường được áp dụng đối với phạm vi các doanh nghiệp nơi các ứng dụng giao tiếp với nhau thì Microservices hướng đến việc phát triển các ứng dụng nơi mà giao tiếp giữa các thành phần trong một ứng dụng.

DNS – Domain Name System

Domain Name System

Hệ thống phân giải tên miền DNS là thành phần cơ bản của cơ sở hạ tầng Internet giúp dịch các tên miền thành địa chỉ IP tương ứng. Mỗi doanh nghiệp, tổ chức có thể có những địa chỉ tên miền nội bộ mà chỉ được sử dụng trong phạm vi doanh nghiệp, vì vậy khi thiết kế hệ thống, chúng ta cùng cần xây dựng DNS riêng cho doanh nghiệp đó tương ứng.

CDN – Content Delivery Network

Mạng phân phối nội dung CDN là một mạng lưới gồm các máy chủ được kết nối với nhau giúp tăng tốc độ tải trang Web cho các ứng dụng tiêu tốn nhiều dữ liệu. Khi người dùng truy cập vào một trang Web, dữ liệu từ máy chủ của trang Web đó phải di chuyển trên mạng Internet để đến được máy tính của người dùng; nếu như người dùng ở xa so với máy chủ đó thì sẽ mất nhiều thời gian tải những nội dung lớn như tệp, hình ảnh, văn bản, … Để giải quyết vấn đề này, các nội dung trên sẽ được lưu trữ trên các máy chủ CDN gần hơn với người dùng theo địa lý để giảm thời gian tải và tăng tốc độ truy cập trang Web.

Trên đây là khái niệm thiết kế hệ thống – Design System là gì, các bước cơ bản để xây dựng một hệ thống và top 10 khái niệm về System Design cơ bản nhất mà mọi kỹ sư hệ thống đều phải nắm được. Hy vọng bài viết hữu ích dành cho bạn và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

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

Giải bài toán về dãy con tăng dài nhất trong JavaScript

Giải bài toán về dãy con tăng dài nhất trong JavaScript

Trong khoa học máy tính, dãy con tăng dài nhất là một trong những bài toán quy hoạch động kinh điển và được ứng dụng rộng rãi trong việc giải quyết các bài toán về sắp xếp lịch trong thực tế. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về bài toán này, về thuật toán quy hoạch động và cách triển khai nó trong ngôn ngữ lập trình JavaScript nhé.

Bài toán dãy con tăng dài nhất

Dãy con tăng dài nhất – Longest Increasing Subsequence (LIS) là một bài toán với mục đích tìm ra dãy con dài nhất có thể của một dãy cho trước, trong đó các phần tử của dãy con đó được sắp xếp theo thứ tự tăng dần. Các phần tử trong dãy con này không nhất thiết phải liền kề hoặc duy nhất.

Bài toán dãy con tăng dài nhất

Ví dụ ở hình trên, với đầu vào (input) là một mảng số gồm 8 phần tử thì đầu ra (output) mong muốn của bài toán sẽ là 2 mảng con thỏa mãn yêu cầu cùng độ dài bằng 4.

Bài toán dãy con đơn điệu tăng dài nhất có biến thể đơn giản nhất là bài toán dãy con đơn điệu giảm dài nhất và thực tế là 2 bài toán này được xem là một. Ứng dụng của bài toán này trong thực tế có rất nhiều, nhất là trong các vấn đề về sắp xếp và lập lịch. Một ví dụ nổi bật là bài toán bố trí phòng khách sạn như sau:

Yêu cầu: Có n khách cùng đặt 1 phòng khách sạn, khách i nhận phòng vào thời điểm A(i) và trả phòng ở thời điểm B(i). Hãy bố trí khách vào phòng đó sao cho phục vụ được nhiều khách nhất có thể. Lưu ý bài toán giả định chỉ có 1 phòng và có thể dễ dàng mở rộng cho nhiều phòng bằng cách sắp xếp lần lượt từng phòng.

Bài toán dãy con tăng dài nhất

Chúng ta có thể chuyển yêu cầu trên về bài toán dãy con tăng dài nhất bằng cách sắp xếp các khách đặt phòng theo thời điểm kết thúc B(i) tăng dần. Khách i sẽ được sắp xếp vào phòng sau khách j khi và chỉ khi j < iB(j) < A(i). Kết quả đầu ra từ thuật toán sẽ cho chúng ta mảng con số lượng khách tối đa có thể đặt được phòng.

Bài toán dãy con tăng dài nhất được xếp vào một trong những bài toán quy động động kinh điển, vì thế để giải bài toán này trước tiên chúng ta cùng tìm hiểu về thuật toán này nhé.

  Thuật toán tìm kiếm nội suy trong JavaScript

  Bạn biết gì về thuật toán Radix Sort trong JavaScript?

Phương pháp quy hoạch động

Quy hoạch động là một kĩ thuật thiết kế thuật toán theo kiểu chia bài toán lớn thành các bài toán con, sử dụng lời giải của các bài toán con để tìm lời giải cho bài toán ban đầu giúp chúng ta tối ưu thời gian thực hiện thuật toán. Khác với đệ quy thì quy hoạch động sẽ tính toán lời giải của các bài toán con trước và lưu vào mảng bộ nhớ; tiếp đó dùng lời giải của bài toán con trong mảng đã tính trước đó để giải bài toán theo công thức truy hồi.

Bài toán dãy con tăng dài nhất

Thuật toán quy hoạch động gồm 3 bước:

  1. Tìm công thức đệ quy biểu diễn nghiệm tối ưu của bài toán lớn thông qua nghiệm tối ưu của các bài toán con
  2. Tổ chức dữ liệu lưu kết quả tính toán
  3. Dựa vào kết quả ghi nhận truy vết tìm ra nghiệm tối ưu

Tham khảo việc làm JavaScript tại Hồ Chí Minh trên TopDev

Áp dụng phương pháp quy hoạch động vào bài toán dãy con tăng dài nhất, chúng ta sẽ xác đinh công thức quy hoạch động như sau:

Đề bài: Cho dãy số A với n phần tử, yêu cầu tìm ra dãy con tăng dài nhất

A(i1), A(i2), … A(ik) thỏa mãn i1<i2<….<ikA(i1)<A(i2)<….A(ik)

Gọi F(i) là dãy con tăng dài nhất kết thúc ở A(i), ta có công thức đệ quy:

F(1) = 1

F(i) = max(F(j) + 1) với j thỏa mãn điều kiện 1<=j<iA(j)<A(i)

Kết quả đầu ra bài toán sẽ là giá trị lớn nhất của trong mảng F.

Ví dụ như sau:

Mảng A 1 11 2 10 4 5 2 1
Mảng F 1 2 2 3 3 4 2 1

Kết quả đầu ra cho ví dụ trên thì dãy con tăng dài nhất sẽ có độ dài = 4; mảng đầu ra sẽ là [1, 2, 4, 5]

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

Triển khai code JavaScript

Source code tham khảo triển khai giải thuật dành cho bài toán dãy con tăng dài nhất bằng JavaScript các bạn có thể tham khảo dưới đây:

export default function dpLongestIncreasingSubsequence(sequence) {
  const lengthsArray = Array(sequence.length).fill(1);

  let previousElementIndex = 0;
  let currentElementIndex = 1;

  while (currentElementIndex < sequence.length) {
    if (sequence[previousElementIndex] < sequence[currentElementIndex]) {
      const newLength = lengthsArray[previousElementIndex] + 1;
      if (newLength > lengthsArray[currentElementIndex]) {
        lengthsArray[currentElementIndex] = newLength;
      }
    }

    previousElementIndex += 1;

    if (previousElementIndex === currentElementIndex) {
      currentElementIndex += 1;
      previousElementIndex = 0;
    }
  }

  let longestIncreasingLength = 0;

  for (let i = 0; i < lengthsArray.length; i += 1) {
    if (lengthsArray[i] > longestIncreasingLength) {
      longestIncreasingLength = lengthsArray[i];
    }
  }

  return longestIncreasingLength;
}

Giá trị trả về longestIncreasingLength là độ dài của dãy con lớn nhất thỏa mãn yêu cầu đề bài. Để lấy ra được giá trị mảng con, chúng ta cần triển khai thêm bước truy vết lấy từng phần tử từ dãy đầu vào theo thứ tự ngược lại của vòng lặp, các bạn có thể tự triển khai thêm nhé.

Chi phí thời gian thực hiện giải thuật này là O(n log n) với n là độ dài mảng đầu vào.

Kết bài

Như vậy qua bài viết này chúng ta đã cùng nhau tìm hiểu về bài toán về dãy con tăng dài nhất và cách giải quyết nó bằng thuật toán quy hoạch động cùng cách triển khai bằng ngôn ngữ lập trình JavaScript. Hy vọng bài viết hữu ích dành cho các bạn và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

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

Hàng loạt việc làm IT hấp dẫn trên TopDev đang chờ bạn ứng tuyển..

Cảnh báo 6 ‘red flags’ khi tìm việc mà bạn nên tránh ngay

Cảnh báo 6 red flags khi tìm việc mà bạn nên tránh ngay

Trong bối cảnh thị trường tuyển dụng cạnh tranh như hiện nay, việc tìm được một công việc ưng ý là mong ước của nhiều người. Tuy nhiên, tìm việc chưa bao giờ dễ dàng, nếu không “khó tính” ngay từ đầu thì bạn rất dễ gặp phải những công ty “độc hại”, làm ảnh hưởng đến cả sự nghiệp sau này.

Do đó, để không phải “rước họa vào thân”, bạn cần biết cách nhận diện những red flags khi tìm việc. Nằm lòng những cảnh báo dưới đây sẽ giúp bạn tránh các rắc rối sau này đấy.

Các ‘red flags’ khi tìm việc và nộp CV

Nếu bạn là một người tinh ý thì ngay từ JD tuyển dụng bạn đã có thể phát hiện ra các red flags. Dưới đây là một số manh mối bạn có thể quan tâm khi đọc thông tin tuyển dụng.

Thông tin tuyển dụng mập mờ

Thông tin tuyển dụng mập mờ là một dấu hiệu cảnh báo phổ biến khi tìm việc. Thông tin tuyển dụng mập mờ thường không cung cấp đầy đủ thông tin về vị trí, yêu cầu, và quyền lợi. Điều này có thể khiến bạn gặp khó khăn trong việc xác định liệu vị trí đó có phù hợp với bạn hay không.

red flags khi tìm việc

Dưới đây là một số ví dụ về thông tin tuyển dụng mập mờ:

  • Mô tả công việc không rõ ràng: Mô tả công việc chỉ ghi chung chung là “nhân viên kinh doanh”, “kỹ sư phần mềm”, “nhân viên marketing”, mà không nêu rõ công việc cụ thể là gì, yêu cầu kỹ năng và kinh nghiệm gì, và quyền lợi được hưởng ra sao.
  • Yêu cầu không rõ ràng: Yêu cầu tuyển dụng không cụ thể, chẳng hạn như “có kinh nghiệm”, “trình độ cao”, “có kỹ năng mềm tốt”, mà không nêu rõ kinh nghiệm, trình độ, và kỹ năng cụ thể là gì.
  • Quyền lợi không rõ ràng: Quyền lợi được hưởng không cụ thể, chẳng hạn như “lương cao”, “thưởng hấp dẫn”, “được đào tạo”, mà không nêu rõ mức lương, mức thưởng, và chương trình đào tạo cụ thể là gì.
  • Hoặc nhiều nơi sẽ liệt kê một vài yêu cầu và kỹ năng đơn giản sau đó để mức lương thật cao để gây sự chú ý.

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

  Resume là gì? Résume khác CV như thế nào?

“Làm những công việc khác theo yêu cầu”

Nếu bạn đọc mô tả công việc thấy cụm từ “… và làm những công việc khác theo yêu cầu” thì hãy đặt dấu chấm hỏi. Điều này có thể là bất lợi cho bạn khi nhận việc vì cụm từ khá ẩn ý và không rõ ràng, bạn có thể sẽ phải làm những công việc nằm ngoài chuyên môn và tệ hơn là làm ngoài giờ.

Bên cạnh đó, điều này cũng cho thấy công ty thiếu chuyên nghiệp, chưa xác định rõ những công việc mà vị trí đang tuyển dụng sẽ đảm nhận là gì. Hoặc công ty đang che giấu một điều gì đó mà chỉ khi bắt đầu nhận việc bạn mới được biết.

Các red flags khi đi phỏng vấn

Khi đã tìm được một tin tuyển dụng phù hợp, bạn ứng tuyển và được gọi đến vòng phỏng vấn. Tại đây, ngoài việc thể hiện năng lực bản thân bạn cũng cần đặt các câu hỏi để kiểm tra công ty có dấu hiệu gì bất thường hay không.

Nhà tuyển dụng hời hợt, thiếu tôn trọng ứng viên

Quá trình tuyển dụng không chỉ quan trọng với ứng viên mà còn rất quan trọng với doanh nghiệp vì nó sẽ mang lại giá trị cho công ty. Do đó, nếu nhà tuyển dụng hời hợt, phỏng vấn “cho có” thì đây là một dấu hiệu red flags khi tìm việc bạn cần chú ý.

red flags khi tìm việc

Dưới đây là một số ví dụ về nhà tuyển dụng hời hợt, thiếu tôn trọng ứng viên:

  • Đến muộn, không chuẩn bị: Nhà tuyển dụng đến muộn cho cuộc phỏng vấn, không có hồ sơ ứng viên, hoặc chỉ hỏi những câu hỏi chung chung, không liên quan đến vị trí ứng tuyển.
  • Thái độ thờ ơ, thiếu tôn trọng: Nhà tuyển dụng có thái độ thờ ơ, không quan tâm đến ứng viên, hoặc có những lời nói hoặc hành động thiếu tôn trọng.
  • Không trả lời phản hồi của ứng viên: Nhà tuyển dụng không phản hồi email hoặc cuộc gọi của ứng viên sau khi phỏng vấn.

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

Phản bác ý kiến của ứng viên một cách toxic

Một red flags khi tìm việc khác là luôn bị người phỏng vấn bày tỏ thái độ tiêu cực mỗi khi trình bày quan điểm. Chẳng hạn như khi bạn nói về những điểm mạnh của mình thì người phỏng vấn sẽ cho đó là những điều cơ bản, ai cũng có và mong chờ nhiều hơn vào nó.

Với một môi trường làm việc toxic, không công nhận năng lực ứng viên bạn sẽ luôn cảm thấy thấp kém và năng lực phát triển bị kìm hãm. Do đó, bạn hãy thật thận trọng khi lựa chọn làm ở những công ty red flags như thế này.

Đưa ra offer lương và hối thúc quyết định ngay

Thông thường các công ty sẽ đưa ra mức offer và cho ứng viên thời gian suy nghĩ, nếu ứng viên cảm thấy phù hợp họ sẽ thông báo kết quả phỏng vấn qua mail sau. Còn nếu nhân sự tuyển dụng đưa ra mức offer và hối thúc bạn nhận việc ngay trong buổi phỏng vấn rất có thể công ty này đang che giấu điều gì đó.

red flags khi tìm việc

Một lý do có thể hợp lý là họ đang cố gắng ép bạn nhận mức lương thấp hơn mức bạn xứng đáng, do tâm lý sợ việc rơi việc vào tay người khác nên bạn sẽ đồng ý. Hoặc có thể công ty có văn hóa làm việc không tốt, họ không muốn bạn có thời gian suy nghĩ nên hối thúc bạn nhanh chóng nhận việc.

Nhà tuyển dụng “mập mờ” về câu trả lời cho câu hỏi của bạn

Một red flags khi tìm việc nữa mà các ứng viên cần lưu ý là nhà tuyển dụng phớt lờ hoặc trả lời không rõ ràng câu hỏi của bạn. Bạn hãy hỏi khéo léo các câu hỏi có tính chất cởi mở như mức lương, cam kết thời gian làm việc, định hướng của công ty,… nếu người phỏng vấn gạt các thắc mắc của bạn sang một bên thì rất có thể họ đang che giấu điều gì đó.

Tóm lại

Thông tin tuyển dụng mập mờ, công việc được phân công không rõ ràng, nhà tuyển dụng hời hợt, thiếu tôn trọng ứng viên,… là những red flags khi tìm việc phổ biến bạn nên chú ý. Những dấu hiệu này có thể cho thấy công ty đó có văn hóa làm việc độc hại, thiếu tôn trọng nhân viên, hoặc không có kế hoạch rõ ràng.

Nếu bạn gặp phải những red flags này, bạn nên cân nhắc kỹ trước khi ứng tuyển. Bạn có thể hỏi thêm thông tin từ các nguồn khác, chẳng hạn như nhân viên cũ của công ty, hoặc từ các trang web đánh giá công ty. Bạn cũng có thể từ chối nhận việc nếu bạn cảm thấy rằng công ty không phù hợp.

Nắm chắc trong tay những dấu hiệu red flags trong bài viết này để “thuận buồm xuôi gió” trên đường sự nghiệp bạn nhé. Chúc bạn tìm việc thành công!

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

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

Typescript cơ bản từ A đến Z cho người mới (Phần 2)

Typescript cơ bản từ A đến Z cho người mới (Phần 2)

Tác giả: Trần Anh Tuấn

Tiếp nối với Typescript cơ bản phần 1 ở bài trước, chúng ta đã cài đặt và tìm hiểu một số Types cơ bản rồi. Ở bài này chúng ta sẽ tiếp tục tìm hiểu tiếp những Types mới nhé.

Any Type

Type any là Type mà các bạn có thể điền vào giá trị gì cũng được, và có thể thay đổi sang bất kỳ giá trị nào khác cũng được. Thông thường một dự án người ta sẽ có một vài thiết lập không cho phép dùng thằng any này luôn. Vì khi dùng any là chúng ta sẽ không biết nó sẽ có kiểu như thế nào cả.

Tuy nhiên nó vẫn được dùng một số chỗ khi chúng ta chưa biết dữ liệu trả về sẽ là kiểu gì. Hoặc là những bạn mới học không biết cách dùng những Types khác cho nên cứ lạm dụng thằng any này, cứ chỗ nào báo lỗi Types là thay thành any hết là toang thật sự

let myName: any = "evondev";
myName = 30;
myName = false;

Như ví dụ trên đây là mình dùng biến myName với Type là any gán giá trị là string, sau đó mình đổi nó thành number và boolean nhưng vẫn không lỗi. Vậy nếu muốn nó vừa là string, boolean và number thì thay vì dùng any thì chúng ta có thể dùng Union Type như đã học ở bài trước như sau sẽ hay hơn

let myName: string | number | boolean = "evondev";
myName = 30;
myName = false;

Tips: Muốn code Typescript giỏi thì hãy cố gắng hạn chế dùng any nhất có thể các bạn nhé.

Unknown Type

Về cơ bản thì thằng unknown này khá giống với any những cũng không giống lắm. Như mình đề cập ở trên thì any là bất kỳ cái gì cũng được. Còn unknown là chưa xác định được(chỗ này giống any) tuy nhiên khi chúng ta cho nó một giá trị ví dụ là string thì việc tiếp theo chúng ta cần làm là kiểm tra Type của biến đó thông qua thằng typeof. Mình sẽ ví dụ cho các bạn như sau cho dễ hiểu

let myName: unknown;
myName = "frontend developer";
// hover -> myName: unknow;

Nếu các bạn viết như dòng dưới đây là sẽ báo lỗi ngay dù các bạn đã gán cho nó một giá trị có kiểu string.

let myName: unknown;
myName = "frontend developer";
console.log(myName.includes("developer")); // Error
// 'myName' is of type 'unknown'.

Để khắc phục thì chúng ta sẽ viết lại đoạn code như thế này.

Lưu ý: Đối với any thì không cần kiểm tra bằng typeof nó cũng không báo lỗi. Và cũng sẽ không gợi ý các phương thức cho giá trị tương ứng. Như ở đây là chuỗi thì sẽ không gợi ý các phương thức như includes chẳng hạn.

let myName: unknown;
myName = "frontend developer";
if (typeof myName === "string") {
 console.log(myName.includes("developer"));
}

Trong quá trình các bạn làm việc, chắc chắn các bạn sẽ gặp Type unknown này. Cho nên cần kiểm tra Type của giá trị thông qua typeof cho chắc nhé.

  Hướng dẫn cách Debug TypeScript trên Visual Studio Code

  Nguyên lý SOLID trong Node.js với TypeScript

Never Type

Như tên gọi của nó nghĩa là không bao giờ xảy ra, đọc vào khá là khó hiểu nhưng thực ra nó cũng dễ hiểu như thế này. Mình sẽ liệt kê các trường hợp của nó bao gồm

  • Hàm bắn ra lỗi nào đó và không có return
  • Hàm có sử dụng vòng lặp vô tận và cũng không có return
  • Never Type không có bất kỳ một giá trị nào cả
function throwError(errorMsg: string): never {
 throw new Error(errorMsg);
}

function keepProcessing(): never {
 while (true) {
 console.log("I always does something and never ends.");
 }
}
let nothing: never = null; // Error: Type 'null' is not assignable to type 'never'

Void Type

Type void thường được dùng cho hàm mà không có return về cái gì cả. Khi các bạn viết hàm mà không có từ khóa return ấy. Còn nếu khi các bạn gán giá trị cho biến sử dụng void thì chỉ có thể sử dụng undefined thôi. Còn nếu các bạn thay những Types khác như number, boolean, string… vào thì sẽ ra lỗi ngay

function sayHi(): void {
    console.log('Hi!')
}

let speech: void = sayHi(); 
console.log(speech); // undefined
let nothing: void = undefined;
let num: void = 1; // Error Type 'number' is not assignable to type 'void'.

Có một điểm các bạn cần lưu ý là Type void thì có thể gán giá trị là undefined. Còn Type never thì không nhé.

let something: void = undefined;
let nothing: never = undefined; // Error: Type 'undefined' is not assignable to type 'never'.

Tham khảo việc làm Typescript hấp dẫn tại TopDev

Tuple Type

Về cơ bản thì thằng Tuple này khá là giống mảng nhưng mà nó sẽ cố định số lượng và đi kèm Types tương ứng. Và khi chúng ta sử dụng thì phải sử dụng đúng cấu trúc khai báo nếu không nó sẽ báo lỗi. Ở dưới là các bạn thấy students1 là dùng đúng cách, còn students2 và students3 là dùng sai.

const students1: [string, number] = ["evondev", 30];
const students2: [string, number] = [30, "evondev"]; // Error: Type 'number' is not assignable to type 'string'. Type 'string' is not assignable to type 'number'.
const students3: [string, number] = [30, false]; // Error Type 'boolean' is not assignable to type 'number'.

Vì nó giống mảng cho nên là chúng ta có thể truy xuất các giá trị thông qua index và sử dụng các phương thức của mảng như pushpopshift… Tuy nhiên các giá trị đưa vào phải đúng Types mà chúng ta đã khai báo từ đầu

const students1: [string, number] = ["evondev", 30];
students1[0];
students1[1];
students1.push(2);
students1.push('evondev');
students1.push(false); // Error: Argument of type 'boolean' is not assignable to parameter of type 'string | number'.

Chúng ta có thể khai báo Tuples phức tạp hơn một chút với mảng như sau, tùy thuộc vào yêu cầu của bài toán thôi nhé.

const students: [number, string][] = [
  [1, "a"],
  [2, "b"],
  [3, "c"],
];

Enum Type

Enum Type là một cách để định nghĩa một nhóm các giá trị có thể được sử dụng như một kiểu dữ liệu. Enum Type giúp rõ ràng hơn khi làm việc với các giá trị cố định và giúp tránh việc sử dụng các giá trị “magic number” (số ma thuật) trong code.

Số ma thuật là các con số mà các bạn sử dụng trong code nhưng khi đọc vào chúng ta không hiểu nó nghĩa là gì.

Ví dụ khi sử dụng setTimeout và chúng ta truyền vào thời gian như thế này, nhìn vào chúng ta không hề biết 1000*60*60 nghĩa là gì cả. Thì giá trị 1000*60*60 ở đây người ta gọi là Magic Number.

setTimeout(() => {
  // code
}, 1000 * 60 * 60);

Để khắc phục thì chúng ta sẽ thường đưa nó vào một biến sử dụng từ khóa const như là thế này. Những thứ về thời gian như giờ phút giây lại có thể gom chung vào một nhóm các giá trị tạm gọi là thời gian(Time) cũng khá là hợp lý. Thì gom chung vào như thế nào thì có thể sử dụng enum Type.

const SECOND = 1000;
const MINUTE = SECOND * 60;
const HOUR = MINUTE * 60;
setTimeout(() => {
  // code
}, HOUR);

Để định nghĩa một enum Type trong TypeScript, các bạn sử dụng từ khóa enum và liệt kê danh sách các giá trị của enum đó. Ví dụ dưới đây mô tả một enum type có tên là Time:

enum Time {
  SECOND,
  MINUTE,
  HOUR
}

Trong ví dụ trên, enum Time có ba giá trị là SECONDMINUTE, và HOUR. Mặc định, TypeScript gán các giá trị cho enum bằng cách sử dụng các số nguyên tăng dần bắt đầu từ 0. Do đó, SECOND sẽ có giá trị 0, MINUTE có giá trị 1 và HOUR có giá trị 2.

Khi sử dụng enum Type, các bạn có thể khai báo một biến với kiểu dữ liệu là enum và gán cho nó một trong các giá trị của enum đó. Ví dụ:

enum Time {
  SECOND,
  MINUTE,
  HOUR
}
const oneHour: Time = Time.HOUR;

Nếu các bạn muốn enum bắt đầu từ một giá trị khác, các bạn có thể gán như sau:

enum Time {
  SECOND = 1000,
  MINUTE = 1000 * 60,
  HOUR = 1000 * 60 * 60
}
const oneHour: Time = Time.HOUR;

Ở trên là ví dụ đơn giản thôi. Bây giờ mình sẽ thêm một vài ví dụ khác về trường hợp không dùng enum nó sẽ trông như thế nào nhé

import React from "react";

const Component = () => {
  const [tab, setTab] = useState("recent");
  return (
    <div>
      <div className="tab-list">
        <div
          className={`tab-item ${tab === "recent" ? "active" : ""}`}
          onClick={() => setTab("recent")}
        ></div>
        <div
          className={`tab-item ${tab === "popular" ? "active" : ""}`}
          onClick={() => setTab("popular")}
        ></div>
        <div
          className={`tab-item ${tab === "latest" ? "active" : ""}`}
          onClick={() => setTab("latest")}
        ></div>
      </div>
    </div>
  );
};

export default Component;

Các bạn chưa cần hiểu đoạn code React( nếu các bạn chưa học React ), nhưng các bạn hãy nhìn vào chỗ recentpopularlatest là những chữ có tính lặp đi lặp lại nhiều lần, tụi nó đều có thể gom chung vào một nhóm các giá trị đại diện cho các Tabs trong trường hợp này. Ta có thể đưa nó vào enum Type và sử dụng lại như sau.

import React from 'react';
enum TabKey  
  RECENT= 'recent',
  POPULAR= 'popular',
  LATEST= 'latest',
}
const Component = () => {
  const [tab, setTab] = useState<TabKey>(TabKey.RECENT);
  return (
    <div>
      <div className="tab-list">
        <div className={`tab-item ${tab === TabKey.RECENT ? 'active' : ''}`} onClick={() => setTab(TabKey.RECENT)}></div>
        <div className={`tab-item ${tab === TabKey.POPULAR ? 'active' : ''}`} onClick={() => setTab(TabKey.POPULAR)}></div>
        <div className={`tab-item ${tab === TabKey.LATEST ? 'active' : ''}`} onClick={() => setTab(TabKey.LATEST)}></div>
    </div>
   </div>
  );
};

export default Component;

Và các bạn thấy rằng các giá trị trong enum không nhất thiết phải là số, mà cũng có thể là chuỗi. Thông thường thì họ sẽ đặt key là IN HOA và giá trị tùy thuộc vào logic của bài toán có thể là số, chuỗi in thường, chuỗi IN HOA…

Khi các bạn viết như trên thì cái tab các bạn dùng chỉ có thể là 1 trong 3 giá trị đã khai báo mà thôi. Nếu các bạn truyền vào cho tab 1 giá trị khác thì nó sẽ báo lỗi. Còn nếu các bạn không dùng enum mà để như cách ban đầu thì các bạn có thể thay giá trị thoải mái mà không báo lỗi gì.

Thì tất nhiên code của các bạn sẽ không rõ ràng, không biết các Tabs sẽ có những tên gì, vì điền gì vào cũng được. Còn muốn bổ sung thêm tab mới chỉ cần đơn giản là thêm vào chỗ enum TabKey nữa mà thôi là ngon lành cành đào.

Tạm kết

Phù ‍ Chúng ta tạm dừng phần 2 ở đây nhé. Ở phần này chúng ta cũng đã học thêm được nhiều kiến thức mới rồi bao gồm: anyunknownenumtuplenever và void.

Phần enum có vẻ sẽ là khá khó hiểu đối với các bạn, nên có gì cứ bình luận nhé. Mình biết mình sẽ giúp đỡ cho các bạn. Cám ơn các bạn và chúc các bạn một ngày tốt lành.

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

Xem thêm:

C Developer là gì? Tiềm năng phát triển của lập trình viên C

C Developer là gì? Tiềm năng phát triển của một lập trình viên C

Trong thời điểm hiện nay khi có rất nhiều ngôn ngữ lập trình được sinh ra với nhiều tính năng phục vụ cho lập trình viên hơn bao giờ hết thì vẫn còn đó một cái tên dù đã ra đời gần 40 năm mà vẫn luôn lọt top những ngôn ngữ lập trình phổ biến nhất, đó là ngôn ngữ C.

Lập trình viên C hay C Developer luôn có một chỗ đứng vô cùng vững chắc trong giới lập trình nhờ sự hiểu biết chuyên sâu về kiến thức lập trình cũng như nắm vững được về hệ thống và cả thiết bị phần cứng. Bài viết hôm nay chúng ta cùng tìm hiểu về C Developer và trả lời cho câu hỏi có nên trở thành lập trình viên C trong giai đoạn hiện nay hay không nhé.

Ngôn ngữ lập trình C

C là một ngôn ngữ lập trình phổ biến nhất thế giới nhờ sự đơn giản và linh hoạt khi sử dụng nên nó được ứng dụng trong rất nhiều hệ thống và mục đích khác nhau. C có lịch sử lâu đời, ra mắt từ những năm 1970 và có nhiều nhánh phát triển cũng như các ngôn ngữ kế thừa khác nhau. Với những đặc điểm đó thì C được xem là ngôn ngữ mẹ của nhiều ngôn ngữ lập trình khác, và thường được lựa chọn giảng dạy làm nền tảng cho các khóa học lập trình. 

C Developer là gì?

Hiện nay có rất nhiều ngôn ngữ cùng các thư viện, framework hỗ trợ dành cho lập trình viên; tuy nhiên C vẫn đã và đang đóng góp vai trò lớn trong nhiều lĩnh vực. Ứng dụng của C bao gồm:

  • Sử dụng để phát triển các ứng dụng hệ thống
  • Sử dụng rộng rãi trong các hệ thống nhúng
  • Sử dụng để phát triển các phần mềm ứng dụng nổi tiếng như Adobe, trình duyệt Chromium của Google hay trong hệ quản trị CSDL MySQL,…
  • Sử dụng để phát triển các hệ điều hành như OSX của Apple, Windows của Microsoft,…
  • Sử dụng để phát triển các trình biên dịch
  • Sử dụng rộng rãi trong các thiết bị IoT

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

  Các kiểu dữ liệu trong lập trình C/C++ (Data type)

C Developer là gì?

C Developer hay lập trình viên C là những kỹ sư chuyên sử dụng ngôn ngữ lập trình C/C++ nhằm phát triển và cải thiện các tính năng trên phần mềm. Cũng như những lập trình viên nói chung, C Developer là người phải nắm rõ được nền tảng ngôn ngữ lập trình C cùng với các thư viện, framework tùy thuộc vào nền tảng và yêu cầu của dự án.

Công việc hàng ngày của một lập trình viên C bao gồm:

  • Tham gia phân tích, đề xuất nghiệp vụ dựa trên nền tảng hiểu biết về ngôn ngữ C
  • Viết code xây dựng ứng dụng, review code
  • Tham gia kiểm thử, viết các unit test nếu cần thiết
  • Nâng cấp, sửa chữa, sửa lỗi các ứng dụng có sẵn
  • Nghiên cứu, tìm hiểu phát triển các công nghệ, tính năng mới để áp dụng vào dự án

C Developer là gì?

Để đáp ứng được những công việc trên, một lập trình viên C cần có những kỹ năng tương ứng bao gồm:

  • Kỹ năng lập trình: nắm vững nền tảng lập trình C là một yêu cầu bắt buộc. C là một ngôn ngữ dễ học nhưng sẽ khó để nắm được hết các kiến thức chuyên sâu. Vì vậy bạn cần phải có thời gian tích lũy và thường xuyên trau dồi kỹ năng lập trình C.
  • Cấu trúc dữ liệu và giải thuật: đối với C thì việc hiểu biết và áp dụng những cấu trúc dữ liệu cùng việc triển khai các giải thuật là việc vô cùng quan trọng. Ngoài ra là kiến thức liên quan đến con trỏ (pointer) cơ bản và nâng cao là một trong những đặc trưng của họ nhà C (từ C/C++ đến C#).
  • Kiến thức về hệ thống: C thường được lựa chọn để làm ngôn ngữ xây dựng các ứng dụng giao tiếp với hệ thống, vì vậy lập trình viên cũng cần trang bị kỹ năng liên quan đến xử lý đầu ra, đầu vào (I/O process), thao tác với file, quản lý bộ nhớ, hiểu về Process, Thread hay multi Thread trong C.
  • Kỹ năng teamwork: bao gồm những kỹ năng giao tiếp, trao đổi, khả năng thuyết trình, khả năng kết hợp với các thành viên khác để cùng giải quyết vấn đề. Lập trình viên ở bất cứ ngôn ngữ nào cũng cần làm việc trong một team phát triển, vì thế nếu bạn không có khả năng hợp tác cùng người khác thì sẽ không thể làm việc được.
  • Sử dụng các tool quản lý source code và issues: việc thành thạo sử dụng các tool quản lý version source code như Git, SVN,… hay các phần mềm quản lý tasks, issues sẽ giúp bạn nhanh chóng làm việc trong dự án. Đây cũng là yêu cầu cơ bản để giúp lập trình viên có thể làm việc được.

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

Có nên trở thành lập trình viên C trong giai đoạn hiện nay

Hiện nay có rất nhiều ngôn ngữ lập trình cùng những thư viện, framework hỗ trợ xây dựng, phát triển ứng dụng rất nhanh và được nhiều công ty, tổ chức lựa chọn. Với những ứng dụng xây dựng bằng ngôn ngữ C đòi hỏi khá nhiều công sức xây dựng, cùng với đó là sự cần thiết phải hiểu biết chuyên sâu về hệ thống khiến con đường trở thành một C Developer sẽ dài hơn và gian nan hơn so với các ngôn ngữ khác.

C Developer là gì?

Tuy nhiên, trong tất cả các bảng xếp hạng ngôn ngữ lập trình phổ biến hay được sử dụng nhiều nhất thì C luôn có mặt trong top 10 nhờ hiệu suất, sự linh hoạt và khả năng làm được nhiều thứ của nó. Dưới đây là những lý do mà bạn nên lựa chọn C là một hướng đi cho sự nghiệp lập trình của mình:

  • C là ngôn ngữ cơ sở của nhiều ngôn ngữ khác, vì thế nếu học tốt C thì bạn sẽ dễ dàng học thêm tiếp các ngôn ngữ lập trình khác. Ngoài ra với lịch sử gần 40 năm phát triển thì cộng đồng C cũng vô cùng lớn mạnh, sở hữu rất nhiều mã nguồn là các chương trình, hệ thống nổi tiếng mà bạn có cơ hội tiếp cận khi làm C Developer.
  • C là ngôn ngữ có hiệu suất cao, nó có thể chạy mượt mà trên các hệ thống giới hạn về phần cứng như bộ nhớ hay dung lượng RAM, ROM. Vì thế C là ngôn ngữ chính trong các hệ thống nhúng, các thiết bị thông minh trong hệ sinh thái IoT hay các trình quản lý thiết bị driver.
  • Với sự phát triển của các thiết bị thông minh cùng kết nối Internet vạn vật (IoT) thì việc làm dành cho C Developer là rất phong phú và có tiềm năng phát triển cao.
  • Mức đãi ngộ dành cho lập trình viên C cao hơn do đây là một ngôn ngữ ít được lựa chọn hơn. Các công việc lập trình C đòi hỏi sự tìm hiểu chuyên sâu, vì thế đi kèm với đó cũng là việc các công ty, tổ chức tuyển dụng sẽ có những mức lương cao hơn dành cho vị trí này.

Kết bài

Mỗi ngôn ngữ lập trình đều được sinh ra với mục đích riêng dành cho việc phát triển phần mềm, ứng dụng; với sự phát triển gần 40 năm qua thì C vẫn là một ngôn ngữ lập trình được ưu chuộng cho đến hiện nay, điều đó chứng tỏ việc trở thành một C Developer là một lựa chọn tốt dành cho những bạn có ý định và yêu thích ngôn ngữ này. Hy vọng bài viết hữu ích dành cho bạn, hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

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

Hướng dẫn cách Debug TypeScript trên Visual Studio Code

Hướng dẫn cách Debug TypeScript trên Visual Studio Code

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

Debug là một kỹ năng mà bất kỳ developer nào cũng nên biết, thậm chí là phải giỏi. Dù bạn phát triển ứng dụng nhỏ xíu tới ứng dụng to đùng, bạn khó tránh gặp lỗi trong quá trình viết code. Đó là lúc kỹ năng debug vào việc.

Nếu bạn sử dụng Android Studio, Xcode hay Visual Studio… để phát triển ứng dụng thì việc đặt breakpoint khi debug rất đơn giản.

Nhưng với các ứng dụng kiểu như Node.JS, ReactJS, Vue… sử dụng Visual Code để viết, đặc biệt là ứng dụng đó sử dụng TypeScript làm ngôn ngữ lập trình, bạn sẽ gặp đôi chút khó khăn.

Bài viết này, mình sẽ chỉ cho bạn cách thiết lập môi trường phát triển với VS Code để debug dễ dàng.

Để các bạn dễ hình dung hơn, chúng ta sẽ tiến hành thực hiện từ lúc tạo project tới lúc debug typescript nhé.

Tạo project NodeJS mới để thực hành cấu hình debug TypeScript

Tạo một thư mục để chứa mã nguồn dự án, đặt tên là “vscode-typescript-debugging”.

Sau đó, tạo thư mục src và thêm tệp “app.ts” với nội dung sau:

import { hello } from './hello';

class App {
    /** Entry point of our app */
    public static start() {
        console.log(hello('world'));
    }
}

App.start();

Thêm một tệp “hello.ts” vẫn trong thư mục src

/** Say hello */
export const hello = (name: string) => {
    const greeting = `Hello ${name}!`;
    return greeting;
};

Với bài viết này, dự án của chúng ta chỉ cần như vậy là đủ, không cần phức tạp quá.

Ngoài ra, bạn có thể tham khảo cách tạo dự án NodeJS tự động bằng công cụ CLI tại đây.

  Code ví dụ TypeScript, hướng dẫn tạo project TypeScript

  Typescript vs Javascript: Nên chọn ngôn ngữ nào?

TypeScript compiler

Sau khi tạo dự án xong, bước tiếp theo là cần biên dịch mã TypeScript thành mã javascript. Bạn nên nhớ, trình duyệt chỉ hiểu được 3 ngôn ngữ: HTML, CSS và Javascript. Do đó, dù bạn viết ứng dụng bằng bất kỳ ngôn ngữ gì đi chăng nữa thì cuối cùng cũng phải complile chuyển nó về 3 ngôn ngữ trên.

Trong thư mục chính của dự án, bạn thêm tệp cấu hình “tsconfig.json” với nội dung như sau:

{
    "compilerOptions": {
        "outDir": "./out",
        "rootDir": "./src",
        "sourceMap": true,
        "moduleResolution": "node",
        "target": "es5"
    }
}

Đây là những option cơ bản nhất cho trình biên dịch TypeScript, nếu bạn cần cấu hình thêm các options khác nữa thì có thể tham khảo tài liệu chính thức tại đây.

Điểm mấu chốt trong đoạn cấu hình trên là bạn phải bật option sourceMap thành true. Những tệp sourceMap được tạo ra để làm ánh xạ giữa TypeScript với Javascript khi debug.

Note: Nếu bạn đã cài đặt TypeScipt theo phạm vi global bằng lệnh: npm i -g typescript , bạn hoàn toàn có thể sử dụng câu lệnh tsc để biên dịch mã typescript. Câu lệnh tsc sẽ biên dịch mã typescript theo các option trong tệp tsconfig.json thành tệp javascript và lưu vào thư mục out.

Tham khảo việc làm Typescript hấp dẫn tại TopDev

NPM-Scripts

Phần tiếp theo, chúng ta tạo tệp “package.json”, đây là tệp cấu hình chung của cả dự án. Tất cả các dự án Node.JS đều cần phải có tệp này.

Cách tạo tệp package.json bằng lệnh như sau:

npm init –yes

Sau đó, chúng ta cài đặt Typescript cho dự án

npm install typescript --save-dev

Nội dung của tệp package.json sẽ như sau:

{
  "name": "vscode-typescript-debugging",
  "version": "1.0.0",
  "devDependencies": {
    "typescript": "^2.7.2"
  },
  "scripts": {
    "start": "node out/app.js",
    "prestart": "npm run build",
    "build": "tsc"
  }
}

Mình sẽ giải thích ngắn gọn nội dung trong thẻ scripts. Thẻ này để chúng ta định nghĩa các câu lệnh npm. Ví dụ như ở trên, thẻ "start" tức là khi bạn gõ: npm start. Chương trình sẽ thực hiện câu lệnh tương ứng: node out/app.js (đây là câu lệnh để chạy ứng dụng). Tương tự cho các thẻ khác như “prestart“, “build“.

Chạy ứng dụng Node

Mở cửa sổ lệnh tại  thư mục của dự án và gõ lệnh:

npm start

OK, vậy là chương trình đã chạy, giờ bạn muốn debug thì làm thế nào? Mời bạn xem tiếp bước sau.

Debugging

Vẫn trong thư mục dự án, bạn tạo thêm thư mục “.vscode” và thêm tệp ‘launch.json” với nội dung như sau:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Build Project",
            "program": "${workspaceFolder}\\src\\app.ts",
            "preLaunchTask": "npm: build",
            "sourceMaps": true,
            "smartStep": true,
            "internalConsoleOptions": "openOnSessionStart",
            "outFiles": [
                 "${workspaceFolder}/out/**/*.js"
           ]
        }
    ]
}
Note: Trong nhiều trường hợp, khi bạn chuyển sang thẻ debug trên Visual Code, nếu bạn chưa tạo tệp launch.json thì VS Code cũng tự động tạo sẵn cho bạn.

Mình sẽ giải thích ngắn gọn nội dung cấu hình ở trên:

  • program: địa chỉ tệp chính của ứng dụng. Ở đây là tệp app.ts
  • preLaunchTask: gọi lệnh build trong package.json, mình hiểu là trước khi chạy ứng dụng thì cần phải complie typescript thành javascript đã.
  • sourceMaps: true, tức là sử dụng sourcemap trong thư mục “out”.
  • smartStep: true, tức là bỏ qua “uninteresting” code trong debugger (ví dụ các đoạn mã compiled JS-files)
  • internalConsoleOptions: Mở debug console khi bắt đầu debug.
  • outFiles: Nơi trình debug tìm kiếm các tệp sourcemaps.

Ok, vậy là chúng ta đã cấu hình xong, giờ để debug typescript, bạn làm như bình thường, đặt breakpoint và chạy chương trình để gọi dòng code mà bạn vừa đặt breakpoint.

Debug TypeScript trên Visual Studio Code

Breakpoints có điều kiện

Phần này mình nói thêm thôi, bạn thường sử dụng breakpoint có điều kiện khi cần debug các vòng lặp. Bạn có muốn cứ phải ấn F8 để bỏ qua bước lặp này, và chờ cho  tới bước lặp mà bạn muốn không? Nếu vòng lặp có hàng nghìn bước thì sao? Đây là lúc cần tới breakpoint có điều kiện.

Với breakpoint có điều kiện, bạn có thể sử dụng “Expression” hoặc “Hit Count” để làm điều kiện.

  • Expression: Giống như câu điều kiện if thôi, nếu biểu thức trả về kết quả true thì breakpoint tại đó.
  • Hit Count: Số lần gọi dòng code đó cho tới khi đạt chỉ số hit count thì breakpoint dừng lại.

Debug TypeScript trên Visual Studio Code

Tạm kết

VS Code thực sự là một trình Text Editor nhỏ nhưng vô cùng mạnh, cung cấp rất nhiều tùy chọn để bạn phát triển dự án, đặc biệt là các dự án liên quan tới Javascript.

Mình hi vọng bài viết hướng dẫn debug typescript này sẽ  có ích cho bạn.

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

Xem thêm:

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

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

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

Xamarin Developer là vị trí lập trình mobile, với sự giúp sức của Xamarin, iOS và Android giờ đây sẽ được build nhanh chóng với 1 lần code.

Vậy anh em nếu muốn trở thành Xamarin Developer cần có những kì năng nào? Bài viết này sẽ cung cấp cho anh em danh sách các kiến thức cần học, từng bước để trở thành Xamarin developer.

Bắt đầu thôi anh em!

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

1. Kỹ năng tổng quan

Kỹ năng tổng quan hay còn gọi là General Development Skills, đây là những kiến thức và kỹ năng cơ bản anh em cần có trước khi muốn trở thành Xamarin Developer. Đây là những kĩ năng cơ bản cần có. Cụ thể bao gồm:

    • GIT, anh em cần có kiến thức cơ bản về git, repo, push, pull. Làm sao có thể share code với anh em khác, làm sao checkout nhánh cần làm
    • REST API, chưa bàn tới các kiến thức khác như GraphQL hay gRPC. Các method anh em cần biết: GET, POST, PUT, PATCH, DELETE, OPTIONS
    • Kế tới là kết nối, cấu hình cho application (Application Settings & Configurations)

Lộ trình trở thành Xamarin Developer
Nguồn ảnh / Source: guru99.com
Trên đây chỉ là một số kỹ năng cơ bản, kiến thức cơ bản anh em cần xem lại, hệ thống lại. Nếu anh em nào chưa biết có thể xem qua các topics dưới đây:

  Biết chọn gì đây? Flutter, React Native hay Xamarin?
  Web Developer là gì? Lộ trình để trở thành Web Developer

2. XAML

Xamarin Developer thường xuyên làm việc với XAML, chính vì vậy những kiến thức liên quan tới XAML là bắt buộc. Trước khi vào thực hành code với Xamarin, anh em cần có kiến thức cơ bản với các khái niệm thường sử dụng trong XAML.

Đơn cử như:

    • One-way data binding
    • Two-way data binding

Lộ trình trở thành Xamarin Developer
Với các khái niệm dưới đây, cách tốt nhất để học là anh em đọc kỹ từng khái niệm, sau đó hiểu sâu về từng khái niệm. Cuối cùng là thực hành với project Xamarin thực tế.

    • Data bindings
    • Behaviors
    • Effects
    • Controls
    • Accessibility
    • Control Templates
    • Custom Renderers

Việc tìm hiểu có thể mất thời gian, tuy nhiên nếu không đi qua từng khái niệm, anh em sẽ bị miss kiến thức. Việc trở thành Senior developer sau này sẽ khó khăn hơn. Chính vì vậy từng khái niệm đều cần được tìm hiểu kĩ càng và nghiên cứu sâu.

3. Nguyên tắc cơ bản (Fundamentals)

Sau khi đã đi qua các khái niệm và kiến thức nền tảng, giờ là lúc hiểu về các nguyên tắc cơ bản của Xamarin. Trước tiên để trở thành Xamarin developer, tất nhiên anh em cần biết về Xamarin framework. Kế tới là các kiến thức về Async, Await. Vì Xamarin hỗ trợ developer cả iOS và Android, nên anh em cũng cần biết linking với iOS và Android như thế nào.

    • Understanding Xamarin Platform
    • Sharing code overview
    • Async / Await in Xamarin
    • Linking Xamarin.iOS Apps
    • Linking on Android
    • Cross-Platform File IO for iOS, Android
    • Consuming RESTful Services
    • App Lifecycle
    • Working with layouts
    • Android
        • Basic of AXML layout
        • Understanding the Android Application Manifest
        • [Activities and Intents]
    • iOS
        • [Understanding of iOS Terms: App Delegate, View, ViewController, Protocol]
        • Design a UI in iOS: using Storyboards, NIBs, Code

Lộ trình trở thành Xamarin Developer
Nguồn ảnh/ Source: learn.microsoft.com

Nhìn danh sách cũng anh em cũng không cần quá stress, cứ theo nguyên tắc chia để trí. Với từng topic sẽ chia nhỏ ra để xem. Đơn cử như Understanding Xamarin Platform. Anh em có thể tách ra thành nhiều topics để xem:

    • Xamarin sử dụng làm gì?
    • Kiến trúc Xamarin
    • Xamarin hoạt động như thế nào?

4. MVVM (Model View ViewModel)

Sau khi đã hiểu Xamarin hoạt động như thế nào, chắc chắn anh em sẽ nghe tới khái niệm MVVM. Xamarin dựa trên MVVM/

    • Dependency Injection
        • Autofac sử dụng cho .NET Core, ASP.NET Core, .NET.
        • Ninject con này nhẹ, nhanh và hỗ trợ tốt cho .NET applications.
        • TinyIoC dễ sử dụng, không quá rắc rối.
    • Navigation
    • Commands
    • Converters
    • Validation

Lộ trình trở thành Xamarin DeveloperĐể hiểu về MVVM, kiến thức cần tìm hiểu trước là .NET Core, ASP.NET Core. Phần Navigation, Commands cũng cần được tìm hiểu trước khi sử dụng MVVM trong project thực tế. Anh em lưu ý đây là phần kiến thức quan trọng cần nắm vững. Xamarin dựa trên MVVM, nên nếu không hiểu MVVM là gì sẽ là thảm hoạ.

5. MVVM frameworks

Sau khi đã hiểu MVVM là gì, tiếp tới là các frameworks có sử dụng MVVM. Các framework này dựa trên mô hình MVVM, tuy nhiên sẽ có sự khác biệt giữa các frameworks.

    • Prism
    • MVVMCross
    • MVVMLight
    • FreshMVVM
    • ReactiveUI – con này hỗ trợ model-view-viewmodel đa nền tảng cho toàn bộ .NET platforms, xây dựng dựa trên functional programming.
    • Fabulous MVU F# Functional App Development, sử dụng UI động

Các framework đều có package nuget được publish, anh em có thể tham khảo các base source code có sử dụng framework.

Cầm framework về, cài vào, thứ nhất là học, thứ hai là mò xem mình phù hợp nhất với framework nào thì đào sâu vào framework đó!

6. Data Access

Kết nối dữ liệu. Xamarin Developer chắc chắn không chỉ làm việc với mỗi UI, UX. Chính vì vậy, kiến thức liên quan tới Data Access cũng cần được quan tâm.

    • Databases
        • SQLite dựa trên ngôn ngữ C, ưu điểm là nhanh, nhẹ và gọn ,engine là SQL database.
        • Realm hỗ trợ tốt cho mobile, tương tự như SQLite & Core Data.
        • LiteDB A .NET con này là NoSQL, lưu trữ 1 file khá tốt.
    • Plugins
        • Akavache lưa trên đĩa và lưu theo kiểu key-value, dựa trên SQLite3, hỗ trợ tốt cho cả web và mobile.
    • ORM
        • SQLite-Net.PCL
        • EntityFramework Core
    • PaaS
        • Azure mobile apps có thể sync Xamarin app với Azure Mobile App.

Lộ trình trở thành Xamarin Developer7. Tham khảo

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

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

Xem thêm:

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

Các Types (kiểu dữ liệu) trong TypeScript (P1)

Typescript cơ bản từ A đến Z cho người mới (Phần 1)

Tác giả: Trần Anh Tuấn

Bài viết này mở đầu chuỗi series học TypeScript từ căn bản. Phần 1: Giới thiệu một số kiểu dữ liệu đơn giản trong TypeScript.

Typescript là gì?

Typescript là gì? Typescript là một ngôn ngữ lập trình mã nguồn mở được phát triển bởi Microsoft. Nó là một phiên bản mở rộng của Javascript, giúp làm cho việc phát triển ứng dụng web và ứng dụng quản lý code Javascript trở nên dễ dàng và hiệu quả hơn.

Typescript cung cấp các tính năng mới và cải tiến so với Javascript, bao gồm kiểu dữ liệu tĩnh, cú pháp mở rộng, các khái niệm của lập trình hướng đối tượng và hỗ trợ cho việc viết mã theo mô hình module.

Nói tóm gọn lại là Typescript giúp chúng ta viết code được tường minh hơn, dễ bảo trì và dễ tái sử dụng hơn.

Cài đặt Typescript

Bước 1: Đầu tiên các bạn cần cài đặt NodeJS, các bạn vào trang chủ của NodeJS sau đó tải bản LTS để đảm bảo tính ổn định nhé.

Bước 2: Sau khi cài đặt NodeJS thành công các bạn có thể kiểm tra bằng việc mở VSCode Terminal(ctrl + `) lên và gõ lệnh node -v.

Tiếp đến là cài đặt Typescript thông qua lệnh sau trong VSCode Terminal.

npm install -g typescript

Lệnh trên sẽ cài đặt TypeScript toàn cục trên máy tính của bạn.

Bước 3: Để kiểm tra xem đã cài đặt thành công hay chưa thì các bạn gõ thêm lệnh sau để xem nó có hiển thị ra version hay không.

tsc --version

Bây giờ mở VSCode lên, các bạn tạo một file bất kỳ(ví dụ: typescript.ts) và chúng ta bắt đầu học những thứ cơ bản về Typescript thôi nào.

  Typescript vs Javascript: Nên chọn ngôn ngữ nào?

  Nguyên lý SOLID trong Node.js với TypeScript

Basic Types

Đầu tiên chúng ta sẽ cần học về những Types đơn giản như những Primitives Datatypes ở trong Javascript như numberstringboolean hoặc Non-Primitives như objectarray. Cứ viết code như Javascript bình thường nhưng chúng ta thêm sau tên biến dấu 2 chấm ví dụ như const name: string = 'evondev' thì cái chữ string chính là type của biến name đó.

Các bạn dùng từ khóa const thì không nói, nhưng khi dùng từ khóa var hoặc let thì có thể thay đổi giá trị, tuy nhiên trong Typescript khi các bạn viết như này nó sẽ lỗi ngay.

let age: number = 29;
age = 'evondev';
// Type 'string' is not assignable to type 'number'.

Bởi vì kiểu dữ liệu của biến age đang là number, nhưng ở dưới các bạn lại đổi lại là string, vậy là không được. Chương trình sẽ bắn ra một cái lỗi như ở trên đại loại là ‘Kiểu string không được gán cho kiểu number’.

Đối với Javascript thì không có báo lỗi gì hết, nhưng ở Typescript như mình đề cập ở đầu bài là nó sẽ giúp code của chúng ta tường minh hơn, nhất quán, dễ bảo trì hơn là thế. Khai báo kiểu dữ liệu number là number, không thể là kiểu khác được. Trừ khi chúng ta sử dụng một Type khác như Union Type( tìm hiểu sau nhé ).

Dưới đây là những ví dụ đơn giản khác cho các bạn dễ hình dung, các bạn thấy là chúng ta phải code dài hơn Javascript thuần đúng không ? Nhưng không sao, vì mục đích code dễ bảo trì, dễ tái sử dụng, dễ hiểu thì phải cố gắng thôi

let age: number = 29;
const myName: string = 'evondev';
const amIDev: boolean = true;

Một lưu ý là khi các bạn khai báo những kiểu dữ liệu đơn giản(number, boolean, string, null, undefined) như này thì không cần viết dấu 2 chấm phía sau kèm Type cũng hoạt động tốt, Typescript sẽ tự động hiểu và thêm vào cho chúng ta. Tuy nhiên mới học thì nên tập viết để tạo thói quen các bạn nhé.

let age = 29;
// hover: let age: number

Những kiểu dữ liệu như ở trên mình nghĩ chắc là khá đơn giản với các bạn nhỉ ? Nếu các bạn thấy ổn rồi thì chúng ta tiếp tục xuống dưới học tiếp các Type tiếp theo là Object và Array nhé.

Tham khảo việc làm Typescript hấp dẫn tại TopDev

Object hay Array là kiến thức quan trọng các bạn cần có khi học Javascript, Object là một tập hợp key value, còn Array là một danh sách chứa các phần tử, các phần tử có thể là các kiểu dữ liệu như number, boolean, string, object, array… object thì có value là number, boolean hoặc thậm chí là một object khác.

Mình sẽ ví dụ một object đơn giản với Javascript và với Typescript để các bạn dễ hình dung với student bao gồm các thông tin cơ bản như sau:

// No declare type, typescript will automatically fill types
const student = {
  name: "tran anh tuan",
  age: 30,
  school: "Cao Thang",
  hobbies: ["Badminton", "Coding"],
  height: "170cm",
};
// Declare type
const student: {
  name: string;
  age: number;
  school: string;
  hobbies: string[];
  height: string;
} = {
  name: "tran anh tuan",
  age: 30,
  school: "Cao Thang",
  hobbies: ["Badminton", "Coding"],
  height: "170cm",
};

Lúc này các bạn sẽ thấy một điều khác là khi các bạn tự điền và khi các bạn không điền Type(viết như Javascript thuần) cho biến đó chính là khi các bạn thêm key mới vào object thì tự khắc Typescript cũng tự thêm Type vào tương ứng(No declare type), nhưng nếu các bạn viết như dòng trên(Declare type) mà các bạn thêm một key nào đó không tồn tại khi các bạn khai báo vào ở dưới nó sẽ lỗi ngay

const student: {
  name: string;
  age: number;
  school: string;
  hobbies: string[];
  height: string;
} = {
  name: "tran anh tuan",
  age: 30,
  school: "Cao Thang",
  hobbies: ["Badminton", "Coding"],
  height: "170cm",
  drink: "coffee"
};
// Type '{ name: string; age: number; school: string; hobbies: string[]; height: string; drink: string; }'
// is not assignable to type '{ name: string; age: number; school: string; hobbies: string[]; height: string; }'.

Nó ra một cái lỗi khá là dài đại loại là bạn khai báo Type của student không có key nào là drink cả nhưng bạn lại sử dụng drink: "coffee" vào student nên lỗi. Từ đó nó giúp code chúng ta nhất quán, chính xác, đặc biệt khi các bạn làm việc với API, dữ liệu trả về không hề có trường drink chẳng hạn, mà các bạn lại dùng như res.drink là nó sẽ bắn ra lỗi và chương trình dừng chạy ngay lập tức, không build dự án được.

Ở trong object student ở trên các bạn có thấy dòng hobbies: string[] không ? Nó chính là Array Type trong Typescript đó. Nó hoạt động như sau, Type[] hoặc Array<Type> , dấu [] đại diện cho Array, còn Type là các Types mà các bạn muốn sử dụng. Mình ví dụ cho các bạn các trường hợp đúng và sai để các bạn lưu ý nhé

const hobbies: string[] = ['Badminton', 'Coffee', 'Coding']; // Declare string array, all values are string
const books: string[] = ['Harry Potter', 1, false]; // Error: Declare string array but some values not string

Vậy giả sử đôi khi Array chúng ta lại có cả string, number, boolean và nhiều Types khác thì sao ? Làm sao để khai báo chúng đây, lúc này chúng ta sẽ học thêm một Type mới đó chính là Union Type mà mình nãy có đề cập.

Union Type

Type này nghĩa là hoặc(type | anothertype | othertype), tức là có thể vừa Type này vừa Type nọ, có thể là number hoặc string, có thể là boolean hoặc number… Quay lại vấn đề lúc đầu mình có nói nếu các bạn khai báo age là number sau lại khai báo age là string thì nó sẽ lỗi, tuy nhiên khi các bạn dùng Union thì có thể sẽ khắc phục được khi khai báo như sau

let age2: number | string = '30';
age2 = 30;

Tại sao lại viết như trên vì có vài trường hợp là dữ liệu không nhất quán lúc thì trả về 30 lúc thì ’30’ đại loại thế nên chúng ta khai báo vậy cho chắc cú đó mà.

Khi chúng ta đã nắm được cơ bản về Union Type rồi thì có thể quay lại áp dụng cho mảng gồm nhiều giá trị khác nhau như đoạn code dưới đây, các Types sẽ được bọc trong dấu () nhé

const names: (string | number | boolean)[] = ["evondev", 30, false];
const names2: Array<string | number | boolean> = ["evondev", 30, false];

Lưu ý là các giá trị trong mảng không nhất thiết phải theo thứ tự khai báo Type, các bạn để loạn xạ cũng được như này, miễn sao các giá trị đó phải nằm 1 trong 3 các Types đã khai báo là ổn áp thôi.

const names2: Array<string | number | boolean> = [
"evondev",
false,
true,
true,
"study",
1000,
9999,
];

Tạm kết

Ngoài ra còn rất nhiều Types trong Typescript, nhưng mình sẽ giới thiệu tiếp cho các bạn ở bài sau. Ở bài này chúng ta đã tìm hiểu cơ bản nhất về việc cài đặt Typescript và tìm hiểu các kiểu thông thường rồi.

Ở bài tới mình sẽ chia sẻ tiếp các Types khác như anyunknowneverenumtupleliteral cho các bạn nhé. Cám ơn các bạn đã luôn theo dõi mình và đọc bài này. Chúc các bạn học tập thật tốt, nếu có gì khó khăn cứ bình luận ở dưới nha.

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

Nhiều bài học TypeScript hơn tại đây:

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

CV chuẩn ATS là gì? Bí kíp đậu phỏng vấn với CV chuẩn ATS

CV chuẩn ATS là gì? Bí kíp đậu phỏng vấn với CV chuẩn ATS

CV là một trong những yếu tố quan trọng nhất quyết định việc bạn có được nhận vào công việc hay không. Trong thời đại công nghệ, các hệ thống quản lý ứng viên (ATS) đang được sử dụng rộng rãi để sàng lọc CV giúp tinh gọn quy trình tuyển dụng cho doanh nghiệp.

Tuy nhiên, theo một khảo sát của Glints, chỉ có khoảng 33% người tham gia khảo sát biết đến ATS là gì. Do đó, đây sẽ là một rào cản khiến các ứng viên không thể đi sâu vào các cuộc phỏng vấn với doanh nghiệp. Vì vậy, bài viết này TopDev sẽ giải thích chi tiết CV chuẩn ATS là gì và cách để viết CV theo chuẩn ATS.

ATS là gì? CV chuẩn ATS là gì?

ATS là viết tắt của “Applicant Tracking System”, đây là một hệ thống phần mềm được sử dụng bởi nhiều công ty và doanh nghiệp để quản lý quá trình tuyển dụng và xử lý các đơn ứng tuyển từ ứng viên. ATS giúp tự động hóa quá trình sàng lọc và phân loại CV, giúp tiết kiệm thời gian và tài nguyên cho nhà tuyển dụng.

ATS là gì?

CV chuẩn ATS (Applicant Tracking System) là một phiên bản của sơ yếu lý lịch hoặc hồ sơ cá nhân được định dạng và viết một cách cẩn thận để tương thích với hệ thống ATS mà nhiều công ty sử dụng để quản lý quá trình tuyển dụng. Mục tiêu của một CV chuẩn ATS là làm cho thông tin cá nhân và kinh nghiệm của bạn dễ dàng được quét và xử lý bởi hệ thống ATS mà không gặp vấn đề về định dạng hoặc thiếu thông tin.

Hệ thống ATS sẽ hoạt động như thế nào?

Hệ thống ATS hoạt động bằng cách tự động quản lý và xử lý đơn ứng tuyển từ ứng viên trong quá trình tuyển dụng. Dưới đây là cách mà ATS hoạt động:

  • Thu thập CV: ATS sẽ thu thập CV của các ứng viên từ các nguồn khác nhau, chẳng hạn như các trang web tuyển dụng, các nền tảng truyền thông xã hội, hoặc các ứng dụng nộp CV trực tuyến.
  • Phân tích CV: ATS sẽ sử dụng các thuật toán để phân tích CV của các ứng viên. Các thuật toán này sẽ xác định các từ khóa và thông tin quan trọng trong CV.
  • Đánh giá CV: ATS sẽ sử dụng các từ khóa và thông tin quan trọng để đánh giá CV của các ứng viên. Các ứng viên phù hợp với yêu cầu công việc sẽ được đưa vào danh sách ứng viên tiềm năng.

Hệ thống ATS sẽ hoạt động như thế nào?
Nguồn ảnh: https://oorwin.com/blog/understanding-ats-what-is-ats-and-how-ats-works.html

Các từ khóa và thông tin quan trọng mà ATS sử dụng để đánh giá CV bao gồm:

  • Thông tin cá nhân: Tên, địa chỉ, email, số điện thoại,…
  • Trình độ học vấn: Bằng cấp, chứng chỉ,…
  • Kinh nghiệm làm việc: Vị trí, công ty, thời gian làm việc,…
  • Kỹ năng: Kỹ năng cứng, kỹ năng mềm,…
  • Thành tích: Các thành tích nổi bật,…

Để CV của bạn có thể đáp ứng các tiêu chí của ATS, bạn cần đảm bảo rằng CV của bạn bao gồm đầy đủ các thông tin quan trọng và sử dụng các từ khóa phù hợp với yêu cầu công việc.

  Applicant Tracking System là gì? ATS hoạt động ra sao

  Cách viết CV xin việc IT "bao đậu" dành cho người chưa có kinh nghiệm

  Góp ý khi viết CV cho sinh viên mới ra trường

Vì sao nên viết CV chuẩn ATS?

Có một số lý do bạn nên viết CV theo chuẩn ATS, bao gồm:

  • Tăng khả năng vượt qua ATS: Nếu CV của bạn không đáp ứng các tiêu chí của ATS, bạn có thể bị loại ngay từ vòng đầu tiên. Viết CV chuẩn ATS giúp bạn tăng khả năng vượt qua ATS và được nhà tuyển dụng xem xét.
  • Nâng cao khả năng cạnh tranh: Ngày càng có nhiều ứng viên sử dụng ATS để nộp CV. Viết CV theo chuẩn ATS giúp bạn có một CV chuyên nghiệp và ấn tượng, giúp bạn nổi bật hơn so với các ứng viên khác.

Tạo CV IT chuẩn ATS miễn phí trên TopDev

Các bước viết CV chuẩn ATS chuyên nghiệp

Viết CV theo đúng bố cục

Các bước viết CV chuẩn ATS chuyên nghiệp

Bố cục CV chuẩn ATS thường bao gồm các phần sau:

  • Thông tin cá nhân: Phần này bao gồm các thông tin cơ bản về bạn, chẳng hạn như tên, địa chỉ, số điện thoại, email,…
  • Trình độ học vấn: Phần này bao gồm thông tin về bằng cấp, chứng chỉ của bạn.
  • Kinh nghiệm làm việc: Phần này bao gồm thông tin về kinh nghiệm làm việc của bạn, bao gồm vị trí, công ty, thời gian làm việc,…
  • Kỹ năng: Phần này bao gồm thông tin về các kỹ năng của bạn, bao gồm kỹ năng cứng, kỹ năng mềm,…
  • Thành tích: Phần này bao gồm thông tin về các thành tích của bạn, bao gồm giải thưởng, thành tựu,…

Ở các phần tiêu đề chính, bạn hãy làm nổi bật lên bằng cách tăng size chữ, im đậm và viết in hoa. Điều này sẽ giúp hệ thống ATS dễ dàng nhận dạng và quét thông tin.

Sử dụng các từ khóa liên quan

Để CV của bạn có thể được ATS quét và đánh giá chính xác, bạn cần đảm bảo rằng CV của bạn bao gồm đầy đủ các từ khóa phù hợp với vị trí ứng tuyển.

Dưới đây là một số mẹo để xác định các từ khóa phù hợp cho CV của bạn:

  • Nghiên cứu bản mô tả công việc: Bản mô tả công việc thường bao gồm các từ khóa và cụm từ mô tả các kỹ năng, kinh nghiệm và thành tích mà nhà tuyển dụng đang tìm kiếm ở một ứng viên lý tưởng.
  • Xem xét các CV của ứng viên khác: Bạn có thể tìm thấy các từ khóa phù hợp bằng cách xem xét các CV của ứng viên khác đã được tuyển dụng cho vị trí tương tự.
  • Sử dụng công cụ phân tích từ khóa: Có nhiều công cụ phân tích từ khóa có sẵn trực tuyến có thể giúp bạn xác định các từ khóa phù hợp.

Định dạng CV chuẩn ATS

Các bước viết CV chuẩn ATS chuyên nghiệp

Dưới đây là một số mẹo về định dạng CV chuẩn ATS:

  • Phông chữ đơn giản: Bạn nên sử dụng phông chữ đơn giản, dễ đọc như Times New Roman hoặc Arial.
  • Kích thước phông chữ 12: Kích thước phông chữ 12 là kích thước phông chữ phổ biến và dễ đọc.
  • Căn lề và khoảng cách phù hợp: Bạn nên sử dụng lề và khoảng cách phù hợp để CV của bạn trông gọn gàng và dễ đọc.
  • Không chứa kí tự đặc biệt, hạn chế sử dụng biểu đồ hoặc hình ảnh phức tạp.

Dưới đây là một số định dạng CV phổ biến được ATS hỗ trợ:

  • PDF: PDF là định dạng CV phổ biến nhất và được ATS hỗ trợ rộng rãi.
  • Word: Word là định dạng CV phổ biến thứ hai và được ATS hỗ trợ rộng rãi.
  • HTML: HTML là định dạng CV tương thích với nhiều loại trình duyệt và được ATS hỗ trợ.

Dùng công cụ tạo CV chuẩn ATS

Nếu bạn là một developer, bạn có thể sử dụng tính năng chuẩn hóa CV chuẩn ATS của TopDev. Với tính năng này, bạn có thể chuyển đổi CV nhanh chóng chỉ trong 1 click, bạn chỉ cần update CV của mình lên, hệ thống sẽ tiến hành quét và chuyển đổi CV theo chuẩn ATS.

Dùng công cụ tạo CV chuẩn ATS

Ngoài ra, bạn có thể chỉnh sửa và bổ sung thêm các thông tin trên CV vừa chuyển đổi. CV của bạn sẽ được lưu trên hệ thống và có thể download miễn phí. Các nhà tuyển dụng sẽ tìm thấy bạn trên hệ thống hoặc hệ thống sẽ gợi ý các công việc phù hợp với nhu cầu của bạn dựa trên CV bạn upload. Một tính năng vừa tiện lợi lại dễ dàng sử dụng rất đáng để bạn trải nghiệm.

Tóm lại

Hy vọng bài viết này sẽ giúp bạn hiểu được CV chuẩn ATS là gì và cách để viết CV chuẩn ATS. Bằng cách tuân theo các nguyên tắc và lời khuyên trong bài viết này, bạn đã nắm bắt cách tạo một CV chuẩn ATS, từ việc sử dụng từ khoá đến định dạng và cách trình bày thông tin. Chúc bạn may mắn trong hành trình tìm kiếm việc làm và thành công trong việc tạo CV chuẩn ATS của mình nhé!

Xem thêm:

Top 5 phần mềm viết code tốt nhất mà bạn nên sử dụng

Top 5 phần mềm viết code tốt nhất mà bạn nên sử dụng

Công việc của một lập trình viên là viết code để tạo ra các chương trình, và để viết được code thì chúng ta cần những phần mềm viết code. Phụ thuộc vào ngôn ngữ, nền tảng lập trình mà mỗi anh em Dev sẽ lựa chọn sử dụng cho mình một IDE hay Code Editor riêng. Bài viết hôm nay chúng ta cùng nhau điểm qua top 5 phần mềm viết code tốt nhất hiện nay xem trong danh sách này có IDE mà bạn đang sử dụng không nhé.

IDE vs Code  Editor

Trước tiên khi nói đến phần mềm viết code thì thường sẽ được chia thành 2 loại: IDE và Code Editor, trong đó:

  • IDE (Integrated Development Environment) – môi trường phát triển tích hợp là phần mềm dùng để xây dựng các ứng dụng kết hợp sẵn các công cụ phổ biến cho lập trình viên vào một giao diện duy nhất.
  • Code Editor – là một công cụ để làm việc với văn bản trong tập tin cùng một số hỗ trợ về định dạng code cũng như gợi ý từ khóa theo ngôn ngữ lập trình, anh em lập trình dùng nó đơn thuần để viết code và lưu ở dạng văn bản thuần túy.

phan-mem-viet-code-1

Điểm khác nhau cơ bản giữa IDE và Code Editor là việc IDE được tích hợp sẵn các trình biên dịch giúp bạn có thể triển khai code (build, test, deploy) ngay lúc lập trình. Vì vậy nếu bạn lập trình ứng dụng trên PC hay mobile, thông thường IDE sẽ được lựa chọn để có thể build code và kiểm tra tính đúng đắn ngay lập tức. Tuy nhiên ngược lại, Code Editor sẽ được ưu tiên với các công việc lập trình mà không đòi hỏi việc build, deploy phức tạp; ví dụ như làm Front-end Web.

Trong bài viết này mình sẽ gộp chung danh sách IDE và Code Editor vào và chỉ quan tâm đến mức độ phổ biến cùng sự hỗ trợ dành cho Developer trong công việc lập trình nhé.

1. Visual Studio Code

Visual Studio Code

VS Code là một Code Editor được phát triển bởi Microsoft, hỗ trợ cả 3 nền tảng Windows, Linux và MacOS với nhiều tính năng tích hợp và các thành phần mở rộng (extensions) hỗ trợ rất nhiều cho lập trình viên trên nhiều ngôn ngữ lập trình khác nhau. Những tính năng nổi bật của VS Code bao gồm:

  • Hỗ trợ lập trình đa ngôn ngữ: C, Java, JavaScript, Python, TypeScript, …
  • Gọn nhẹ, giao diện thân thiện dễ sử dụng
  • IntelliSense hỗ trợ hoàn thành mã một cách thông minh giúp tăng tốc lập trình
  • Tích hợp nhiều tính năng cần thiết như Git, Debug, Terminal, …
  • Vẫn đang được phát triển và bổ sung thêm nhiều phần tích hợp mở rộng

Năm 2022, trong một cuộc khảo sát trên Stack Overflow thì VS Code được xếp hạng là Code Editor phổ biến nhất với gần 75% người trả lời tuyên bố sử dụng nó.

  Chuẩn hóa code style trên Editor/IDE bằng EditorConfig

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

2. Microsoft Visual Studio

Microsoft Visual Studio

Mặc dù cùng nhà phát triển và logo, tên gọi tương đối giống nhau nhưng Visual Studio khác hoàn toàn Visual Studio Code nhé các bạn. Visual Studio là một IDE chuyên nghiệp hàng đầu dành cho việc phát triển ứng dụng dành cho hệ sinh thái Windows. Với Visual Studio bạn có thể làm mọi công việc liên quan đến lập trình từ viết code, phân tích, debug, kiểm thử, deploy phần mềm,… Có thể nói lập trình viên phát triển dự án liên quan đến hệ sinh thái Windows thì không thể không sử dụng Visual Studio.

Visual Studio hỗ trợ đa ngôn ngữ lập trình như C, C++, C# hay JS (JavaScriptTypeScript) đến Python,… ngoài ra nó được tích hợp vô số các tính năng và giải pháp giúp bạn xây dựng, phát triển, kết nối đến các dịch vụ mà Microsoft cung cấp. Tuy vậy thì nhược điểm của Visual Studio chính là việc nó khá nặng và chỉ thích hợp với nền tảng Windows (mặc dù đã có phiên bản VS trên MacOS nhưng chủ yếu sử dụng như một code editor). VS có 3 phiên bản (SKU):

  • Community: miễn phí với những tính năng cơ bản cho lập trình viên
  • Professional và Enterprise: là những phiên bản trả phí với nhiều tính năng nâng cao liên quan đến thiết kế, kiến trúc,… dành riêng cho các doanh nghiệp

3. Xcode

Xcode

Nếu như Windows có Visual Studio thì MacOS có Xcode – một IDE được Apple phát triển riêng dành cho hệ sinh thái của họ để phát triển ứng dụng trên các hệ điều hành MacOS, iOS, iPadOS. Lập trình viên làm việc với các hệ điều hành của Apple để tạo ứng dụng, phần mềm thì sẽ phải làm việc cùng Xcode. Xcode được tích hợp sẵn đầy đủ các bộ SDK cần thiết cùng trình biên dịch, soạn thảo khác cho việc xây dựng ứng dụng, nó cũng hỗ trợ nhiều ngôn ngữ từ Objective-C, Java, Python, Swift, …

Lập trình viên có thể download miễn phí Xcode trên AppStore và sử dụng; tất nhiên là Xcode chỉ có thể chạy trên hệ điều hành MacOS. Điểm độc quyền này của Xcode cũng chính là điểm mạnh của IDE này với khả năng đồng bộ hệ sinh thái của Apple mà không cần cài hay sử dụng thêm một công cụ nào khác để lập trình từ MacOS đến iOS hay iPadOS.

4. Sublime Text

Sublime Text

Nếu như bạn là một lập trình viên thích sự đơn giản, gọn nhẹ với công việc lập trình không đòi hỏi cần những công cụ biên dịch nặng nề thì Sublime Text là lựa chọn tuyệt vời dành cho bạn. Sublime Text là một Code Editor vô cùng nhẹ nhàng nhưng cũng hỗ trợ mạnh mẽ cho anh em Dev trong việc viết code. Nó cũng hỗ trợ tất cả các nền tảng Windows, MacOS, Linux với dung lượng cài đặt cực kỳ nhẹ, rất thích hợp với các máy tính có cấu hình và dung lượng bộ nhớ hạn chế. Một vài ưu điểm của Sublime Text:

  • Khả năng tùy biến mạnh mẽ
  • Hỗ trợ tìm kiếm ấn tượng với 2 chức năng Goto và Command Palette
  • Hiệu suất mạnh mẽ với khả năng chuyển đổi qua lại giữa nhiều dự án (không gian làm việc) gần như ngay lập tức
  • Hỗ trợ đa ngôn ngữ lập trình với các tính năng tự hoàn thành code, gợi ý code hay đánh dấu cú pháp

5. IntelliJ IDEA

IntelliJ IDEA

Cái tên cuối cùng mình muốn đề cập đến trong bài viết này là một IDE dành cho Java là IntelliJ IDEA, được phát triển bởi JetBrains. Java là một trong những ngôn ngữ lập trình phổ biến nhất với lịch sử lâu đời, và việc IntelliJ luôn được xếp vào top 4 công cụ lập trình Java hàng đầu cho thấy nó được cộng đồng lập trình viên đánh giá cao thế nào bên cạnh những Eclipse, NetBeans và Jdeveloper (Oracle). Ngoài ra nếu bạn là một lập trình viên phát triển ứng dụng Android thì cũng có thể biết đến IDE Android Studio được Google phát triển dựa trên phiên bản cộng đồng mã nguồn mở của IntelliJ IDEA.

Ưu điểm của IntelliJ IDEA:

  • Hỗ trợ đa dạng các ngôn ngữ: Java, JS, PHP, Python, …
  • Tính năng gợi ý code, đưa ra gợi ý sửa code tự động thông minh
  • Tích hợp nhiều công cụ kết nối đến các cơ sở dữ liệu khác nhau như PostgreSQL, MySQL, Oracle, SQL Server
  • Tính năng hỗ trợ tái cấu trúc source code theo chuẩn

Kết bài

Trên đây là top 5 phần mềm viết code tốt và phổ biến nhất hiện nay. Tùy thuộc vào từng ngôn ngữ, nền tảng mà anh em lập trình viên sẽ lựa chọn một IDE hay Code Editor phù hợp cho mình. Tuy nhiên việc lựa chọn các IDE tốt sẽ giúp bạn cải thiện được khả năng, tốc độ làm việc đồng thời giúp đồng bộ source code trong một team dự án tốt hơn. Hy vọng bài viết hữu ích dành cho bạn và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

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

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

Để trở thành Data Analyst cần học gì? Học như thế nào?

Trong thời đại số hóa, dữ liệu trở thành một yếu tố quan trọng quyết định đến sự phát triển của doanh nghiệp. Dữ liệu được ứng dụng trong hầu hết mọi ngành nghề từ các tổ chức kinh doanh, marketing cho đến những lĩnh vực như chăm sóc sức khỏe, logistics. Chính vì vậy, Data Analyst đã trở thành một ngành nghề được săn đón bật nhất hiện nay.

Vậy để trở thành Data Analyst cần học gì? Những kỹ năng nào là cần thiết? Bài viết này sẽ trình bày những kiến thức và kỹ năng quan trọng mà bạn cần phải học và phát triển để theo đuổi sự nghiệp trong lĩnh vực này.

Data Analyst hot như thế nào? Mức lương bao nhiêu?

Data Analyst là một trong những ngành nghề hot nhất hiện nay, không chỉ ở Việt Nam mà còn trên toàn thế giới. Theo một báo cáo của LinkedIn, Data Analyst là một trong 10 công việc có nhu cầu tuyển dụng cao nhất ở Việt Nam.

Data Analyst cần học gì?

Có nhiều lý do khiến Data Analyst trở nên hot như vậy, bao gồm:

  • Sự bùng nổ của dữ liệu: Trong thời đại công nghệ số, dữ liệu được tạo ra với tốc độ chóng mặt. Điều này tạo ra nhu cầu lớn đối với các chuyên gia có thể phân tích và khai thác dữ liệu để đưa ra các thông tin hữu ích.
  • Vai trò quan trọng của dữ liệu trong kinh doanh: Dữ liệu ngày càng được sử dụng rộng rãi trong các hoạt động kinh doanh, từ marketing, bán hàng đến sản xuất, logistics. Các doanh nghiệp cần có Data Analyst để giúp họ hiểu rõ hơn về thị trường, khách hàng và hoạt động của mình, từ đó đưa ra các quyết định kinh doanh sáng suốt hơn.
  • Cơ hội nghề nghiệp hấp dẫn: Data Analyst là một ngành nghề có cơ hội nghề nghiệp rộng mở. Các Data Analyst có thể làm việc trong nhiều lĩnh vực khác nhau, từ công nghệ, tài chính, ngân hàng, sản xuất đến dịch vụ.

Tại Việt Nam, nhu cầu tuyển dụng Data Analyst ngày càng tăng cao. Theo báo cáo thị trường IT Việt Nam 2023 của TopDev, mức lương trung bình của Data Analyst tại Việt Nam là $1.478. Đối với các Data Analyst có kinh nghiệm và kỹ năng cao, mức lương có thể còn cao hơn.

Data Analyst cần học gì? Những kỹ năng cần có?

Để trở thành một Data Analyst xuất sắc, bạn cần học và phát triển một loạt kỹ năng và kiến thức quan trọng. Dưới đây là một danh sách các kỹ năng bạn cần tập trung:

Data Visualization

Data Visualization là một trong những kỹ năng quan trọng nhất của Data Analyst. Data Visualization là quá trình truyền đạt dữ liệu và thông tin một cách trực quan, thường sử dụng các biểu đồ, đồ thị và hình ảnh.

Data Visualization

Dưới đây là một số kỹ năng Data Visualization cần thiết cho Data Analyst:

  • Hiểu biết về các loại biểu đồ và đồ thị: Mỗi loại biểu đồ và đồ thị có ưu điểm và nhược điểm riêng, vì vậy Data Analyst cần chọn loại biểu đồ và đồ thị phù hợp nhất với dữ liệu và thông tin mà họ muốn truyền đạt.
  • Khả năng sử dụng các công cụ Data Visualization: Có nhiều công cụ Data Visualization khác nhau, chẳng hạn như Tableau, Power BI, QlikView, v.v. Data Analyst cần biết cách sử dụng các công cụ này để tạo ra các biểu đồ và đồ thị trực quan và dễ hiểu.
  • Khả năng thiết kế trực quan: Data Analyst cần có khả năng thiết kế trực quan để tạo ra các biểu đồ và đồ thị hấp dẫn và dễ đọc. Họ cần chú ý đến các yếu tố như màu sắc, phông chữ, bố cục, v.v. để tạo ra các biểu đồ và đồ thị đẹp mắt và hiệu quả.

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

  Lộ trình từng bước để trở thành Data Analyst

Kiến thức về cơ sở dữ liệu

Cơ sở dữ liệu là một tập hợp dữ liệu được lưu trữ và quản lý một cách hệ thống. Các Data Analyst cần có kiến thức về cơ sở dữ liệu để thu thập, lưu trữ và xử lý dữ liệu một cách hiệu quả.

Dưới đây là một số kiến thức cơ bản về cơ sở dữ liệu mà Data Analyst cần biết:

  • Khái niệm cơ bản về cơ sở dữ liệu: Data Analyst cần hiểu các khái niệm cơ bản về cơ sở dữ liệu, chẳng hạn như bảng, cột, hàng, khóa chính, khóa ngoại, v.v.
  • Các loại cơ sở dữ liệu: Có nhiều loại cơ sở dữ liệu khác nhau, chẳng hạn như cơ sở dữ liệu quan hệ, cơ sở dữ liệu NoSQL, v.v. Data Analyst cần biết các loại cơ sở dữ liệu khác nhau và cách sử dụng chúng.
  • Các ngôn ngữ truy vấn cơ sở dữ liệu: Có nhiều ngôn ngữ truy vấn cơ sở dữ liệu khác nhau, chẳng hạn như SQL, NoSQL, v.v. Data Analyst cần biết cách sử dụng các ngôn ngữ truy vấn cơ sở dữ liệu để truy vấn và lấy dữ liệu từ cơ sở dữ liệu.

Ngoài ra, Data Analyst cũng cần có kiến thức về các công cụ quản lý cơ sở dữ liệu, chẳng hạn như MySQL, PostgreSQL, Oracle, v.v. Các công cụ này giúp Data Analyst quản lý cơ sở dữ liệu một cách hiệu quả hơn.

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

Data cleaning

Data Analyst cần học Data cleaning. Data cleaning là quá trình loại bỏ các lỗi và khiếm khuyết khỏi dữ liệu. Đây là một bước quan trọng trong quá trình phân tích dữ liệu, vì dữ liệu không sạch có thể dẫn đến kết quả phân tích không chính xác.

Data cleaning

Các Data Analyst cần có kiến thức về data cleaning để đảm bảo dữ liệu được phân tích là chính xác và đáng tin cậy.

Dưới đây là một số kiến thức cơ bản về data cleaning mà Data Analyst cần biết:

  • Các loại lỗi dữ liệu: Có nhiều loại lỗi dữ liệu khác nhau, chẳng hạn như lỗi nhập liệu, lỗi logic, lỗi định dạng, v.v. Data Analyst cần hiểu các loại lỗi dữ liệu khác nhau để có thể xác định và sửa chữa chúng.
  • Các kỹ thuật data cleaning: Có nhiều kỹ thuật data cleaning khác nhau, chẳng hạn như kiểm tra dữ liệu, lọc dữ liệu, thay thế dữ liệu, v.v. Data Analyst cần biết các kỹ thuật data cleaning khác nhau để có thể áp dụng các kỹ thuật phù hợp cho từng loại lỗi dữ liệu.

Kiến thức về ngôn ngữ lập trình R và Python

RPython là hai ngôn ngữ lập trình phổ biến nhất trong Data Analyst. Cả hai ngôn ngữ đều cung cấp các thư viện và công cụ mạnh mẽ để thu thập, xử lý, phân tích và trực quan hóa dữ liệu.

R là một ngôn ngữ lập trình thống kê được sử dụng rộng rãi trong nghiên cứu và học thuật. R được biết đến với các tính năng thống kê mạnh mẽ và thư viện đồ họa trực quan.

Python là một ngôn ngữ lập trình tổng quát được sử dụng rộng rãi trong nhiều lĩnh vực, bao gồm khoa học dữ liệu, học máy và trí tuệ nhân tạo. Python được biết đến với sự dễ học, tính linh hoạt và cộng đồng người dùng lớn.

Kiến thức về R và Python là một kỹ năng quan trọng cho Data Analyst. Bằng cách biết cách sử dụng R hoặc Python, Data Analyst có thể tự động hóa các tác vụ phân tích dữ liệu, tạo các mô hình dự đoán và trực quan hóa dữ liệu một cách hiệu quả.

Microsoft Excel

Microsoft Excel là một phần mềm bảng tính phổ biến được sử dụng trong nhiều lĩnh vực, bao gồm phân tích dữ liệu. Data Analyst thường sử dụng Excel để thu thập, xử lý, phân tích và trực quan hóa dữ liệu.

Kỹ năng Microsoft Excel là một kỹ năng quan trọng cho Data Analyst. Bằng cách biết cách sử dụng Excel hiệu quả, Data Analyst có thể hoàn thành công việc của mình một cách nhanh chóng và hiệu quả hơn.

Microsoft Excel

Dưới đây là một số kỹ năng Microsoft Excel cần thiết cho Data Analyst:

  • Kỹ năng cơ bản: Data Analyst cần biết cách tạo bảng, chèn dữ liệu, định dạng dữ liệu, và sử dụng các hàm cơ bản trong Excel.
  • Kỹ năng nâng cao: Data Analyst cần biết cách sử dụng các hàm nâng cao trong Excel, chẳng hạn như hàm VLOOKUP, hàm MATCH, hàm SUMPRODUCT, v.v.
  • Kỹ năng phân tích dữ liệu: Data Analyst cần biết cách sử dụng Excel để phân tích dữ liệu và tìm ra các xu hướng và mẫu hình.
  • Kỹ năng trực quan hóa dữ liệu: Data Analyst cần biết cách sử dụng Excel để tạo biểu đồ và đồ thị để trực quan hóa dữ liệu.

Thực hành các dự án Data Analysis với dữ liệu thực tế

Để trả lời câu hỏi Data Analyst cần học gì thì thực hành các dự án thực tế là điều không thể thiếu. Thực hành các dự án Data Analysis với dữ liệu thực tế là một cách tuyệt vời để phát triển các kỹ năng và kiến thức của bạn. Dữ liệu thực tế có thể phức tạp và khó hiểu hơn dữ liệu giả định, vì vậy việc làm việc với dữ liệu thực tế sẽ giúp bạn chuẩn bị tốt hơn cho công việc thực tế.

Dưới đây là một số mẹo để thực hành các dự án Data Analysis với dữ liệu thực tế:

  • Tìm một nguồn dữ liệu thực tế. Có nhiều nguồn dữ liệu thực tế có sẵn trực tuyến, chẳng hạn như Kaggle, UCI Machine Learning Repository, và Data.gov.
  • Chọn một dự án phù hợp với trình độ của bạn. Nếu bạn mới bắt đầu, hãy chọn một dự án đơn giản hơn. Bạn có thể dần dần nâng cao độ phức tạp của các dự án của mình khi bạn phát triển các kỹ năng của mình.
  • Đặt mục tiêu rõ ràng cho dự án của bạn. Hãy xác định những gì bạn muốn đạt được với dự án của mình. Mục tiêu của bạn có thể là tìm ra các xu hướng trong dữ liệu, tạo ra một mô hình dự đoán, hoặc giải quyết một vấn đề kinh doanh cụ thể.
  • Sử dụng các kỹ thuật phân tích dữ liệu phù hợp. Có nhiều kỹ thuật phân tích dữ liệu khác nhau có thể được sử dụng cho các dự án Data Analysis. Chọn các kỹ thuật phù hợp với dữ liệu của bạn và mục tiêu của bạn.
  • Đánh giá kết quả của bạn. Sau khi bạn đã phân tích dữ liệu của mình, hãy đánh giá kết quả của bạn. Điều này sẽ giúp bạn xác định xem bạn đã đạt được mục tiêu của mình hay chưa.

Lời kết

Trong bài viết này, chúng ta đã khám phá những kiến thức và kỹ năng cần thiết để trả lời cho câu hỏi để trở thành Data Analyst cần học gì?. Hy vọng rằng bài viết trên sẽ cung cấp đầy đủ các kiến thức giúp bạn theo đuổi ngành Data. Đừng quên học tập và nâng cao kỹ năng của mình bằng việc đọc sách, tài liệu hoặc tham gia các cộng đồng về Data để nhanh chóng thăng tiến trong sự nghiệp bạn nhé!

Xem thêm:

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

AWS Lambda là gì? Cách hoạt động và ứng dụng của Lambda

AWS Lambda là gì? Cách hoạt động và ứng dụng của Lambda

Kiến trúc Serverless là một mô hình điện toán đám mây đã và đang phát triển mạnh mẽ trong vài năm trở lại đây, nó giúp cho các công ty, doanh nghiệp có thể tập trung vào việc phát triển sản phẩm thay vì phải lo lắng đến việc quản lý và vận hành máy chủ. Một trong những giải pháp serverless hàng đầu hiện nay phải kể đến AWS với AWS Lambda. Bài viết hôm nay chúng ta cùng tìm hiểu về AWS Lambda và những ứng dụng phổ biến của Lambda dành cho các doanh nghiệp hiện nay nhé.

Kiến trúc Serverless là gì?

Trước tiên chúng ta cùng nhắc lại về kiến trúc Serverless nhé.

Kiến trúc Serverless là gì?

Kiến trúc Serverless là một thiết kế theo hướng sự kiện trong đó các ứng dụng được xây dựng phụ thuộc vào các dịch vụ của bên thứ 3 cho phần backend; trong đó bao gồm:

  • Mã chung của ứng dụng như xác thực, thông báo, chức năng email, … được chạy từ Backend as a Service
  • Mã dành riêng cho doanh nghiệp chạy trong các container Function as a Service

Serverless Architecture = Backend as a Service (BaaS) + Functions as a Service (FaaS)

Các nền tảng cung cấp dịch vụ cloud nổi tiếng hiện nay đều cung cấp kiến trúc Serverless cho các doanh nghiệp sử dụng, trong đó thị phần nổi bật đến từ 3 ông lớn Amazon, Google và Microsoft:

Kiến trúc Serverless

AWS Lambda là gì?

AWS Lambda là một dịch vụ Serverless hỗ trợ chúng ta upload code của mình lên, chạy đoạn code đó bằng việc sử dụng các tài nguyên có sẵn của AWS (Amazon Web Services). Khi sử dụng Lambda, chúng ta sẽ không cần quan tâm đến việc triển khai hạ tầng server bên dưới; Lambda cũng hỗ trợ việc quản lý cân bằng bộ nhớ, CPU, mạng và các tài nguyên khác. Điều này giúp chúng ta, đặc biệt là các lập trình viên có thể tập trung vào việc phát triển ứng dụng của mình.

AWS Lambda là gì?

Thành phần chính của Lambda bao gồm 2 phần là Lambda funtion và event source, trong đó:

Lambda funtions là những đoạn code hoàn chỉnh chúng ta upload lên theo những quy định, cấu hình mà bạn đã cài đặt từ trước. Event Source là nơi đưa ra các sự kiện và nó sẽ chủ động gọi tới các Lambda functions thiết lập từ trước.

Lambda funtion và event source

Lambda hỗ trợ hầu hết các ngôn ngữ lập trình phổ biến hiện nay cho chúng ta tạo các functions như Java, Python, C#, NodeJS, Go, PowerShell, Ruby. Amazon cho phép bạn kích hoạt Lambda từ hơn 200 dịch vụ AWS và các ứng dụng phần mềm dưới dạng dịch vụ (SaaS), đồng thời bạn sẽ chỉ phải chi trả theo mức sử dụng.

Tính năng nổi bật của AWS Lambda:

  • Có khả năng tự scale linh hoạt dựa vào số lượng request mà không phải thêm bất kỳ cấu hình gì khác
  • Hỗ trợ tích hợp nhiều dịch vụ khác trên AWS như S3, CloudWatch, DynamoDB, API Gateway, …
  • Cung cấp khả năng chịu lỗi cho các services
  • Sử dụng AWS IAM phân quyền và đảm bảo tính bảo mật

Ngược lại thì Lambda cũng có một số nhược điểm khi so với các serverless khác như:

  • Log chỉ được ghi vào CloudWatch, không hỗ trợ ghi log ngoài
  • Tính năng cold start khiến request đầu tiên sẽ chậm hơn (thời điểm function trigger lần đầu tiên)
  • Giới hạn thời gian xử lý tối đa 300s
  • Giới hạn dung lượng ổ cứng tối đa có thể sử dụng 512MB
  • Giới hạn dung lượng body của request dưới 128KB
  • Giới hạn bộ nhớ memory trong mức 128MB đến 1GB

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

  Amazon Appsync có gì hay ho?

Ứng dụng của Lambda

AWS Lambda là lời giải cho bài toán cần cắt giảm chi phí vận hành và quản lý nhiều máy chủ hoặc thời gian chạy các đoạn code để tập trung nhiều hơn vào việc phát triển sản phẩm. Nhiều công ty, doanh nghiệp lớn đã và đang sử dụng AWS Lambda cho hệ thống của mình, ví dụ:

  • Coca-Cola sử dụng Lambda cho việc cung cấp thông tin dinh dưỡng cho các đối tác dịch vụ thực phẩm của họ
  • iRobot sử dụng Lambda và AWS IoT để chạy ứng dụng web kết nối đến máy hút bụi Roomba
  • Autodesk (phần mềm thiết kế kiến trúc) sử dụng Lambda để tự động hóa các hoạt động công nghệ thông tin

Một số ứng dụng nội bật của Lambda bao gồm:

Xử lý tệp

Xử lý tệp

Lambda hỗ trợ người dùng xử lý file một cách tự động khi người dùng upload file lên S3 (một dịch vụ lưu trữ của Amazon). 

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

Xử lý luồng dữ liệu

Xử lý luồng dữ liệu

Lambda kết hợp với Kinesis Stream để xử lý các dữ liệu streaming real-time để ứng dụng theo dõi các hoạt động hoặc nghiên cứu các dữ liệu real-time từ nhiều nguồn data khác nhau.

Ứng dụng Web

Ứng dụng Web

Lambda có thể đóng vai trò là một backend dùng để xử lý các request từ phía frontend.

Backend IoT

Ứng dụng Web

Lambda có thể được tích hợp với Amazon Kinesis để xử lý các thông tin được gửi từ các thiết bị IoT để thực hiện các chức năng tương ứng.

Mobile Backend

Mobile Backend

Lambda có thể kết hợp với Amazon API Gateway để làm backend xử lý các request từ các thiết bị di động một cách dễ dàng.

Về mặt chi phí, AWS Lambda sẽ chỉ yêu cầu bạn trả phí khi các đoạn code của bạn được chạy, dựa trên số lượt request và thời gian thực hiện xử lý code của bạn. Ngoài ra Lambda cũng miễn phí 1 triệu lượt request và 400.000 GB-giây thời gian điện toán mỗi tháng. Nhờ những chính sách trên mà Lambda đang là một giải pháp đáng xem xét cho bài toán chi phí.

Kết bài

Như vậy chúng ta đã cùng nhau tìm hiểu về AWS Lambda, một dịch vụ Serverless của Amazone cung cấp cùng với các ứng dụng của nó. Lambda sẽ là một giải pháp phù hợp dành cho các tổ chức, doanh nghiệp cần sự tập trung vào việc phát triển sản phẩm mà không có chi phí, nguồn lực dành cho vấn đề vận hành, quản trị hệ thống. Hy vọng bài viết hữu ích dành cho bạn, hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Có thể bạn quan tâm:
Xem thêm Việc làm Developer hấp dẫn trên TopDev

Top 7 plugin hay ho cho blog sử dụng wordpress

Top 7 plugin hay ho cho blog sử dụng wordpress

Bài viết được sự cho phép của tác giả Phạm Bình

WordPress là nền tảng cho các website dạng tin tức, blog số một hiện nay. Ngoài việc nó dễ sử dụng ra thì nó còn có một kho các plugin và theme vô cùng lớn. Nhân tiện blog của mình cũng đang sử dụng trên nền tảng wordpress, nên mình muốn chia sẻ tới các bạn một số plugin mà mình cảm thấy khá hay ho cho wordpress, để bạn nào có viết blog sử dụng wordpress như mình thì có thể tham khảo nhé.

1. Yoast SEO

Yoast SEO

Đây là một plugin tối ưu SEO cho wordpress. Mặc định thì wordpress không hỗ trợ seo tốt lắm, chính vì thế ai làm website wordpress cũng cần phải cài thêm plugin này để blog wordpress của mình seo dễ hơn. Plugin này có cả phiên bản trả phí và miễn phí. Tuy nhiên ở phiên bản miễn phí cũng có khá nhiều tính năng hay rồi, còn bạn nào có điều kiện muốn có thêm nhiều tính năng pro hơn thì có thể sử dụng phiên bản trả phí. Như blog này, mình đang sử dụng phiên bản trả phí và nó thật sự đáng tiền bỏ ra.

Tóm tắt một số tính năng: Tùy chỉnh các thẻ meta cho bài viết, hỗ trợ seo bài viết trên các mạng xã hội như facebook, twitter, hỗ trợ chuyển hướng trang khi bài viết bị xóa, tạo sitemap.xml,…

Link plugin chính thức trên wordpress: https://wordpress.org/plugins/wordpress-seo

2. iTheme Security

WordPress là một nền tảng phổ biến và đây cũng chính là con dao hai lưỡi đối với các blog sử dụng nền tảng này. Vì là một nền tảng lớn có nhiều người sử dụng, thế nên các blog wordpress cũng là điểm nhắm của nhiều hacker. Để blog wordpress của bạn an toàn hơn, bạn có thể cài đặt plugin iTheme security cho website của mình.

iTheme security cũng có hai phiên bản trả phí và miễn phí. Tuy nhiên ở phiên bản miễn phí cũng giúp blog của bạn cải thiện được rất nhiều các yếu tố bảo mật rồi.

Một vài tính năng hay ho của plugin này: Thay đổi đường dẫn login, không cho phép chỉnh sửa nội dung PHP file trực tiếp trên blog, chặn truy cập trực tiếp vào một số file nhạy cảm, vân vân.

Chi tiết bạn có thể tham khảo thêm tại trang chính thức của plugin này: https://wordpress.org/plugins/better-wp-security

  So sánh Wordpress và Drupal: Lựa chọn CMS nào sẽ tốt hơn?

  Hướng dẫn Export và Import dữ liệu trong WordPress

3. Jetpack

Jetpack

Đây là một plugin được cung cấp bởi chính Automattic (đơn vị sở hữu wordpress và hàng loạt plugin, theme đình đám khác), plugin này tổng hợp nhiều thứ hay ho như thống kê lượt truy cập, tạo các bài viết liên quan, tối ưu SEO, tăng cường bảo mật, sao lưu dữ liệu,…

Trên blog này mình cài jetpack với mục đích sử dụng tính năng thống kê lượt truy cập của nó là chủ yếu, còn các tính năng khác thì mình không để ý nhiều. Tuy nhiên mình vẫn khuyến khích các bạn cài đặt plugin này, vì dù sao nó cũng là con cưng của WordPress, chắc chắn sẽ có lợi cho blog wordpress của bạn.

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

4. WordPress Super Cache

Đây cũng là một sản phẩm của Automatic. Mục đích của nó là làm tăng tốc độ tải trang website wordpress của bạn. Hiểu đơn giản, để có thể hiển thị ra ngoài màn hình nội dung của bài viết này, wordpress phải trải qua một công đoạn chế biến, xử lý dữ liệu vô cùng phức tạp rồi kết quả cuối cùng mới là những dòng chữ tuyệt vời này – cái để bạn có thể nhìn thấy. Nhưng khi cài đặt plugin này, nó sẽ lưu lại kết quả sau nay khi xử lý dữ liệu, để lần sau bạn truy cập vào, nó sẽ lấy kết quả đã được xử lý trước đó để hiển thị luôn mà không cần phải xử lý, chế biến nữa. Chính vì thế mà tốc độ tải trang được tăng lên đáng kể.

Trang chính thức của plugin này: https://vi.wordpress.org/plugins/wp-super-cache

5. Duplicator

Duplicator

Đây là plugin cung cấp giải pháp sao lưu, di chuyển website của bạn. Nếu bạn có nhu cầu muốn sao lưu dữ liệu, thì hãy cài đặt plugin này. Plugin này cung cấp cơ chế sao lưu toàn bộ source code, và database của website sử dụng wordpress. Thậm chí nó còn có thể build website của bạn ra một bản cài đặt, để trong trường hợp bạn muốn chuyển website của mình sang hosting khác thì chỉ cần cài đặt bản build mà plugin này xuất ra. Chỉ trong vài phút, website của bạn sẽ được chuyển sang nhà mới một cách an toàn.

Plugin này có cả bản trả phí và miễn phí, mình chưa trải nghiệm bản trả phí nên cũng không rõ nó tốt như thế nào. Nhưng bản miễn phí mình thấy cũng ổn rồi.

Trang chính thức của plugin này: https://vi.wordpress.org/plugins/duplicator

6. Admin Menu Editor

Plugin hoặc theme wordpress khi cài đặt, có thể sẽ bổ sung thêm một số menu trong trang quản trị của bạn. Nếu bạn cài đặt nhiều plugin có bổ sung thêm menu, thì thanh menu của bạn sẽ nhanh chóng trở thành một ma trận lộn xộn, hổ lốn nhiều tính năng. Nếu bạn muốn sắp xếp lại thanh menu của mình cho khoa học hơn, thì có thể sử dụng plugin Admin Menu Editor này để làm điều đó. Mình đã thử nhiều plugin sắp xếp menu rồi, nhưng đây là plugin đơn giản và hiệu quả nhất. Ngoài việc sắp xếp lại, nó còn hỗ trợ bạn tự bổ sung, ẩn, hoặc xóa bớt các menu không cần thiết.

Trang chính thức của plugin này: https://wordpress.org/plugins/admin-menu-editor/

7. Really Simple SSL

Really Simple SSL

Khi website của bạn cài đặt https, và bạn muốn chuyển hướng trang từ http sang https mà không cần phải can thiệp vào việc cấu hình ở tầng webserver, thì có thể sử dụng plugin này. Plugin này sẽ hỗ trợ bạn chuyển hướng trang từ http sang https chỉ đơn giản bằng vài cú click chuột.

Trang chính thức của plugin này: https://wordpress.org/plugins/really-simple-ssl

Lời kết

Trên là tất cả những plugin mà blog của mình đang cài đặt, đây đều là những plugin tốt nhất trong phạm vi tính năng của nó mà mình biết. Hy vọng với sự gợi ý của mình, bạn có thể đưa ra sự lựa chọn tốt hơn trong biển plugin mà wordpress cung cấp.

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

Xem thêm:

Dev đừng bỏ lỡ Top tin tuyển dụng IT tại TopDev nhé!

Top 30+ câu hỏi phỏng vấn mà 90% lập trình viên thường gặp 2024

Top 30+ câu hỏi phỏng vấn mà 90% lập trình viên thường gặp 2023

Buổi phỏng vấn quyết định 80 – 90% tỉ lệ đậu của vị trí bạn ứng tuyển, vì vậy đây là một khâu vô cùng quan trọng các lập trình viên cần lưu ý. Để có thể bước vào buổi phỏng vấn một cách trơn tru, anh em nên dự đoán trước các câu hỏi mà nhà tuyển dụng sẽ hỏi để luôn trong trạng thái chủ động, tâm lý vững vàng. Bài viết này TopDev sẽ gợi 30+ câu hỏi thường gặp nhất mà nhà tuyển dụng hay sử dụng khi phỏng vấn lập trình viên.

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

Tùy thuộc vào vị trí, yêu cầu công việc, mực đích tuyển dụng mà các nhà tuyển dụng sẽ đặt những câu hỏi khác nhau. Mỗi câu hỏi sẽ khai thác các khía cạnh khác nhau về nét tính cách, kinh nghiệm hay thái độ của ứng viên. Vì vậy, để có thể “ứng biến” được mọi tình huống bạn có thể tham khảo trước bộ câu hỏi dưới đây.

Bộ câu hỏi sơ lược phỏng vấn lập trình viên

1. Giới thiệu bản thân

Hãy nói về bản thân bạn, kinh nghiệm làm việc, và lý do bạn quan tâm đến vị trí này.

Bất kỳ ngành nghề nào thì câu hỏi này luôn được hỏi đầu tiên. Câu hỏi này sẽ giúp HR hiểu rõ hơn về ứng viên, cũng như giúp 2 bên hiểu nhau hơn để bắt đầu vào các câu hỏi quan trọng.

Giới thiệu bản thân

Bạn nên chuẩn bị câu trả lời thật ngắn gọn nhưng vẫn đầy đủ ý, trình bày những điểm nổi bật nhất về bản thân mình. Đây là cơ hội để bạn gây ấn tượng với nhà tuyển dụng, giúp bạn ghi điểm trong mắt họ.

2. Tại sao bạn chọn nghề lập trình viên?

Câu hỏi này để nhà tuyển dụng đánh giá mức độ đam mê của bạn với nghề. Bạn hãy thể hiện cho nhà tuyển dụng thấy được sự hào hứng, thích thú với nghề lập trình mà bạn đang theo đuổi. Phần này sẽ là mục tiêu nghề nghiệp của bạn trong CV, vì vậy hãy nêu ra những ý thật cụ thể, ngắn gọn.

3. Điểm mạnh và điểm yếu của bạn là gì?

Đối với điểm mạnh, bạn hãy nêu 3 điểm nổi trội nhất ở bạn, trình bày nó cụ thể và nó có thể giúp gì được cho công việc của bạn. Để chi tiết hơn, bạn có thể nêu ra ví dụ về các dự án bạn đã tham gia và điểm mạnh đó đã giúp bạn giải quyết vấn đề trong dự án đó như thế nào.

Đối với điểm yếu, hãy chọn một điểm yếu mà bạn đã nhận biết và không quá nghiêm trọng hoặc không ảnh hưởng quá lớn đến công việc của bạn. Điều này giúp bạn tránh tạo ra ấn tượng tiêu cực. Sau khi nêu điểm yếu, hãy nêu rõ biện pháp bạn đã hoặc đang thực hiện để cải thiện điểm yếu đó.

  Top những câu hỏi phỏng vấn “ngược” nhà tuyển dụng 

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

4. Tại sao bạn nghỉ việc ở công ty cũ?

Trong câu trả lời, hãy chỉ ra lý do chính mà bạn đã quyết định nghỉ việc ở công ty cũ. Lý do này có thể là sự không phù hợp về vị trí, văn hóa làm việc, cơ hội phát triển, hoặc bất kỳ lý do nào khác mà bạn cho là quan trọng. Tránh “nói xấu” công ty cũ hoặc đồng nghiệp. Thay vì đề cập đến các vấn đề tiêu cực, tập trung vào việc bạn tìm kiếm một môi trường hoặc cơ hội mới.

Tại sao bạn nghỉ việc ở công ty cũ?

Liên kết lý do bạn rời bỏ công ty cũ với mục tiêu và mong muốn cá nhân hoặc sự phát triển trong sự nghiệp của bạn. Cuối cùng, hãy luôn giữ tinh thần tích cực trong câu trả lời. Đây là cơ hội để bạn thể hiện sự lạc quan và cam kết với sự phát triển trong tương lai.

5. Bạn kỳ vọng gì ở công việc này?

Trước khi đi vào cuộc phỏng vấn, nên tìm hiểu về công ty và vị trí công việc mà bạn đang ứng tuyển. Điều này giúp bạn xác định được kỳ vọng cụ thể và liên quan của mình đối với công việc.

Bạn hãy đề cập đến cách công việc này liên quan đến mục tiêu sự nghiệp và phát triển cá nhân của bạn. Thể hiện sự sẵn sàng của bạn để đóng góp và mang lại giá trị cho công ty.

Ví dụ trả lời có thể là:

“Tôi kỳ vọng rằng công việc này sẽ cung cấp cho tôi cơ hội để phát triển kỹ năng lập trình của mình và tham gia vào các dự án phức tạp. Tôi quan tâm đến công ty bạn vì nó đã có những thành tựu ấn tượng trong lĩnh vực công nghệ và tạo ra các sản phẩm đột phá. Tôi mong muốn được học hỏi và đóng góp vào sự phát triển của công ty, đồng thời phát triển sự nghiệp của mình trong ngành lập trình.”

Một số câu hỏi khác:

– Bạn có những bằng cấp nào liên quan đến vị trí này?

– Kiến thức hiện tại của bạn đáp ứng được bao nhiêu phần trăm công việc này?

– Bạn làm thế nào để nâng cao khả năng làm việc của mình?

– Yếu tố quan trọng nhất trong công việc này là gì?

– Bạn tâm đắc nhất với dự án nào? Bạn đóng vai trò gì trong dự án đó?

Xem thêm: Bí quyết deal lương giúp bạn “lật bài ngửa” với nhà tuyển dụng

Bộ câu hỏi chuyên môn về nghề lập trình

Các câu hỏi chuyên môn về nghề lập trình khi đi phỏng vấn thường tập trung vào những kiến thức và kỹ năng chuyên sâu của lập trình viên, bao gồm:

Kiến thức về các ngôn ngữ lập trình: Các câu hỏi thường liên quan đến các khái niệm nâng cao, thư viện và framework của ngôn ngữ lập trình. Ví dụ:

  • Hãy giải thích cách hoạt động của garbage collection trong Java.
  • Hãy so sánh các framework web phổ biến như Django, Spring BootLaravel.
  • Hãy giải thích cách sử dụng thư viện TensorFlow để phát triển mô hình máy học.

Kiến thức về các hệ thống và công nghệ: Các câu hỏi thường liên quan đến các hệ điều hành, cơ sở dữ liệu, mạng và các công nghệ khác. Ví dụ:

  • Hãy giải thích cách hoạt động của hệ điều hành Linux.
  • Bạn có kiến thức về cơ sở dữ liệu SQL hoặc NoSQL không?
  • Hãy giải thích cách thiết kế một hệ thống phân tán.

Bộ câu hỏi chuyên môn về nghề lập trình

Kiến thức về các kỹ thuật và thuật toán: Các câu hỏi thường liên quan đến các kỹ thuật và thuật toán nâng cao, chẳng hạn như machine learning, artificial intelligence, và natural language processing. Ví dụ:

  • Bạn có thể giải thích cách hoạt động của thuật toán [tên thuật toán] không?
  • Hãy giải thích cách sử dụng trí tuệ nhân tạo để phát triển chatbot.
  • Hãy giải thích cách xử lý ngôn ngữ tự nhiên trong lĩnh vực dịch thuật máy.

Dưới đây là một số câu hỏi chuyên môn về nghề lập trình khác:

– Ngôn ngữ lập trình nào bạn thành thạo nhất?

– Sự khác nhau giữa Cookie và Session là gì?

– Abstract class và Interface khác nhau ở điểm nào?

– Bạn có biết mô hình phát triển phần mềm Agile/Scum hay không?

– Phân biệt Optimistic lock và Pessistic?

– Làm thế nào để đảm bảo chất lượng source code?

– So sánh hai dịch vụ web SOAP và REST

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

Bộ câu hỏi phỏng vấn kỹ năng của lập trình viên

Bên cạnh kiến thức chuyên ngành, các nhà tuyển dụng cũng sẽ hỏi bạn về các kỹ năng liên quan đến công việc như kỹ năng làm việc nhóm, kỹ năng sắp xếp, kỹ năng giải quyết vấn đề,… Dưới đây là một số câu hỏi bạn có thể được hỏi trong buổi phỏng vấn:

1. Bạn sẽ xử lý như thế nào nếu tester báo bug vô lý?

Câu hỏi này đánh giá khả năng của bạn trong việc xử lý các báo cáo lỗi từ người kiểm thử (tester) một cách hợp tác và hiệu quả. Sau khi nhận được thông tin chi tiết, hãy thể hiện sự cẩn trọng và tập trung vào việc kiểm tra lại và nghiên cứu lỗi.

Khi bạn đã xác định được kết quả, hãy trao đổi với tester để thông báo kết quả và thảo luận về cách xử lý. Hãy trao đổi trên tinh thần hợp tác và sẵn sàng cùng nhau giải quyết vấn đề.

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

OT là một chuyện không quá xa lạ trong ngành IT, đây cũng là một câu hỏi khá nhạy cảm nên bạn cần thận trọng khi trả lời. Để trả lời câu hỏi này bạn có thể hỏi ngược lại ứng viên về tần suất OT và lý do cụ thể để hiểu hơn về nhu cầu của công ty.

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

Hãy khôn khóe trong câu trả lời để cho nhà tuyển dụng thấy sự sẵn sàng của bạn để hỗ trợ trong các tình huống khẩn cấp, nhưng cũng thể hiện sự cân nhắc và tôn trọng đối với sự cân bằng giữa công việc và cuộc sống cá nhân.

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

Bất kỳ công việc nào cũng sẽ có áp lực, vậy nên bạn hãy thể hiện tin thần sẵn sàng đối đầu với nó. Để tạo thêm lòng tin, bạn nên đưa ra ví dụ cụ thể về một tình huống áp lực mà bạn đã trải qua và cách bạn đã xử lý nó.

Đừng quên nhấn mạnh khả năng học hỏi của bạn từ các tình huống áp lực và cách bạn cải thiện nó.

4. Bạn phối hợp với các team khác như thế nào?

Câu hỏi này để kiểm tra khả năng làm việc nhóm của bạn và cách bạn nhìn nhận lợi ích cá nhân với tập thể. Bạn hãy thể hiện tầm quan trọng của việc làm việc nhóm, đưa ra ví dụ về cách bạn đã tương tác với các nhóm khác và thể hiện kỹ năng giao tiếp của bạn. Bên cạnh đó, bạn cần đề cập đến cách bạn nhìn nhận tư duy xuyên suốt và lợi ích của việc làm việc cùng các nhóm khác.

team work

5. Bạn kỳ vọng gì từ cấp trên của mình?

Câu hỏi này thường được đặt ra trong cuộc phỏng vấn để kiểm tra sự hiểu biết của bạn về quan hệ với cấp trên và khả năng làm việc dưới sự hướng dẫn của họ. Đừng nên trả lời chung chung, bạn hãy chia sẽ mong muốn được làm việc với người giỏi, được học hỏi nhiều điều từ sếp và cần được sự hỗ trợ từ sếp.

Một số câu hỏi khác:

– Làm thế nào bạn quản lý thời gian và ưu tiên công việc trong dự án phức tạp?

– Làm thế nào bạn thích nghi với các thay đổi và tình huống không định trước trong dự án?

– Nếu xảy ra mâu thuẫn với đồng nghiệp, bạn sẽ giải quyết thế nào?

– Bạn đã thay đổi như thế nào trong những năm qua?

– Nếu phải đi công tác thường xuyên, bạn có thể đi được không?

– Vì sao chúng tôi nên chọn bạn?

Những điều lập trình viên cần lưu ý khi đi phỏng vấn xin việc

Khi lập trình viên đi phỏng vấn, có một số điều quan trọng bạn cần lưu ý để tạo ấn tượng tốt và tăng cơ hội thành công:

  • Chuẩn bị kiến thức và kỹ năng: Hãy đảm bảo bạn hiểu rõ vị trí công việc mà bạn đang xin và kiến thức/kỹ năng cần thiết cho nó. Học cách áp dụng kiến thức và kỹ năng của bạn để giải quyết các vấn đề thực tế trong lĩnh vực đó.
  • Tạo portflio chuyên nghiệp: Nếu có thể, tạo một portflio trực tuyến hoặc sưu tập các dự án mẫu để chứng minh kỹ năng của bạn. Các dự án thực tế và mã nguồn mở có thể giúp bạn nổi bật.
  • Lắng nghe và trả lời: Hãy lắng nghe câu hỏi của người phỏng vấn một cách cẩn thận và trả lời một cách rõ ràng và mạch lạc. Tránh sử dụng các thuật ngữ kỹ thuật quá phức tạp nếu không cần thiết.
  • Hiểu về công ty: Tìm hiểu về công ty bạn đang phỏng vấn để thể hiện sự quan tâm. Biết được mục tiêu, giá trị và dự án quan trọng của công ty sẽ giúp bạn trả lời câu hỏi về tại sao bạn muốn làm việc ở đó.
  • Đặt câu hỏi thông minh: Khi có cơ hội, hãy đặt câu hỏi về công việc, dự án và môi trường làm việc. Điều này thể hiện sự quan tâm của bạn và giúp bạn hiểu rõ hơn về công ty.
  • Tự tin và thân thiện: Thể hiện sự tự tin và thân thiện trong giao tiếp. Điều này có thể tạo ấn tượng tích cực.
  • Kiểm tra lại CV và hồ sơ: Đảm bảo thông tin trên CV và hồ sơ của bạn là chính xác và không mâu thuẫn.

Tổng kết

Hy vọng bài viết tổng hợp 30+ câu hỏi phỏng vấn lập trình viên đã mang đến cho bạn những kinh nghiệm và thông tin bổ ích. Thông qua bộ câu hỏi này, bạn sẽ chuẩn bị cho mình một tâm thế sẵn sàng, tự tin và không ngại trả lời các câu hỏi khó từ nhà tuyển dụng. Đừng quên truy cập TopDev để cập nhật thêm nhiều bài viết mới về công nghệ và việc làm bạn nhé!

Xem thêm:

TOPDEV CẬP NHẬT GIAO DIỆN MỚI: Thêm tính năng – Tăng trải nghiệm

TOPDEV CẬP NHẬT GIAO DIỆN MỚI

Với mong muốn không ngừng thay đổi & cải tiến dịch vụ để phục vụ cho nhu cầu của nhà tuyển dụng và các ứng viên, TopDev đã chính thức THAY ĐỔI GIAO DIỆN website và ra mắt thêm loạt TÍNH NĂNG MỚI hấp dẫn.

  • Thay đổi hoàn toàn giao diện website: Mới hơn, chuyên nghiệp hơn và thân thiện với mobile.
  • Bộ câu hỏi QnA: Hỗ trợ trợ tối đa cho nhu cầu tìm việc của ứng viên và nguồn tài liệu tham khảo chất lượng dành cho nhà tuyển dụng.
  • User Profile: Tạo hồ sơ cá nhân chuyên nghiệp, tải xuống CV nhanh chóng, ứng viên dễ dàng tiếp cận với nhà tuyển dụng,…
  • Convert CV: Dễ dàng chuyển đổi, đồng bộ CV chỉ trong một cú click.  

Hãy cùng TopDev khám phá chi tiết những nâng cấp mới này trong bài viết dưới đây nhé!

Nâng cấp giao diện – Hiện đại & Chuyên nghiệp

“Less is more” – Đây là ý tưởng thiết kế chủ đạo trong việc thay đổi giao diện lần này của TopDev. Bằng cách sử dụng thiết kế tối giản, các chi tiết thừa đã được loại bỏ, văn bản cũng tối ưu hơn, các đường viền được giảm bớt và bo cong mềm mại. Tất cả để hướng đến một trải nghiệm UI tốt hơn cho người dùng, chỉ tập trung vào những thông tin quan trọng.

Homepage

Homepage
Giao diện mới của desktop và mobile chỉn chu và tối giản hơn

  • Thiết kế mới làm nổi bật thương hiệu của TopDev ở ngay đầu trang và thanh tìm kiếm sẽ là điểm khởi đầu cho hành trình trên website.
  • Giao diện mới đã giản lược số cột trên trang web, phân chia khu vực rõ ràng giúp trải nghiệm đọc của người dùng dễ dàng hơn.
  • Khu vực công ty siêu nổi bật và nhà tuyển dụng nổi bật được làm trực quan, dễ thấy giúp việc xây dựng thương hiệu nhà tuyển dụng tốt hơn.

Search Page

  • Thanh tìm kiếm được di chuyển lên đầu trang, các banner quảng cáo được đẩy sang phía bên phải thay vì nằm phía dưới như giao diện cũ. Điều này giúp người dùng không bị phân tâm trong quá trình thao tác trên web.
  • Riêng bản Mobile Web, phần banner quảng cáo vẫn sẽ nằm phía trên kết quả tìm kiếm, nhưng sẽ biến mất nếu người dùng nhập từ khóa tìm kiếm.
  • TopDev đã thiết kế bộ lọc mới ngay trên thanh tìm kiếm giúp kết quả tìm kiếm chính xác hơn với nhu cầu.

Detail Job Page

Detail Job Page

  • Sử dụng outline 2 cột, chỉ tập trung vào việc hiển thị thông tin nội dung công việc.
  • Lượt bỏ nút theo dõi và chia sẽ dễ gây hiểu lầm khi người dùng trải nghiệm, các nút CTA được đưa lên trên cột phải và làm nổi bật.
  • Thông tin chi tiết về công ty sẽ được đưa xuống cuối trang.

Company Profile Page

  • TopDev đã giải quyết vấn đề điều hướng giữa tab “Công ty”“Công việc”. Sau khi nhấp vào tab công ty, người dùng không thể quay lại trang chi tiết công việc bằng cách nhấp vào Tab công việc.
  • Bổ sung đầy đủ nội dung cho Profile công ty, thiết kế mới như một bộ hồ sơ chuyên nghiệp.

Tạo CV Online chuẩn Developer trên TopDev tại đây!

Bộ câu hỏi phỏng vấn QnA – “Bí kíp” tuyển dụng hiệu quả

QnABộ câu hỏi phỏng vấn QnA là một tính năng hoàn toàn mới của TopDev với hơn 1000+ câu hỏi ở mọi cấp độ, kỹ năng và chuyên môn. Bạn có thể sử dụng bộ lọc để tìm kiếm các câu hỏi phù hợp với vị trí mình muốn ứng tuyển. Các câu trả lời cực chi tiết đã được soạn thảo từ nhiều chuyên gia đang hoạt động trong ngành công nghệ.

Với bộ câu hỏi phỏng vấn này, không chỉ giúp các lập trình viên nâng cao kỹ năng phỏng vấn mà còn là tài liệu tham khảo hữu ích cho các nhà tuyển dụng đang tìm kiếm nhân tài.

User Profile – Nâng cấp hồ sơ cá nhân của bạn

Với tính năng User Profile, người dùng TopDev đã có thể dễ dàng tạo một profile online chuyên nghiệp và dễ dàng quản lý. Hỗ sơ được trình bày trực quan, đầy đủ thông tin và có thể chỉnh sửa dễ dàng.

profile
Xây dựng hồ sơ cá nhân nhanh chóng và chuyên nghiệp

Bên cạnh đó, người dùng cũng có thể lưu & theo dõi các công việc mình quan tâm hay đã ứng tuyển. Hệ thống cũng sẽ phân tích hồ sơ của bạn dựa vào “Bài trắc nghiệm tính các công việc – Personal Test” giúp bạn dễ dàng tiếp cận đến nhà tuyển dụng tiềm năng. Ngoài ra, các gợi ý việc làm cũng sẽ được hiển thị phù hợp với chuyên môn/vị trí mà bạn quan tâm.

CV Convert – Tạo CV chỉ trong 1 Click

Tính năng CV Convert sẽ giúp người dùng dễ dàng cập nhật hồ sơ của mình bằng cách tải lên CV hiện có. Các thông tin trong CV của bạn sẽ được quét và đồng bộ theo một CV chuẩn Developer chuyên nghiệp, dễ đọc và thu hút nhà tuyển dụng.

Chuyển đổi CV
Chuyển đổi CV đơn giản, nhanh chóng chuẩn developer

Sau khi tải CV đã được chuyển đổi, bạn có thể tự do sửa đổi, cập nhật thêm thông tin hay tải xuống bản hồ sơ mới này. Với CV Convert sẽ giúp bạn tiết kiệm rất nhiều thời gian mà CV mới lại vô cùng chỉn chu và hấp dẫn.

Tóm lại, với sự đổi mới lần này, TopDev hy vọng sẽ mang lại những trải nghiệm tốt nhất cho người dùng. Những thay đổi này sẽ giúp ứng viên dễ dàng hơn trong việc tìm kiếm việc làm cũng như giúp nhà tuyển dụng tiếp cận với ứng viên tiềm năng nhanh chóng. Chúc bạn có trải nghiệm tuyệt vời trên website của TopDev nhé!

Hàng loạt việc làm IT hấp dẫn trên TopDev đang chờ bạn ứng tuyển..

Đôi điều trong Project Management Fundamental

Đôi điều trong Project Management Fundamental

Project Management, vị trí quản lý dự án phần mềm sẽ cần biết những gì? Những yếu tố nào trong quá trình quản lý dự án cần quan tâm?

Bài viết này cung cấp cái nhìn khách quan về dự án, các bước sẽ làm khi lên plan, lên quotation cho 1 dự án mới. Kiến thức này chỉ là kiến thức chung chung, chi tiết hơn anh em có thể tìm tới từng phần để đọc và hiểu sâu hơn.

Project Management Fundamental
Không có gì mệt mỏi nha anh em. Hiểu cho PM, họ cũng mệt lắm.

Quản lý dự án cũng là công việc nặng hơn về yếu tố kinh nghiệm. Tức là càng trải qua nhiều dự án càng quản lý dự án tốt hơn. Phần đầu tiên này mới chỉ nói tớ 1 vài point trong Project Management Fundamental. Anh em có thể theo dõi tiếp phần 2 ở các bài viết tiếp sau đây.

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

1. What’s is my project?

Đơn giản nhưng luôn là câu hỏi đầu tiên cần được giải đáp đối với bản thân quản lý dự án (Project Manager). Nó cũng là bước đầu tiên trong kiến thức quản lý dự án – Project Management. Project sắp tới chúng ta quản lý làm về gì? Câu hỏi này tưởng chừng như là không quan trọng nhưng nếu không hiểu hoặc hiểu sai, rất dễ dẫn tới cả dự án sẽ thất bại.

Những thông tin cần nắm bao gồm:

  • Business domain là gì?
  • Project làm về lĩnh vực gì?
  • Project plan làm trong bao lâu?
  • Budget là gì?
  • Expect của khách hàng là gì?
  • Project Management Fundamental
    Nguồn ảnh / Source: wiki.en.it-processmaps.com

5 câu hỏi phía trên đây chưa được xem là đủ. Ở bước đầu tiên này, define được project, hiểu được project làm gì sẽ cần tốn chút thời gian của Project Manager. Bằng mọi cách, hỏi, kick of meeting, email, gặp mặt trực tiếp khách hàng. PM cần có thông tin đầy đủ và chính xác, tốt nhất là thông tin official từ chính khách hàng để hiểu được project sắp quản lý tới đây sẽ làm gì?

3 tiếu chí lớn cần quan tâm:

  • Quality
  • Time
  • Cost

  5 câu hỏi phỏng vấn Project Manager nhà tuyển dụng hay hỏi nhất

  Mẫu bảng mô tả công việc Project Manager

2. Work Breakdown Structure

Sau khi đã hiểu rõ dự án làm gì. Có thể anh em sẽ cần một vài step nữa để làm rõ hơn requirement. Hoặc đặt QnA để hiểu chính xác scope, các nội dung còn chưa chắc chắn.

Một khi đã đảm bảo hiểu được nhiều nhất có thể về cái khách hàng dự định làm (nói là nhiều nhất vì đôi khi không thể hiểu hết tất cả, nhất là những cái quá chi tiết). Giờ là lúc anh em chia nhỏ công việc cần làm, thông thường ta gọi là WBS file.

Trong WBS file, ta có tất cả thông tin liên quan tới dự án. Bản thân PM, teammember và tất cả thành viên liên quan tới WBS cần hỗ trợ nhau để diền các thông tin này.

Project Management Fundamental
Work break down structure cần được chia nhỏ khối lượng công việc đúng cách. Nguồn ảnh / Source: wrike.com

Một số thông tin nên có trong file WBS bao gồm:

  • Pre condition (điều kiện là gì)
  • Infrastructure (hạ tầng ra sao, thiết kế như nào)
  • Out of scope (những feature hay tính năng nào nằm ngoài scope sẽ không làm)
  • Development environment (môi trường phát triển)
  • Development effort (break theo task hoặc epic)
  • Gía cả (cost)
  • Timeline dự kiến
  • Resource (team như nào, bao nhiêu người)
  • Các giả định (assumption – trong trường hợp dự án đang có nhiều assumption)

Nếu các dự án khác liên quan tới device, mục precondition có thể yêu cầu cung cấp device

Nhiều tin tuyển dụng Project Manager lương cao trên TopDev, ứng tuyển ngay!

3. Safety margin và check OK

Cũng nằm trong quá trình lên WBS cho dự án, nhưng phần Safety margin này muốn tách riêng ra để nói cho anh em. Margin là khoảng cách, Safety là an toàn -> khoảng cách an toàn.

Khoảng cách an toàn ở đây anh em người Việt mình thường gọi là buffer cho dự án. Rất ít dự án có thể đảm bảo 100% không có rủi ro. Tất nhiên anh em không thể biết được khúc nào trong quá trình phát triển phần mềm sẽ có vấn đề.

Chính vì vậy ta cần thêm Safety margin, cái này thì tuỳ dự án, tuỳ tính chất hoặc mức độ rủi ro đã được ước lượng (cái này sẽ nói ở phần ngay sau).

Project Management Fundamental
Safety margin là quan trọng và nên có trong dự án phần mềm. Nguồn ảnh / Source: timewax.com

Một trường hợp khác khi nói tới Safety margin là khách hàng yêu cầu trong khoảng thời gian gấp rút. Lúc này tuyệt đối không nên bỏ đi cái Safety margin đã đề ra, tất nhiên margin đó đã được tính toán cẩn thận và có thể tương đối ước lượng được.

Vậy nếu khách hàng vẫn yêu cầu delivery trong thời gian ngắn hơn. Lúc này sẽ có 2 kịch bản có thể xảy ra:

  • Money up, quality down (nhiều tiền hơn nhưng kém chất lượng hơn)
  • Task can overlapped (có thể trùng lặp hoặc làm song song nhau trong các task)

4. Risk Analytics

Trong quá trình lên plan hoặc làm WBS cho dự án. Một yếu tố quan trọng mà người quản lý dự án cần hiểu rõ là xác định rủi ro. Cần hiểu thôi nha anh em, chứ cần xác định thì còn tuỳ thuộc vào từng dự án.

Đối với các dự án nặng nề về mặt kỹ thuật, risk sẽ được các Software Engineer hoặc Technical leader hỗ trợ để break down. Tuy nhiên cần nhớ rõ và define cụ thể 2 risk như sau:

  • Project Risk (cái này là rủi ro cho cả dự án, những thứ có thể ảnh hưởng tới việc dự án có thành công hay không)
  • Product Risk (cái này là risk của riêng sản phẩm, bảo mật, performance, vân vân mây mây)

Project Management Fundamental
Ngoài hai yếu tố thì risk matrix cũng khá phổ biến để ước lượng rủi ro

Ở bước này, thông thường quản lý dự án sẽ đặt câu hỏi “What could go wrong?”. Sau khi đã có câu hỏi về các yếu tố có thể được xác định là rủi ro, ta cần đặt tiếp hai câu hỏi. Hai câu hỏi này giúp xác định rõ thêm 1 lần nữa, loại bỏ các rủi ro chưa xác định.

  • How likely (nó sẽ như thế nào)
  • How serious (nó sẽ nghiêm trọng ra sao)

5. Resources

Resource ở đây hiểu là nhân lực. Tất nhiên tuỳ thuộc vào từng dự án, từng yêu cầu cụ thể mà ta sẽ có plan resource khác nhau cho từng dự án.

Resource sẽ cần được define dựa trên yêu cầu của khách. Tất nhiên đối với các mô hình như Time & Materials thì khách hàng sẽ request trực tiếp, họ cần bao nhiêu. Một số điểm cần lưu ý khi lên plan resource là các vị trí cần có trong resource plan.

Nếu khách hàng đã có design hoặc bản thân họ đang development services, không cần UI thì không nên bổ sung vị trí này vào trong resource. Một yếu tố khác cũng cần quan tâm là resource risk. Bản thân các vị trí quan trọng cần có kế hoạch backup.

Project Management Fundamental

Nếu việc transfer để thực hiện công việc trong dự án tốn nhiều thời gian, sẽ là rủi ro nếu 1 nhân viên được trainning đầy đủ và hiểu kĩ về dự án nghỉ việc. Đây cũng là một rủi ro cần phải lường trước trong quá trình lên resource plan cho dự án.

6. Tham khảo

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

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

Xem thêm:

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

Kỹ thuật SEO bằng việc tối ưu URLs cho Website

Kỹ thuật SEO bằng việc tối ưu URLs cho Website

SEO hay tối ưu hóa công cụ tìm kiếm là một yêu cầu quan trọng khi xây dựng và phát triển Website, nó thúc đẩy lưu lượng truy cập không mất phí vào trang Web đồng thời giúp nâng cao uy tín của website. Nội dung và cấu trúc của Website ảnh hưởng trực tiếp đến SEO của Website đó, vì thế lập trình viên Web cũng cần trang bị kiến thức về SEO để có thể tạo ra một Website chuẩn SEO. Bài viết hôm nay chúng ta cùng tìm hiểu một kỹ thuật SEO bằng việc tối ưu hóa URLs cho Website nhé.

URL Slug là gì?

URL Slug là gì?

Slug là thành phần trong URL xác định địa chỉ của từng trang, nó nằm ở cuối của URL sau tên miền và các khai báo về thư mục con có thể có. Một URL Slug sẽ điều hướng trình duyệt đến đúng trang Web của bạn và phân biệt nó với tất cả các trang khác trên cùng một tên miền.

Ví dụ về các thành phần trong một URL:

https://blog.example.com/category/how-to-optimize-urls-slug

  • Protocol: https
  • Subdomain: blog
  • Domain: example.com
  • Thư mục con: category
  • Slug: how-t-optimize-urls-slug

Tối thiểu với một URL hợp lệ sẽ cần chứa giao thức (protocol) và tên miền, các thành phần còn có thể để trống. Điều quan trọng là các công cụ tìm kiếm (Search Engine) sẽ đọc và hiểu tất cả các thành phần trong URL, và để SEO Website thông qua URL, chúng ta cần tối ưu phần slug.

Các phương pháp tối ưu URL Slugs

Các phương pháp tối ưu URL Slugs

1. Làm cho nó càng đơn giản càng tốt

Cấu trúc URL của một site càng nên đơn giản thì càng tốt. URL ngắn sẽ giúp khả năng dễ nhớ đến từ cả khách lẫn công cụ tìm kiếm.

2. Loại bỏ các từ khóa thừa trên Slug

Tương tự như ý thứ nhất, để ngắn gọn và đơn giản hóa Slug; bạn nên lược bỏ các từ khóa thừa không có nhiều ý nghĩa như “và”, “cho”, … với tiếng Anh là “and”, “for”, “like”, …

Ví dụ:

how-to-optimize-your-urls-for-seo-quick-tips

  • how-to-optimize-urls-seo

Các từ khóa “your”, “for” được xóa bớt đi; ngoài ra từ “quick-tips” cũng được bỏ đi do khi đọc nội dung slug, người dùng hay Search Engine đã đủ hiểu những gì họ có thể nhận được trong nội dung bài đăng.

  Cách tích hợp ReactJS vào dự án website bất kỳ

  Cách Trình Duyệt Hiển Thị Website Của Bạn

3. Thêm vào từ khóa có liên quan

Mục đích của việc loại bỏ bớt những từ khóa thừa cũng tạo điều kiện để chúng ta thêm những keywords có liên quan đến bài viết, về nội dung, chủ đề hay các trending keywords. Từ đó các công cụ tìm kiếm sẽ đề xuất trang Web của chúng ta nhiều hơn theo đúng chủ đề.

4. Không nhồi nhét từ khóa

Việc thêm từ khóa liên quan cũng nên được giới hạn bởi vấn đề độ dài của URL. Các tài liệu SEO cũng khuyến khích rằng bạn nên chỉ cần thêm 1-2 keywords vào slug của mình; tránh việc tạo thành một mớ hỗn độn trong slug.

5. Hãy khiến nó trở nên thân thiện với người đọc

Slug có ý nghĩa là một yếu tố cần thiết giúp người dùng ghi nhớ dễ dàng và có thể hoàn toàn vào lại một cách trực tiếp trang mà không cần đến sự điều hướng. Sự thân thiện với người dùng còn thể hiện ở việc nên dùng slug theo ngôn ngữ của người dùng, đừng cố gắng ép về một ngôn ngữ cố định.

Ví dụ bạn nên đặt slug cho người dùng Việt Nam bằng tiếng Việt không giống như “/ca-nhan”, “/danh-muc”, “/danh-sach-dich-vu”, …

Cơ hội việc làm cho Web developer trên TopDev

6. Phân cách các từ bằng dấu gạch nối

Dấu gạch nối (“-“) giúp dễ dàng nhìn vào đọc các từ một cách riêng biệt. Không nên sử dụng dấu gạch dưới, nó sẽ khiến slug của bạn trông giống như một từ khóa; bạn có thể thử nó với một cú double-click chuột:

  • khong_nen_su_dung
  • nen-su-dung

7. Không nên sử dụng slug trùng với một trang khác

Việc đặt slug trùng là hoàn toàn có thể xảy ra, Website của bạn có thể xử lý bằng cách đọc các thành phần trước như thư mục con để phân biệt. Tuy nhiên, điều đó là không ổn với các Search Engine khi nó sẽ xem như 2 trang của bạn có nội dung trùng lặp. Nếu có phần quản lý nội dung Web (CMS), bạn nên thiết lập thuộc tính duy nhất (unique) cho giá trị slug với toàn bộ trang trên Website của mình.

8. Tránh sử dụng các URL được tạo động

Thông thường công cụ xuất bản bài viết sẽ tạo ra slug gợi ý dựa trên tiêu đề bài của bạn. Hãy cố gắng chăm chút cho bài viết hay trang web đó bằng cách chỉnh sửa lại slug theo đúng các nội dung mà người dùng sẽ nhận lại khi truy cập. URL động sẽ tiện và nhanh cho bạn, nhưng ngược lại sẽ có thể gây ra sự cố khi Search Engine thu thập dữ liệu SEO dẫn đến hiệu suất kém cho trang của bạn.

9. Chuẩn hóa quy tắc đặt tên URL slug

Điều này giúp bạn tạo ra sự nhất quán trên cùng một Website mà bạn cung cấp cho người dùng. Người dùng cũng hình thành được thói quen khi đọc slug và định hình ngay được về nội dung bạn cung cấp. 

Chuẩn hóa quy tắc đặt tên URL slug

Kết bài

URL Slug là một yếu tố quan trọng của SEO websites, hãy thử các phương pháp trên kết hợp với nhiều kỹ thuật SEO khác áp dụng cho Website của bạn để xem sự hiệu quả mà chúng mang lại. Hy vọng bài viết hữu ích dành cho bạn và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Software Engineer là gì? Mô tả công việc và những kỹ năng quan trọng

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

Software Engineer là gì? Software Engineer làm gì? Cơ hội nào để trở thành Sofware Engineer trong năm 2023.

Những câu hỏi được liệt kê trên đây đã được trả lời từ khoảng 4,5 năm về trước. Nhưng mỗi năm một khác, yêu cầu về kinh nghiệm và kĩ năng của người kỹ sư phần mềm đang dần thay đổi. Đặc biệt với sự xuất hiện và phát triển mạnh mẽ của AI, Software Engineer vẫn được dự báo là nghề hót hòn họt trong 10 năm tới.

Cùng tìm hiểu chi tiết hơn về nghề Software Engineer nhé!

Software Engineer là gì?
Sắp tới còn vào nhiều meet lắm anh em đừng lo

1. Software Engineer là gì?

Theo như định nghĩa khá là phổ biến và thông dụng cho Software Engineer thì

Software engineer is the branch of computer science that deals with the design, development, testing, and maintenance of software applications. Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users.

Software Engineer (kỹ sư phần mềm) là một nhánh của khoa học máy tính, làm việc với thiết kế, phát triển, kiểm thử và vận hành ứng dụng phần mềm. Kỹ sư phần mềm áp dụng các nguyên tắc kỹ thuật và kiến thức về ngôn ngữ lập trình để xây dựng giải pháp phần mềm cho người dùng cuối.

Software Engineer là gì?
SE làm đủ thứ. Nguồn ảnh / Source: artoftesting.com

Chỗ này anh em lưu ý, nếu đã sử dụng Software Engineer, không nhiều thì ít anh em phải biết hoặc phải có kiến thức tương đối về các giai đoạn khác nhau khi phát triển phần mềm:

    • Design (thiết kế)
    • Development (phát triển) – Cái này thì anh em thường có rồi
    • Maintenance (vận hành, bảo trì)

Rõ ràng là kỹ sư phần mềm (Software Engineer) là công việc đòi hỏi tính chuyên môn cao. Tuy nhiên cơ hội việc làm cũng như ưu đãi cho nghề này cũng đi kèm, luôn ở mức hậu hĩnh.

  “Luyện” gì để trở thành Software Engineer xịn?
  Một số lầm tưởng về big data của software engineer

2. Software Engineer bao gồm những công việc nào

Chính vì sự phức tạp và đòi hỏi chuyên môn cao cần có ở nghề Sofware Engineer mà bản thân này cũng chia thành nhiều vị trí. Thông thường các kĩ sư khi mới bắt đầu sẽ khởi đầu bằng Web developer hoặc Mobile developer.

Trong quá trình làm việc, bản thân người kĩ sư sẽ được tiếp xúc với nhiều hơn các vị trí khác. Từ đó học hỏi thêm các công việc cần làm, các chuyên môn khác trong quá trình phát triển phần mềm.

Đơn cử như vị trí Systems developers, vị trí này ban đầu được giao trách nhiệm tạo ra các hệ điều hành cho các tổ chức, doanh nghiệp hoặc cộng đồng. Hệ điều hành ở đây có thể là hệ điều hành cho máy tính, cũng có thể là hệ điều hành cho ứng dụng di động hoặc các hệ thống phức tạp khác.

Software Engineer bao gồm những công việc nào
Leo dần, leo dần nha anh em. Nguồn ảnh / Source: DevOpsSchool.com

Danh sách các vị trí trong nghề xuất phát điểm là Software Engineer bao gồm:

    • Applications Architect
    • Applications Developer
    • Computer Applications Engineer
    • Mobile Developer
    • Program Manager
    • Programmer
    • Project Leader
    • Quality Assurance Analyst
    • Software Engineer
    • Software Quality Engineer
    • Systems Analyst
    • Systems Developer

Sau khi đã hiểu các vị trí xung quanh có xuất phát điểm là Software Engineer. Giờ là lúc tìm hiểu xem công việc thường ngày của một Software Engineer là gì?

Tham khảo thêm các vị trí tuyển dụng Software Engineer tại Topdev

3. Daily task của Software Engineer

Trả lời cho câu hỏi Software Engineer là gì tất nhiên không thể không biết hằng ngày công việc họ phải làm là gì. Đâu chỉ mỗi fix bug, càm ràm, đập phím rồi lại fix bug.

Ngoài việc sử dụng kiến thức, ngôn ngữ lập trình, kinh nghiệm để phát triển phần mềm, các kĩ sư còn thể vận hành, maintain hệ thống của các kĩ sư khác phát triển.

Daily task của Software Engineer
Thời gian ước lượng cho từng công việc. Nguồn ảnh / Source: codingnomads.co

Công việc của hàng ngày của Software Engineer thường là:

    • Designing and maintaining software systems or applications (thiết kế và maintain hệ thống hoặc ứng dụng)
    • Evaluating and testing new software programs (đánh giá và kiểm thử phần mềm)
    • Optimizing software for speed and scalability (tối ưu tốc độ và đảm bảo khả năng mở rộng)
    • Writing and testing code (viết và kiểm thử code)
    • Ensuring platform compatibility (đảm bảo cho nền tảng hoạt động)
    • Creating and enforcing IT standards within an infrastructure (tạo và thực thi các tiêu chuẩn CNTT trong hạ tầng đã có)
    • Maintaining documentation of IT systems (
    • Releasing software updates (viết release note cho phần mềm)
    • Collaborating with development teams, senior systems architects, and data science professionals (Cộng tác với development teams, kỹ sư hệ thống và khoa học dữ liệu)
    • Consulting with clients, engineers, security specialists, and other stakeholders (tư vấn khách hàng, kỹ sư, chuyên gia bảo mật và các bên liên quan)
    • Recommending software upgrades for existing programs and systems (Đề xuất nâng cấp phần mềm)
    • Presenting new features to stakeholders and internal customers (trình bày tính năng mới cho các bên liên quan và khách hàng nội bộ)

Èo, chỉ với cái danh sách này thôi đã đủ thấy bản thân người Software Engineer đã cần phải có nhiều kỹ năng như thế nào. Cần phải có kĩ năng chuyên môn, vừa phải có các kĩ năng mềm khác.

4. Kỹ năng nào cần có ở Software Engineer

Sau khi đã biết những công việc cần làm, nhà tuyển dụng sẽ đòi hỏi ở một người Software Engineer thì giờ là lúc tự hỏi những kỹ năng nào là cần thiết cho Software Engineer.

Kỹ năng cho SE giờ chia thành 2 phần, 1 là kỹ năng cứng (liên quan tới chuyên môn), 2 là kỹ năng mềm, liên quan tới cách làm việc và nhiều thứ khác.

Đầu tiên, với kỹ năng cứng, bản thân ông Software Engineer cần có:

    • Coding languages like Python, Java, C, C++, or Scala (Lập trình, đương nhiên)
    • Object-oriented programming (hướng đối tượng)
    • Database architecture (kiến trúc DB)
    • Agile and Scrum project management (quản lý dự án theo mô hình AgileScrum)
    • Operating systems (Hệ điều hành)
    • Cloud computing (Cloud)
    • Version control (Kiểm soát version)
    • Design testing and debugging (kiểm thử và điều tra bug)

Kỹ năng nào cần có ở Software Engineer
Teamwork là kĩ năng quan trọng đối với kỹ sư phần mềm. Nguồn ảnh / source: carrerkarma.com

Đây chỉ là nhóm kỹ năng chính, còn rất nhiều các kỹ năng khác cần có ở Software Engineer bao gồm:

    • Kỹ năng thuyết trình (cho khách hàng)
    • Kỹ năng trình bày vấn đề (cho anh em developer, cho khách hoặc cho QC)
    • Kỹ năng giải thích (viết lại document cho các developer khác, cho khách hàng)

5. Tương lai cho Software Engineer

Tất nhiên, với những Software Engineer giỏi, khi đã đáp ứng và có đầy đủ các kĩ năng cần thiết sẽ nhận được ưu đãi hậu hình từ nhà tuyển dụng.

Trong năm 2024, khi mà nguy cơ kinh tế suy thoái, bản thân các kỹ sư phần mềm giỏi vẫn có tương lai. Ngành IT cũng chưa thể giải toả cơn khát nhân lực. Tuy nhiên nhân lực ở đây được hiểu là nhân lực chất lượng cao. Có đầy đủ kỹ năng, kinh nghiệm để đảm trách các vị trí khác nhau.

Tương lai cho Software Engineer
Thời gian sắp tới AI sẽ hỗ trợ rất nhiều cho các kỹ sư phần mềm. Nguồn ảnh / Source: springboard.com

Ngoài việc rèn luyện chuyên môn, các kĩ năng mềm cũng là kĩ năng cực kì quan trọng. Nếu làm được mà không thể giải thích, được xem bằng với không làm. Năm 2024 dự báo sẽ là năm phát triển bùng nổ của AI, những phần khó của công nghệ sẽ được AI hỗ trợ rất rất nhiều. Vậy nếu chuyên môn đã nhẹ gánh thì các kĩ năng khác cần phải gia tăng.

Anh em đã đang hoặc lựa chọn sẽ trở thành Software Engineer trong tương lai cần chú ý vấn đề này!

6. Tham khảo

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

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

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

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