Home Blog Page 27

Thuật toán frontend: Tìm node chứa content chính

Thuật toán frontend: Tìm node chứa content chính

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

Tại sao nên đọc bài này

  • Đập vào mặt những đứa nói làm Frontend thì không cần logic, thuật toán
  • Xem tui khoe công việc đang làm thôi

Vấn đề

Chuyện là mình đang build một feature cho https://getnimbus.io, trong đó có một tính năng gọi là Term explain, cơ bản khi bạn đang xem một trang web nào đó mà có một vài từ về web3 thì Nimbus sẽ giải thích từ đó là gì, một cách ngắn gọn nhất.

Đó cơ bản feature là vậy, tuy nhiên có một vấn đề nhỏ: Một trang web sẽ có rất nhiều content, và thường user khi đọc một article hay news thì thường sẽ chỉ focus vào content đó thôi. Nếu vậy sẽ cực kì khó chịu nếu mình show một đống term explain mà không năm trong main content.

Vậy câu hỏi tiếp theo, làm sao mình tự động detect được node nào trong cây DOM chứa main content, để từ đó lấy ra text rồi match trong đó xem có term nào cần explain không.

Thuật toán frontend

Rồi cái khó ở đây là làm sao xác định được cái div nào là main content nhỉ? Trước đây thì mình hard code, mà hôm nay thấy nhiều quá, làm không nổi. Vậy là suy nghĩ có cách nào để tìm được div chứa main content không.

Solution

Vậy là mình này ra một ý tưởng, thường cái div nào mà chứa nhiều text nhất sẽ là chứa content chính của trang. Tuy nhiên vì cấu trúc của một content cũng có thể có nhiều node bên trong đó, nếu vấy thì giải thuyết như này thì sao nhỉ

Ratio = (Node nào có text length / tổng sổ node bên trong) Node nào có cái ratio đó cao nhất thì khả năng cao là main content

Cùng test thử nhé

Một số thử basic
  • Bạn có thể lấy được text content của một node bằng node.innerText
  • Số lượng child node của div qua node.childElementCount hoặc lấy list children qua node.childNodes. (Note là node.childElementCount = node.childNodes.length nhé)

  Tổng hợp các thuật ngữ trong Frontend bạn nhất định phải biết!

  Giới thiệu về StoryBook cho dự án FrontEnd

Children count

Okey, lấy được số lượng text trong một node thì dễ rồi, đếm xem node đó có bao nhiêu node con (bao gồm cả cháu chắt chút chít,…) thì phải cần tí thuật toán rồi
const getTotalChildNode = (node, total = 0) => {
  if (!node.childElementCount) {
    return total;
  }

  return total + (node.childElementCount || 0) + Array.from(node.childNodes).map(child => getTotalChildNode(child)).reduce((a, b) => a + b, 0)
}

Vì cần tìm hết cháu chắt chút chít nên hãy suy nghĩ kiểu gì cùng phải dùng đệ qui (recursive) rồi nhé!

Công thức khi nào nên nghĩ tới đệ quy: – Khi input data có structure lặp lại và kết quả lại là tổng hợp của tất cả các lần lập lại đó.

Cụ thể ở đây là node.childNodes. Mình đang cần lấy cái childNodes để biết có bao nhiêu child đúng không, và từng thằng child trong đó mình cũng lại phải đếm childNodes của nó.

Cách viết đệ quy:

1. Điều kiện dừng

2. Tính kết quả và phân phối đệ quy.

Như ở trên là dk dừng là khi éo còn childElementCount nào nữa

Tính kết quả là total + (node.childElementCount || 0), phân phối là Array.from(node.childNodes).map(child => getTotalChildNode(child)).reduce((a, b) => a + b, 0)

Okey xong rồi á, mọi người có thể cầm lên Browser test thử
Thuật toán frontend
À quên nói, nãy giờ test thử ở trang này luôn nhé https://thanhle.blog/blog/thuat-ngu-trong-frontend-optimization

Ratio

const textNodeRatio = (node) => {
  const totalNodes = getTotalChildNode(node);
  if (!node.innerText || !totalNodes) {
    return 0;
  }

  const textLength = node.innerText.length;
  return textLength / getTotalChildNode(node);
}

const checkAllNodes = (node, result = []) => {
  result.push({node, ratio: textNodeRatio(node)});
  if (node.childElementCount) {
    Array.from(node.childNodes).forEach(child => {
      checkAllNodes(child, result);
    })
  }

  return result.sort((a, b) => b.ratio - a.ratio).slice(0, 10);
}

Như nãy đã giải thuyết, lấy số từ trong node rồi chia ra theo tổng số cháu chắt, thằng nào có ratio đó cao nhất nghĩa là main

Thuật toán frontend

A… đuồi ròi, list kết quả chỉ là cái div chứa content (Môt div chứa đoạn văn). Uhm đúng nhỉ, éo có childrent nào cả, toàn là text bên trong thì chả có ratio cao nhất rồi

DKM, cay, giả thuyết mình sai sao?

Xem ngay các tin đăng tuyển dụng Front-end lương cao trên TopDev

Context của bài toán

Pop lên trong đầu mình , nếu mình đi check các trang về tin tức, news đồ, chả lẽ cả trang tin thì dài có mấy trăm chữ?

Vậy mình nên filter bỏ ra mấy thằng div mà text ít quá nhỉ. Đơn giản.

const textNodeRatio = (node) => {
  const totalNodes = getTotalChildNode(node);
  if (!node.innerText || !totalNodes) {
    return 0;
  }

  const textLength = node.innerText.length;
  if (textLength < 1000) {
	// Thằng nào có text ít quá thì cho ra đê luôn 
    return 0;
  }

  return textLength / getTotalChildNode(node);
}

Test lại

Thuật toán frontend
Thuật toán frontend

Full script

const getTotalChildNode = (node, total = 0) => {
  if (!node.childElementCount) {
    return total;
  }

  return total + (node.childElementCount || 0) + Array.from(node.childNodes).map(child => getTotalChildNode(child)).reduce((a, b) => a + b, 0)
}

const textNodeRatio = (node) => {
  const totalNodes = getTotalChildNode(node);
  if (!node.innerText || !totalNodes) {
    return 0;
  }

  const textLength = node.innerText.length;
  if (textLength < 1000) {
    return 0;
  }

  return textLength / getTotalChildNode(node);
}

const checkAllNodes = (node, result = []) => {
  result.push({node, ratio: textNodeRatio(node)});
  if (node.childElementCount) {
    Array.from(node.childNodes).forEach(child => {
      checkAllNodes(child, result);
    })
  }

  return result.sort((a, b) => b.ratio - a.ratio).slice(0, 10);
}

Độ hoàn thiện

Nói chung là mình test một vài trang khá ok, một vài trang content rất dài nên dẫn tới cái điều kiện < 1000 có vẻ không ổn lắm.

So far so good, thôi tạm ổn để sài đã . Để suy nghĩ thêm xem có cách gì khiến nó stable hơn không đã. Bạn đọc có idea gì thì giúp mình với nhá.

Đánh giá performance

Nói chung đoạn này nên check thử xem cái thuật toán của mình có thực sự chạy được không, kiểu logic đúng mà 5p sau biến laptop của user thành cái chảo chiên trứng thì hơi… độc ác phải không nào.

Đánh giá performance
Tuy nhiên, khi test thử trên con Macbook Pro M1 16GB RAM 512GB SSD thì thấy nó khá nhanh, nên thôi đoạn này mình lười viết quá. Rảnh sẽ bổ sung thêm.

Một số idea khác

  • Tìm xem div nào chiếm nhiều viewport nhất
  • Div nào chứa nhiều thẻ p trong đó nhất

Tổng kết

Đó thấy đó, đôi khi giỏi thuật toán sẽ giúp bạn giải quyết những bài toán ảo ma canada, xuka yêu chai en vậy. Vì vậy đừng coi thường thuật toán nhé!

Thuật toán frontend
Nói đi thì cũng phải nói lại, thuật toán chỉ là công cụ để bạn giải quyết vấn đề, mình thấy quan trọng vẫn là cách bạn nghĩ về vấn đề và idea để solve nó. Vì vậy lâu lâu hãy thử luyện tập nhìn xem có vấn đề gì hay ho có thể giải quyết được không nhé!

Have a good weekend!

Cách ứng dụng Chat GPT hỗ trợ cho công việc hiệu quả

Cách ứng dụng Chat GPT hỗ trợ cho công việc hiệu quả

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

Chat GPT là gì?

Chat GPT là từ viết tắt của Chat Generative Pre-training Transformer, là sản phẩm của một công ty công nghệ có tên là OpenAI, vừa mới ra mắt vào tháng 11 năm 2022, nó đã tạo ra một sự bùng nổ trong giới công nghệ toàn cầu, Chat GPT là mô hình xử lý ngôn ngữ tự nhiên, tức là tập trung vào sự tương tác giữa người và máy thông qua ngôn ngữ tự nhiên của con người, việc xử lý ngôn ngữ tự nhiên là công việc rất khó, do phải giúp máy hiểu được ngôn ngữ và ngữ cảnh trong tình huống giao tiếp.

Dữ liệu mà Chat GPT thu thập để học hỏi, là từ nguồn dữ liệu khổng lồ từ internet, sách báo v.v. Đó là lý do tại sao nó có thể trên thông thiên văn, dưới tường địa lý như vậy.

Thật ra mô hình này đã được nghiên cứu, xây dựng và phát triển từ rất lâu, các bạn có thể thấy các sản phẩm gần giống vậy như trợ lý ảo Alexa của Amazon và Google Home của Google. Alexa và Google Home mục đích làm trợ lý để điều khiển các thiết bị thông minh trong nhà, dự báo thời tiết, đặt lịch, gọi điện v.v. Nhưng Google Home và Alexa sẽ không giúp bạn nhiều trong công việc với những câu hỏi dài và mang tính học thuật.

Chat GPT ra đời, nó khiến mỗi người trên toàn thế giới phải định hình lại chính mình, vì mối đe dọa đến tình hình việc làm của nhiều ngành nghề khác nhau. Để tránh bị sa thải trong tình hình AI ngày càng thông minh và sáng tạo, thì mỗi người chúng ta phải ngày càng cố gắng hơn.

Nếu nhìn về khía cạnh tích cực thì nó sẽ là một trợ thủ đắc lực cho bạn và tôi, nếu như bạn biết sử dụng đúng cách cho công việc của mình.

>>> Xem thêm: 7 cách ChatGPT giúp bạn lập trình tốt hơn và nhanh hơn

Chat GPT giúp tiết kiệm thời gian tìm kiếm và tìm hiểu vấn đề của tôi

Khi mình có thắc mắc gì về lĩnh vực đang tìm hiểu, Chat GPT luôn truy xuất thông tin nhanh và liệt kê, đúc kết ra các thông tin ngắn gọn, súc tích. Nếu mình tìm kiếm thông tin trên Google thì phải tốn thời gian đi qua từng trang web đọc và đúc kết thì mới hiểu được nội dung.

lập trình bằng chat GPT

  Tối ưu hóa CV bằng ChatGPT: Gây ấn tượng nhà tuyển dụng ngay từ lần đầu

  Dân IT có thể được ChatGPT hỗ trợ code tự động hóa như thế nào?

Tôi đã sử dụng Chat GPT trong công việc của mình như thế nào?

Mình hỏi Chat GPT làm sao để trở thành một nhà phát triển Web3. Thì nhận được phản hồi khá cụ thể từng chi tiết về những thứ mình sẽ phải tìm hiểu. Ngoài liệt kê thông tin, nó còn giải thích thêm các chi tiết cho mình hiểu, nếu sử dụng nó quen thì chắc chắn bạn sẽ hỏi nó thay vì ngồi search Google.

lập trình bằng chat GPT

Tiếp theo mình hỏi nó về convention trong dự án NodeJS. Nó liệt kê và giải thích khá cụ thể từng mục về folder structure, folder naming convention, coding convention. Những câu hỏi mình hỏi nó, nó đều trả lời rất đầy đủ. Ngày trước mình lên google đôi khi tìm nát google mới có được một bài viết hay và ý nghĩa, nhưng giờ thì mình chỉ cần hỏi nó và đã có kết quả như mình mong muốn.

lập trình bằng chat GPT

lập trình bằng chat GPT

lập trình bằng chat GPT

Ngoài ra mình còn nhờ nó thử viết Unit Tests cho một  React component cơ bản. Đúng là nó có thể giúp mình trong mọi việc, nhưng mình thiết nghĩ không nên lạm dụng điều này, vì sẽ dẫn đến tình trạng lười suy nghĩ, về lâu về dài mình sẽ bị phụ thuộc vào nó, mà cái gì phụ thuộc thì cũng ko tốt.

lập trình bằng chat GPT

lập trình bằng chat GPT

lập trình bằng chat GPT

Việc làm AI lương thưởng hấp dẫn, mới nhất dành cho bạn!

Có nên sử dụng Chat GPT để viết Blog và tạo nội dung?

Mình thử nhờ Chat GPT tạo ra được một bài viết về Chat GPT. Như các bạn đã thấy Chat GPT tạo ra được một bài viết khá gọn gàng và mạch lạc, trông rất chuyên nghiệp. Nhưng theo quan điểm cá nhân của mình, thì không nên làm như vậy, vì thông tin được chia sẻ không xuất phát từ sự hiểu biết của mình, mà nó xuất phát từ một con bot như vậy thì không có giá trị cho cộng đồng và cho chính bản thân mình.

lập trình bằng chat GPT

Chat GPT pha trò

Ở đây mình nhờ Chat GPT nói một câu nói hài hước về nhà phát minh vĩ đại Nikola Tesla. Ừ, đọc cũng trông hài hước nhỉ.

Chat GPT thử tạo bài nhạc cho rapper Đen Vâu

Mình đã nhờ Chat GPT tạo ra một bài rap về rapper Đen Vâu, nhưng bạn hãy nhìn xem, nó giống liệt kê thông tin mà nó biết hơn là một bài rap. Mình có nói nó là bài rap phải có vần nhưng nó vẫn chưa thể hiểu. Thì ra nó cũng chưa đủ thông minh và sáng tạo như con người. Vậy Đen Vâu sẽ còn rap cho chúng ta nghe tiếp, thay vì là Chat GPT.

lập trình bằng chat GPT

Thật ra thì Chat GPT không biết gieo vần và chơi chữ như các rapper.

lập trình bằng chat GPT

Chat GPT làm nhà tư vấn tình cảm

Đúng là quân sư của ta. Ngoài những công việc như pha trò và viết nhạc thì Chat GPT cũng có thể hóa thân thành nhà tư vấn tình cảm chuyên nghiệp. Mình thử hỏi nó một câu xem nó trả lời như thế nào nhé:

Đừng lạm dụng Chat GPT hãy sử dụng nó đúng cách

Cái gì cũng có 2 mặt của nó, mặt tốt và mặt xấu, Chat GPT cũng vậy, nó có thể làm được nhiều thứ và hỗ trợ chúng ta trong công việc rất tốt. Nhưng đừng vì thế mà lạm dụng nó, bởi vì khi chúng ta lạm dụng nó, chúng ta sẽ trở nên lười học hỏi và khó có thể phát triển trong tương lai. Hãy tận dụng nó một cách thông minh.

Chat GPT có làm lập trình viên như tôi bị mất việc không?

Tính đến thời điểm hiện tại nó sẽ là công cụ tốt để mình học hỏi và phát triển. Dữ liệu của Chat GPT có được là rất lớn nhưng không phải công việc nào của lập trình viên Chat GPT cũng có thể làm được. Chat GPT sẽ không nắm được business requirements, cấu trúc, code, và deploy một dự án thực tế v.v.. Phải cần thêm một thời gian khá lâu nữa thì Chat GPT sẽ làm được những công việc đó. Nhưng khi nào Chat GPT có thể làm được những công việc đó thì ở hiện tại mỗi chúng ta phải cố gắng không ngừng mỗi ngày.

Tổng kết

Chat GPT sẽ là một trợ thủ đắc lực, hãy tiếp nhận nó thay vì sợ hãi, sử dụng nó nhưng đừng lạm dụng nó, và còn một điều nữa là mỗi chúng ta phải không ngừng cố gắng học hỏi, và phát triển mỗi ngày để không bị bỏ lại phía sau, khi thế giới công nghệ đang phát triển không ngừng.

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

Xem thêm:

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

Kong Gateway là gì? Cách thiết lập và sử dụng Kong Gateway

Kong Gateway là gì

Kong Gateway hiện đang là giải pháp API Gateway mã nguồn mở phổ biến nhất hiện nay. Nó giúp chúng ta có thể nhanh chóng, thuận tiện và bảo mật trong việc triển khai kiến trúc Microservices; cũng như cung cấp thêm các dịch vụ mở rộng khác. Bài viết hôm nay chúng ta cùng nhau tìm hiểu xem Kong Gateway là gì cùng một số hướng dẫn thiết lập để sử dụng API Gateway này nhé.

API Gateway là gì?

Trong một hệ thống Microservices, nếu như client giao tiếp trực tiếp với các services thì sẽ tạo ra một sơ đồ kết nối rất rối rắm và cực kỳ khó quản lý, cùng với đó thì các vấn đề sau có thể phát sinh:

  • Code phía client trở nên phức tạp vì phải tracking nhiều endpoint
  • Khó maintain phía client và refactor các service
  • Mỗi service phải handle nhiều vấn đề chung như Authentication, SSL, client rate limiting.

Giải pháp được đưa ra cho vấn đề trên là API Gateway – một cổng trung gian giữa client và hệ thống services đằng sau.

API Gateway là gì?

Nhiệm vụ của API Gateway là định tuyến các yêu cầu từ client gửi đến, kết hợp và chuyển đổi các giao thức. Tất cả các request từ client sẽ gửi tới API Gateway, sau đó nhờ nó định tuyến các yêu cầu đến với đúng service phù hợp. Lợi ích của việc sử dụng API Gateway:

  • Che dấu được cấu trúc của hệ thống Microservices với bên ngoài
  • Việc xử lý kết nối ở client sẽ trở nên đơn giản, gọn gàng hơn
  • Dễ dàng theo dõi lượt truy cập, traffic chung của toàn hệ thống
  • Có thể cài đặt các phương án bảo mật chung cho hệ thống trên API Gateway
  • Có thể sử dụng thay thế cho Authentication service 
  • Có khả năng caching các request và xử lý cân bằng tải trên API Gateway

Kong Gateway là gì?

Kong Gateway là một nền tảng (platform) mã nguồn mở, đóng vai trò là phần mềm trung gian (middleware) và có thể mở rộng bằng cách sử dụng plugins. Kong được viết bằng ngôn ngữ Lua và xây dựng trên NGINX. Kong thường được các nhà phát triển lựa chọn làm giải pháp triển khai API Gateway, quản lý và điều chỉnh để mở rộng quy mô.

Kong Gateway là gì?

Khi hoạt động, mọi request được gửi tới sẽ phải qua Kong trước tiên, sau đó nó sẽ được định tuyến và ủy quyền sang cho các service cụ thể trên server. Ở giữa các request và response, Kong sẽ thực thi các plugins được cài đặt. 

  SAGA Pattern trong Microservices

  Bỏ túi một số quy tắc thiết kế API hữu ích

Các thành phần trong Kong Gateway bao gồm:

  • Service: là id dùng để tham chiếu đến các API và microservice mà nó quản lý
  • Routes: điều hướng cách request gửi tới Services. 1 Service có thể có nhiều Routes
  • Consumers: đại diện cho end users của API làm nhiệm vụ control xem ai được access vào API
  • Plugins: các plugins được tích hợp vào Kong
  • Konga: công cụ quản lý GUI mã nguồn mở cho Kong.

Kong Gateway

Ưu điểm của Kong Gateway:

  • Scalable – Khả năng mở rộng dễ dàng
  • Hỗ trợ 1 trong 2 loại Databases: Postgres và Cassandra
  • Hiệu năng cao với khả năng xử lý một lượng request rất lớn
  • Hỗ trợ rất nhiều plugins tùy vào chức năng
  • Kong có 2 phiên bản Community và Enterprise. Với nhu cầu sử dụng bình thường thì bản Community hoàn toàn đầy đủ chức năng và miễn phí.

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

Thiết lập và sử dụng Kong Gateway

Thiết lập và sử dụng Kong Gateway

1. Thêm một service

Để kết nối với server API thì chúng ta cần thêm một service trong Kong, lưu ý 1 số params như dưới đây:

  • name: tên service
  • protocol: http protocol
  • host: tên của upstream
  • port: port của server, mặc định là port 80
  • path: đường dẫn tới service trên upstream
  • retries: số lần thử khi Kong không gọi được tới upstream

2. Thêm route cho service

Routes là tập hợp các quy tắc để Kong match request tới đúng API trên services mà nó cần tới. Sau khi tạo service, chúng ta sẽ thêm các routes để điều hướng các request tới chính xác các API trong service này. Bạn có thể thêm tương ứng mỗi route cho một API hoặc config route match với đường dẫn của các API trong service. Lưu ý các params trong route:

  • name: tên của route
  • protocols: http protocol
  • paths: danh sách các path được match với route, có thể sử dụng regex trong field này
  • methods: danh sách http methods
  • strip_path: xóa phần prefix của paths khi tới upstream server

3. Cấu hình plugins

Kong cung cấp cho chúng ta một số các plugins có sẵn gồm cả miễn phí và trả phí. Plugins có thể áp dụng cho toàn bộ API hoặc có thể chỉ cho cụ thể từng API thông qua name hoặc id của chúng. Một số plugins nổi bật mà Kong cung cấp:

  • Authentication: xác thực dịch vụ
  • Traffic Control: quản lý lưu lượng request đầu vào và đầu ra
  • Analytics: hỗ trợ giám sát, thống kê
  • Transformations: chuyển đổi trực tiếp dữ liệu request và response
  • Logging: ghi nhật ký

Kết bài

Như vậy chúng ta đã cùng nhau tìm hiểu về Kong Gateway cũng như các thiết lập và sử dụng nó để triển khai một API Gateway dành cho hệ thống Microservices. Hy vọng bài viết giúp bạn hiểu được lý do cần phải triển khai một API Gateway và sẵn sàng thử triển khai Kong trên hệ thống server của bạn. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm: 

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

Big Data cần học gì? Bắt đầu từ đâu? Lộ trình chi tiết cho người mới

Big Data cần học gì? Bắt đầu đâu? Lộ trình chi tiết cho người mới

Bắt đầu hành trình học về Big Data đôi khi có thể là một thách thức đối với những người mới chập chững bước vào lĩnh vực này. Những câu hỏi như “Học Big Data bắt đầu từ đâu?” hay “Big Data cần học gì?” thường xuyên làm cho các newbie cảm thấy bối rối và không biết phải bắt đầu từ đâu. Nhưng đừng lo, bài viết này sẽ giúp bạn hiểu rõ hơn về Big Data và cung cấp lộ trình chi tiết để trở thành một chuyên gia Big Data giỏi. Bắt đầu thôi nào!

Big Data là gì? Vai trò Big Data đối với doanh nghiệp

Big Data là một tập dữ liệu cực lớn vượt qua khả năng quản trị và xử lý thông thường. Thay vào đó, big data cần một phương pháp, công cụ tinh vi hơn để khai thác dữ liệu, phân tích chuyên sâu và trích lọc ra các data hữu ích với doanh nghiệp. Dựa vào những data này mà doanh nghiệp sẽ đưa ra các quyết định hiệu quả hơn trong tương lai.

Big Data cần học gì

Big Data có tầm quan trọng ngày càng cao đối với doanh nghiệp, mang lại nhiều lợi ích như:

  • Nâng cao hiệu quả kinh doanh: Big Data có thể được sử dụng để phân tích dữ liệu khách hàng, dữ liệu bán hàng, dữ liệu sản xuất,… để giúp doanh nghiệp hiểu rõ hơn về khách hàng, thị trường, sản phẩm,…
  • Phát triển sản phẩm, dịch vụ mới: Big Data có thể được sử dụng để phân tích xu hướng thị trường, nhu cầu của khách hàng để giúp doanh nghiệp phát triển các sản phẩm, dịch vụ mới đáp ứng nhu cầu của thị trường.
  • Tăng cường trải nghiệm khách hàng: Big Data có thể được sử dụng để phân tích dữ liệu giao dịch, dữ liệu tương tác với khách hàng để giúp doanh nghiệp hiểu rõ hơn về nhu cầu của khách hàng.
  • Phát hiện gian lận: Big Data có thể được sử dụng để phân tích dữ liệu giao dịch để phát hiện các hoạt động gian lận.

Tại sao nên học Big Data ngay từ bây giờ?

1. Nhu cầu nhân lực Big Data ngày càng lớn

Big Data là một lĩnh vực đang phát triển nhanh chóng, với nhu cầu nhân lực lớn. Theo thống kê của LinkedIn, nhu cầu nhân lực Big Data trên toàn cầu sẽ tăng 29% trong vòng 5 năm tới. Tại Việt Nam, nhu cầu nhân lực Big Data cũng đang tăng lên nhanh chóng, với mức tăng trưởng hàng năm khoảng 20%.

2. Mức lương “khủng” và vẫn đang tăng hàng năm

Do nhu cầu nhân lực khan hiếm nên mức lương của những người làm trong lĩnh vực Big Data cũng rất cao. Cụ thể, theo báo cáo thị trường IT Việt Nam năm 2023 của TopDev, mức lương của các vị trí như Big Data Engineer là $1.700/tháng, Data Scientist là $2.365/tháng và ở vị trí Machine Learning /AI Engineer mức lương lên đến $2.381/tháng.

luong big data

3. Cơ hội làm việc rộng mở, không giới hạn lĩnh vực

Big Data không ràng buộc ở bất kì lĩnh vực hay ngành nghề nào. Từ kinh doanh, tài chính, sản xuất đến giáo dục, y tế, kiến trúc đều có thể ứng dụng big data. Đặc biệt, trong thời kì công nghệ 4.0, big data sẽ là chìa khóa giúp các doanh nghiệp đi xa hơn trong lĩnh vực kinh doanh của họ. Những điều này đã tạo nên lợi thế to lớn cho những ai theo đuổi ngày big data.

  5 công cụ phân tích dữ liệu Big data tốt nhất 2024

  26 công cụ và kỹ thuật trong Big Data có thể bạn chưa biết

Big Data cần học gì? Bắt đầu đâu?

Big Data là một lĩnh vực rộng lớn, bao gồm nhiều kiến thức và kỹ năng khác nhau. Vậy học Big Data bắt đầu từ đâu?

1. Bắt đầu tìm hiểu lý thuyết cơ bản về Big Data

  • Khám phá Big Data: Đọc sách, bài viết, và tài liệu trực tuyến để hiểu về khái niệm, lợi ích, và thách thức của Big Data trong thế giới ngày nay.
  • Hiểu về các cách phân tích dữ liệu lớn: Phân tích mô tả, phân tích chẩn đoán, phân tích dự đoán, phân tích quy luật,…
  • Các kiến thức tổng quát về dữ liệu: schema, database, relational, constraints,…

2. Học ngôn ngữ lập trình

ngôn ngữ lập trình big data

Ngôn ngữ lập trình là yếu tố bắt buộc phải có để bạn có thể giải quyết các bài toán liên quan đến Big Data. Bạn sẽ chọn học một vài ngôn ngữ lập trình phổ biến trong Big Data, chẳng hạn như Python, R, Java, Scala, Python, Go. Sau khi đã vững ngôn ngữ lập trình bạn sẽ tiếp tục học thêm kiến thức và kỹ năng ở các công nghệ lớn như Spark, Hadoop, NoSQL, Storm.

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

Một số chuyên ngành học liên quan đến Big Data

Big Data là một lĩnh vực rộng lớn, bao gồm nhiều chuyên ngành khác nhau. Dưới đây là một số chuyên ngành học liên quan đến Big Data:

  • Khoa học máy tính (Computer Science): Chuyên ngành này cung cấp nền tảng kiến thức vững chắc về các khía cạnh kỹ thuật của Big Data, bao gồm lập trình, hệ thống máy tính, mạng máy tính,…
  • Khoa học dữ liệu (Data Science): Chuyên ngành này kết hợp kiến thức từ khoa học máy tính, thống kê và các lĩnh vực khác để phân tích dữ liệu và đưa ra các kết luận có ý nghĩa.
  • Kiến trúc sư dữ liệu (Data Architect): Kiến trúc sư dữ liệu là người chịu trách nhiệm thiết kế và triển khai các giải pháp Big Data. Họ cần có kiến thức sâu về các công nghệ Big Data, cũng như các kiến thức về kinh doanh và quản trị.
  • Nhà phân tích dữ liệu (Data Analyst): Nhà phân tích dữ liệu là người chịu trách nhiệm phân tích dữ liệu để cung cấp thông tin cho các quyết định kinh doanh. Họ cần có kiến thức về thống kê, các kỹ thuật phân tích dữ liệu và các lĩnh vực liên quan.
  • Nhà quản trị dữ liệu (Data Administrator): Nhà quản trị dữ liệu là người chịu trách nhiệm quản lý các hệ thống dữ liệu. Họ cần có kiến thức về các hệ thống dữ liệu, các công nghệ Big Data và các quy định liên quan.

Ngoài ra, còn có một số công việc khác trong lĩnh vực Big Data, chẳng hạn như:

  • Kỹ sư bảo mật dữ liệu (Data Security Engineer)
  • Kỹ sư phát triển ứng dụng Big Data (Big Data Application Developer)
  • Kỹ sư học máy (Machine Learning Engineer)
  • Kỹ sư deep learning (Deep Learning Engineer)
  • Kỹ sư BI (Business Intelligence Engineer)

Tóm lại

Hy vọng bài viết trên đã giúp bạn trả lời được câu hỏi big data cần học gì và bắt đầu từ đâu. Lộ trình học Big Data mà bài viết đã đề cập chỉ mang tính chất tham khảo. Bạn có thể điều chỉnh lộ trình học phù hợp với nhu cầu và khả năng của bản thân. Đối với những người mới bắt đầu, việc học Big Data có thể là một thách thức, nhưng với một lộ trình học phù hợp, bạn có thể dễ dàng tiếp cận và hiểu sâu về lĩnh vực này. Chúc bạn thành công!

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

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

Các khái niệm cơ bản về Docker cho người mới tìm hiểu

khái niệm cơ bản về Docker

Bài viết được sự cho phép của tác giả Mai Đông Giang

Docker là gì?

Docker là một nền tảng cho các developers để develop, deploy và khởi chạy ứng dụng của mình với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển với mỗi dịch vụ trên một hoặc nhiều container khác nhau. Khi cần deploy lên bất kỳ server nào chỉ cần run container của Docker thì ứng dụng của bạn sẽ được khởi chạy ngay lập tức.

Nhờ đó chúng ta sẽ tiết kiệm được rất nhiều thời gian cho việc cài đặt môi trường. Đồng thời, các developers làm việc với nhau sẽ sử dụng thống nhất một môi trường và các hình liên quan, giúp việc teamwork trở nên đồng nhất. Docker đa phần được cài đặt và chạy trên các container nên việc gỡ các gói cài đặt hay thay đổi version,… sẽ không ảnh hưởng gì đến máy tính của bạn cả. Máy tính của bạn sẽ trở nên sạch sẽ hơn.

Vậy nên, hiện nay nhiều công ty tuyển dụng cũng chú trọng đến skill Docker như là một kỹ năng cần có cho một vị trí developer.

Sau đây là các khái niệm chính về Docker mà mình tổng hợp được. Nó sẽ giúp bạn có những hiểu biết về Docker hơn, nhất là các bạn mới bắt đầu làm quen với công cụ này.

  Share data giữa Docker Container bằng Docker Volume

  Hướng dẫn load docker image từ file tar (docker load)

Image

Là tên gói cài đặt từ Docker Hub. Khởi chạy từ Dockerfile

Container

Một vùng chứa Image đã được cài đặt. Có thể tưởng tượng nó như là một máy tính nhỏ vậy, chứa những gì mà chúng ta muốn lưu tại đó.

Network

Tạo ra một đường kết nối giữa các Container với nhau. Nếu như không được khai báo kết nối đến Network thì Container sẽ không thể giao tiếp với các Container khác trong cùng một mạng được. Tương tự như một mạng LAN giữa các máy tính với nhau.

Volumes

Nơi chứa data, mã nguồn. Có thể sync với thư mục bất kỳ nào tại máy tính chủ của chúng ta đang sử dụng.

Docker compose

Một công cụ giúp chạy build nhiều container một lần, dễ dàng và thuận tiện cho việc quản lý các Container trong một dự án.

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

Dockerfile

Chứa các lệnh để build một docker. Các lệnh thường dùng trong Dockerfile là:

  1. FROM — chỉ định image gốc: php, unbutu, alpine…
  2. LABEL — cung cấp metadata cho image. Có thể sử dụng để add thông tin maintainer. Để xem các label của images, dùng lệnh docker inspect.
  3. ENV — thiết lập một biến môi trường.
  4. RUN — Có thể tạo một lệnh khi build image. Được sử dụng để cài đặt các package vào container.
  5. COPY — Sao chép các file và thư mục vào container.
  6. ADD — Sao chép các file và thư mục vào container.
  7. CMD — Cung cấp một lệnh và đối số cho container thực thi. Các tham số có thể được ghi đè và chỉ có một CMD.
  8. WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như: RUN, CMD, ENTRYPOINT, COPY, ADD,…
  9. ARG — Định nghĩa giá trị biến được dùng trong lúc build image.
  10. ENTRYPOINT — cung cấp lệnh và đối số cho một container thực thi.
  11. EXPOSE — khai báo port lắng nghe của image.
  12. VOLUME — tạo một điểm gắn thư mục để truy cập và lưu trữ data.

Một số lệnh sử dụng với Docker bạn cần biết:

List image/container:

$ docker image/container ls

Delete image/container:

$ docker image/container rm <tên image/container >

Delete all image hiện có:

$ docker image rm $(docker images –a –q)

List all container hiện có:

$ docker ps –a

Stop a container cụ thể:

$ docker stop <tên container>

Run container từ image và thay đổi tên container:

$ docker run –name <tên container> <tên image>

Stop all container:

$ docker stop $(docker ps –a –q)

Delete all container hiện có:

$ docker rm $(docker ps –a –q)

Show log a container:

$ docker logs <tên container>

Build một image từ container:

$ docker build -t <tên container> .

Tạo một container chạy ngầm:

$ docker run -d <tên image>
$ docker pull <tên image>

Start một container:

$ docker start <tên container>

Trên đây là những tổng hợp của mình về những khái niệm cơ bản trong Docker và những lệnh cần thiết.

Hi vọng sẽ giúp bạn hiểu hơn về Docker, có thể áp dụng cho việc lập trình của mình.

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

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

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

Tổng hợp các thuật ngữ trong Frontend bạn nhất định phải biết!

các thuật ngữ trong Frontend

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

Tại sao nên đọc bài này?

  • Dành cho các bạn mới tiếp cận và thấy quá nhiều thuật ngữ mới
  • Dành cho các bạn có thể đã làm FE một thời gian rồi nhưng đôi khi vẫn không biết có một thứ như vậy tồn tại trên đời
  • Có vài keyword để tối ưu performance cho website

Các thuật ngữ phổ biến

Trong bài này mình sẽ nói về các thuật ngữ liên quan tới optimization nhé!

Code split

Hiểu một cách đơn giản thì bạn có một file code rất to, bạn chia file to đó ra thành nhiều file nhỏ thì gọi là code split.

Hoặc một ví dụ khác là bạn có một trang web build bằng React, trong đó bao gồm Header, body và Footer. Thì bạn có thể build thành một file bundle.js bao gồm cả 3 component trên hoặc cũng có thể chia cái bundle đó thành 3 file, mỗi file chứa một component.

Hãy nghĩ đơn giản code split như là bạn cắt một miếng bánh to thành nhiều miếng nhỏ.

Lazy load

Lazy load nghĩa là một cách để delay việc load một resource gì đó cho tới khi thật sự cần thiết.

Như trong Video ở trên, sẽ khá tốn resource nếu chúng ta load hình mà user chưa thực sự cần xem đúng không. Do đó, nó apply lazy load để khi nào ta gần scroll tới cái hình đó thì mới load hình về. Vừa đỡ tốn CPU cho máy user, cùng vừa đỡ tốn 3g cho người ta.

Resource ở đây bạn có thể define là mọi thứ như là

  • Một file code
  • Một cái thẻ img
  • Một thư viện
  • Một response từ API

Khi nghĩ về lazy load thì bạn cần suy nghĩ: Cái gì có thể lazy và cái gì không thể lazy. Việc chia ra những resource nào lazy load được, cái gì không thể lazy load giúp bạn có chiến thuật quản lý resource tốt hơn.

Back lại cái thuật ngữ bên trên Split code làm ví dụ nhé. Câu hỏi của bạn là cắt cái bundle bự thành nhiều bundle nhỏ để làm gì?

Câu trả lời thường là bạn cắt nó ra thành hai phần: Phần có thể lazy load được và phần không thể lazy load được.

Do đó bạn sẽ thấy khái niệm lazy load thường đi chung với split code vì lazy load cái resource code thì cần cắt nó thành nhiều chunk nhỏ hơn để hiện thực lazy load.

Về mặt lý thuyết, tất cả các resource liên quan tới interaction của user (Scroll, click, hover, press,…) đều có thể lazy load được.

  Virtualbox Headless Frontend là gì?

  Frontend cần học những gì để trở nên thật giỏi!

Prefetch/Preload

Prefetch nghĩa là bạn nói với Browser “Tao có một cái resource này nè, khi nào mày rảnh thì load trước giúp tao nhé”

Prefetch/Preload

Preload nghĩa là bạn nói với Browser “Load trước đống resource này cho tao nhé, rảnh hay không thì cũng load ”

Okey vậy khi nào thì nên dùng prefetch hay preload?

Prefetch hữu dụng khi bạn tin là user sẽ cần một số resource này trong tương lai. Mình ví dụ khi user hover vào một link nào đó, mình cũng không chắc là user sẽ thật sự click vào link này hay không, nhưng khả năng cao là có. Vì vậy nếu mình prefetch trước cái link này thì nếu user bấm thật thì nó đã được load sẵn cmnr, nên sẽ thấy trang này load nhanh vklllllllllll ⚡

Preload hữu dụng khi bạn cần những resource cực kì quan trọng cho bước render đầu tiên. Ví dụ dễ thấy nhất là Font, việc preload trước font giúp trang web của bạn render lần đầu tiên thì visual cũng ok luôn. Thay vì nếu render ra trang web mà font chưa có, sau đó load font rồi phải render lại một lần nữa. Việc thay font như vậy dễ khiến cho layout bị flick và với góc nhìn của user thì thấy nó cũng khá là bad

Tree Shaking

Bạn tưởng tượng đống code/module của bạn như một cái cây nha. Bây giờ bạn cầm cái cây đó rung mạnh thật mạnh, cái gì sẽ xảy ra? Những thành phần yếu ớt trên cái cây đó sẽ bị rơi ra như là già, cành khô, tổ chym,…

Tree Shaking

Tree shaking trong code cũng tương đương vậy, bạn loại bỏ những thứ không cần thiết trong code (dead code) một cách tự động.

Cái này giống như việc giảm “mỡ” cho bundle của các bạn, sẽ giúp load web nhanh hơn, không tốn thời gian cho những thứ không cần thiết.

Xem ngay các tin đăng tuyển dụng Front-end lương cao trên TopDev

SEO

Viết tắt của cụm từ Search Engine Optimization – Tối ưu hóa cho công cụ tìm kiếm. Hiểu đơn giản là có vô vàn website trên internet đúng không, và khi bạn search Google thì nó sẽ trả về cho bạn vào trăm hay vài triệu kết quả đó. Vậy làm sao để trang web của mình nằm ở vị trí cao hơn trong danh sách đó để nhiều user biết tới hơn?

seo

Vậy SEO là cách để tối ưu trang web giúp nó có thứ hạng cao hơn ở các công cụ tìm kiếm như Google, Bing.

Tụi Google sẽ có nhiều tiêu chí để quyết định trang web của bạn có phù hợp với user hay không như là Content, keyword, hình ảnh, tốc độ load trang, ngôn ngữ,… Do đó khi nói làm SEO nghĩa là bạn làm đủ kiểu để các tiêu chí đó tốt hơn, phù hợp với user hơn (đường nhiên là theo tiêu chí của tụi Google rồi)

Google Page Speed

Nó là cái trang này nè!

Google build ra một cài tool để đo lường tốc độ website của bạn và cho ra thang điểm từ 0 tới 100. Điểm càng cao thì chứng tỏ website của bạn “ra dẻ” load càng nhanh.

Thường cái này là một tiêu chí mà ai cũng dùng để xem coi website của bạn có đuỷnh hay không.

Mình thì thấy nó cũng tương đối tuy nhiên mọi người lại dựa vào nó quá nhiều để đánh giá một website

The fold

The fold

The fold hiểu là bạn cắt cái trang web theo chiều ngang, bên trên the fold là những gì đập vào mặt user ngay lập tức khi họ mở trang web của bạn. Những gì ở dưới thì người ta phải scroll xuống mới thấy được.

Và vì định nghĩa là những gì đập vào mặt user ngay lập tức nên khái niệm này khá là … tương đối. Vì users có thể dùng device khác nhau, to nhỏ khác nhau. Có thể đập vào mặt ở màn hình MateView 4k 27inch với màn hình Dell FullHD 24 inch nó khác nhau nên do đó the fold ở hai màn hình đó cũng khác nhau.

Tại sao cần phải phân biệt the fold? Nó giúp bạn tối ưu hơn cho user kiểu như

  • Ở trên the fold thì load càng nhanh càng tốt vì nó là thứ xuất hiện ngay lập tức khi user mở website
  • Ở dưới the fold thì có thể apply lazy load vì user phải scroll xuống mới thấy được phải không nào

CSS critical

Là một cách để trích xuất những CSS Above the fold ra riêng để tối ưu tốc độc load.

CSS critical

Nhớ vụ mình nói ở trên là optimize tối đa cho những thứ Above the fold không, thì cái này là một cách để tối ưu Above the fold. Tuy idea về việc chỉ inject CSS above the fold ra gắn vào khá là đỉnh nhưng thực tế rất rất khó làm cái này. Nên mình thấy nghe cho vui thì được :))

CSS in JS

Cái tên nó lên tất cả: Viết CSS ở JavaScript.

Mà tại sao lại không viết trong file css nhỉ?

Khi dùng CSS đồng thời kết hợp với các library, hay framework gần đầy thì nó sẽ gặp một vài vấn đề:

  • CSS là global, trong khi mình muốn component của là isolated và không bị, hoặc tạo những style lên các thành phần khác
  • Lỡ code JS hết rồi nên thôi code luôn JS hết

Vì nó viết bằng CSS nên sẽ dễ hơn khi bạn muốn làm một số thứ advance hơn với CSS như CSS extraction, critical,…

Service worker

Là một đoạn script chạy ở background, nó có thể intercept vào request và response giữa web của bạn và server, và làm một vài thứ hay ho khác (Notification, cache, sync data,…)

Service worker

Vì nó đứng ở giữa nên các bạn tưởng tượng nó như proxy cũng được, có thể thay đổi data gửi đi hay data nhận về luôn. Nên cách dùng của service worker cũng khá là sáng tạo, có thể là:

  • Mock proxy server
  • Cache lại response để biến web của các bạn trở thành offline web
  • Precache những resource cần thiết

Một key quan trọng khi nói tới Service worker là vì nó chạy dưới background nên bạn có thể làm vài thứ hay ho mà không khiến cho web của các bạn chậm đi.

Web worker

Web worker

Trước đây thì web chỉ có một luồng thực thi thôi, được gọi là Main thread. Và vì chỉ có một luồng thực thì nên nó đẻ ra một vấn đề: Khi bạn đang thực hiện một tác vụ (task) gì đó, thì các tương tác khác phải chờ cho task đó chạy xong mới chạy được.

Case thử tế là ví dụ bạn code một trang web tính lương cho nhân viên, khi có một task tính toán lương đang chạy ở dưới và nếu nó khá nặng thì lúc này user có click vào đâu thì trang web của các bạn cũng không phản hồi được (vì đang bận tính lương chết mọe rồi mà, còn bắt tao làm cái khác nữa hả????)

Do đó Web worker đẻ ra để giải quyết vấn đề trên. Nói đơn giản là cái gì tính toán nặng thì đẩy ra một thread khác, để cái thằng Main thread rảnh rỗi còn handle interaction từ user.

Hydration

Cái từ này hơi hiếm gặp nhưng khác là quan trọng và gặp phải ở hầu hết các lib support SSR.

Hydration là quá trình gắn các event listener và các node tương ứng đã được generate từ quá trình SSR.

List virtualization

List virtualization

Bạn tưởng tượng là cái web của mình là một cuộn giấy siêu dài và mình dang nhìn nò thông qua một cửa sổ nhỏ (Window). Nghĩa là mình đang nhìn một phần rất nhỏ trong cuộn giấy đó, và để nhìn hết thì các bạn phải scroll.

List virtualization là kĩ thuật chỉ render cái DOM node nằm trong cửa sổ (Window) của bạn, các thứ nằm ngoài thì bỏ nó ra khỏi DOM luôn để trình duyệt không tốn resource để take care những thứ không quan trọng.

Bạn sẽ thấy cái này rất quan trọng khi apply cho những trang web có list cực kì dài và phức tạp như là New feed của Facebook, Twitter,…

Tới đây thấy cũng khá dài rồi, kiều càng viết nó càng có thêm á , nên mình cũng không biết là còn thiếu gì quan trọng không.

Ngoài ra bạn còn muốn tìm hiểu về thuật ngữ ở mảng nào nữa (Layout, CSS, state management, …)? Comment bên dưới nhé!

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

Xem thêm:

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

Lột trần sự thật về sự phức tạp của Big Data?

Lột trần sự thật về Big Data

Bài viết được sự cho phép của tác giả Anh CSC

Đầu tiên phải hỏi là “Big Data là gì?“. Vậy thì hỏi tiếp “Bạn có nghe tới AI chưa?” (dễ gì mà chưa). Nếu mà có nghe nói thì bạn có biết là AI hoạt động thế nào không? Nó học được nhờ vào Big Data đó… Bạn có thể tưởng tượng nó như một mớ thông tin thiệt bự mà sẽ dươc sắp xếp như môn học Thống kê vậy, và với số mẫu thiệt lớn, AI (cũng như con người) có thể học được cách phân biệt giữa vật A với vật B.

Dông dài thì trong thời đại được thống trị bởi công nghệ, Big Data đã thầm lặng xuất hiện trong thế giới xung quanh chúng ta đã lâu rồi (nhưng mà ta không biết hoặc để ý thấy thôi). Mặc dù có vẻ như là một khái niệm phức tạp, Big Data từng ngày được dệt chặt vào cuộc sống của chúng ta, thúc đẩy những đổi mới, điều chỉnh và tối ưu lại những điều cũ.

Vậy thì trong bài đăng này, cùng mình bắt đầu hành trình để khám phá một số ứng dụng thực tế của Big Data trong những khía cạnh cuộc sống hàng ngày của chúng ta ha.

1. Trải nghiệm Mua sắm cá nhân:

Đặt Shopee chưa? Đặt TikTok Shop chưa? Đặt Lazada bao giờ chưa? Nếu có thì chắc bạn cũng thấy là “À hình như nó đang theo dõi mình hay sao ấy! Chứ làm sao mà nó lại biết mình đang mua những món đồ này?”

Nghĩ thì đáng sợ thiệt, nhưng thiệt là hong có đáng sợ hết. Tất cả đều là nhờ công của Big Data hết. Big Data đóng một vai trò quan trọng trong việc tùy chỉnh trải nghiệm mua sắm của bạn ấy. Qua việc phân tích các giao dịch mua sắm trước đây của bạn, sở thích và hành vi vào web, các sàn thương mại điện tử có thể gợi ý gần như chính xác các sản phẩm bạn đang / sẽ muốn mua. Xong rồi sau đó nó sẽ giảm giá và hoặc khuyến mãi hơn cho bạn, thì làm kiểu gì mà bạn không nhắm mắt chọn Bỏ vào giỏ hàng rồi Mua ngay (mình cũng có thế thôi haha).

vậy là nó có thật sự nghe lén mình không nhỉ

2. Định hình ngành Y Tế:

Big Data đang cách mạng hóa ngành y tế, đóng góp vào kết quả điều trị và chiến lược điều trị tốt hơn cho bệnh nhân. Sự ảnh hưởng sâu sắc của đại dịch COVID-19 đã thúc đẩy cho ứng dụng Big Data vào việc theo dõi và dự đoán khả năng lây nhiễm của virus. Ngoài ra thì nó cũng giống như việc Doctor Strange thấy trước 14 triệu mấy case trong tương lai vậy. Big Data sẽ cho mô phỏng cho mình một lượng lớn các trường hợp có thể xảy ra khi nghiên cứu và phát triển thuốc.

Về chủ đề này thì mình sẽ đào sâu vào các ví dụ cụ thể nhấn mạnh cách công nghệ này đang cứu sống và cải thiện chất lượng tổng thể của dịch vụ y tế trong 1 bài viết khác. Đón xem nhé.

3. Thư giãn từ Đầu ngón tay của bạn:

À đừng có nghĩ bậy nhen. Đầu ngón tay của bạn là chiếc điện thoại đó! Nghe “Netflix and Chill” chưa? Nếu bạn chưa biết cụm này có ý nghĩa gì thì mau mau hỏi bạn trai/bạn gái của bạn thử (rồi thử xem hehe).

Quay lại cái vụ Netflix! Thì thật ra nội dung trên Netflix đã thay đổi hành vi mà ta xem phim nữa. Đằng phía sau “back-end” ấy là các thuật toán Big Data phân tích lịch sử xem của bạn, sở thích và thậm chí là thời gian bạn dành cho những thể loại cụ thể để có thể gợi ý series hấp dẫn hơn nữa (làm bạn dán chặt vô màn hình tới 3h sáng còn chưa dứt). Bằng cách này, Netflix (hay Hulu hay những thằng làm dịch vụ truyền hình khác) đã làm giàu trải nghiệm của bạn lên gấp 2 gấp 3 lần (cũng có thể là x10 lận). Và kết quả cuối cùng là bạn sẽ sẵn sàng móc hầu bao ra trả cho các business đó để nó cho bạn lại trải nghiệm (cuối cùng vẫn là tiền)

4. Gỡ nút thắt trong vụ Kẹt xe

Một trong mấy cái ứng dụng của Big Data là việc tối ưu Giao thông. Cái này ở nước mình thì chưa triển khai mạnh. Nhưng mà ở nước ngoài thì họ đã dần áp dụng vào thực tế rồi.  Bằng cách sử dụng Big Data, hệ thống có thể dự đoán được tình trạng kẹt xe, giúp đưa ra những gợi ý tốt hơn về di chuyển. Từ đó mà giao thông cũng bớt kẹt hơn, parking cũng dễ dàng hơn. Điều này giúp cho các doanh nghiệp có thể tiết kiệm chi phí, thời gian và có thể allocate cho những chỗ cần hơn.

5. Social media lướt hoài không hết

Mặc dù là đặt sau cùng, nhưng bạn có thể thấy rất rõ ảnh hưởng của Big Data lên nội dung mà bạn thấy trên mấy trang mạng xã hội. Thử xem video, like video về con mèo đi, mình đảm bảo (và chắc chắn bạn đã thấy tương tự) là mấy chục cái video sau đó là toàn về con mèo. Đó là Big Data đó bạn! Bằng cách phân tích hành vi xem video cũng như cách mà những người có hành vi giống bạn tương tác, hệ thống có thể recommend ra những nội dung cực kỳ phù hợp, cực kỳ “bánh cuốn” với bạn.

Túm váy lại là:

Rõ ràng là Big Data không hẳn là một cái gì đó cao siêu mà chỉ dùng trong IT, hay CNTT nói chung, mà nó đã dần trở thành một phần không thể thiếu trong cuộc sống hằng ngày của chúng ta. Từ các gợi ý mua sắm cá nhân đến những đổi mới trong lĩnh vực y tế, quản lý giao thông hiệu quả và ở xa hơn, ảnh hưởng của Big Data là vô địch. Giờ thì mình ngồi đợi coi mai mốt Big Data nó sẽ tiến hóa thêm gì nữa, rồi coi có xài gì được để sếp tăng lương cho không (một nỗi buồn sâu thẳm).

Kí sự Freelancer ở Upwork

Freelancer ở Upwork

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

Tại sao nên đọc bài này

  • Một cách để có thêm thu nhập
  • Những thứ mà mình đã trải nghiệm khi làm freelance

Lý do mình bắt đầu

À, do mình hết tiền. Lúc mình nghỉ công ty cũ thì cầm đúng một tháng lương là tiền thưởng tết để đối mặt với cuộc đời này.

Quá lười để viết một chiếc CV mới, quá thiếu ý chí để tìm một công việc văn phòng khác, và quan trọng nhất là…quá đói rồi nên mình mới lân la tìm việc freelancer.

Vậy là search được vài trang và dừng lại ở Upwork. Vậy là hành trình trở thành Freelancer của mình bắt đầu từ đây

Tại sao không phải là làm freelance ở Việt Nam?

Vì mình chả quen ai cả. Kĩ năng thì có nhưng quan hệ thì không. Và lý do thứ hai là mình khá không hợp với cách làm việc của người Việt Nam
  • Pay rate thấp, lại đổi requirement liên tục
  • Timeline lúc thì sát đít, lúc thì vô cùng
  • Cách làm việc thường theo pattern để tôi hơn, bạn thiệt
Freelancer ở Upwork
Mình không đánh đồng tất cả, nhưng đấy là những thứ mà mình nhìn thấy và trải nghiệm nên mình cũng rất không muốn phải làm việc kiểu như vậy. Chắc mọi người không còn lạ gì quịt tiền của dev, hay làm một website 2tr rồi.
Nhưng mà nếu bắt đầu với môi trường quốc tế thì bạn phải làm được 2 điều:
  • Biết tiếng Anh, càng nhiều càng tốt
  • Trả lời được câu hỏi: “Thành, vậy năng lực cạnh tranh của mày là gì? Mày làm sao nói tiếng Anh giỏi bằng tụi EU, làm sao mày chịu được cái rate 6$/hrs của tụi Ấn độ”

Khi gian nan bắt đầu

Dùng hết cả buổi tối để fill hết đống tên, kĩ năng, bla bla cho Upwork vậy là mình start quá trình làm freelance thôi. Lúc bắt đầu mình nghĩ là chắc cũng khó, mà dkm, khó không tưởng

Mọi thứ bắt đầu cực kì khó khăn và suffer khi mình phải viết một thứ gọi là Proposal, một đoạn text ngắn đề nói với người đăng việc là “Bố mày đỉnh lắm, bố mày hợp vkl với cái công việc này nè, mày tuyển tao đi”

Freelancer ở Upwork

Đó, đại loại vậy, vậy mà mình viết hết proposal này tới proposal khác mà chả thấy ma nào hồi âm cả. Sad

Cả tuần sau thì mới có 1-2 người hồi âm mà nội dung thì cũng chả đâu vào đâu, kiểu mày có kinh nghiệm gì làm prj như này chưa? Làm rồi thì đưa tao coi xem thử. Mà mình thì làm méo gì có những thứ như vậy để show ra cho người ta, vậy là lại fail.

Sau 2 tuần cứ viết viết mà chả ai hồi ầm, chả hiểu sao mà mình may mắn lại tìm thấy một job lập trình mà yêu cầu là người Vietnam. Perfect, vậy là mình viết ngay mấy dòng “Hey tao là người Việt Nam nè vào tao cũng biết lập trình bla bla …”. Vậy là được nhận.

Bắt đầu từ công việc đầu tiên đó, mình được đánh giá cao nên sau này càng nhận được nhiều job hơn. Không còn vất vả phải soạn tâm thư mà lại không nhận được gì.

Những gian khổ ngày đầu trở thành lãi suất kép, sau một thời gian đầu tư ban đầu đổi lại mức rate của mình đã được tăng lên khá tích cực, từ $70/prj phải làm trong mấy chục giờ làm việc, thì mình đã được khách hàng đồng ý trả mức hơn $45/hr.

  Chia sẻ bí kíp làm freelancer – Nhân đôi thu nhập hiệu quả

  Học lập trình tới khi nào có thể làm freelancer?

Bí kíp

Mình thấy kì này trên TikTok bắt đầu share làm freelance thế này thế kia rồi bán khóa học đồ. Nên mình share ở đây hy vọng mọi người đỡ phải mua :))))) Vì mình cũng méo có ý định bán hay dạy ai gì cả

1. Hãy tìm một job ở ngách

Bạn sẽ rất khó khi bắt đầu công việc freelancer với những Job khá là chung chung kiểu: Cắt HTML, CSS, làm React,…

Tại vì số người đã có profile trên Upwork làm những thứ như vậy là rất rất nhiều rồi. Chả có ông nào khùng tới mức thuê bạn cho những công việc như trên nếu bạn chưa có profile đâu.

Do đó chiến thuật nên là tìm những công việc kiểu nó dị dị á. Ví dụ lúc đó mình sẽ dùng keywork Vietnam để xem có job nào mà người nước ngoài cần tuyển Việt Nam không, như vậy sẽ dễ nhận được việc hơn. Hoặc là thay vì tìm keyword là react, mình sẽ tìm Vuejs, Svelte, Astrojs,… đó, job tuy ít hơn nhiều nhưng khả năng được làm việc cũng cao hơn.

Freelancer ở Upwork
Tuy nhiên để làm được điều này bạn cũng cần là một version flexible có thể learn mọi thứ một cách nhanh chóng. Và cũng phải tự tin là bản thân sẽ làm được.

2. Mục tiêu của proposal là để người ta phải trả lời mình

Đừng chỉ viết tôi có A, có B và đó là lý do tôi là sự lựa chọn phù hợp với bạn. Hay viết kiểu như vầy

Hey tao có từng làm A, có biết B nên tao thấy tao phù hợp với mày nè. Tao cũng thấy hứng thú với prj của mày cực, có điều có điểm này có vẻ không đúng lắm, hoặc tao chưa hiểu rõ lắm. Mày giải thích cho tao được không?

Đó làm kiểu vậy thì khả năng người ta sẽ trả lời lại bạn sẽ cao hơn rất nhiều, đồng thời cũng không sợ bị cạn kiệt connect nữa.

Hãy để ý những thằng seller hay bán hàng trên mạng hay bắt bạn inbox hoặc xin sdt để tư vấn thêm: Lý do là nếu được nói chuyện, tìm hiểu riêng thì tỉ lệ chốt đơn sẽ cao hơn rất nhiều.

Freelancer ở Upwork

Có một tip khá hay là hãy thử đóng vai là người đi đăng job và tuyển người để xem tụi nó gửi proposal như thế nào. Mình có nhặt thử một requirement và đăng thử lên Upwork xem tụi nó apply ra sao. Vậy là học được một đống câu cú tụi nó viết proposal từ phân khúc thấp cấp tới cao cấp.

Có một cái common pitfall mình phát hiện ở đây là: Hầu hết tụi freelancer ngoài kia đều có một pattern và tụi nó chỉ copy & paste cho tất cả các Job. Cùi vãi :)))

Hãy viết proposal một cách personalize nhất cho Job đó, đảm bảo tỉ lệ nhận job của bạn sẽ cao hơn bình thường. Tuy mỗi lần viết đều có một số chỗ mình sẽ lặp lại, nhưng mình luôn luôn gõ lại từng thứ khi bắt đầu viết proposal vì mình nghĩ đó là cách tốt nhất để thể hiện mình là người chuyên nghiệp và mình thật sự quan tâm tới Job đó.

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

3. Aggressive

Freelancer ở Upwork

Hỏi xem client muốn gì, khi nào thì start được, timeline khi nào muốn deliver. Còn thiếu gì mà bạn có thể làm ngay lập tức.

Nói chung là làm tất cả mọi thứ để công việc start càng sớm càng tốt. Lúc này bạn sẽ setup được vibe khi làm việc của hai bên một cách chuyên nghiệp và đúng giờ hơn.

4. Clear scope

Hãy clarify xem những thứ gì KHÔNG làm và những thứ gì sẽ làm. Việc bạn clear với người ta những gì KHÔNG làm là cực kì quan trọng. Nó giúp hai bên thống nhất rõ ràng hơn công việc sẽ làm, đồng thời cũng tránh case rất tệ đó là “À em ơi còn chút này sửa giúp chị với”

Freelancer ở Upwork

In the end, bạn cần là một người làm việc có tâm. Và khách hàng thành công nghĩa là bạn thành công. That’s it. Nãy giờ mình chỉ nói những thứ bề nổi, tip khi làm việc, tuy nhiên mình tin là đó không phải là thứ khiến bạn có thể trở thành một người freelancer tốt được.

Nếu bạn đặt suy nghĩ nếu khách hàng thành công nghĩa là mình thành công, thì kiểu gì bạn cũng sẽ có cách để deliver mọi thứ tốt hơn.

Thứ mình học được

Khách hàng thành công nghĩa là bạn thành công

Nghĩa là gì pa?

Nghĩa là lâu lâu bạn sẽ chịu thiệt một tí, miễn là khách hàng được việc. “Em ơi, sửa chỗ này giúp anh một xíu”. “Dạ chỗ này không có trong scope ban đầu nhưng nhỏ nên em sửa luôn cho .”

Đôi khi có contract đã đóng rồi, nhưng client liên hệ nhờ check lại chỗ này, mình cũng check và fix luôn, và thấy quá nhỏ nên khi người ta hỏi bao nhiều tiền thì mình tl là cái này nhỏ quá free luôn. Tới nỗi giờ mỗi lần mình hết tiền mình đều inbox ổng, “Hey Luis, tao hết tiền rồi, kì này mày có công việc gì không cho tao làm với. Vậy là ổng lại lật đật chuẩn bị việc cho mình làm.” Mà kiểu ổng cũng thật sự méo cần thằng nào giúp nhưng thằng này hết tiền rồi thôi đẩy cho nó ít việc.

Khách hàng thành công nghĩa là bạn quan tâm nhiều hơn tới thứ mà người ta mong muốn. Họ muốn deadline là khi nào, họ muốn standard ra sao, có chỗ nào mình thấy chưa ok ảnh hưởng tới product mà họ chưa nhìn thấy.

Đó, cách thể hiện thì muôn hình vạn trạng nên mình nghĩ hãy luôn nhớ trong đầu cách suy nghĩ như vậy sẽ giúp bản thân làm tốt công việc hơn.

Có một điểm rất thú vị khi mình bắt đầu ý thức được suy nghĩ như vậy là mình không còn stress khi làm việc nữa, người ta cũng vậy. Ít nhất là không còn stress phải fighting để bảo về quyền lợi cho bản thân và đẩy phần thiệt cho người đối diện. Vì khi nghĩ tới sự thành công của người khác, nghĩa là hai bạn đang ở trên một chiếc thuyền, cùng nhau để đi được xa hơn. Thay vì cứ phải suy nghĩ làm sao để mình không chịu thiệt thòi, và client kiều gì cũng sẽ suy nghĩ như vậy nếu bạn làm như vậy.

Freelancer ở Upwork

Mọi người có tưởng tượng là mình trễ deadline, và mình rất xin lỗi người ta và muốn commit làm thêm, và client trả lời là “không sao, mày mà làm nhiều hơn thì mày không còn enjoy nữa”. Và sau đó mình còn được gửi Bonus cho việc đó nữa. Chưa hết, client này còn muốn gửi bonus mình vào dịp dáng sinh nữa, kiểu như ổng coi mình là một nhân viên chính thức trong công ty của ổng và ông đối xử như một người sẽ đi long-term cũng nhau, thay vì chỉ xung quanh công việc như những freelancer bình thường khác

Một giờ của bạn đáng giá bao nhiêu

Mình biết là với rate hiện tại, mình được trả 45$/hr và điều đó giúp mình rất nhiều. Nếu một công việc gì đó quá tốn thời gian mà mình có thể thuê với giá bé hơn 20$/hrs mình sẽ thuê.
Freelancer ở Upwork

Nếu một bữa ăn quá nửa giờ làm việc của mình thì mình sẽ không ăn. Còn dưới nửa giờ làm việc thì không phải là vấn đề.

Nó cho mình một framework để biết nên dành thời gian cho việc gì á? Đồng thời mình cũng giúp mình quý trọng thời gian hơn.

Cách làm việc với khách hàng

Nó luyện cho mình nói tiếng Anh, viết tiếng Anh. Giải thích một cách dễ hiểu cho người ta, đồng thời cũng phải tập làm sao để clarify lại problem cần giải quyết.

Cách nói chuyện khi code bị bug nè, cách nói khi bị trễ deadline nè, hay cách nói chuyện khi người ta muốn đưa việc thêm scope vào.

Key là: Đừng bao giờ trả lời có hay không, bạn lỗi hay tôi lỗi. Hãy tìm cách giải quyết vấn đề cho cả hai, hay nhớ lại điều gì khiến cho client thành công. Mình tin là họ thành công rồi thì họ sẽ trả cho bạn xứng đáng

Show off with the world

Bạn sẽ rất rất khó xin việc nếu bạn không có một profile online tốt. Hãy đặt thử góc nhìn từ client nhé: “Làm sao tao tin những gì mày nói ở proposal là thật nhỉ? Làm sao tao biết được mày có thể làm tốt công việc đúng như expect của tao?”

Freelancer ở Upwork
Đó và bạn phải trả lời câu hỏi đó bằng cách:
  • GitHub của bạn nói gì về bạn? Những ngôn ngữ nào, framework nào bạn đã làm qua
  • Twitter/LinkedIn thể hiện suy nghĩ và kinh nghiệm làm việc của bạn thế nào
  • Blog bạn chia sẻ về những trải nghiệm, kinh nghiệm khi làm nghề

Tự làm chủ

Freelancer, trong đó có chữ free, nghĩa là bạn tự do. Bạn tự do chọn công việc mà bạn sẽ làm, bạn tự do chọn cách làm công việc, bạn tự do sắp xếp thời gian làm công việc, bạn tự do lựa chọn chất lượng output, bạn cũng tự do từ bỏ công việc đang làm.

notion image

Mọi thứ đều tự do, vậy tới lúc đó bạn còn có tránh nhiệm với những thứ mình đang làm? Có một cú sock khá lớn mà mình bắt đầu làm freelancer, đó là tôi tưởng tôi muốn tự do nhưng thực sự là …éo .

Nào là bất mãn khi đi làm văn phòng sếp cứ bắt thế này thế kia, tao sẽ tự ra làm riêng rồi tự làm sếp cho mày biết mặt, bạn hãy thử trải nghiệm là sếp của chính bản thân mình xem. Khá là thú vị đó!

Dù gì nó cũng không phải là một thứ long-term

Tại sao người ta lại thuê một freelancer chứ không phải là một agency?
  • Vì công việc đó đủ nhỏ để người ta có thể manage risk
  • Vì giá rẻ hơn

Đó, và vì công việc khi làm freelancer khá nhỏ, nên việc bạn phát triển ở đây nghĩa là bạn làm mọi việc một cách quen tay hơn chứ không phải khó hơn. Nên đối với mình đây không phải là một thứ long term giúp mình phát triển được, kiếm tiền thì ok :))

Dĩ nhiên thì người giỏi thì nằm đâu chả phát triển được, đầy công việc freelance cũng giúp bản thân tìm tòi được nhiều thứ hay ho hơn. Tuy nhiên mấy cái như vậy không nhiều và đôi khi bạn cần phải có một đẳng cấp nhất định thì mới có cơ hội được làm.

À tương lai nếu được thì mình sẽ muốn chuyển qua Toptal thay vì Upwork vì nghe nói bên đó có vẻ nhìu tiền hơn, mà cũng khó hơn

Đây là câu chuyện đi làm freelancer của mình, nếu bạn còn tò mò chỗ nào thì comment bên dưới nhé!

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

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

Xem thêm Tìm việc Developer hấp dẫn trên TopDev

Top 5 CSS Frameworks tốt nhất cho anh em Developer 2024

Top 5 CSS Frameworks tốt nhất cho anh em Developer

CSS là một trong 3 ngôn ngữ trụ cột của anh em lập trình Frontend bên cạnh HTML và JavaScript. Để xây dựng được giao diện của một Website hoàn chỉnh, chúng ta sẽ cần phải viết khá nhiều CSS; trong đó sẽ có nhiều style được sử dụng lại với nhiều Website khác nhau. Vì vậy có nhiều các CSS Frameworks được tạo ra giúp anh em Dev thuận tiện hơn, tối ưu hóa thời gian viết code và hoàn thiện dự án. Bài viết hôm nay chúng ta cùng nhau tìm hiểu top 5 CSS Frameworks tốt nhất hiện nay và xem bạn đã biết và sử dụng bao nhiêu trong số đó nhé.

CSS Framework là gì?

CSS – Cascading Style Sheets là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi HTML, giúp tạo phong cách (styles) cho các phần tử trên trang Web như bố cục, màu sắc, màu chữ, font chữ, …

CSS Framework là gì?

CSS Framework là tập hợp các đoạn code CSS có cấu trúc, mang lại giải pháp thống nhất giúp lập trình viên giải quyết các vấn đề lặp đi lặp lại trong quá trình xây dựng giao diện Website. Lợi ích khi sử dụng CSS Framework:

  • Nâng cao quy trình phát triển bằng cách sử dụng các class và id được xác định trước
  • Hỗ trợ việc tương thích cho nhiều trình duyệt, phiên bản khác nhau
  • Tăng năng suất, tối ưu hóa giai đoạn phát triển dự án
  • Tạo bố cục, phong cách đồng nhất, rõ ràng trên cùng một Website hay giữa các sản phẩm trong cùng một tổ chức

Cùng điểm qua danh sách 5 CSS Framework được đánh giá tốt nhất hiện nay nhé:

1. Tailwind CSS

Tailwind CSS

Tailwind CSS là một framework tương đối mới (phát hành từ 2017) và được thiết kế cùng sự khác biệt so với các CSS framework trước đây. Nếu như các framework CSS trước đây đi theo hướng sử dụng các thành phần được thiết kế từ trước làm cơ sở để phát triển thêm thì Tailwind cung cấp các lớp tiện ích cấp thấp cho phép bạn xây dựng các thiết kế của riêng mình.

Ưu điểm của Tailwind CSS:

  • Mang lại sự linh hoạt cho người dùng có thể tạo ra các thiết kế độc đáo
  • Cú pháp của Tailwind cơ bản giúp mang lại tốc độ phát triển nhanh hơn cho dự án, không cần phải chuyển đổi giữa HTML và CSS khi viết code.
  • Tối ưu hóa CSS bằng việc sử dụng PurgeCSS giúp giảm và loại bỏ các class dư thừa cũng như tối giản kích thước file CSS tạo ra
  • Khả năng tùy chỉnh cao: dễ dàng ghi đè cấu hình mặc định với file tailwind.config.js

2. Bootstrap

Bootstrap

Tiếp theo trong danh sách CSS Frameworks tốt nhất 2024 chính là Bootstrap. Bootstrap là cái tên phổ biến và được sử dụng rộng rãi nhất trong các CSS Framework. Được phát triển từ năm 2011, hiện nay nó được sử dụng trên hàng triệu Website và là kỹ năng được xem như mặc định phải có của một Frontend Developers trước đây. Bootstrap framework chứa cả HTML, SASS và JavaScript khiến nó có thể xem như là một Frontend framework hoàn chỉnh; mặc dù vậy việc sử dụng nó cũng khiến kích thước của project tăng lên đáng kể.

Ưu điểm của Bootstrap:

  • Hệ sinh thái khổng lồ: Bootstrap cung cấp một thư viện rộng lớn về bố cục, chủ đề, các components, … dành cho lập trình viên có thể thoải mái sử dụng. Cộng đồng làm việc, sử dụng và đóng góp cho Bootstrap cũng đông đảo và lâu đời hỗ trợ bạn một cách nhanh chóng
  • Tạo bản mẫu nhanh: Nhờ việc sử dụng kết hợp cả HTML và JavaScript nên Bootstrap cung cấp cho bạn các bản mẫu hoàn chỉnh, không mất nhiều thời gian để tạo ra hình dạng đầu tiên của Website một cách trực quan nhất
  • Bootstrap hỗ trợ cả SASS và LESS, điều mà không nhiều CSS framework cung cấp

  Bí kíp code CSS hiệu quả hơn mà các bạn nên biết

  CSS Preprocessor là gì? Cách sử dụng có khó không?

3. Foundation

Foundation

Foundation là một CSS framework được xây dựng dựa trên hai ngôn ngữ là SASS và SCSS giúp cung cấp các khả năng tiếp cận khác nhau nhằm tối ưu hóa mọi hoạt động thiết kế Web nhanh chóng và hiệu quả. Foundation hướng đến kiến trúc mobile-first, có những nét tương đồng với Bootstrap khi cung cấp một bộ UI Framework khá hoàn chỉnh chứa cả HTML và JavaScript.

Ưu điểm của Foundation:

  • Cung cấp bộ công cụ phong phú giải quyết hầu hết các vấn đề mà anh em lập trình cần để dựng Website.
  • Tính linh hoạt cao: Foundation không bắt buộc các nhà phát triển phải sử dụng một phong cách hay ngôn ngữ cụ thể mà hoàn toàn có thể tùy chỉnh, kiểm soát giao diện người dùng
  • Hỗ trợ GPU acceleration cho phép thực thi các animation một cách mượt mà và nhanh chóng

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

4. Bulma

Bulma

Bulma được xem là một trong những top CSS Frameworks tốt nhất mà bạn nên dùng. Bulma có mã nguồn mở dựa trên Flexbox. Nó triển khai các ô xếp để tạo lưới kiểu Metro giúp mang lại bố cục trang mượt mà. Source code của Bulma hoàn toàn mở và bạn có thể thoải mái chỉnh sửa hay mở rộng chức năng. Ngoài ra Bulma được viết chỉ dùng CSS, không có thành phần JavaScript cũng giúp việc xử lý trở nên mượt mà, mang lại hiệu năng cao hơn.

Ưu điểm của Bulma:

  • Dễ học và sử dụng: Bulma được thiết kế dạng module với khả năng tùy biến cao nên dễ dàng sử dụng dành cho lập trình viên
  • Khả năng tương thích cao: với ưu điểm viết hoàn toàn bằng CSS thì các trang Web sử dụng Bulma có khả năng chạy trên nhiều trình duyệt khác nhau mà không bị hạn chế
  • Tính năng được cập nhật bổ sung liên tục

5. Skeleton

Skeleton

Skeleton thậm chí không tự gọi mình là một CSS framework nhưng sự tối giản của nó luôn được cộng đồng lập trình viên đánh giá cao. Chỉ với 400 dòng code, công cụ vô cùng nhẹ nhàng này được tạo ra để giúp xây dựng các phần tử CSS tương thích với cả thiết bị màn hình lớn và thiết bị di động. Skeleton chứa tất cả các thành phần tiêu chuẩn đáp ứng thiết kế responsive; chia một trang thành nhiều lưới (grid) 12 cột. Cú pháp triển khai của Skeleton vô cùng nhanh và đơn giản giúp tiết kiệm thời gian.

Ưu điểm của Skeleton:

  • Nhẹ và dễ dàng lưu trữ, xử lý
  • Ưu tiên các thiết bị di động, phù hợp cho các anh em Dev mới bắt đầu thiết kế
  • Dễ học, dễ triển khai ngay cả với những người mới bắt đầu

Kết bài

Như vậy chúng ta đã cùng nhau điểm qua top 5 CSS Framework phổ biến và tốt nhất hiện nay. Còn nhiều framework khác cũng được cộng đồng anh em thiết kế Web đánh giá cao tùy thuộc vào đặc thù của dự án, sản phẩm mà khách hàng, tổ chức đang phát triển. Việc sử dụng CSS Framework sẽ giúp cho công việc thiết kế Website của bạn trở nên đơn giản, tiện lợi, nhanh chóng và tạo được các sản phẩm 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

Những bài viết liên quan:

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

Nhảy việc sau Tết: Tìm CƠ HỘI mới hay lại tiếp tục CƠ CỰC?

Nhảy việc sau Tết: Tìm CƠ HỘI mới hay lại tiếp tục CƠ CỰC?

Sau Tết nguyên đán là thời điểm nhộn nhịp nhất của thị trường việc làm khi chứng kiến làn sóng “nhảy việc” ồ ạt. Có rất nhiều lý do khiến người lao động chọn năm mới làm thời điểm “vàng” để tìm cơ hội mới. Tuy nhiên, quyết định nhảy việc dù trong thời điểm nào cũng tồn tại những cơ hội và thách thức. Vậy những cơ hội thách thức đó là gì? Liệu có nên nhảy việc sau Tết? Câu trả lời sẽ có trong bài viết này!

Vì sao nhảy việc sau Tết trở thành “xu hướng”?

Nhảy việc sau Tết

Tết âm lịch là thời điểm kết thúc các công việc của năm cũ, thưởng Tết cũng đã đâu đó thanh toán xong, làm cho việc quyết định nhảy việc trở nên dễ dàng hơn. Bên cạnh đó, cuối năm là thời điểm để mọi người nhìn nhận lại một năm vừa qua, nếu họ cảm thấy mệt mỏi với công việc hiện tại hoặc không tìm thấy cơ hội phát triển trong tương lai thì họ sẽ rời đi.

Thêm nữa, với số lượng lớn người lao động nghỉ việc sau Tết đã làm gia tăng áp lực tuyển dụng cho các doanh nghiệp. Số lượng vị trí trống gia tăng đột biến, thị trường bước vào “mùa tuyển dụng” tạo ra cơ hội xin việc cho hàng nghìn người.

Cơ hội và rủi ro khi nhảy việc sau Tết

Nhảy việc sau Tết mang theo cả cơ hội và rủi ro, và quyết định này nên được đưa ra sau khi cân nhắc kỹ lưỡng với các yếu tố cá nhân và chuyên môn. Dưới đây là một số cơ hội và rủi ro bạn cần biết:

Cơ hội

  • Môi trường mới: Nhảy việc mang lại cơ hội để trải nghiệm môi trường làm việc mới, nơi bạn có thể học hỏi và phát triển mối quan hệ mới.
  • Phát triển sự nghiệp: Có thể bạn sẽ có cơ hội thăng tiến nhanh chóng hoặc học được nhiều kỹ năng mới trong môi trường làm việc mới.
  • Thu nhập cao hơn: Một công ty mới có thể đưa ra mức lương và gói phúc lợi tốt hơn, giúp cải thiện tình hình tài chính cá nhân.
  • Mạng lưới mới: Khi chuyển đến công ty mới, bạn có cơ hội mở rộng mạng lưới quan hệ của mình, tạo ra các kết nối mới có thể hữu ích trong sự nghiệp.

Nhảy việc sau Tết

Rủi ro

  • Rủi ro tài chính: Một số người chọn cách nghỉ việc rồi mới tìm việc mới, điều này dẫn đến vấn đề thiếu hụt tiền bạc. Nếu xác định nghỉ việc bạn nên để dành khoản ngân sách để đi tìm việc hoặc có việc mới trước khi nghỉ.
  • Không thích ứng được với môi trường mới: Có thể môi trường làm việc mới không phù hợp với tính cách hoặc giới hạn kỹ năng của bạn, tạo ra cảm giác không thoải mái.
  • Thời gian thích ứng: Việc thích ứng với môi trường, quy trình làm việc mới có thể mất thời gian, và trong thời gian này, bạn có thể gặp khó khăn.
  • Rủi ro về ổn định công việc: Chuyển đến một công ty mới có thể đặt ra rủi ro về ổn định công việc, đặc biệt nếu thị trường lao động không ổn định như hiện nay.

  Bạn đang có một công việc (Job) hay một sự nghiệp (Career)?

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

Những điều cần làm trước khi tìm “bến đỗ” mới sau Tết

Nhảy việc sau Tết là một quyết định quan trọng, đòi hỏi người lao động cần chuẩn bị kỹ lưỡng. Dưới đây là một số bước cần làm nếu bạn muốn nhảy việc sau Tết:

1. Xác định rõ lý do muốn nhảy việc

Trước khi quyết định nhảy việc, bạn cần xác định rõ lý do muốn nhảy việc là gì. Điều này sẽ giúp bạn đưa ra quyết định đúng đắn và tránh được những rủi ro không đáng có.

Có nhiều lý do khiến bạn muốn nhảy việc, chẳng hạn như:

  • Bạn không hài lòng với công việc hiện tại, chẳng hạn như mức lương, cơ hội thăng tiến, môi trường làm việc,…
  • Bạn muốn thử thách bản thân với một công việc mới.
  • Bạn muốn tìm kiếm một cơ hội tốt hơn với mức lương cao hơn.

2. Tìm hiểu thị trường việc làm và lựa chọn ngành nghề, vị trí phù hợp

Sau khi xác định rõ lý do muốn nhảy việc, bạn cần tìm hiểu thị trường việc làm để nắm bắt nhu cầu tuyển dụng, từ đó lựa chọn ngành nghề, vị trí phù hợp với sở thích, năng lực và mục tiêu của bản thân.

Bạn có thể tìm hiểu thị trường việc làm thông qua các kênh sau:

3. Lập kế hoạch tìm việc và chuẩn bị hồ sơ xin việc

convert CV chuẩn IT

Sau khi lựa chọn ngành nghề, vị trí phù hợp, bạn cần lập kế hoạch tìm việc cụ thể, bao gồm thời gian tìm việc, cách thức tìm việc, kỹ năng cần thiết cho công việc mới. Bên cạnh đó, bạn cũng cần chuẩn bị hồ sơ xin việc thật kỹ lưỡng để gây ấn tượng với nhà tuyển dụng. Tham khảo công cụ tạo CV chuyên nghiệp chuẩn developer tại đây.

4. Chuẩn bị tâm lý cho những khó khăn có thể gặp phải khi nhảy việc

Nhảy việc sau Tết có thể mang lại nhiều cơ hội cho bạn, tuy nhiên cũng tiềm ẩn nhiều rủi ro. Do đó, bạn cần chuẩn bị tâm lý cho những khó khăn có thể gặp phải khi nhảy việc, chẳng hạn như:

  • Khó tìm được công việc mới phù hợp.
  • Mất thu nhập trong thời gian tìm việc.
  • Mất mối quan hệ với đồng nghiệp, cấp trên cũ.

Tóm lại

Nếu bạn quyết định nhảy việc sau Tết, hãy đảm bảo rằng bạn đã chuẩn bị kỹ lưỡng. Hãy xác định rõ lý do muốn nhảy việc, tìm hiểu thị trường việc làm, lựa chọn ngành nghề, vị trí phù hợp, lập kế hoạch tìm việc và chuẩn bị hồ sơ xin việc. Bên cạnh đó, bạn cũng cần chuẩn bị tâm lý cho những khó khăn có thể gặp phải khi nhảy việc. Đừng quên truy cập TopDev để tìm kiếm việc làm IT sau Tết hấp dẫn bạn nhé. Chúc bạn tìm việc thành công!

Xem thêm:

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

Những extension không thể bỏ qua cho dev web

Những extension không thể bỏ qua cho dev web

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

Tại sao nên đọc bài này?

  • Tối ưu productive khi đi code, debug nhanh hơn

Extension

VisBug

VisBug

Bạn không biết element nãy đã align với element kia chưa?

Bạn không biết khoảng cách padding này đã giống với design chưa?

Thêm thắt nhanh thử một ít magin/padding xem UI có tốt hơn không?

Xin giới thiệu với các vị và quý bạn ‍♂️, VisBug, tool chính chủ từ Google có thể trả lời cho bạn tất cả các câu hỏi trên.

Nói chung là ai hay làm lệch align đó, hay bị design bắt bẻ thì nên dùng tool này để check lại nha. Thấy sai thì lặng lẽ sửa, còn thấy đúng thì bật lại designer ngay

VisBug

Dark Reader

Dark Reader

Mình nghĩ phải 96.69% dev sẽ code về đêm, hoặc có code ban ngày thì cũng dùng theme đen. Cái extension này sẽ mang Dark Mode tới bất cứ trang web nào mà chưa support cú đêm như tụi mình

Có nhiều tool/extension làm vụ này nhưng mình chỉ thấy duy nhất thằng này là đỉnh nhất và mình dùng daily hàng ngày luôn.

Dark Reader

Daily.dev

Cứ mở new tab là có tin tức về công nghệ/coding cho các bạn. Còn personalize theo cách đọc của mỗi người nữa.

Passive learning là đây chứ đâu. Bình thường sáng nào mình cũng dành 15 phút mò mẫm trên đây. Còn lâu lâu mở tab mới thấy bài hay cũng múc luôn cho nóng

À nói thêm mình có viết một bài về Passive learning ở đây: Passive learning cho Dev

Mình thấy kĩ năng học tập là cực kì cực kì quan trọng khi là dev nên Passive learning là kiểu mình apply chắc cũng phải 4-5 năm rồi. Phải công nhận nó là thứ giúp mình còn sống vui và khỏe trong ngành này… còn sau này già thì không biết

Daily.dev

  5 VS Code Extensions hữu ích cho React developers

  Hướng dẫn tạo extension chrome và đưa lên store chỉ trong 5 phút

LocatorJS

Cái này mình mới luanch gần đây nhưng công nhận rất tiện. Mỗi lần mở source mới là lại phải mò mẫm tìm xem cái component mình cần sửa nằm ở file nào.

Thậm chí thằng đệ của mình còn mở từng file cho tới khi tìm được chỗ đó . Hy vọng nó đọc được bài này :)))

LocatorJS

Grammarly

Cái này là dành cho những đứa vừa yếu vừa lười tiếng Anh như mình. Grammarly sẽ giúp spot ra các lỗi grammar hay dùng từ trong tiếng Anh. Giúp mình làm việc chuyên cmnr nghiệp hơn với các bạn bè thế giới

Tuy nhiên sau khoảng thời gian 2-3 năm sử dụng thì có vẻ càng dùng nhiều mình càng tự sai grammar nhiều hơn, nên bạn đọc cân nhắc nhé. Fix root cause vẫn hơn

Grammarly

React Dev Tool/Vue Dev Tool

Cái này thì khỏi nói rồi, mặc định. Có điều có bao giờ bạn thử sử dụng tab Profiler để kiểm tra performance với detech khi nào component rerender chưa?

Có hàng xịn mà không biết dùng thì cũng uổng lắm nhé!

JSON viewer

JSON viewer

Đôi khi muốn xem nhanh cái API mà nó trả về JSON trối quá thì cài cái này vô, mọi thứ đơn giản ngay

JSON Viewer

Insomnia

Insomnia

Cái này không phải extension nhưng thôi mình bỏ vào đây luôn.

Chắc là ai cũng phải work với API và hầu hết mọi người đều dùng Postman, nhưng đối với mình, người đang sử dụng con Macbook Pro M1 16GB/512GB Space Gray thì nó quá nặng. Ỳ ạnh vkl, nên mình đã chuyển hẳn sang dùng cái này.

Khá là nhẹ và clean, đủ dùng. Ngoài ra mình còn thấy mọi người dùng Http Client ở VS Code cũng khá ổn.

Insomnia

Mọi người có thường dùng tool nào nữa không? Comment để mình trải nghiệm thử!

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

Xem thêm:

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

Phương pháp ra quyết định có nên đổi việc hay không?

Những điều cần cân nhắc trước khi

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

Có nhiều bạn tìm đến mình tư vấn hướng nghiệp với ý định và mong muốn đổi sang một lĩnh vực, ngành nghề mới. Có rất nhiều lý do cho việc thay đổi này như: cảm thấy không còn động lực trong công việc cũ, thấy lĩnh vực mới đang ‘hot’ trên thị trường, muốn thử sức bản thân và ra khỏi vùng an toàn, vân vân.

Để hỗ trợ các bạn ra quyết định có nên đổi nghề đổi việc hay không, mình sử dụng nhiều phương pháp khác nhau tuỳ theo từng trường hợp. Có bạn cần thực hiện các bài trắc nghiệm tính cách để hiểu bản thân. Có bạn cần đào sâu vào các trải nghiệm công việc quá khứ để tìm ra điểm chung. Có bạn cần đầu tư và làm CV và cải thiện kĩ năng tìm việc. Một trong những kĩ thuật được mình sử dụng nhiều là phương pháp tưởng tượng. Bạn dành thời gian tưởng tượng về các khía cạnh khác nhau ở công việc bạn đang quan tâm và so sánh độc thích thú của bản thân so với công việc hiện tại.

Phương pháp tưởng tượng có ích trong việc giúp bạn mở rộng góc nhìn về một công việc, có bức tranh thực tế hơn về công việc đó. Nhiều khi mình chỉ thích một công việc vì thấy bức tranh được ‘vẽ’ một cách hào nhoáng về những kết quả như lương cao, ổn định, được đi du lịch nhiều. Mình chưa biết hết được các khía cạnh ‘tối’ của công việc đó. Phương pháp tưởng tượng kết hợp phỏng vấn người làm trong nghề giúp bạn có được góc nhìn sâu hơn này.

Bây giờ lấy ví dụ bạn đang là một người làm công việc Nhân sự hoặc Marketing ở một công ty lớn và đang băn khoăn có nên đi ra ngoài làm tự do (freelance) hay không. Bạn sử dụng phương pháp tưởng tượng để nhìn sâu về các khía cạnh sau của công việc freelance.

  Hướng nghiệp CNTT - Định hướng nghề nghiệp cho các bạn trẻ

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

 có nên đổi việc hay không?

1/ Kiến thức

Bạn tưởng tượng mình sẽ sử dụng kiến thức gì khi làm công việc freelance? Hiện nay để làm được công việc freelance bạn cần một số kiến thức tốt như kiến thức công nghệ, kiến thức viết lách, kiến thức Marketing, kiến thức thiết kế. Bạn có kiến thức nào ở trên, so với 5 người bạn xung quanh bạn có khá hơn những người đó hay không?

2/ Kĩ năng

Bạn tiếp tục tưởng tượng xem một người làm freelance cần có những kĩ năng gì để làm tốt? Ví dụ người làm tự do cần có kĩ năng tự quản lý và sắp xếp thời gian, xây dựng mạng lưới quan hệ, tự Marketing bản thân, quản lý tài chính cá nhân và nhiều kĩ năng khác. Bạn suy nghĩ xem nếu được sử dụng các kĩ năng trên mỗi ngày bạn sẽ cảm thấy vui vẻ hay mệt mỏi?

3/ Con người

Trong công việc mới bạn sẽ thường xuyên tiếp xúc với những kiểu người như thế nào? Cố gắng mô tả cụ thể về kiểu người đó bao gồm giới tính, tính cách, độ tuổi, suy nghĩ, quan điểm sống. Con người ở đây có thể bao gồm sếp, đồng nghiệp, khách hàng là những người tương tác với bạn mỗi ngày.

Lấy ví dụ khi mình tưởng tượng về công việc Sale mình biết rằng mình cần tiếp xúc với những người chịu khó nói, thích thuyết phục người khác, hào sảng, hay quan tâm đến chủ đề làm giàu. Đây là những điều mình không thích nên mình thường né công việc Sale ra.

4/ Vị trí địa lý

Đây là một điều nhỏ những bạn cũng nên suy nghĩ và tưởng tượng về công việc mới. Công việc đó bạn sẽ làm ở đâu, gần nhà hay xa nhà? Nếu gần thì thời gian tiết kiệm được bạn dành làm gì, nếu xa thì thời gian di chuyển đến chỗ làm có đáng để bạn bỏ ra hay không?

5/ Môi trường làm việc

Bạn tưởng tượng về không gian làm việc của mình ở trong công việc mới. Ví dụ một người làm tự do thường ngồi quán cafe làm việc một mình, ít có cơ hội tương tác trò chuyện tán gẫu với đồng nghiệp như trong văn phòng, sẽ tốn tiền mua nước, có thể có sự ồn ào trong không gian quán cafe. Những điều trên có làm bạn phiền lòng hay không?

6/ Giá trị công việc

Đây là một điều quan trọng và khó tưởng tượng nhất. Mỗi công việc đều hướng đến những giá trị khác nhau. Bạn nên phân biệt giữa giá trị cốt lõi sâu xa mà công ty thường rao giảng và giá trị thực tế. Ví dụ có nhiều công ty rao giảng về giá trị đóng góp phục vụ cộng đồng, nhưng thực tế giá trị thật là làm sao bán được càng nhiều doanh thu càng tốt. Không có gì sai nếu công ty muốn tăng doanh thu, tuy nhiên việc nhìn rõ vào giá trị công việc sẽ giúp bạn có động lực làm việc hơn. Một doanh nghiệp cung cấp những sản phẩm và có những giá trị phù hợp với giá trị sống của bạn là doanh nghiệp khiến bạn hạnh phúc hơn. Bạn có thể tìm hiểu về giá trị sống của bản thân tại đây.

7/ Thu nhập

Cuối cùng hãy tưởng tượng về thu nhập của bạn trong công việc mới. Mức lương cố định mỗi tháng là như thế nào? Ngoài cố định có thêm những khoản đãi ngộ nào, thưởng nào phát sinh hay không?

Sau khi bạn tưởng tượng đủ sâu về cả 7 yếu tố trên, bạn có thể sử dụng để đặt lên bàn cân giữa 2 công việc khác nhau và so sánh xem đâu là những lựa chọn mình thích hơn. Sẽ có những mục hợp với công việc này, có mục lại hợp với công việc khác. Lúc này việc bạn cần làm là sắp xếp xem mục nào là quan trọng nhất với bạn ở thời điểm hiện tại.

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

Xem thêm:

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

Những sự thật không ai dạy bạn về Ngành Phần mềm (Phần 2)

Những sự thật không ai dạy bạn về Ngành Phần mềm

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

Tại sao nên đọc bài này?

  • Để bạn có một cái nhìn đa chiều hơn về ngành phần mềm, không phải hoàn toàn là việc nhẹ lương cao như thằng em sn 96…
  • Một số sự thật khó tiêu hóa trong ngành phần mềm. Có khi nó giúp bạn nhận ra và unlock được một level mới
Nối tiếp phần 1 được rất nhiều người đón nhận, thì đây là phần 2222222 ✌️

Disclaim lại lần nữa: Đây là bản dịch từ bài gốc https://vadimkravcenko.com/shorts/things-they-didnt-teach-you/ dưới lời văn đã thay đổi nhiều cho phù hợp với cảm nhận của bản thân mình . Khuyến khích mọi người đọc cả bài gốc lẫn bài của mình để có nhiều góc nhìn hơn.

Gét gô

Bạn lúc nào cùng sống trong trạng thái mập mờ (Uncertain time)

Đối phó với con người đã khó, đối phó với trạng thái mập mờ còn khó hơn. Và đỉnh cao của khó khăn là đối phó với những con người mập mờ :)) Và đó đích thị là những gì bạn phải làm khi trở thành một software developer.

Con người thì thường chả biết họ muốn gì, và đôi khi họ không nhận ra là thay đổi cái feature này một tí thôi là phải code ở dưới tới sấp mặt. – “Ê em đổi tích hợp thanh toán Momo thành Zalo giúp anh với, tích hợp ví thôi mà phải không? ”

Câu lừa vĩ đại nhất khi ở trường đại học dạy bạn là sẽ có một anh Prj Management đưa cho bạn một task chi tiết, cẩn thận, chỉn chu những gì cần làm, và việc của bạn chỉ là biết nó thành code thôi – một bản mô tả chi tiết công việc…mập rõ. Rồi cuối ngày bạn làm xong task được giao, đúng yêu cầu, đúng thời gian, vỗ vai nhẹ anh PM nói rằng “tối nay đi uống rượu không, em baoo. ez job, ez life”

Nhưng thực tế là PM sẽ luôn xuất hiện lúc bạn sml nhất và nói rằng “Chúng ta cần làm thứ gì đó để làm được A, tuy nhiên chưa có design, tụi 3rd party hay backend cũng chưa ready đâu, nhưng cứ thử làm trước đi”… Rồi sau đó sửa sml. Và nó đích thị là công việc thật sự mà một Software Engineer phải làm, đi gom lại hết requirement mọi nơi, rồi tìm xem là mình thật sự cần làm gì.

Okey thì chuyện đi gom góp requirement thì chả phải dễ dàng gì. Nó cũng không vui vẻ như việc viết code, vì rõ ràng mà, nói chuyện với máy tính thì vui vẻ hơn là nói chuyện với PM, với sếp, với client, với design hay là một ông backend nào đó. Nhưng nó lại là thứ tốn rất nhiều thời gian để hoàn thành công việc, vì nó phải làm việc với con người, không phải là máy móc. Bạn phải nói chuyện với bên 3rd party xem cái gì làm được cái gì không, hỏi designer xem làm kiểu này được không, và quan trong nhất là hỏi sếp/client xem người ta muốn cái feature đó trông như thế nào.

Để có thể yên vị code những dòng đầu tiên thì phải mất chắc cả tuần để làm những việc trên. Tìm hiểu requirement là gì, chỗ nào có thể hỏi được, rồi xem coi cái gì build được cái gì không, à còn cả phải tìm hiểu thêm chỗ nào có thể toang (vì thiếu data, vì design đẹp quá không code được,…) rồi mới có thể code được.

  “Luyện” gì để trở thành Software Engineer xịn?

  19 tips cho các kỹ sư phần mềm hữu ích trong 2024

Đoạn chữ in nghiêng sẽ là ý thêm của mình nha

Sau khi đọc comment của bài trước thì nhiều bạn/anh/chị nói lại tại mỗi trường nhỏ lẻ nó mới vậy, thử làm những công ty lớn như FPT, KMS,… đồ thì quy trình rất rõ ràng, PM viết task detail đầy đủ.

Thực tế là mình chưa từng được trải nghiệm môi trường như vậy nên mình cũng không rõ nó như thế nào. Mình đã từng làm ở một cty out-source dạng vừa, với hơn 20 prj lớn nhỏ, từ intern tới vị trí lead, đã từng làm ở công ty product với sản phẩm là top 1 market, từ vị trí bình thường tới senior. Và mình công nhận điều ở trên là đúng – ít nhất đối với mình. Sẽ luôn luôn có task mà mọi thứ chưa sẵn sàng, và mình phải tự đi mày mò xem cần những gì, và có thể làm gì. Mình cũng đã từng phải nhờ các bạn trong team làm điều tương tự.

Do đó, dưới góc nhìn của mình, chuyện này khá là đương nhiên và thậm chí mình còn thích điều đó. Bởi vì, nếu không tiếp xúc với nhiều bên thì làm sao mình biết thứ mình làm có đúng không, có value không. Và nó cũng giúp mình thấu hiểu được các bên khác quan tâm điều gì, kiểu như Backend thì quan tâm data input, scaling,… Design thì quan tâm usability, spacing,…

Và cảm ơn những khoảng khắc như vậy mà nó khiến cho mình phát triển trong sự nghiệp tốt hơn, vì nếu mình hình dung chỉ code y chang như những gì được mô tả, thì mãi mãi mình cũng chỉ như cái máy dịch – chuyển ngôn ngữ con người qua ngôn ngữ máy mà thôi. Cái đó hiện tại có khi còn làm không tốt hơn ChatGPT nữa rồi kìa

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

Cho rằng mọi thứ đều có thể tồn tại bug

Một số quan niệm sai lầm mà rất nhiều các bạn dev gặp phải
  1. Bạn hiếm khi tin vào code trong prj của mình, bởi vì bạn cũng chỉ là con người thôi, và con người thì make mistake
  1. Thư viện, 3rd party cũng có thể có bug, nhưng có thể hiếm hơn vì chắc là tụi nó trình cao hơn mình
  1. Mấy thư viện của OS hay siêu nổi tiếng rồi thì chắc KHÔNG THỂ NÀO có bug đâu nhỉ? Mấy người viết code đó toàn siêu nhân.
  1. CPU/Hardware chắc không bao giờ toang đâu. Tụi nó tốn cả chục năm nghiên cứu ra mà, tiến trình 7nm đồ
  1. Điện thì méo thể nào biến mất được :)) (Okey cái này thì ở VN mà nói ra thì người ta nói thằng này bị điên)

Nhưng sự thật là – chúng ta – lập trình viên KHÔNG BAO GIỜ được chắc chắn là code của mình, library, hay thậm chí là phần cứng sẽ không bao giờ có bug. Ngay cả mấy người não to làm ra những thứ đó thì cũng là người mà thôi.

software developer

Không tin hả, nhìn vào thử Github Issue mấy thư viện mà bạn sài đi, ngay cả repo của OS thì bạn sẽ thấy cả tỷ issue trong đó, và library càng nổi tiếng thì càng nhiều.

Bằng cách suy nghĩ là “cho rằng mọi thứ đều có thể tồn tại bug” thì sẽ giúp cho dev dễ dàng có cách phòng chống, hoặc là “sống chung với lũ” hơn. Và nó là một thứ cực kì cần thiết để build một hệ thống ổn định và đáng tin cậy.

À cách đối phó của mình với chuyện này cũng khá đơn giản. Mình hay thấy các bạn newbie khi code luôn có suy nghĩ là bug chỉ ở trong khoảng từ line 2 tới 4, và bạn dành cả ngày để thử sai, chỉ ở trong phạm vi code 2 tới 4 đó. Nhưng nếu suy nghĩ bug ở có thể ở khắp mọi nơi, thì mình sẽ luôn phải test xem bug có ở từ line 1-2 không, có thể từ line 4-100 không, hay nằm ẩn trong thư viện nào không. Dĩ nhiên, bạn phải có cách verify bug nằm ở đâu và không nằm ở đâu – Và mình tin đây là một kĩ năng CỰC KÌ quan trọng và cần thiết khi làm software.

Đây méo phải là công việc mơ ước

Không quan tâm bao nhiêu video YouTube, Tiktok, bài viết, báo chí, thầy cô, bạn bè, voz, toingoicodedao tung hô về ngành lập trình. Nào là thằng em sinh năm 96, nào là nhân viên của Google, Facebook,… nào là lương lập trình viên tận trời xanh. Tất cả chỉ là bề nổi của tảng băng ‍♂️
software developer
  • Nó là một công việc cũng khá nặng nhọc đó. Bạn phải ngồi với máy tính cả ngày
  • Hiếm khi có work-life balance. Thử hỏi bug production lúc giữa trưa hay đêm khuya xem?
  • Hiếm khi bạn build một thứ mà bạn thật sư thích nó. Bạn làm theo những gì client, PM yêu cầu
  • Cơ hội nghề nghiệp không tốt lắm. Ngay cả khi bạn là thằng perform tốt nhất.
  • Công việc stress vl. Deadline, bugs, QA, kì vọng từ khách hàng
  • Làm việc remote thì cũng cool đó, nhưng sẽ tới lúc bạn bị tách rời khỏi thế giới. Vậy là kĩ năng tương tác với xã hội sẽ ngày càng mờ nhạt đi
  • Không an toàn lắm. Công nghệ thì thay đổi xoành xoạch, lứa trẻ thì xuất hiện như quân Nguyên – vừa đông vừa hung hãn. Hôm nay còn được trọng vọng nhưng hôm sau bị layoff lúc nào không hay
Mấy cái gạch chữ thì mình thấy không đúng lắm. Work-life balance thì là do lựa chọn thôi, còn bản chất nghề nghiệp này không cho work-life balance thì mình thấy chưa đúng. Thích hay không thì còn tùy trình độ và cái tôi của bản thân nữa, nếu thứ bạn thích và nó có value thì nó ok, còn thứ bạn thích mà nó không có value thì nên làm một mình thôi. Cơ hội nghề nghiệp thì mình thấy tràn ngập, thực tế mình rất thích những người làm tech xong chuyển hướng, họ có suy nghĩ cực kì là logic. Còn lại hầu hết mình thấy mọi người khá yên phận khi làm dev, kiểu làm dev thì sau này làm dev vẫn ok á, không có kiểu tao lm z thôi, sau này tao làm nghề khác.

Code đẹp đỉnh cao không thể dạy được

Okey, bạn có thể học code đẹp, đọc clean code, nhưng code dạng đẹp đỉnh cao thì không thể dạy ở trường học được.

Code đẹp đỉnh cao được định nghĩa là nhìn qua overall là có thể cảm nhận được là người viết ra code này đỉnh vkl. Nó sẽ kiểu dễ đọc, để hiểu, dễ sửa, nhìn chỉn chu ngay hàng thẳng lối lắm. Sẽ có những code mà bạn thấy đẹp nhưng sửa thì không dễ, và ngược lại,… nhưng code mà cover được hết những thứ đó thì người viết ra nó phải có kĩ năng thượng thừa lằm.

Xui cái là, code được như vậy thì không thể học ở trường được. Nó là thành quả của rất nhiều, rất nhiều kinh nghiệm, rất nhiều trăn trở, rất nhiều lần đọc code thì mới có thể tu luyện được.

Kiểu gì cũng có người hỏi khi nào làm xong em? Làm bao lâu em? trong khi bạn cũng méo biết, hay méo muốn phải trả lời

Mấy sếp, thì thích số, thích estimates, và thích hỏi luôn khi nào thì em làm xong. Và thế giới thì vận hành như vậy đó – một cái biz luôn muốn đạt được điều gì đó, nhưng trước khi bắt đầu start, họ luôn muốn/phải biết cái giá phải trả là bao nhiêu. Và estimation là một đại lượng để biết cái giá đó là bao nhiêu.

Okey, cái này thì chả thể nào dạy được ở trường đại học, và nó cũng là thứ mình thấy rất nhiều bạn bất ngờ khi đi làm bị hỏi estimation. Và các bạn phải rèn luyện nhiều thì mới trả lời được câu hỏi đó, phải biết năng lực bản thân mình, phải biết hệ thống đang chạy, phải biết code đang như nào, phải biết yêu cầu ra sao, thì mới có được câu trả lời. Và bạn càng đối mặt với nhiều vấn đề khác nhau thì kĩ năng này của bạn sẽ càng được cải thiện.

software developer

Mình sẽ không thảo luận cách tốt nhất để estimates ở đây, bạn tự search Google hay hỏi chatGPT đi, nhiều lắm. Điều mà mình muốn nói ở đây là estimates là thứ duy nhất mà người làm biz hiểu và sử dụng được. Nếu bạn nói rằng “Chúng ta có một plan lâu dài cho cái này, nhưng tao cũng không biết khi nào hoàn thành nó”, thì thử hỏi, ông biz phải làm sao phải làm sao.

Không phải tất cả cuộc họp đều tệ

Làm Dev mà hiếm khi được code, vậy thời gian đi đâu? Đi họp!

Họp hành để đảm bảo mọi thứ mượt mà và đúng deadline. Nó giúp cho mọi người hướng tới cùng một mục tiêu. Team marketing biết rằng mấy ông dev đang làm gì đó, và họ thì chuẩn bị content, hình ảnh để lên bài khi release. PM thì muốn biết được dev đang làm gì, có đúng hướng không đặng biết đường còn chỉnh lại. Customer support thì đưa ra những feedback/bug mà khách hàng gặp phải,… vân vây mây mây…

software developer

Mọi thứ, mọi thứ đều kết nối với nhau, và đi họp là cách để kết nối mấy thử đó. Với vai trò là một dev thì trách nhiệm của bạn cũng là một điểm để kết nối với team, công ty, khách hàng,… Bạn có thể không thích đi họp nhưng đó là trách nhiệm của bạn trở thành một mắt xích trong bộ máy công ty để nó vận hành trơn tru hơn.

Kết luận

Nếu bạn cân nhắc bắt đầu dấn thân vào con đường làm một Lập Trình Viên, thì hãy chuẩn bị để đối mặt với những vấn đề như trên, cố gắng, nắm bắt cơ hội và phát triển. Tới cuối thì có khi bạn cũng chẳng thể thay đổi thế giới gì đâu, nhưng tới cuối thì, nó cũng chỉ là công việc thôi mà, bạn không đóng góp cách này thì bằng cách khác, không thay đổi cả thế giới thì thay đổi… thằng đồng nghiệp cũng được.

Và điều quan trọng nhất, hãy tìm niềm vui trong đó.

Còn điều gì khiến bạn vỡ mộng khi mới bắt đầu đi làm, comment bên dưới nhé!

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

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

Tìm việc làm IT lương cao tại TopDev

Cách sử dụng hàm isset trong PHP

Cách sử dụng hàm isset trong PHP

Isset là một hàm cơ bản nhưng cực kỳ quan trọng trong PHP giúp chúng ta kiểm tra giá trị của một biến. Mặc dù vậy thì thực tế sử dụng các bạn mới code PHP thường nhầm lẫn nó với một số hàm khác có chức năng kiểm tra biến tương tự như empty hay is_null. Bài viết hôm nay chúng ta cùng nhau tìm hiểu cách sử dụng hàm isset trong PHP áp dụng bài toán thực tế nhé.

Hàm isset() trong PHP

Hàm isset() trong PHP thực hiện việc kiểm tra một biến đã được thiết lập hay chưa. Nếu một biến đã được unset với hàm unset() trong PHP thì nó sẽ được xem là không còn được thiết lập nữa. Hàm isset() sẽ trả về false nếu như biến đang kiểm tra chứa giá trị là NULL.

isset trong PHP

Cú pháp hàm: isset(variable1, variable2……)

Tham số:

  • variable1 (bắt buộc): biến cần check 
  • variable2…… (không bắt buộc): các biến cần check khác

Giá trị trả về:

  • TRUE: nếu như các biến (variable1,variable2..) truyền vào tồn tại và có giá trị khác NULL
  • FALSE: trong các trường hợp còn lại

Ví dụ: Để kiểm tra xem người dùng đã nhấn vào nút submit trên form login hay chưa, chúng ta thường xử lý như đoạn dưới đây trong PHP bằng cách sử dụng hàm isset để check.

<?php
if(isset($_POST['login'])){
    // Code xử lý khi người dùng  nhấn vào nút login form
}
?>

Sử dụng hàm isset giúp chúng ta tránh được các lỗi liên quan đến việc khởi tạo biến hoặc khởi tạo các phần tử trong mảng, ví dụ như lỗi Notice: Undefined variable hay Notice: Undefined index. Việc kiểm tra trước điều kiện giúp bạn đỡ phải thực hiện các câu lệnh không cần thiết, ngoài ra còn tăng tính chính xác và bảo mật của mã nguồn.

  Các hàm xử lý chuỗi thường dùng trong PHP

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

Một số lưu ý khi sử dụng hàm isset()

Isset là một hàm cơ bản và thông dụng trong PHP, tuy nhiên bạn cần lưu ý giá trị biến truyền vào cũng như điều kiện trả về của hàm để tránh bị nhầm lẫn trong một số trường hợp, cụ thể:

    • Giá trị trả về chỉ bằng TRUE khi biến truyền vào đã tồn tại và khác NULL
    • Hàm chỉ kiểm tra giá trị cho biến chứ sẽ không kiểm tra giá trị của từng phần tử trong mảng hay giá trị của các thuộc tính trong một object. Để làm được 2 việc trên thì PHP cung cấp cho chúng ta các hàm khác như array_key_exists() hay property_exists()
    • Hàm isset sẽ trả về FALSE trong cả 2 trường hợp biến chưa được thiết lập hoặc giá trị bằng NULL. Vì vậy chúng ta không thể sử dụng hàm này để phân biệt 2 trường hợp trên. Để giải quyết vấn đề này chúng ta sử dụng một hàm khác là empty() mà mình sẽ nói ở phần sau của bài
  • Trường hợp truyền nhiều biến vào hàm (variable1, variable2……) thì chỉ cần 1 trong các giá trị biến không tồn tại thì hàm sẽ trả về FALSE. Hay nói cách khác isset(variable1, variable2) = isset(variable1) && isset(variable2)

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

Phân biệt isset, emptyis_null trong PHP

Isset, empty is_null là 3 hàm dùng để kiểm tra giá trị của một biến trong PHP, tất cả đều sẽ trả về một giá trị boolean. Nếu như isset sử dụng để kiểm tra biến đã được thiết lập hay chưa thì empty là hàm giúp kiểm tra xem một biến có rỗng hay không.

Vì thế 2 hàm này thường được xem là ngược nhau; tuy nhiên điều này không phải lúc nào cũng đúng. Với hàm is_null thì dễ hiểu hơn một chút khi nó sẽ chỉ trả về TRUE khi biến là NULL, tuy nhiên nó sẽ chỉ gọi được với điều kiện là biến truyền vào đã được khai báo.

Cụ thể về từng trường hợp trả về chúng ta có thể tham khảo ở bảng dưới đây (ô trống là trường hợp giá trị trả về bằng FALSE):

isset trong PHP

Một ví dụ xử lý form login sử dụng cả isset empty một cách hiệu quả như dưới đây:

<?php
if(isset($_POST['login'])){
   
    if(empty($_POST['username'])) {
        echo "Bạn không được bỏ trống trường tên đăng nhập";
    }else{
        $username = $_POST['username'];
    }
     
    if(empty($_POST['password'])) {
        echo "Bạn không được bỏ trống trường mật khẩu";
    }else{
        $password = $_POST['password'];
    }
     
}
?>

Đoạn code trên sẽ giúp chúng ta kiểm tra dữ liệu form đảm bảo chỉ thực hiện xử lý login khi người dùng đã nhập đủ vào cả tên đăng nhập và mật khẩu.

Kết bài

Isset là một hàm quan trọng trong PHP và được sử dụng rất nhiều trong thực tế khi viết code; nó giúp chúng ta kiểm tra xem một biến có tồn tại hay không. Sử dụng isset giúp bạn tránh được các lỗi liên quan đến việc truy cập biến và tối ưu hóa mã nguồn của bạn hơn. Bạn cũng nên nắm vững được các trường hợp trả về của cả 3 hàm isset, empty và is_null để có thể lựa chọn sử dụng một cách thích hợp. 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:

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

Những điều không ai dạy bạn về ngành Phần mềm (Phần 1)

Những sự thật không ai dạy bạn về Ngành Phần mềm

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

Tại sao nên đọc bài này?

  • Để bạn có một cái nhìn đa chiều hơn về ngành phần mềm, không phải hoàn toàn là việc nhẹ lương cao như thằng em sn 96…
  • Một số sự thật khó tiêu hóa trong ngành phần mềm. Có khi nó giúp bạn nhận ra và unlock được một level mới.

Nội dung của bài viết này sẽ được dịch từ bài gốc ở trên, dĩ nhiên là dưới góc nhìn của mình, có thêm bớt khá nhiều. Tác giả cũng disclaim là đây cũng chỉ là góc nhìn chủ quan của tác giả. Tuy nhiên mình thấy đây là bài viết cực kì hay về ngành mà mình đang làm.

Bác nào giỏi tiếng anh thì nên đọc bài gốc và skip qua bài của mình cũng được nhé. Đọc xong back lại đây comment cũng được .

Gét gô!

Bạn hiếm khi được code thứ gì đó từ đầu

Khác với trường học, nơi mà mọi bài tập của bạn đều chỉ có đề bài mà một màn hình trắng xóa, bạn fill code vào, chạy thử, fix bug, nộp bài. Dù đó có là học giải thuật hay là học một số môn lập trình thực tiễn hơn, hầu hết đều như vậy. Mục đích là thể hiện trình độ cá nhân của bạn.

Nhưng thực tế thì sao? *éo . Dù bạn mới ra trường, đi thực tập, đã đi làm được đôi ba năm hay thậm chí cả chục năm. Thứ ném vào mặt bạn là một project với vài ngàn dòng code (hoặc vài triệu) với vô vàn dấu chân của những dev trước để lại, có những người là thực tập, những người là junior, những người là senior… và bạn. Hiếm khi bạn được start một thứ gì đó từ zero.

Bạn coi tới coi lui đống code, check qua từng file, check lại document. Và bạn tốn cả 1 tuần để hiểu xem mấy ông dev trước làm gì (tất nhiên là vừa làm vừa chửi ) để rồi thêm 10 lines code vào để fix một bug bé tí nào đó.

Cuộc sống hằng ngày của Dev
Cuộc sống hằng ngày của Dev

Đó làm coder là vậy đó, hầu hết thời gian của bạn sẽ là sửa những gì đang chạy, thêm feature vào dựa trên một cục code base có sẵn.

  Những mẹo hay ho cho các Software Developers

  Những tựa sách nổi tiếng dành cho Software Developer - Phần 1

Kiến thức “ngành” (Domain knowledge) quan trọng hơn kĩ năng múa code

Mình thấy rất bất ngờ nếu mình hiều về một thứ gì đó thì việc coding của mình trở nên rất đơn giản. Mọi thứ chạy như thế nào, và tại sao nó lại cần chạy như vậy.

Ví dụ khi code app ngân hàng/fintech thì bạn tốt nhất nên hiểu transaction chạy như thế nào, sổ cái hoạt động ra sao

Khi build một hệ thống PoS (Poin of sale – mấy phần mềm để tính tiền, gọi món ở quán Trà sữa, nhà háng á) thì bạn nên tìm hiểu xem tụi nhà hàng nó hoạt động thế nào, chia ca, tồn kho, rồi còn các bước để quẹt thẻ,…

Và nó đúng với hầu hết các ngành khác như Y tế, Logistic, Xây dựng,..

Cuộc sống hằng ngày của Dev

Nếu mà không có mớ kiến thức ngành đó, bạn sẽ rất dễ bị lạc. Kiểu như bạn sẽ bị struggle vì mình chỉ code theo task thôi mà không hiểu ý nghĩa công việc của mình ở đâu á, chả biết mình code có đúng không, chả biết nó chạy ở đâu, chả biết nó đóng góp gì cho biz đang chạy ngoài kia, và bạn sẽ chả biết… thứ bạn làm có value ở đâu cả.

Mình đã nhận ra điều này là thực sự quan trọng đối với mình trên con đường làm phần mềm, nó khiến mình buồn khi user dùng app mà bug, nó khiến mình vui khi có ai đó dùng phần mềm mình làm và khiến cuộc sống của họ dễ dàng hơn, nó khiến mình tự hào khi có ai đó nhắc tới phần mềm mà mình đã làm. Việc vui buồn đó, phần nào, khiến cho mình kết nối với những dòng code và công việc nhiều hơn!

Ngoài ra kiến thức ngành cũng là một vũ khí cực kì tốt giúp bạn dễ dàng sống sót hơn ở ngành phần mềm. Kiểu như nếu bạn đã biết kiến thức ngành về banking thì rất dễ cho bạn kiếm một công việc khác tương tự và dĩ nhiên, có lương cao hơn.

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

Viết document không được đề cao lắm

Okey, back lại trường đại học thì họ nhấn mạnh vào việc coding, giải thuật nhiều hơn là việc viết ra những dòng code, bạn và đồng nghiệp đều hiểu, và viết cả document cho nó.

Viết document không được đề cao lắm
Có 2 lý do khiến việc document nên được coi trong hơn khi đi làm
  • Như đầu bài đã chia sẻ, bạn hiếm khi được code một thứ mới, do đó nếu bạn viết clean code hay có một document ngon lành sẽ giúp ích cho bạn, và những người sau bạn tiếp tục với cục code base hiện tại.
  • Đi làm là làm việc theo nhóm, và bạn sẽ không được làm solo nữa. Nên bạn phải từ bỏ suy nghĩ tất cả đều đã được lưu lại trong đầu mình, mà phải share chung cho cả team.
Cá nhân mình thì thấy viết code clean là khá ổn rồi, dành thời gian để document lại những thứ liên quan tới kiến thức ngành (Domain knowledge) hay Overview của hệ thống

Code là thứ Hai, kiếm được tiền mới là Chủ Nhật

Sẽ méo có ai tới và vỗ vào vai bạn nói rằng “VKL, làm được được việc đó trong 1 dòng code hả” (okey, thực ra ngoài đời thì vẫn có thôi, chỉ là mấy ông làm chung ngành nâng bi nhau ), mà thay vào đó họ sẽ nói kiểu “Hey ku, user thích cái feature may mới làm lắm” hay tệ hơn là “Thằng , m deploy cái gì mà sập cả website kìa”

Đôi khi nó nghe khá là WTF, nhưng

Công việc chính của Software Developer không phải là viết code mà là tạo ra value thông qua qua software, thứ mà họ đã viết

Code chỉ là công cụ để bạn tạo được value. Code → Software → Value

Thứ bạn viết ra, phải phục vụ một mục đích nào đó cho thế giới – một công cụ gì đó, hay là một đoạn automation giúp giảm chi phí, bất cứ thứ gì, mà có người chịu trả tiền cho nó (có thể bằng thời gian, tiền bạc hay sự chú ý).

Nếu bạn build ra một thứ gì đó với đống công nghệ như  nhưng mang lại value cho users – bạn phục vụ một nhu cầu tất yếu của một software engineer. Nếu bạn build ra một thứ gì đó với mớ công nghệ cool ngầu nhưng éo ai thấy nó có value – xin lỗi tôi và bạn không cùng ngành.

Software Developer

Code clean, follow best practice, design pattern – mớ đó để giúp cho cuộc sống của những ông dev sau bạn đỡ vất vả hơn chứ mục đích tối thượng của nó không phải là tạo ra value. À dì nhiễn cũng giúp cho cuộc sống của bạn sau này dễ thở hơn, và cũng không phải bị những người sau vừa fix bug mà vừa đọc thầm tên bạn và … chửi.

Xem thêm Làm thế nào tôi trở thành một Software Developer tại Twitter?

Bạn sẽ phải làm việc với những thứ/người gà vkl

Trong môi trường làm việc, bạn sẽ phải làm chung với những người mà theo bạn nghĩ là “gà vkl”, nào thì code toàn bug, nào thì API không lúc chạy được lúc không, nào là design mỗi chỗ một màu khác nhau, hay lâu lâu con bé QA dở người,… Có khi đó là output của một người cùng công ty, có khi nó là ouput của khách hàng – một bên thuê bạn.

Nói chung thì bạn sẽ thấy khó chịu vkl thì phải đối mặt với những tình huống như vậy. Nó tạo ra một môi trường toxic, unproductive, poor decisions.

Tao (tác giả gốc, không phải mình) đã dành rất nhiều thời gian để tìm cách đổi phó với những loại người như vậy mà không phải trở thành một thằng , đáng ra trường đại học phải dạy cho mình mấy cái này chứ nhỉ?!

Software Developer

À có một cách tao (tác giả) ngộ ra là hãy tự tập trung vào công việc của bản thân và kệ người khác đi. Tìm một giải pháp thay thế nào đó hợp lý hơn và đừng có dây vào những người kém productive. Viết document thì cũng khá hữu ích, nó có thể trở thành “Bằng chứng thép” để cáo với sếp về mấy người unproductive đó .

Cuối cùng, cách tốt nhất để “đối phó” với mấy người đó là

  • Tìm một giải pháp hay người nào đó có thể giúp mình
  • Nhờ vả những người chuyên môn cao hơn làm task đó hộ mình
  • Implement một số giải pháp kiểu code của tụi nó có hư thì bên mình cũng không bung bét ra (failsafe, fallback)
  • 1-1 meeting với người đó và nói với họ là họ làm chậm process ntn
  • Okey, không cần phải trở thành một thằng  để chiến tranh với họ

Phần này mình dịch hoàn toàn như bên bài viết gốc. Còn đối với mình, thực tế mình đã từng rất nhiều rơi vào tình cảnh như vậy. Phần dưới là input thêm từ mình

Có lúc mình làm với Backend code api lúc up lúc down, mình khó chịu mình chửi thầm, có lúc mình làm với Design mà lệch alignment, mình khinh thường mình chửi họ, rồi cũng có lúc mình làm việc với QA và PM và mình code bug, họ là chê output của mình. Ồ mình nhận ra nếu bạn trong team nào thì bạn sẽ luôn luôn chê input của mình, và bị chê bởi output của mình.

PM → BE → FE → QA → PM

Và mình nhận ra mình khó chịu vì nó tổn hại tới cái tôi của mình. Nếu mà BE làm trễ deadline và mình sẽ cũng bị trễ theo, và mình đổ lỗi cho BE, để nuôi dưỡng cái tôi, để feel good vì do mày nên tao không làm được, chứ tao tốt đẹp vl . Đó đã có lúc mình suy nghĩ như vậy, nhưng được làm việc với nhiều team hơn, thử thực sự làm BE hay làm QA mình nhận ra một điều:

Mọi thứ luôn luôn broken ở software.

Mình không rành ngành khác như thế nào, nhưng đối với software, nó là soft, nên nó có thể tháo rất nhanh phần hư ra, hoặc fix phần hư rất nhanh. Nên ngành này vận hành theo cơ chế là ship một thứ gì đó chạy được cơ bản rất nhanh, rồi vừa chạy vừa fix. Do đó, sẽ luôn luôn có thứ broken. Và việc của mình không phải là đổ lỗi cho BE, Design hay PM làm broken, mà là khiến mọi thứ tiến về phía trước. Mình đồng ý với việc sẽ có lỗi từ BE, sẽ có lỗi từ Design, và cũng đồng ý với việc mình sẽ code bug, đôi khi sẽ bị QA dí như  vì mình cũng tệ vậy. Và mình hướng tới việc làm sao để mọi người trong team phối hợp tốt hơn, và nếu là một lỗi sảy ra, thay vì đi tìm người gây ra cái bug đó, thì mình tìm cách để nó không xuất hiện lần thứ 2 hay thứ 3 như vậy nữa.

Mục tiêu chính của mình là deliver cái software đó, không phải là nuôi dưỡng cái tôi “thanh cao” của bản thân tôi thì tốt đẹp còn những người xung quanh thì tệ vkl.

Vậy đó, software luôn luôn broken, mà broken thì mới có việc để làm chứ không thì AI code hết mọe rồi.

À một point thứ 2 là đôi khi do một người trong team broken, hay thậm chí là khách hàng broken thì mình nghĩ là đơn giản thôi: CẮT. Nếu trong team thấy một người như vậy thì mình sẽ nói với họ và để họ thử và nếu họ không survive được thì chắc là “chúng ta không thuộc về nhau”. Ngay cả khách hàng cũng vậy, mình đã từng stoploss với 2-3 client vì làm việc không chuyện nghiệp

Wait, lỡ mình không có power cao bằng người ta nên mình không “chia tay” người ta được thì sao? Thì mình tự nói với bản thân rằng, thôi nếu vậy hạn chế chơi với ông này, đợi khi nào power mình cao hơn rồi tính vậy. Dù gì thì phải có lý do gì đó mà khiến ông đó có power cao hơn mình chứ, lỡ ông đó giỏi tiếng anh hơn mình thì sao, lỡ ông đó kì này có chuyện buồn gì sao,… chả ai muốn mình là broken person trong team cả, hẳn họ có một nỗi niễm gì đó,… Hoặc họ gà thật :)))

Thôi thì không thể thay đổi được thế giới, thử thay đổi bản thân vậy

Kết

Đầu năm nói những thứ phũ phàng khi đi làm chắc không đúng vibe lắm, nhưng dù muốn dù không thì bạn cũng sẽ phải đối mặt với nó, nếu bạn đi làm phần mềm. Thường bạn sẽ nghe tới ngành IT là lương chăm triệu, tháng làm 2-3 jobs, gái theo xếp hàng,… nhưng hiếm ai nói cho bạn những phần bên dưới của tảng băng – những sự thật khi đi làm.

Nghề gì cũng vậy, phải khó khăn thì mới có việc để làm, phải có khó khăn thì bản thân mới thể hiện được giá trị của mình chứ hả?

Còn tiếp…

>>> Xem thêm: Things they didn’t teach you about Software Engineering

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

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

Tìm việc làm IT mọi cấp độ tại TopDev

Sử dụng map, filter và reduce trong Javascript như nào cho đúng?

map filter và reduce trong Javascript

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

Vấn đề

Dữ liệu được lưu trữ trong cơ sở dữ liệu thường phải được chuẩn hóa để giảm dung lượng và tăng tốc độ truy vấn, Vì thế sau khi lấy ra thường phải qua nhiều phép biến đổi dữ liệu thì mới có thể dùng để xử lý logic tiếp được.

Lập trình FE, đặc biệt là lập trình dựa trên những Framework hiện đại như Angular, React, Vue… việc tạo ra những đối tượng để lưu trạng thái (state) của ứng dụng đòi hỏi khả năng xử lý dữ liệu nhiều hơn nữa. Bởi vì những trạng thái này là thay đổi liên tục phụ thuộc vào logic hiển thị và thao tác người dùng.

Những dữ liệu trên thông thường được lưu trữ trong Object hay Array, chính vì thế kể từ ES5 tung ra bộ ba mapfilter và reduce để giúp chúng ta xử lý dữ liệu mảng một cách hữu ích hơn rất nhiều.

  15 ví dụ sử dụng map, reduce và filter

  Một vài ứng dụng hay ho của reduce

map, filter và reduce

Hàm map duyệt qua mảng, và trả về một mảng có số lượng phần tử bằng đúng với số lượng phần tử mảng ban đầu. Các phần tử được trả về thông qua return.

Ví dụ:

const arr = [1, 2, 3];
const arr2 = arr.map(function (item) {
  return item + 1;
});
// [2, 3, 4]

Hàm filter cũng duyệt qua mảng, trả về một mảng mới với các phần tử thỏa mãn một điều kiện true/false.

Ví dụ:

const arr = [1, 2, 3];
const arr2 = arr.map(function (item) {
  return item > 1;
});
// [2, 3]

Reduce duyệt qua mảng, thực hiện tính toán trong hàm callback.

Ví dụ:

const arr = [1, 2, 3];
const sum = arr.reduce(function(accumulator, currentValue) {
  return accumulator + currentValue;
}, 0);

reduce là hàm nâng cao nên độ khó cao hơn khi bắt đầu. Tuy nhiên bạn có thể nhanh chóng sử dụng thành thạo chúng thông qua một vài ví dụ tại Reduce Syntax.

Cú pháp đầy đủ của reduce là:

reduce((accumulator, currentValue, currentIndex, array) => {
    /* … */
}, initialValue)

Với accumulator là giá trị tích lũy, giá trị tích lũy ban đầu sẽ bằng initialValuecurrentValue là phần tử trong mảng ở lần lặp hiện tại, tương tự currentIndex là vị trí phần tử và array là mảng ban đầu. initialValue là giá trị khởi tạo.

Đầu ra của map và filter luôn luôn là một mảng, chính vì thế nếu thấy chúng xuất hiện thì chắc chắn đầu ra phải là một thứ “có thể lặp”. Điều này rất quan trọng, vì nó giúp tạo nên tính cam kết và khả năng liền mạch trong khi kết hợp nhiều hàm với nhau khi xử lý.

const arr = [];
arr.map().filter().map()...

Bạn có thể dùng ngay filter ngay sau map mà không lo lắng rằng kết quả của map trả về nullundefined… bất kì thứ gì đó mà “không thể lặp” qua.

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

Một vài trường hợp sử dụng

Có rất nhiều trường hợp bạn cần dùng đến bộ 3 này, khi nào cần biến thêm/thắt hay thay đổi thuộc tính trong mảng thì dùng map, khi nào cần lọc dữ liệu trong mảng thì dùng filter còn khi nào muốn trả về một kết quả cần tổng hợp từ mảng thì dùng reduce.

Tóm lại là khi làm việc với dữ liệu là mảng thì hãy nghĩ đến bộ ba này đầu tiên, dần dần bạn sẽ biết cách dùng thành thạo. Điều này giúp bạn viết ra đoạn mã ngắn gọn hơn.

Một số trường hợp tiêu biểu mình sử dụng là trong xử lý dữ liệu nhận từ API.

Dữ liệu nhận từ API về là dữ liệu “thô”, gọi như thế bởi vì cần qua một vài bước xử lý nữa thì mới thành dữ liệu “chuẩn” để hiển thị lên trang web được, lúc đó chúng ta có thể sử dụng mapfilter hoặc reduce để thêm, bớt, sửa đổi hay lọc dữ liệu trong mảng.

Thứ hai là dữ liệu được lấy ra trong cơ sở dữ liệu (database). Đây là dữ liệu được tối ưu hóa để lưu trữ vì thế trong lúc xử lý những logic bạn vẫn cần phải thêm thắt nhiều nữa mới ra dữ liệu chuẩn. Một ví dụ tiêu biểu cho trường hợp này là định dạng lại dữ liệu trả về cho client thông qua API.

Thứ ba là dữ liệu tạo ra để phục vụ cho mục đích xử lý logic. Loại dữ liệu này được tạo ra trong quá trình xử lý logic của bài toán nào đó. Trong quá trình tính toán thì việc biến đổi dữ liệu có thể xảy ra thường xuyên. Việc vận dụng mapfilter và reduce thành thạo có thể giúp bạn xử lý vấn đề với số lượng mã ít hơn.

Ngoài ra, có rất nhiều hàm mà Javascript cung cấp khi thao tác với mảng như findfindIndexindexOf… Những hàm này hoàn toàn có thể thay thế bởi bộ ba mapfilter và reduce. Tuy nhiên nếu có thể hãy sử dụng chúng để tăng tính minh bạch cho mã.

Tổng kết

Bộ ba mapfilter và reduce là trợ thủ đắc lực khi làm việc với dữ liệu mảng. Biết cách vận dụng chúng phù hợp giúp bạn giảm được thời gian viết mã đồng thời giúp mã ngắn gọn hơn.

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

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

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

Có nên xin việc vào cuối năm? Cơ hội hay rủi ro?

co-nen-xin-viec-vao-cuoi-nam

Có nên xin việc vào cuối năm? Cuối năm thường được coi là thời điểm khó khăn để đi tìm việc làm, vì đa số các công ty thường đang rất bận rộn để hoàn thành những việc cũ và lên kế hoạch cho năm mới. Thế nhưng, quan điểm này không hoàn toàn đúng, vẫn có những doanh nghiệp sẵn sàng tiếp nhận hồ sơ xin việc mới nếu bạn phù hợp với vị trí họ đang tuyển.

Vậy, việc tìm kiếm việc làm vào cuối năm sẽ mang lại cơ hội hay chỉ là một rủi ro khó lường? Bài viết sẽ cung cấp cái nhìn chi tiết về vấn đề này, đồng thời chia sẻ chiến lược để xin việc cuối năm một cách hiệu quả.

Cơ hội tuyệt vời khi tìm việc làm cuối năm

Có nên xin việc vào cuối năm

Cuối năm là thời điểm nhiều công ty tuyển dụng để bổ sung nhân lực cho năm mới. Đây là thời điểm “vàng” cho người lao động tìm việc làm vì những lý do sau:

  • Kế hoạch cho năm mới: Cuối năm, các công ty thường bắt đầu lên kế hoạch cho năm tiếp theo. Điều này tạo ra một cơ hội tuyệt vời cho ứng viên mới, vì họ là những nhân tài mà các công ty đang tìm kiếm để cùng nhau đạt được mục tiêu trong năm sắp tới.
  • Số ứng viên apply siêu ít: Đây là một trong những cơ hội lớn nhất khi tìm việc làm cuối năm. Theo một khảo sát, chỉ có khoảng 20% người lao động tìm việc làm vào cuối năm. Điều này có nghĩa là số ứng viên cho mỗi vị trí sẽ ít hơn so với các thời điểm khác trong năm, giúp người lao động tăng cơ hội được tuyển dụng.
  • Khoản ngân sách dành riêng: Các doanh nghiệp hiểu rõ tâm lý của những người đang làm việc là không muốn chuyển việc vào cuối năm để không mất lương thưởng. Do đó, nhiều công ty đã dành ngân sách riêng để bù đắp cho những khoản thưởng mà bạn sẽ không nhận được từ công ty cũ.
  • Được chờ đợi đến khi bàn giao công việc: Nếu bạn thật sự rất thích hợp với công ty mới, thì nhà tuyển dụng cũng sẽ sẵn sàng chờ bạn đến khi bạn bàn giao xong, đủ thời gian an toàn cho bạn nhận các khoản thưởng từ công ty cũ. Điều này sẽ giúp bạn có thể chuyển việc mà không phải lo lắng về vấn đề tiền bạc.

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

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

Những rủi ro tìm ẩn khi xin việc cuối năm

Bên cạnh những cơ hội trên thì việc xin việc cuối năm cũng tiềm tàng nhiều rủi ro, dưới đây là một số rủi ro bạn cần lưu ý:

Chất lượng công việc không đảm bảo

Một số công ty tăng cường tuyển dụng vào thời điểm này để đáp ứng nhu cầu tạm thời và áp lực sản xuất trong mùa lễ tết. Điều này có thể dẫn đến việc công việc không phù hợp với mục tiêu nghề nghiệp của ứng viên.

Ví dụ, một công ty bán lẻ có thể cần tuyển thêm nhân viên bán hàng thời vụ để phục vụ nhu cầu mua sắm tăng cao trong dịp Tết. Tuy nhiên, công việc này có thể chỉ kéo dài trong vài tháng và mức lương, chế độ đãi ngộ cũng có thể không hấp dẫn như công việc chính thức.

Cơ hội được gọi phỏng vấn thấp

Cơ hội được gọi phỏng vấn thấp

Vào cuối năm, do nhu cầu không quá nhiều, nhà tuyển dụng có thể sẽ khó tính hơn trong việc lựa chọn ứng viên phỏng vấn. Điều này có thể làm cho cơ hội bạn được gọi phỏng vấn trở nên thấp hơn.

Nhà tuyển dụng dành ít thời gian hơn cho ứng viên

Ở thời điểm cuối năm, công việc thường đang trong giai đoạn bận rộn, với nhiều nhiệm vụ như tổng kết kết quả, lập kế hoạch cho năm sau,… Điều này có thể làm cho thời gian của các nhà tuyển dụng bị ít đi và họ thường không có thời gian để xem xét quá nhiều hồ sơ ứng viên.

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

Bí quyết tìm việc cuối năm bao đậu

Để tìm kiếm việc làm vào cuối năm một cách hiệu quả, có những bí quyết quan trọng mà bạn nên áp dụng:

Luôn chủ động tìm việc làm mới

Dù là bất kỳ thời điểm nào trong năm, sự chủ động và quyết tâm là chìa khóa quan trọng trong việc tìm kiếm việc làm. Cuối năm, cơ hội có thể giảm do mức đãi ngộ hấp dẫn không nhiều, bạn càng cần phải nhanh chóng nắm bắt cơ hội trước sự cạnh tranh cao từ các ứng viên khác. Tìm kiếm trên các trang mạng xã hội như Facebook, Linkedin cũng là lựa chọn đáng xem xét.

Luôn chủ động tìm việc làm mới

Hãy chủ động tìm kiếm thông tin tuyển dụng trên các trang web tuyển dụng, mạng xã hội hoặc thông qua các mối quan hệ của mình. Khi tìm thấy một vị trí phù hợp, hãy nhanh chóng nộp hồ sơ để tăng cơ hội được tuyển dụng.

Có định hướng rõ ràng vị trí bạn muốn ứng tuyển

Để tăng cơ hội thành công, hãy xác định rõ mục tiêu nghề nghiệp và định hình cụ thể về vị trí mà bạn muốn ứng tuyển. Hiểu rõ về công việc, kỹ năng yêu cầu, và xác định mục tiêu sẽ giúp bạn tự tin và chuẩn bị tốt hơn cho quá trình ứng tuyển.

Chuẩn bị thật tốt CV và các kỹ năng công việc liên quan

Việc chuẩn bị CV là một yếu tố quan trọng trong quá trình xin việc. Đảm bảo rằng CV của bạn chứa đủ thông tin cần thiết như thông tin cá nhân, trình độ học vấn, kinh nghiệm làm việc, và kỹ năng là một bước quan trọng để gia tăng cơ hội được phỏng vấn thành công. Thiết kế CV cũng đóng vai trò quan trọng, cần phải bắt mắt, dễ đọc và phản ánh cá tính của bạn. Bạn có thể sử dụng công cụ hỗ trợ làm CV online của TopDev giúp bạn nhanh chóng có một CV chuẩn developer, chuyên nghiệp và tiện lợi.

Chuẩn bị thật tốt CV

Ngoài ra, đối với kỹ năng chuyên môn, chúng là không thể thiếu khi bạn muốn ứng tuyển vào các vị trí công việc. Không chỉ cần quan tâm đến kỹ năng trực tiếp liên quan đến công việc mà bạn đang nắm giữ, mà còn cần chú ý đến kỹ năng mềm như giao tiếp, làm việc nhóm, và tin học văn phòng. Đây là những yếu tố quan trọng mà nhiều nhà tuyển dụng đánh giá cao ở ứng viên.

Qua bài viết này, TopDev đã giúp bạn trả lời cho câu hỏi có nên xin việc vào cuối năm. Chúc bạn sớm tìm được công việc ưng ý trong dịp cuối năm này. Đừng quên truy cập TopDev để tìm kiếm các cơ hội việc làm IT hấp dẫn bạn nhé!

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

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

Tự học Node.js thì bắt đầu từ đâu? Học Node.js có khó không?

Tự học Node.JS bắt đầu từ đâu? Lộ trình học như thế nào?

Vấn đề

Node.js hiện nay đang là một nền tảng thực sự hấp dẫn chính vì thế ngày càng có nhiều người theo học nó. Thống kê của Stackoverflow cho thấy năm 2021 Javascript (JS) dẫn đầu trong bảng xếp hạng công nghệ phổ biến trên nền tảng của họ và Node.js đứng ở vị trí thứ 6 xếp sau Java. Điều này cho thấy sức nóng của Javascript cũng như Node.js chưa hề dừng lại.

 Tự học Node.js thì bắt đầu từ đâu?

Nhiều công ty tuyển dụng Node, nhiều sản phẩm hay công cụ bằng Node ra đời cũng cho thấy mức độ quan tâm rất lớn của các nhà tuyển dụng đối với nó. Một công nghệ khi càng phổ biến, cộng đồng càng lớn thì độ phủ sóng cũng như mức độ tin cậy sẽ càng cao.

Nếu là một lập trình viên FE và làm việc với JS là một lợi thế rất lớn để chuyển qua vị trí lập trình Node. Bởi suy cho cùng Node là môi trường chạy mã Javascript, chỉ khác ở chỗ thay vì tương tác với DOM trên trình duyệt thì ta dùng JS để tương tác với file, cơ sở dữ liệu… nhiều hơn mà thôi.

Nhưng với những người mới bắt đầu lập trình chưa có nhiều kinh nghiệm lẫn kiến thức, hay lập trình viên FE muốn thử sức với BE thì nên tiếp cận như thế nào? Bài viết ngày hôm nay tôi xin phép chia sẻ kinh nghiệm của tôi cho những ai đang trên đường chinh phục Node, tuy chỉ là quan điểm cá nhân nhưng hy vọng sẽ giúp ích cho mọi người.

Cần hiểu rõ bản chất của Node.js

Node.js không phải là một ngôn ngữ, nó là một môi trường cho phép chạy mã Javascript “bên ngoài trình duyệt” và hơn thế nữa. Thử tưởng tượng nếu trình duyệt cho phép bạn chạy mã JS thì Node.js cho phép bạn chạy mã JS trên máy chủ. Có thể nói Node.js ở đây có vai trò tương đương như trình duyệt. Vì thế để học Node.js tối thiểu bạn cần có kiến thức về JS.

Một điều thuận lợi là tài liệu về JS rất nhiều, cộng đồng phát triển JS cũng rất đông nên bạn không cần phải lo lắng quá nhiều về việc tìm kiếm sự trợ giúp. Đơn giản với một từ khoá “tự học javascript/node.js” đã có rất nhiều những video, bài viết, khoá học… rồi.

Lập trình BE sẽ có phần khác với lập trình FE. Lập trình BE bạn sẽ phải tương tác với file nhiều hơn (đọc/ghi dữ liệu), tương tác với cơ sở dữ liệu (database) và nhiều logic xử lý dữ liệu rất khác với FE. Bạn chỉ có thể biết nhiều hơn bằng cách học và làm. Học đến đâu thì làm đến đó, có thể ngay từ đầu code không được tốt nhưng qua thời gian rèn luyện sẽ dần được cải thiện.

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

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

Các cách tiếp cận với Node.js hiện nay

Một người làm Back-end (BE) lâu năm bất kể là ngôn ngữ nào thì đối với họ đó là một điểm cộng rất lớn vì họ đã có sẵn tư duy lập trình, họ tự biết cách để chuyển những điều đó sang làm việc với Node.js. Có chăng khó khăn ban đầu là sự khác biệt giữ cú pháp, vấn đề này hoàn toàn có thể khắc phục được theo thời gian. Ngoài ra mỗi ngôn ngữ luôn có những tính năng đặc trưng nên cần bỏ thêm thời gian để nhuần nhuyễn những điều đó.

Một người làm Front-end (FE) cũng có thể chuyển sang BE bằng cách tiếp xúc với một dự án BE sẵn có. Chỉ cần trình bày cấu trúc dự án rồi giải thích cách hoạt động của dự án thì đã có thể làm theo để tạo những chức năng đơn giản đến phức tạp. Đây là một cách tiếp cận nhanh chóng thế nhưng vẫn cần phải bỏ ra thời gian để nghiên cứu thêm kiến thức về BE, nếu không rất có thể bạn sẽ bị hổng những kiến thức nền tảng quan trọng.

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

Còn đối với những người chưa hề có kinh nghiệp lập trình thì sao? Có thể họ sẽ tìm kiếm các khoá học về Node.js. Thời đại bùng nổ công nghệ thông tin việc tìm kiếm các nguồn tài nguyên học tập không mấy khó khăn, các chủ đề nói về node rất là nhiều, miễn phí và trả phí đều có. Nếu tìm được một người “thầy” hỗ trợ thì rất tốt, họ sẽ cho bạn những hướng đi để đến đích nhanh hơn. Khi gặp vấn đề họ cũng là người gỡ rối. Nhưng họ không thể mãi chỉ cho bạn từng li từng tí mà bạn cần phải tự thân vận động thì mới tiến bộ được.

Bằng cách nào đi nữa thì nổ lực học hỏi của bạn vẫn là quan trọng nhất. Nhiều bài viết, bài giảng đi theo một cấu trúc nhất định, nếu chỉ học ở trong đó chưa chắc đã là đủ. Kiến thức của lập trình rất nhiều và chúng móc nối với nhau. Liên tục vượt ra vùng an toàn để học những kiến thức mới, đừng để bị thụ động vấp mới bắt đầu học. Nên nhớ bản thân các công nghệ nói chung hay Node.js nói riêng đều được cập nhật hàng ngày, kiến thức bạn học hôm nay có thể ngày mai đã bị lỗi thời.

Lời khuyên cho lộ trình học tập

Trước tiên hãy đầu tư thời gian để học kiến thức cơ bản về Javascript, đó là cơ sở để học tiếp các kiến thức nâng cao sau này.

Có một trang tài liệu về Javascript khá đầy đủ và chi tiết mà không cần phải tìm kiếm đâu xa là Mozila. Có thể nói Mozila là một trong những ông lớn trong làng trình duyệt đời đầu của giới web thế nên việc Mozila cung cấp tài liệu về Javascript là hết sức uy tín.

Các bạn có thể đọc thêm bài viết Giải ngố: Mozilla/5.0 là gì? Tại sao trình duyệt nào cũng có chuỗi này trong User-Agent? để thấy tầm ảnh hưởng của Mozila.

Mozila cung cấp đầy đủ và chi tiết các bài viết về Javascript từ cơ bản đến nâng cao. Bạn sẽ được học từ các câu lệnh cơ bản của JS, về Object, bất đồng bộ (asynchronous) đến đi sâu vào các thành phần cấu tạo của Javascript như kiểu dữ liệu, ClosureEvent loop… Các tài liệu sẽ có tính tham chiếu (reference) đến nhau nên hãy thận trọng trong khi tìm kiểu cẩn thận bị quá tải. Lời khuyên của tôi là hãy đọc tài liệu tham chiếu nhiều nhất nếu có thể để hiểu rõ hơn về các miền kiến thức liên quan đến nhau.

Có một số người sẽ thắc mắc đọc nhiều làm gì vì chưa chắc đã dùng hết. Đúng vậy, kiến thức về JS rất nhiều chưa chắc chúng ta cần phải áp dụng hết. Tuy nhiên bạn vẫn nên đọc để có góc nhìn bao quát, xem nó có gì để sau này tiện nghiên cứu hoặc gặp một bài viết hay vấn đề nào đó mà có liên quan thì sẽ biết cách tìm kiếm tài liệu.

Sau khi học xong JS, bước tiếp theo là học Node.js. Node.js là môi trường chạy mã JS nên nếu nắm vững JS thì không còn là vấn đề. Nodejs.dev là một trang dạy cách sử dụng Node.js theo phong cách Step-By-Step mà đơn giản để bắt đầu.

Nếu cảm thấy quá khó hãy thử tìm một “starter project”. Đó là những khung project được tạo ra cho bạn bắt đầu viết mã. Xây dựng dự án theo khung và dành thời gian tìm hiểu cách hoạt động của nó. Làm đến khi tự dựng được một khung mà không cần dựa vào ai cả.

Học không thể không đi đôi với hành. Trong quá trình học nên tự tạo cho mình một dự án để vừa học vừa làm. Làm nhiều thì sẽ hình thành kinh nghiệm, mà kinh nghiệm càng dày dặn thì chắc chắn bạn sẽ chinh phục Node.js vào một ngày không xa.

Một ngày nào đó bạn sẽ nhận ra học mỗi Node.js là chưa đủ để trở thành một BE Developer. Còn rất nhiều thứ mà bạn cần khám phá và bạn cần có một lộ trình chi tiết. Roadmap.sh Backend là một lộ trình đầy đủ để giúp bạn trở thành một lập trình viên BE chuyên nghiệp.

 Tự học Node.js thì bắt đầu từ đâu?

Tại đây bạn sẽ được cung cấp một lộ trình kiến thức cần phải học để đạt được mục đích cuối cùng là trở thành một BE Developer. Có rất nhiều thứ được nêu ra trong ảnh có thể khiến bạn bị choáng ngợp. Nhưng hãy bình tĩnh, không ai có thể trở thành chuyên gia trong ngày một ngày hai. Hãy từ từ tìm hiểu từng thứ một, như tôi đã nói không chắc là bạn phải biết cách áp dụng hết kiến thức đã học mà cần phải biết đến với thế giới BE thì có những gì. Để sau này gặp phải vấn đề còn biết cách tìm kiếm để giải quyết.

Cuối cùng, sự quyết tâm của bạn là tất cả, thành hay bại là do bạn tự quyết. Con đường học hành không bao giờ là dễ nhưng quyết tâm đủ lớn thì sớm muộn gì bạn cũng gặt hái được thành công.

Kết luận

Nhìn chung Javascript nói chung hay Node.js nói riêng không quá khó để bắt đầu. Những kiến thức cơ bản của chúng rất nhẹ nhàng và bạn có thể làm quen rất nhanh. Đó cũng là nền tảng để bạn tiếp cận với các kiến thức nâng cao sau này. Hãy nhớ muốn nhanh thì học cơ bản còn muốn giỏi thì phải học nâng cao.

Tự học là một quá trình dài và đòi hỏi sự kiên nhẫn. Tìm được một người “thầy” tốt là rất đáng trân trọng, còn không thì đường đi cũng chỉ hơi chông gai một tí. Nhưng bù lại bạn sẽ học cách làm chủ bản thân. Bạn có thể bỏ cuộc bất kì lúc nào nhưng sau những lần đó chỉ làm bạn quyết tâm hơn. Nếu vấp ngã hãy tự biết cách đứng dậy.

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

Xem thêm:

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

Phân tích xu hướng Nhân sự 2024, chiến lược nào là phù hợp?

Phân tích xu hướng Nhân sự 2024, chiến lược nào là phù hợp?

Bài viết được sự cho phép bởi tác giả Bùi Đoàn Chung

Cuối năm là thời điểm các công ty đưa ra các dự báo về các xu hướng hay những việc cần ưu tiên, tập trung trong nhân sự nói chung và các ngành khác nói riêng. Đáng chú ý, một số công ty đưa ra những báo cáo giá trị trên cơ sở khảo sát và nghiên cứu kỹ lưỡng từ khách hàng trong nhiều năm.

Với lịch sử gần 100 năm của ngành Nhân sự toàn cầu thì đó là những việc có thể xảy ra, thậm chí xảy ra thường xuyên. Ngày 26/9/2023, SHRM (hiệp hội Nhân sự Hoa Kỳ) kỉ niệm 75 năm thành lập. Hay thuật ngữ HRBP (Human Resources Business Partner) cũng đã được xuất hiện từ những năm 1997 (tương đương với 26 năm). Từ đó cho thấy rằng, so với thế giới, lịch sử ngành Nhân sự Việt Nam vẫn còn rất non trẻ và cần phải có thời gian để tiếp nhận, chuyển hoá và phát triển sao cho phù hợp với đặc điểm tình hình văn hoá, lịch sử, kinh tế và bối cảnh Việt Nam.

Bước sang năm 2024, tình hình kinh tế vẫn đang có nhiều nguy cơ tiềm ẩn và những vấn đề chưa được tháo gỡ. Các vấn đề về Nhân sự cũng đã và đang được bàn luận với các HR Trend, TA Trend, L&D Trend… với rất nhiều báo cáo và rất nhiều nguồn tham khảo. Nhưng điều cơ bản nhất mà mọi người có thể thấy là những việc này thường sẽ có vòng lặp lại (hình bên dưới là tổng hợp các HR ưu tiên 2021 từ nhiều nguồn khác nhau).

xu hướng nhân sự 2024
2021 HR PRIORITIES: A SUMMARIZED VIEW OF NINE SOURCES | BRIAN HEGER

Ở mục 5, Chung sẽ phân tích các báo cáo của Gartner từ 2021-2024 để mọi người có thể thấy rõ hơn những ưu tiên mà HR cần tập trung đối với tổ chức.

Do vậy, khi “đu trend” về Nhân sự có thể cần:

1. Am hiểu bản chất của các hoạt động Nhân sự tại Công ty để áp dụng cho đủ, đúng và quan trọng nhất là phù hợp (nguồn lực, thời gian, chi phí…).

Đôi khi, không phải cứ chạy theo cái mới, cái tiên tiến là tốt nhất bởi nó chỉ là hiện tượng, là sự nhất thời… không phải là các hoạt động để có thể tịnh tiến và thay đổi hoàn toàn bản chất công việc, lịch sử của ngành. Nhiều nơi đưa ra gần 20 xu hướng nhưng không rõ cái nào là quan trọng, là ưu tiên và buộc người đọc phải thật sự am hiểu mới có thể tận dụng được. Và cũng chỉ nên theo dõi các báo cáo từ các tổ chức lớn, uy tín.

2. Biết được đâu là các ưu tiên thật sự, các vấn đề cần cải thiện và cần bắt buộc phải thay đổi.

Ví dụ là công nghệ AI, là công nghệ giúp giải phóng thời gian làm việc hành chính của con người, là số liệu, là tư duy phân tích và sự sáng tạo… Như Bill Gates đã nói, trong khoảng 5 năm nữa, mỗi người đều sẽ có trợ lý AI hoặc theo như báo cáo của Diễn đàn kinh tế thế giới, đến năm 2027, 43% công việc của con người sẽ do máy móc đảm nhận. Hoặc tỷ lệ robot trên 10,000 công nhân của Trung Quốc hiện là 322, trong khi con số này ở Mỹ là 274. Và Hàn Quốc hiện đứng đứng đầu với 1.000 robot.

Hoặc các ưu tiên về Nhân sự không còn là tuyển người ồ ạt nữa mà là giữ chân, nâng cao hiệu quả nguồn lực, phát triển bền vững năng lực tổ chức… trên nền tảng văn hoá doanh nghiệp, thiết lập và duy trì mối quan hệ hiệu quả với các stakeholder (bên liên quan) trong và ngoài doanh nghiệp.

  6 Xu hướng quản trị nhân sự năm 2024

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

3. Các báo cáo thường là xu hướng quốc tế, xảy ra ngoài lãnh thổ Việt Nam.

Như đã phân tích ở trên, bối cảnh kinh tế Việt Nam, điều kiện sản xuất, phương thức sản xuất và cơ sở hạ tầng kỹ thuật, kể cả là kiến trúc thượng tầng (tư duy kinh tế thị trường…) còn nhiều hạn chế. Chưa kể đứng với các góc độ văn hoá còn nhiều vấn đề cần nghiên cứu kỹ lưỡng để áp dụng. Không phải cứ thẳng như “Tây” là được mà văn hoá Á Đông đề cao tình cảm giữa người với người. Không phải cứ áp dụng là được ngay mà cần rất nhiều thời gian. Cho nên, không phải cái gì mới là đưa vào, là đu trend rồi bảo là tốt thì không đúng. Cần phải hết sức thực tế, am hiểu doanh nghiệp, các nguồn lực và hoạt động Nhân sự trọng yếu. Giống như slogan (khẩu hiệu) của HSBC: Ngân hàng toàn cầu, am hiểu địa phương.

4. Cần theo dõi và đánh giá kỹ các báo cáo qua nhiều năm thì mới chính xác.

Nên tập trung nghiên cứu kỹ các báo cáo của một vài công ty lớn hoặc các tổ chức lớn rồi sau đó đối chiếu với tổ chức của mình để xem nó có thật sự đang xảy ra, hay chỉ là một hiện tượng nhất thời. Các ảnh hưởng về kinh tế thế giới đối với Việt Nam thường phải mất 3-6 tháng mới có các tác động rõ rệt, mạnh mẽ.

Còn trong Nhân sự, phần lớn được thừa hưởng từ các công ty toàn cầu, có vốn đầu tư nước ngoài tại Việt Nam để áp dụng vào Local (địa phương) sao cho phù hợp. Nhờ đó họ luôn đi trước, đón đầu và là người có thể tạo ra xu hướng về phúc lợi, công nghệ… như trong các cuộc khảo sát lương hàng năm của Mercer và Talentnet có nêu. Còn các công ty thuần Việt Nam thì những điều này cần nên tính toán cụ thể cũng như áp dụng sao cho phù hợp chứ không phải máy móc.

Xem lại Báo cáo thị trường IT Việt Nam năm 2023 do TopDev phát hành

5. Để hiểu rõ hơn điều này, chúng ta hãy cùng phân tích các ưu tiên về Nhân sự qua các năm của Gartner.

Nguyên tắc của sự phân tích này đều dựa trên bối cảnh và tình hình thực tế cũng như kiểm nghiệm lại những thay đổi trong suốt 4 năm vừa qua để có thể hiểu được kỹ hơn, sâu sắc hơn về những dự báo đó. Các báo cáo này đều chỉ ra được số lượng người tham gia khảo sát (mẫu = n) để đảm bảo độ tin cậy cũng như uy tín về kết quả phản hồi.

xu hướng nhân sự 2024
Top 5 Priorities for HR Leader 2021 – Gartner

Năm 2021 là tâm điểm của đại dịch Covid nên cần các ưu tiên liên quan đến sự thay đổi về năng lực, kỹ năng quan trọng nhất (68%) nhằm thích ứng với những sự thay đổi trong thời đại VUCA thời điểm đó. Các tổ chức cũng cần có sự thay đổi và thích ứng nhanh với những biến động từ bên ngoài nên cần ưu tiên (46%) về thiết kế lại tổ chức và quản lý sự thay đổi. Bên cạnh đó, đội ngũ quản trị và năng lực điều hành vẫn cần được ưu tiên (chiếm tới 44%).

Song song với nó là một hình thức chuyển đổi mô hình làm việc từ On-site (tại chỗ) qua hình thức làm việc Remote (từ xa) hoặc kết hợp (Hybrid) nhằm ứng phó và thích nghi với đại dịch (phần lớn là do không thể đi lại được…). Lúc này, trải nghiệm nhân viên cũng là điều cần ưu tiên vì cách thức làm việc thay đổi, tương tác trong công việc thay đổi, onboarding cũng được thực hiện từ xa… Ưu tiên này năm 2022 không còn trong top 5, nhưng đến 2023 thì nó quay trở lại trong Top 3.

xu hướng nhân sự 2024
Top 5 Priorities for HR Leader 2022 – Gartner

Bước sang 2022, các ưu tiên không có nhiều biến động với Top 3 vẫn là những điều đã được dự báo trước từ 2021. Chỉ có đa dạng, công bằng và hội nhập (DEI) được đưa vào ưu tiên thứ 5 vì lúc này các tổ chức bắt đầu nhận thức rõ ràng hơn về sự cần thiết phải cải thiện DEI và xem đó là một phần quan trọng của chiến lược tổng thể trước các yêu cầu về nguồn lực làm việc và sự thâm nhập sâu và rộng của lực lượng lao động mới – Gen Z.

xu hướng nhân sự 2024
Top 5 Priorities for HR Leader 2023 – Gartner

Vào năm ngoái, (2023), hiệu quả quản lý và lãnh đạo được coi trọng hơn cả (60%) trong khi thiết kế tổ chức và quản trị sự thay đổi vẫn hiện diện và vẫn là các ưu tiên quan trọng. Từ đó cho thấy, xác ưu tiên không thể dễ thay đổi trong một thời gian ngắn mà chẳng qua là đưa lên hoặc đặt lên trên trong từng thời điểm là nhiều hay ít.

Trước làn sóng Great Resignation (từ chức hàng loạt) năm 2021 và 2022 thì doanh nghiệp buộc phải tuyển dụng thay thế hoặc một phần là khó khăn chung của kinh tế toàn cầu nên sẽ dẫn đến các nhu cầu thay thế nguồn lao động hiện tại. Từ đó, ưu tiên tuyển dụng (Recruiting) đã trở thành ưu tiên thứ 4 với 46%. Và thực tế, năm 2023 cũng là năm tuyển nhiều nhưng không mấy hiệu quả vì có sự chênh lệnh về các yêu cầu, khả năng đáp ứng của cả hai bên.

Như đã dự đoán, 2024 là thời điểm còn nhiều khó khăn về kinh tế vĩ mô, các điều kiện khác còn chưa rõ tín hiệu. Các chỉ số kinh tế Mỹ, toàn cầu chưa có nhiều dấu hiệu tích cực và lạc quan. Do vậy, các dự báo cũng cần thận trọng và cân nhắc kỹ trong bối cảnh tiềm ẩn nhiều rủi ro, khó đoán và bất ngờ.

xu hướng nhân sự 2024
Top 5 Priorities for HR Leader 2024 – Gartner

Vì thế, Gartner họ tiếp tục đưa đội ngũ quản lý, lãnh đạo vào ưu tiên số một (75%), liên quan đến vai trò, trách nhiệm mới. Cũng trong năm này, Văn hoá tổ chức, công nghệ HR và việc quản trị sự nghiệp nhân viên cùng với sự linh hoạt nội bộ là những ưu tiên bên cạnh việc quản trị sự thay đổi mà năm nào cũng có.

xu hướng nhân sự 2024
Top 5 Priorities for HR Leader 2024 – Gartner

Từ đó chúng ta có thể thấy và kết luận rằng, bản chất HR không thay đổi nhiều mà chỉ là sự ưu tiên nhất thời trong từng thời điểm. Những việc thuộc về bản chất sẽ không thay đổi quá nhiều và nó vẫn luôn hiện diện đều đặn. Vì thế, việc đu trend cần có nền tảng và sự tìm hiểu kỹ lưỡng để áp dụng.

6. Các HR Việt Nam sẽ cần ứng phó như thế nào trong năm 2024

Kinh tế Vĩ mô và các điều kiện kinh tế, chính trị, văn hoá đang rất khó đoán. Chắc chắn tình hình không thể nào ấm lên ngay được và dù những người nào lạc quan đến đâu cũng cần cẩn trọng và không ngừng lắng nghe thị trường, quan sát và phân tích thông tin đa chiều để nhanh chóng thích hứng với những thay đổi sắp tới.

Việc của HR đôi khi không phải là làm những gì đó phải thật mới, thật khác biệt mới thành công mà là linh hoạt, uyển chuyển để giữ những gì đang tốt, những gì cần cải thiện hoặc có thể làm tốt hơn thì mới tập trung vào để làm. Mỗi năm, nhiệm vụ của Nhân sự chỉ là thay đổi hoặc thực hiện một số dự án lớn, chiến lược trọng tâm chứ không phải là làm quá nhiều hay điều gì cũng muốn làm.

Đây là một số gợi ý (theo cá nhân) về các hoạt động ưu tiên của Nhân sự Việt Nam trong 2024:

  1. Nâng cao năng lực và hiệu quả điều hành hoạt động của đội ngũ quản lý và điều hành doanh nghiệp. Trong đó, đặc biệt cân ưu tiên đội ngũ quản lý cấp trung với nhiều năng lực và toàn diện hơn.
  2. Xây dựng văn hoá tổ chức và các chuẩn mực hành vi nhằm tăng cường sự hài lòng của khách hàng bên trong lẫn bên ngoài (Stakeholders).
  3. Ứng dụng công nghệ vào và thúc đẩy quá trình chuyển đổi số trong Công ty, HR.
  4. Xây dựng một không gian làm việc số tốt hơn (Digital Workspace) thay vì chì là trải nghiệm nhân viên.
  5. Cải thiện năng lực của bộ phận tuyển dụng, thu hút nhân tài nhằm tìm kiếm người phù hợp cho tổ chức.
  6. Xây dựng và quản trị nghề nghiệp của nhân viên trong tổ chức và duy trì đội ngũ. Ưu tiên trong việc giữ chân người tài nội bộ.
  7. DEI vẫn cần ưu tiên và nhìn nhận dưới góc độ tích cực hơn
  8. L&D vẫn là những vấn đề cần ưu tiên về trong việc nâng cao năng lực bền vững của tổ chức
  9. Doanh nghiệp và Marketing đang ưu tiên các hoạt động về Phát triển bền vững (ESG) và trách nhiệm xã hội. Cho nên, bộ phận Nhân sự cũng nên nhạy bén và cùng ưu tiên thực hiện các hoạt động này.
  10. Nâng cao năng lực đội ngũ làm Nhân sự trong doanh nghiệp về khả năng lãnh đạo, định hướng và dẫn dắt sự thay đổi trong tổ chức (Chuyển đổi số, tái cấu trúc, văn hoá…).

Chúc mọi người tuần mới nhiều niềm vui và làm việc hiệu quả.

(Bài viết được tổng hợp thông tin từ nhiều nguồn: Vnexpress, Gartner, các thông tin về kinh tế, chính trị… khác của Việt Nam).

Trân trọng,

Bài viết gốc được đăng tải tại LinkedIn Bùi Đoàn Chung

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

Đo lường thời gian thực hiện hàm trong Javascript một cách thanh lịch

Đo lường thời gian thực hiện hàm trong Javascript

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

Vấn đề

Trong quá trình phát triển ứng dụng hoặc đang vận hành nó trong môi trường production sẽ có lúc phát sinh ra nhiều vấn đề mà chúng ta không lường trước được. Khi ứng dụng được tung ra thị trường, chắc chắn lượng người dùng sẽ nhiều lên từng ngày, từ đó tạo ra sự đa dạng về hành vi lẫn dữ liệu người dùng thu thập được. Chúng kết hợp với nhau tạo ra nhiều trường hợp phát sinh lỗi mà quá trình kiểm thử trước đó không hề phát hiện ra.

Một trong số đó có thể kể đến như là tốc độ phản hồi API bỗng trở nên chậm chạp mặc dù lượng người sử dụng là không nhiều. Khi kiểm tra lại tính năng gây ra tình trạng đó, có vẻ bạn phát hiện ra hoặc đang nghi ngờ một hàm nào đó chiếm lượng thời gian xử lý lớn. Để chắc chắn là mình đúng thì tất nhiên phải đo được xem cụ thể là hàm đó tốn bao nhiêu thời gian để xử lý.

Có nhiều cách để biết hàm nào đang gây chậm hệ thống. Các ứng dụng APM với khả năng kiểm soát và chuẩn đoán ứng dụng của bạn rất tốt để kịp thời cảnh báo vấn đề. Một vài dịch vụ APM có tính năng thu thập hoặc cảnh báo theo thời gian thực nếu như chúng phát hiện ra một hàm nào đó đang mất quá nhiều thời gian để thực hiện, hoặc thời gian phản hồi của API là quá lâu. Nhưng đổi lại, giá thành của chúng không hề rẻ, hoặc nếu có miễn phí thì nhiều hạn chế sẽ phát sinh. Vì lẽ đó không phải ai cũng có điều kiện sử dụng APM, đó là lúc bạn cần đến một cách “xôi thịt” hơn nhưng lại hoàn toàn miễn phí mà ai cũng có thể tiếp cận được.

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

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

Đo lường thời gian thực hiện hàm trong Javascript

Date.now()console.time()performance.now()process.hrtime()… là các hàm thường hay được sử dụng để đo khoảng thời gian mà hàm thực hiện. Về cơ bản, chỉ cần kẹp giữa hàm cần đo bằng chúng thì sẽ tính được thời gian thực thi.

Ví dụ sau dử dụng Date để tính thời gian thực thi bằng cách trừ hai khoảng thời gian trước và sau khi hàm được chạy.

const start = Date.now();

await functionToBeMeasured();

const end = Date.now();
console.log(`Execution time: ${end - start} ms`);

Ngoài ra, đơn giản hơn thì dùng console.time:

console.time('executionFunctionToBeMeasured');

await functionToBeMeasured();

console.timeEnd('executionFunctionToBeMeasured');

console.time không mang lại độ chính xác cao. Nếu muốn độ chính xác theo phần nghìn giây, hãy sử dụng hàm mạnh mẽ hơn với performance.now() hoặc process.hrtime() nếu sử dụng Node.js.

const start = performance.now();

await functionToBeMeasured();

const end = performance.now();
console.log(`Execution time: ${end - start} ms`);

Sau khi biết cách đo thời gian, một vấn đề khác nảy sinh đó chính là cần phải đặt hàm cần đo kẹp giữa hai hàm tính thời gian. Điều này gây ra sự xáo trộn mã trong dự án của bạn, phải sửa nhiều hơn, mã trở nên cồng kềnh hơn và khó kiểm soát.

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

Ý tưởng lúc này là viết một hàm để gói gọn tính năng đo thời gian thực thi. Đầu vào là một hàm cần tính còn đầu ra là kết quả của hàm đó cùng với thời gian thực thi. Một hàm gì đó trông giống như dưới đây:

calcExecuteTime(functionToBeMeasured);

functionToBeMeasured đôi khi là hàm có cả tham số, vì thế hãy sửa lại một chút.

calcExecuteTime(() => functionToBeMeasured(arg1, arg2...));

Nếu trong functionToBeMeasured có sử dụng this, hãy thêm một tham số context để nhận this từ nơi gọi.

calcExecuteTime(context, () => functionToBeMeasured(arg1, arg2...));

Cuối cùng, nên thêm một tham số name để xác định được cuộc gọi hàm từ đâu.

calcExecuteTime(name, context, () => functionToBeMeasured(arg1, arg2...));

Hàm calcExecuteTime có thể giống như sau:

const calcExecuteTime = async (name, context, fn) => {
  const start = process.hrtime();
  const result = await fn.call(context);
  const stop = process.hrtime(start);
  const executeTime = (stop[0] * 1e9 + stop[1]) / 1e9;
  console.log(`${name} execution time: ${executeTime}s`);
  return result;
};

Bây giờ hãy thử gọi hàm xem:

calcExecuteTime("Execute ToBeMeasured", this, () => functionToBeMeasured(arg1, arg2...));
// Execute ToBeMeasured execution time: 0.000178s

Bạn cũng có thể sửa lại hàm tùy vào mục đích, ví dụ thay vì console.log thì hãy logging lại thời gian thực hiện hàm vào đâu đó. Hoặc nâng cấp hàm lên ví dụ như thêm một cờ bật/tắt tính năng tính thời gian.

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

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

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