<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tommy</title>
    <description>The latest articles on DEV Community by Tommy (@phamtuanchip).</description>
    <link>https://dev.to/phamtuanchip</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F617038%2F1c5b94ee-86a3-4e28-b21e-ee58c0ef13b0.jpeg</url>
      <title>DEV Community: Tommy</title>
      <link>https://dev.to/phamtuanchip</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/phamtuanchip"/>
    <language>en</language>
    <item>
      <title>Tự động hóa công việc với Claude: Cloud Environment và Routines</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Sun, 15 Nov 2026 14:56:02 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/tu-dong-hoa-cong-viec-voi-claude-cloud-environment-va-routines-13p0</link>
      <guid>https://dev.to/phamtuanchip/tu-dong-hoa-cong-viec-voi-claude-cloud-environment-va-routines-13p0</guid>
      <description>&lt;p&gt;&lt;em&gt;Hướng dẫn từng bước để Claude tự làm việc trên cloud theo lịch, theo lệnh gọi API hoặc theo sự kiện GitHub, kể cả khi bạn đã gập laptop.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao mình viết bài này
&lt;/h2&gt;

&lt;p&gt;Mỗi sáng mình từng mở terminal, gõ cùng một prompt nhờ Claude Code review các PR mới, tóm tắt issue và nhắn lên Slack. Việc lặp lại đó tốn 10–15 phút mỗi ngày, và hôm nào mình quên thì cả team thiếu thông tin.&lt;/p&gt;

&lt;p&gt;Giải pháp là &lt;strong&gt;routines&lt;/strong&gt; của Claude Code: lưu prompt một lần, gắn trigger, và để Claude tự chạy trên hạ tầng cloud của Anthropic. Máy của bạn không cần bật.&lt;/p&gt;

&lt;p&gt;Sau bài này bạn sẽ biết cách:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Thiết lập một &lt;strong&gt;cloud environment&lt;/strong&gt; (mạng, biến môi trường, setup script).&lt;/li&gt;
&lt;li&gt;Tạo routine đầu tiên trên web.&lt;/li&gt;
&lt;li&gt;Gắn ba loại trigger: &lt;strong&gt;lịch&lt;/strong&gt;, &lt;strong&gt;API&lt;/strong&gt; và &lt;strong&gt;sự kiện GitHub&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Theo dõi kết quả và tránh những lỗi hay gặp.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Lưu ý: Routines đang ở giai đoạn &lt;em&gt;research preview&lt;/em&gt;, nên giao diện, giới hạn và API có thể thay đổi. Bài viết dựa trên tài liệu chính thức tại thời điểm tháng 11/2026.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Ba khái niệm cần nắm trước
&lt;/h2&gt;

&lt;p&gt;Một routine là một phiên Claude Code chạy trên cloud, bên trong một cloud environment, được khởi động bởi trigger. Hiểu ba lớp này thì mọi bước sau sẽ rất rõ ràng.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Khái niệm&lt;/th&gt;
&lt;th&gt;Nó là gì&lt;/th&gt;
&lt;th&gt;Quản lý ở đâu&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloud session&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Một phiên Claude Code chạy trên máy ảo (VM) do Anthropic quản lý. Repo GitHub được clone vào VM, Claude tự chạy lệnh, test, tạo branch và PR.&lt;/td&gt;
&lt;td&gt;claude.ai/code, app Desktop, app mobile, hoặc &lt;code&gt;claude --cloud&lt;/code&gt; từ terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloud environment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cấu hình được lưu lại cho VM: mức truy cập mạng, biến môi trường, setup script. Một environment dùng chung cho mọi nơi bạn mở cloud session, kể cả routines.&lt;/td&gt;
&lt;td&gt;Bộ chọn environment dưới ô nhập tin nhắn tại claude.ai/code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Routine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cấu hình Claude Code đã lưu: prompt, một hoặc nhiều repo, environment, connectors và trigger. Mỗi lần trigger kích hoạt sẽ tạo một cloud session mới.&lt;/td&gt;
&lt;td&gt;claude.ai/code/routines, app Desktop, hoặc lệnh &lt;code&gt;/schedule&lt;/code&gt; trong CLI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Routine có ba loại trigger, và một routine có thể gắn nhiều trigger cùng lúc:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Schedule&lt;/strong&gt;: chạy theo lịch (hàng giờ, hàng ngày, ngày trong tuần, hàng tuần) hoặc chạy một lần vào thời điểm cụ thể.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API&lt;/strong&gt;: gọi HTTP POST tới endpoint riêng của routine, kèm bearer token.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub event&lt;/strong&gt;: tự chạy khi có pull request hoặc release trên repo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ví dụ: một routine review PR có thể chạy mỗi đêm, được gọi từ script deploy, và đồng thời phản ứng với mọi PR mới.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Routines vs. các cách lên lịch khác.&lt;/strong&gt; Claude Code còn có &lt;code&gt;/loop&lt;/code&gt; (chỉ sống trong phiên CLI đang mở) và Desktop scheduled tasks (chạy trên máy bạn, cần máy bật). Routines là lựa chọn duy nhất chạy hoàn toàn trên cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chuẩn bị
&lt;/h2&gt;

&lt;p&gt;Bạn cần ba thứ: gói đăng ký phù hợp, quyền truy cập GitHub, và (tuỳ chọn) Claude Code CLI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gói đăng ký:&lt;/strong&gt; Routines có trên các gói Pro, Max, Team và Enterprise, với Claude Code on the web được bật. Với Team/Enterprise, Owner có thể tắt Routines trong &lt;em&gt;Admin settings &amp;gt; Claude Code&lt;/em&gt;. Tổ chức bật Zero Data Retention không dùng được cloud session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; có hai cách cấp quyền.

&lt;ul&gt;
&lt;li&gt;Trên web: vào &lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;claude.ai/code&lt;/a&gt;, làm theo bước onboarding và cài &lt;strong&gt;Claude GitHub App&lt;/strong&gt; cho repo. Nếu muốn dùng trigger GitHub thì bắt buộc phải cài App này.&lt;/li&gt;
&lt;li&gt;Từ terminal: nếu đã dùng GitHub CLI (&lt;code&gt;gh&lt;/code&gt;), chạy &lt;code&gt;/web-setup&lt;/code&gt; trong Claude Code. Lệnh này đồng bộ token &lt;code&gt;gh&lt;/code&gt; vào tài khoản Claude và tạo environment &lt;strong&gt;Default&lt;/strong&gt; nếu bạn chưa có.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI (tuỳ chọn):&lt;/strong&gt; để dùng &lt;code&gt;/schedule&lt;/code&gt;, bạn phải đăng nhập bằng tài khoản claude.ai qua &lt;code&gt;/login&lt;/code&gt;. Đăng nhập bằng API key của Console, Bedrock hay Vertex sẽ không thấy lệnh này.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Trong Claude Code CLI
/login
/web-setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Mẹo: &lt;code&gt;/web-setup&lt;/code&gt; chỉ cấp quyền clone repo. Nó &lt;strong&gt;không&lt;/strong&gt; cài Claude GitHub App và không bật webhook, nên trigger GitHub vẫn cần cài App riêng tại github.com/apps/claude.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: màn hình onboarding tại claude.ai/code, bước kết nối GitHub]&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 1: Thiết lập cloud environment
&lt;/h2&gt;

&lt;p&gt;Environment quyết định routine được truy cập những gì, nên hãy cấu hình nó trước khi tạo routine. Nếu chỉ cần cài package từ npm/PyPI và dùng connectors, environment &lt;strong&gt;Default&lt;/strong&gt; là đủ.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1. Mở bộ chọn environment
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Vào &lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;claude.ai/code&lt;/a&gt;, ở màn hình tạo phiên mới.&lt;/li&gt;
&lt;li&gt;Bấm nút đầu tiên trong hàng dưới ô nhập tin nhắn (nút hình đám mây hiển thị tên environment, ví dụ &lt;strong&gt;Default&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Chọn &lt;strong&gt;New environment&lt;/strong&gt; để tạo mới, hoặc rê chuột lên một environment trong mục &lt;strong&gt;Cloud&lt;/strong&gt; và bấm biểu tượng bánh răng để sửa.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: menu chọn environment với mục Cloud, Default được tick và nút New environment]&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2. Điền form
&lt;/h3&gt;

&lt;p&gt;Hộp thoại có bốn phần chính:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trường&lt;/th&gt;
&lt;th&gt;Ý nghĩa&lt;/th&gt;
&lt;th&gt;Gợi ý&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tên environment&lt;/td&gt;
&lt;td&gt;Đặt theo mục đích, ví dụ &lt;code&gt;routine-pr-review&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Network access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mức truy cập internet&lt;/td&gt;
&lt;td&gt;Giữ &lt;strong&gt;Trusted&lt;/strong&gt; trừ khi cần gọi domain riêng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Environment variables&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Biến dạng &lt;code&gt;.env&lt;/code&gt;, mỗi dòng &lt;code&gt;KEY=value&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Không để secret ở đây (xem mục 1.4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Setup script&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Script Bash chạy trước khi Claude khởi động&lt;/td&gt;
&lt;td&gt;Cài công cụ chưa có sẵn&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: hộp thoại New environment với 4 trường trên]&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1.3. Chọn mức truy cập mạng
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mức&lt;/th&gt;
&lt;th&gt;Kết nối ra ngoài&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;None&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Không có&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Trusted&lt;/strong&gt; (mặc định)&lt;/td&gt;
&lt;td&gt;Chỉ các domain trong allowlist: package registry, GitHub, SDK của cloud provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mọi domain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Danh sách domain của bạn, có thể kèm danh sách mặc định&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Với &lt;strong&gt;Custom&lt;/strong&gt;, nhập mỗi domain một dòng vào &lt;strong&gt;Allowed domains&lt;/strong&gt; và tick &lt;em&gt;Also include default list of common package managers&lt;/em&gt; để vẫn cài được package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;api.example.com
status.mycompany.vn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dù ở mức nào, GitHub và các MCP connector vẫn hoạt động, vì chúng đi qua đường riêng chứ không qua allowlist. Request tới domain bị chặn sẽ trả về &lt;code&gt;403&lt;/code&gt; với header &lt;code&gt;x-deny-reason: host_not_allowed&lt;/code&gt;, rất tiện để debug.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.4. Biến môi trường và secret
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NODE_ENV=development
LOG_LEVEL=debug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ai dùng được environment thì đọc được giá trị của biến. Với API key, hãy dùng &lt;strong&gt;network secret&lt;/strong&gt; (trước đây gọi là &lt;em&gt;API credentials&lt;/em&gt;): bạn khai báo key kèm các host áp dụng, và proxy của Anthropic tự gắn key vào request. Key không bao giờ nằm trong VM nên Claude dùng được mà không nhìn thấy.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.5. Setup script và cache
&lt;/h3&gt;

&lt;p&gt;VM chạy Ubuntu 24.04 với quyền root, cài sẵn Python, Node.js 20–22, Ruby, PHP, Java 21, Go, Rust, Docker, PostgreSQL 16, Redis 7 và các công cụ như &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;gh&lt;/code&gt;, &lt;code&gt;jq&lt;/code&gt;, &lt;code&gt;ripgrep&lt;/code&gt;. Cần thêm gì thì viết setup script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt install -y shellcheck
pip install --quiet pandas &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ba nguyên tắc khi viết script:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exit code phải bằng 0&lt;/strong&gt;, nếu không session sẽ không khởi động. Thêm &lt;code&gt;|| true&lt;/code&gt; cho lệnh không quan trọng.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chạy dưới khoảng 5 phút&lt;/strong&gt; để được cache. Khi được cache, Anthropic lưu snapshot filesystem và các phiên sau bỏ qua bước setup. Cache được xây lại khi bạn sửa script hoặc domain, hoặc sau khoảng 7 ngày.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Không dựa vào tiến trình nền&lt;/strong&gt;: snapshot chỉ giữ file trên đĩa, không giữ database hay &lt;code&gt;docker compose up&lt;/code&gt; đang chạy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mỗi VM có khoảng 4 vCPU, 16 GB RAM và 30 GB đĩa. Bấm &lt;strong&gt;Add environment&lt;/strong&gt; để lưu.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dùng CLI? Chạy &lt;code&gt;/remote-env&lt;/code&gt; để chọn environment mặc định cho các phiên bạn tạo bằng &lt;code&gt;claude --cloud&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Bước 2: Tạo routine đầu tiên trên web
&lt;/h2&gt;

&lt;p&gt;Ví dụ xuyên suốt bài: một routine tên &lt;strong&gt;Daily PR digest&lt;/strong&gt;, mỗi sáng ngày làm việc tổng hợp các PR đang mở và gửi lên Slack.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Vào &lt;a href="https://claude.ai/code/routines" rel="noopener noreferrer"&gt;claude.ai/code/routines&lt;/a&gt; và bấm &lt;strong&gt;New routine&lt;/strong&gt;. (Trên app Desktop: tab &lt;strong&gt;Code&lt;/strong&gt; → &lt;strong&gt;Routines&lt;/strong&gt; → &lt;strong&gt;New routine&lt;/strong&gt; → chọn &lt;strong&gt;Cloud&lt;/strong&gt;. Chọn &lt;strong&gt;Local&lt;/strong&gt; sẽ tạo task chạy trên máy bạn.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Đặt tên và viết prompt.&lt;/strong&gt; Đây là phần quan trọng nhất. Routine chạy tự động, không ai trả lời câu hỏi của Claude, nên prompt phải tự đủ và nói rõ thế nào là "xong". Ô prompt có bộ chọn model, dùng cho mọi lần chạy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chọn repository.&lt;/strong&gt; Mỗi lần chạy, repo được clone từ branch mặc định. Claude đẩy thay đổi lên các branch có tiền tố &lt;code&gt;claude/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chọn environment&lt;/strong&gt; đã tạo ở Bước 1 (hoặc &lt;strong&gt;Default&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chọn trigger&lt;/strong&gt; trong mục &lt;strong&gt;Select a trigger&lt;/strong&gt;: Schedule, GitHub event hoặc API. Có thể thêm nhiều trigger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rà soát Connectors&lt;/strong&gt; ở cuối form. Mặc định mọi connector bạn đã kết nối đều được bật. Hãy bỏ những cái không cần, vì trong lúc chạy Claude dùng mọi tool của connector, kể cả thao tác ghi, mà không hỏi.&lt;/li&gt;
&lt;li&gt;Bấm &lt;strong&gt;Create&lt;/strong&gt;, sau đó bấm &lt;strong&gt;Run now&lt;/strong&gt; trên trang chi tiết để chạy thử ngay.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: form New routine với các mục tên, prompt, repository, environment, Select a trigger và Connectors]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Prompt mẫu cho routine này:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bạn là trợ lý review cho repo này. Mỗi lần chạy:

1. Dùng `gh pr list --state open` để lấy các PR đang mở.
2. Với mỗi PR: tóm tắt thay đổi trong 1 câu, ghi số ngày đã mở,
   và đánh dấu "cần chú ý" nếu CI đang fail hoặc mở quá 3 ngày.
3. Gửi bản tổng hợp lên kênh Slack #dev-daily, PR cần chú ý lên đầu.
4. Không sửa code, không comment vào PR.

Hoàn thành khi tin nhắn đã được gửi. Nếu không có PR nào,
gửi "Không có PR đang mở" thay vì bỏ qua.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chú ý bước 4 và câu cuối: nói rõ điều &lt;strong&gt;không&lt;/strong&gt; được làm và cách xử lý trường hợp rỗng giúp routine ổn định hơn nhiều.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 3: Chạy theo lịch (Schedule trigger)
&lt;/h2&gt;

&lt;p&gt;Trong &lt;strong&gt;Select a trigger&lt;/strong&gt;, chọn &lt;strong&gt;Schedule&lt;/strong&gt; và một tần suất có sẵn: hourly, daily, weekdays hoặc weekly. Với Daily PR digest, chọn &lt;strong&gt;weekdays&lt;/strong&gt; lúc 8:30.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: tab Schedule trong Select a trigger, chọn Weekdays và giờ chạy]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Một vài điểm cần biết:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Múi giờ:&lt;/strong&gt; bạn nhập giờ theo múi giờ địa phương (ví dụ giờ Việt Nam), hệ thống tự quy đổi. Routine chạy đúng giờ đó dù server đặt ở đâu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Độ trễ (stagger):&lt;/strong&gt; lần chạy có thể bắt đầu trễ vài phút so với giờ đặt. Độ lệch cố định cho mỗi routine, nên đừng dùng routine cho việc cần chính xác từng phút.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Khoảng cách tối thiểu là 1 giờ.&lt;/strong&gt; Biểu thức cron chạy dày hơn sẽ bị từ chối.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cron tùy chỉnh&lt;/strong&gt; (ví dụ mỗi 2 giờ, hoặc ngày 1 hàng tháng): chọn preset gần nhất trên web, rồi chạy &lt;code&gt;/schedule update&lt;/code&gt; trong CLI để đặt biểu thức cron cụ thể.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Chạy một lần (one-off)
&lt;/h3&gt;

&lt;p&gt;Muốn Claude làm một việc vào thời điểm cụ thể trong tương lai? Dùng one-off schedule. Sau khi chạy, routine tự tắt và được đánh dấu &lt;strong&gt;Ran&lt;/strong&gt;. Lần chạy one-off không tính vào giới hạn số lần chạy routine mỗi ngày.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tạo routine từ CLI bằng &lt;code&gt;/schedule&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Nếu bạn sống trong terminal, chạy &lt;code&gt;/schedule&lt;/code&gt; (alias &lt;code&gt;/routines&lt;/code&gt;) trong một phiên Claude Code. Claude sẽ hỏi lần lượt về lịch, repo và prompt, giống form trên web, rồi lưu vào cùng tài khoản. Bạn cũng có thể mô tả luôn:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/schedule daily PR review at 9am
/schedule tomorrow at 9am, summarize yesterday's merged PRs
/schedule in 2 weeks, open a cleanup PR that removes the feature flag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Với các lệnh one-off, Claude quy đổi cụm từ thời gian thành mốc cụ thể và xác nhận với bạn trước khi lưu. Các lệnh quản lý khác:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Lệnh&lt;/th&gt;
&lt;th&gt;Tác dụng&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/schedule list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Liệt kê mọi routine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/schedule update&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sửa routine (kể cả đặt cron)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/schedule run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chạy ngay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/schedule why did my nightly review do nothing this morning?&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hỏi lịch sử chạy, Claude đọc log và giải thích&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;CLI tạo được trigger Schedule và (từ v2.1.225) trigger GitHub. Trigger API và token chỉ tạo được trên web.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Bước 4: Kích hoạt routine qua API
&lt;/h2&gt;

&lt;p&gt;API trigger cho mỗi routine một endpoint HTTP riêng. Bất cứ hệ thống nào gửi được HTTP request đều có thể đánh thức Claude: công cụ cảnh báo, pipeline CI/CD, n8n, Zapier hay một script cron của bạn.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1. Tạo URL và token
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Mở routine tại &lt;a href="https://claude.ai/code/routines" rel="noopener noreferrer"&gt;claude.ai/code/routines&lt;/a&gt;, bấm biểu tượng bút chì để vào &lt;strong&gt;Edit routine&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Cuộn tới &lt;strong&gt;Select a trigger&lt;/strong&gt;, bấm &lt;strong&gt;Add another trigger&lt;/strong&gt; và chọn &lt;strong&gt;API&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Hộp thoại hiện URL của routine và một lệnh &lt;code&gt;curl&lt;/code&gt; mẫu. Copy URL, bấm &lt;strong&gt;Generate token&lt;/strong&gt; và copy token &lt;strong&gt;ngay lập tức&lt;/strong&gt;: token chỉ hiển thị một lần.&lt;/li&gt;
&lt;li&gt;Muốn đổi hoặc thu hồi token, quay lại hộp thoại này và bấm &lt;strong&gt;Regenerate&lt;/strong&gt; hoặc &lt;strong&gt;Revoke&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: hộp thoại API trigger với URL, lệnh curl mẫu và nút Generate token]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Nếu tạo routine mới và chọn API ngay từ đầu, URL và token chỉ xuất hiện sau khi lưu, vì chúng phụ thuộc vào ID của routine.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2. Gọi endpoint
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \
  -H &lt;span class="s2"&gt;"Authorization: Bearer sk-ant-oat01-xxxxx"&lt;/span&gt; \
  -H &lt;span class="s2"&gt;"anthropic-beta: experimental-cc-routine-2026-04-01"&lt;/span&gt; \
  -H &lt;span class="s2"&gt;"anthropic-version: 2023-06-01"&lt;/span&gt; \
  -H &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; \
  -d &lt;span class="s1"&gt;'{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thay URL và token bằng giá trị của bạn, nếu không sẽ nhận lỗi &lt;code&gt;401&lt;/code&gt;. Kết quả trả về là link tới phiên vừa được tạo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"routine_fire"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"claude_code_session_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"session_01HJKLMNOPQRSTUVWXYZ"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"claude_code_session_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mở &lt;code&gt;claude_code_session_url&lt;/code&gt; để xem Claude làm việc theo thời gian thực.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3. Truyền dữ liệu vào routine
&lt;/h3&gt;

&lt;p&gt;Trường &lt;code&gt;text&lt;/code&gt; trong body là nơi bạn đưa ngữ cảnh riêng cho lần chạy, ví dụ nội dung cảnh báo. Có hai điều nhiều người bỏ lỡ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;text&lt;/code&gt; là chuỗi tự do, không được parse. Gửi JSON vào đây thì routine nhận nguyên chuỗi JSON đó.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;text&lt;/code&gt; được bọc trong khối &lt;code&gt;&amp;lt;routine-fire-payload&amp;gt;&lt;/code&gt; và bị coi là &lt;strong&gt;dữ liệu không tin cậy&lt;/strong&gt;. Claude sẽ không làm theo chỉ dẫn bên trong, trừ khi prompt đã lưu của routine cho phép. Cơ chế này bảo vệ bạn khi token bị lộ.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vì vậy, prompt của routine cần nhắc tới payload một cách rõ ràng:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Điều tra cảnh báo được mô tả trong khối routine-fire-payload.
Tìm commit gần đây liên quan, và mở một draft PR sửa lỗi
kèm link tới cảnh báo gốc.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Endpoint &lt;code&gt;/fire&lt;/code&gt; đang dùng beta header &lt;code&gt;experimental-cc-routine-2026-04-01&lt;/code&gt; và chỉ dành cho người dùng claude.ai. Khi có thay đổi phá vỡ tương thích, Anthropic ra header mới có ngày, và hai phiên bản trước đó vẫn hoạt động để bạn kịp chuyển.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Bước 5: Chạy theo sự kiện GitHub
&lt;/h2&gt;

&lt;p&gt;GitHub trigger tạo một phiên mới mỗi khi có sự kiện khớp trên repo. Mỗi sự kiện là một phiên độc lập: hai lần cập nhật PR sẽ sinh ra hai phiên.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Điều kiện:&lt;/strong&gt; repo phải cài Claude GitHub App. Giao diện web sẽ nhắc bạn cài nếu thiếu.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mở routine, bấm bút chì để vào &lt;strong&gt;Edit routine&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tại &lt;strong&gt;Select a trigger&lt;/strong&gt;, bấm &lt;strong&gt;Add another trigger&lt;/strong&gt; → &lt;strong&gt;GitHub event&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Chọn repo, chọn sự kiện và thêm bộ lọc nếu cần, rồi lưu.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: cấu hình GitHub event với repo, sự kiện pull_request.opened và bộ lọc Is draft = false]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hai nhóm sự kiện được hỗ trợ. Bạn có thể chọn một hành động cụ thể như &lt;code&gt;pull_request.opened&lt;/code&gt; hoặc cả nhóm:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Sự kiện&lt;/th&gt;
&lt;th&gt;Kích hoạt khi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pull request&lt;/td&gt;
&lt;td&gt;PR được mở, đóng, gán người, gắn nhãn, đồng bộ commit…&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release&lt;/td&gt;
&lt;td&gt;Release được tạo, publish, sửa hoặc xóa&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Bộ lọc PR gồm: Author, Title, Body, Base branch, Head branch, Labels, Is draft, Is merged. Toán tử: equals, contains, starts with, is one of, is not one of, matches regex. Mọi điều kiện phải cùng khớp.&lt;/p&gt;

&lt;p&gt;Vài cách kết hợp hay dùng:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chỉ review PR đã sẵn sàng:&lt;/strong&gt; Is draft = &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backport theo nhãn:&lt;/strong&gt; Labels chứa &lt;code&gt;needs-backport&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review kỹ module auth:&lt;/strong&gt; Base branch = &lt;code&gt;main&lt;/code&gt;, Head branch contains &lt;code&gt;auth-provider&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Bẫy hay gặp: &lt;code&gt;matches regex&lt;/code&gt; so khớp &lt;strong&gt;toàn bộ&lt;/strong&gt; giá trị. Muốn bắt tiêu đề có chữ &lt;code&gt;hotfix&lt;/code&gt;, hãy viết &lt;code&gt;.*hotfix.*&lt;/code&gt;, hoặc dùng &lt;code&gt;contains&lt;/code&gt; cho đơn giản.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Từ CLI (v2.1.225 trở lên), sau khi đã cài App, bạn có thể gắn trigger bằng câu lệnh tự nhiên:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/schedule add a GitHub trigger to my nightly review for pull requests opened in acme/webapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trong giai đoạn preview, webhook GitHub có giới hạn theo giờ cho từng routine và từng tài khoản. Sự kiện vượt giới hạn sẽ bị bỏ qua cho đến khi sang khung giờ mới.&lt;/p&gt;

&lt;h2&gt;
  
  
  Theo dõi và quản lý các lần chạy
&lt;/h2&gt;

&lt;p&gt;Bấm vào routine trong danh sách để mở trang chi tiết. Đây là nơi bạn thấy repo, connectors, prompt, lịch, token API, trigger GitHub và lịch sử các lần chạy.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[Ảnh chụp màn hình: trang chi tiết routine với nút Run now, mục Repeats và danh sách các lần chạy]&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Thao tác&lt;/th&gt;
&lt;th&gt;Cách làm&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chạy ngay&lt;/td&gt;
&lt;td&gt;Bấm &lt;strong&gt;Run now&lt;/strong&gt;, có thể kèm text giống trường &lt;code&gt;text&lt;/code&gt; của API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tạm dừng lịch&lt;/td&gt;
&lt;td&gt;Gạt công tắc trong mục &lt;strong&gt;Repeats&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sửa&lt;/td&gt;
&lt;td&gt;Bấm bút chì để đổi tên, prompt, repo, environment, connectors, trigger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Xóa&lt;/td&gt;
&lt;td&gt;Bấm biểu tượng thùng rác; các phiên đã chạy vẫn được giữ&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Mỗi lần chạy là một phiên đầy đủ. Mở ra để xem Claude đã làm gì, review thay đổi, tạo PR hoặc tiếp tục trò chuyện thủ công.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quan trọng: trạng thái &lt;strong&gt;xanh&lt;/strong&gt; chỉ có nghĩa là phiên khởi động và kết thúc không lỗi hạ tầng. Nó &lt;strong&gt;không&lt;/strong&gt; có nghĩa nhiệm vụ đã thành công. Request mạng bị chặn, connector thiếu tool hay lỗi nghiệp vụ chỉ hiện trong transcript. Những tuần đầu, hãy mở vài lần chạy để kiểm tra.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Bảo mật, giới hạn và kinh nghiệm thực tế
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Routine hành động với danh nghĩa của bạn
&lt;/h3&gt;

&lt;p&gt;Routine chạy hoàn toàn tự động: không có bộ chọn permission mode và không có hộp thoại xin phép trong lúc chạy. Routine thuộc tài khoản cá nhân, không chia sẻ với đồng nghiệp. Commit, PR, tin nhắn Slack hay ticket Linear do routine tạo đều mang tên bạn.&lt;/p&gt;

&lt;p&gt;Nên giới hạn phạm vi ở cả bốn chỗ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; chỉ thêm repo routine thực sự cần.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mạng:&lt;/strong&gt; ưu tiên Trusted hoặc Custom, chỉ dùng Full khi không còn cách khác.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connectors:&lt;/strong&gt; bỏ mọi connector không dùng tới.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secret:&lt;/strong&gt; dùng network secret thay vì biến môi trường; lưu token API trong secret store của hệ thống gọi nó.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Về branch: Claude luôn được đẩy lên branch &lt;code&gt;claude/...&lt;/code&gt;. Nếu prompt yêu cầu đẩy lên branch khác, lệnh push sẽ bị chặn khi branch đó được bảo vệ, đang có PR của người khác, hoặc chứa commit của người khác.&lt;/p&gt;

&lt;h3&gt;
  
  
  Giới hạn sử dụng
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Routine tiêu tốn usage của gói đăng ký giống phiên tương tác thông thường.&lt;/li&gt;
&lt;li&gt;Ngoài ra có giới hạn số lần chạy routine mỗi ngày cho mỗi tài khoản. Xem mức còn lại tại claude.ai/code/routines hoặc claude.ai/settings/usage.&lt;/li&gt;
&lt;li&gt;Khi chạm giới hạn, nếu đã bật usage credits thì routine tiếp tục chạy theo hình thức tính phí vượt mức. Nếu chưa, các lần chạy mới bị từ chối cho đến khi sang khung mới.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Các lỗi hay gặp
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Triệu chứng&lt;/th&gt;
&lt;th&gt;Nguyên nhân và cách xử lý&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Unknown command: /schedule&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Đang đăng nhập bằng API key, Bedrock/Vertex/Foundry, hoặc đang ở trong một phiên cloud. Gỡ &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;, chạy &lt;code&gt;/login&lt;/code&gt; với tài khoản claude.ai.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/schedule&lt;/code&gt; yêu cầu xác thực&lt;/td&gt;
&lt;td&gt;CLI chưa có phiên đăng nhập claude.ai. Chạy &lt;code&gt;/login&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Routines are disabled by your organization's policy"&lt;/td&gt;
&lt;td&gt;Owner đã tắt Routines trong Admin settings. Nhờ Owner bật lại.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lỗi &lt;code&gt;403&lt;/code&gt;, &lt;code&gt;host_not_allowed&lt;/code&gt; trong transcript&lt;/td&gt;
&lt;td&gt;Domain không nằm trong allowlist. Chuyển mạng sang Custom và thêm domain.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Routine bỏ qua nội dung gửi qua API&lt;/td&gt;
&lt;td&gt;Prompt chưa nhắc tới khối &lt;code&gt;routine-fire-payload&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phiên không khởi động được&lt;/td&gt;
&lt;td&gt;Setup script trả về exit code khác 0. Thêm `\&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Kinh nghiệm cá nhân
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Bắt đầu chỉ đọc.&lt;/strong&gt; Cho routine tóm tắt và báo cáo trước, chỉ cho phép sửa code hay comment khi đã tin tưởng kết quả.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Luôn Run now trước khi để lịch tự chạy&lt;/strong&gt;, đọc transcript từ đầu đến cuối.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Viết prompt như viết runbook:&lt;/strong&gt; các bước đánh số, điều không được làm, và cách xử lý trường hợp rỗng hoặc lỗi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Một routine, một việc.&lt;/strong&gt; Routine nhỏ dễ debug hơn routine "làm tất cả".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Đặt skill và {% raw %}&lt;code&gt;.mcp.json&lt;/code&gt; trong repo.&lt;/strong&gt; Routine dùng được skill đã commit trong repo, và MCP server khai báo trong &lt;code&gt;.mcp.json&lt;/code&gt;, nên cả team chia sẻ cùng quy trình.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Project Manager phần mềm thực chiến: Một cuốn sách miễn phí bằng cho người Việt</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Sun, 15 Nov 2026 14:53:29 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/project-manager-phan-mem-thuc-chien-mot-cuon-sach-mien-phi-bang-cho-nguoi-viet-1naa</link>
      <guid>https://dev.to/phamtuanchip/project-manager-phan-mem-thuc-chien-mot-cuon-sach-mien-phi-bang-cho-nguoi-viet-1naa</guid>
      <description>&lt;p&gt;Nếu bạn là dev lâu năm được "đẩy lên" làm PM, hoặc người mới muốn chuyển sang quản lý dự án phần mềm, có thể bạn từng gặp cảnh này: đọc xong vài bài về Scrum, Gantt, PMBOK, nhưng vào dự án thật vẫn không biết bắt đầu từ đâu — ai duyệt thay đổi, báo cáo cho sếp thế nào, khách đòi thêm tính năng thì trả lời ra sao, và tại sao dự án "đang xanh" bỗng nhiên trễ ba tháng.&lt;/p&gt;

&lt;p&gt;Bài này nói ngắn gọn về vị trí PM, rồi giới thiệu một cuốn sách &lt;strong&gt;miễn phí, tiếng Việt&lt;/strong&gt; mà mình viết để lấp khoảng trống đó.&lt;/p&gt;

&lt;h2&gt;
  
  
  PM phần mềm thực sự làm gì?
&lt;/h2&gt;

&lt;p&gt;Ngoài đời, PM không phải người "giao việc và hỏi tiến độ". Công việc thật sự xoay quanh mấy nhóm việc:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Làm rõ phạm vi.&lt;/strong&gt; Biến câu "làm giống app X" thành danh sách yêu cầu kiểm tra được, kèm danh sách &lt;em&gt;không làm&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lập kế hoạch có thể tin được.&lt;/strong&gt; WBS, ước lượng, lịch, đường găng, ngân sách có dự phòng — để khi bị hỏi "bao giờ xong?" bạn trả lời bằng khoảng và giả định, không bằng cảm tính.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quản lý rủi ro và thay đổi.&lt;/strong&gt; RAID log, quy trình change request, CCB. Thay đổi không xấu; thay đổi &lt;em&gt;không ai biết&lt;/em&gt; mới xấu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Điều hành thực thi.&lt;/strong&gt; Scrum/Kanban/hybrid, backlog, họp hiệu quả, quản lý đội và xung đột.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cầu nối với kỹ thuật.&lt;/strong&gt; Hiểu branching, versioning, CI/CD, release đủ để không bị "nói gì nghe nấy" và cũng không làm phiền dev vô ích.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giám sát và báo cáo.&lt;/strong&gt; EVM (SPI/CPI), báo cáo RAG, quản lý kỳ vọng khách hàng, xử lý sự cố.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Đưa vào chạy và đóng dự án.&lt;/strong&gt; UAT, Go/No-Go, cutover, hypercare, lessons learned, đo lợi ích.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Điểm chung: PM tạo ra &lt;strong&gt;sự rõ ràng&lt;/strong&gt; — về mục tiêu, trách nhiệm, rủi ro và quyết định — để đội kỹ thuật làm được việc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao mình viết cuốn sách này
&lt;/h2&gt;

&lt;p&gt;Tài liệu tốt về quản lý dự án có nhiều, nhưng phần lớn hoặc là lý thuyết chung chung, hoặc bằng tiếng Anh và không gắn với bối cảnh phần mềm. Mình muốn một cuốn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Đi từ zero đến thực chiến&lt;/strong&gt; — không cần biết trước PMBOK.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Có một dự án xuyên suốt.&lt;/strong&gt; Toàn bộ sách bám theo một case study là &lt;strong&gt;FoodNow&lt;/strong&gt; (ứng dụng giao đồ ăn, ngân sách 2,4 tỷ, 12 người, 39 tuần). Bạn thấy WBS, lịch, EVM, RAID, release, sự cố lúc go-live, đến bài học sau dự án — cùng một bộ số liệu, không phải ví dụ rời rạc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Có template dùng ngay&lt;/strong&gt; — 105 file (Markdown/CSV) cho Charter, WBS, RAID, Change Request, Status Report, Go/No-Go, Lessons Learned…&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Có bài tập và đáp án&lt;/strong&gt;, kể cả các tình huống "khó nói" như khách đòi thêm tính năng, thành viên chủ chốt nghỉ việc, cổng thanh toán trễ.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Trong sách có gì?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;47 chương, chia 9 phần + 8 phụ lục:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phần&lt;/th&gt;
&lt;th&gt;Nội dung&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0. Nhập môn&lt;/td&gt;
&lt;td&gt;Dự án là gì, vai trò PM, vòng đời và mô hình, lộ trình chứng chỉ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1. Khởi động&lt;/td&gt;
&lt;td&gt;Business case, Charter, stakeholder, phạm vi, kickoff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Lập kế hoạch&lt;/td&gt;
&lt;td&gt;WBS, ước lượng, Gantt/critical path, roadmap, ngân sách, chất lượng, nguồn lực&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Rủi ro, thay đổi, mua sắm&lt;/td&gt;
&lt;td&gt;Risk, RAID, change control, vendor, quản lý cấu hình&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Thực thi&lt;/td&gt;
&lt;td&gt;Scrum, backlog, Kanban, hybrid, lãnh đạo, họp, PM và kỹ thuật&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Delivery plan &amp;amp; release&lt;/td&gt;
&lt;td&gt;Branching, versioning/tagging, deployment pipeline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Giám sát &amp;amp; chất lượng&lt;/td&gt;
&lt;td&gt;EVM, báo cáo, kỳ vọng khách hàng, UAT, sự cố &amp;amp; khủng hoảng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Đóng &amp;amp; vận hành&lt;/td&gt;
&lt;td&gt;Go-live, closure, lessons learned, đo lợi ích, PMO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. Bài tập tình huống&lt;/td&gt;
&lt;td&gt;Năm bộ tình huống + capstone FoodNow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phụ lục&lt;/td&gt;
&lt;td&gt;Chỉ mục template, thuật ngữ (146 mục), checklist nhanh, tài liệu tham khảo, chứng chỉ PM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Mỗi chương theo cùng một khung: mục tiêu học → nội dung → tình huống FoodNow → bài tập → sai lầm thường gặp → tóm tắt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đọc ở đâu, dùng thế nào?
&lt;/h2&gt;

&lt;p&gt;Sách hoàn toàn &lt;strong&gt;miễn phí&lt;/strong&gt;, để trên GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/phamtuanchip/book_pm" rel="noopener noreferrer"&gt;https://github.com/phamtuanchip/book_pm&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bản PDF&lt;/strong&gt; nằm trong thư mục &lt;code&gt;dist/&lt;/code&gt; (&lt;code&gt;quan-ly-du-an-phan-mem-tu-zero-den-thuc-chien.pdf&lt;/code&gt;) — tải về đọc offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bản HTML&lt;/strong&gt; cũng nằm trong &lt;code&gt;dist/&lt;/code&gt; (mở &lt;code&gt;index.html&lt;/code&gt;), có sơ đồ Mermaid.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bản Markdown&lt;/strong&gt; trong &lt;code&gt;book/&lt;/code&gt;, &lt;strong&gt;template&lt;/strong&gt; trong &lt;code&gt;templates/&lt;/code&gt; — bạn có thể copy về dùng cho dự án của mình.&lt;/li&gt;
&lt;li&gt;Muốn tự build lại: &lt;code&gt;npm install&lt;/code&gt; rồi &lt;code&gt;npm run build&lt;/code&gt; và &lt;code&gt;npm run build:pdf&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gợi ý cách đọc: nếu bạn đang đứng trước dự án thật, đừng đọc tuần tự. Mở phụ lục checklist nhanh, chọn template đang cần (Charter, RAID, Change Request), rồi đọc chương tương ứng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Một lưu ý trung thực
&lt;/h2&gt;

&lt;p&gt;Đây là bản thảo đầy đủ nhưng chưa phải bản cuối. Một số thông tin có thể thay đổi theo thời gian — đặc biệt là &lt;strong&gt;chứng chỉ (PMP/CAPM/PMI-ACP)&lt;/strong&gt; và &lt;strong&gt;quy định pháp lý về dữ liệu cá nhân&lt;/strong&gt;; mình đã đối chiếu từ nguồn công khai nhưng bạn nên kiểm tra lại với nguồn chính thức trước khi ra quyết định. Số liệu FoodNow là giả lập để minh hoạ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Góp ý và đóng góp
&lt;/h2&gt;

&lt;p&gt;Thấy lỗi, thiếu chỗ, hoặc muốn bổ sung tình huống từ kinh nghiệm thực tế của bạn? Mở &lt;strong&gt;Issue&lt;/strong&gt; hoặc &lt;strong&gt;Pull Request&lt;/strong&gt; trên repo. Nếu sách hữu ích, một ⭐ trên GitHub và chia sẻ cho đồng nghiệp là cách hỗ trợ tốt nhất.&lt;/p&gt;

&lt;p&gt;Chúc bạn quản lý dự án bớt "chữa cháy" và nhiều buổi go-live êm hơn.&lt;/p&gt;

</description>
      <category>career</category>
      <category>management</category>
      <category>software</category>
    </item>
    <item>
      <title>A Complete Guide to Running an Effective Brainstorming Session</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Wed, 17 Jun 2026 18:53:14 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/a-complete-guide-to-running-an-effective-brainstorming-session-2dcp</link>
      <guid>https://dev.to/phamtuanchip/a-complete-guide-to-running-an-effective-brainstorming-session-2dcp</guid>
      <description>&lt;p&gt;In the modern world of hybrid and remote work, effective collaboration is more important than ever. Whether you’re in a design sprint, a product strategy workshop, or just trying to kick off your next big project, &lt;strong&gt;brainstorming&lt;/strong&gt; is a key part of innovation.&lt;/p&gt;

&lt;p&gt;But how do you bring the creative energy of a whiteboard session into a virtual setting?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enter: Miro.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Miro is a powerful online collaborative whiteboard platform built for teams to think, plan, and create together — no matter where they are. But like any tool, its impact depends on how well you use it.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to &lt;strong&gt;prepare and run a brainstorming session&lt;/strong&gt; in Miro&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;best practices&lt;/strong&gt; for keeping your team engaged and productive&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Common mistakes&lt;/strong&gt; and how to avoid them&lt;/li&gt;
&lt;li&gt;Template recommendations and facilitation tips&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s dive in!&lt;/p&gt;

&lt;h3&gt;🧭 Why Use Miro for Brainstorming?&lt;/h3&gt;

&lt;p&gt;Before we get tactical, let’s understand &lt;strong&gt;why&lt;/strong&gt; Miro is ideal for digital brainstorming:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Visual Freedom&lt;/strong&gt; — Like an infinite whiteboard&lt;br&gt;
✅ &lt;strong&gt;Real-time Collaboration&lt;/strong&gt; — Multiple users can edit at the same time&lt;br&gt;
✅ &lt;strong&gt;Sticky Notes, Templates, Diagrams&lt;/strong&gt; — All your favorite offline tools, online&lt;br&gt;
✅ &lt;strong&gt;Asynchronous Friendly&lt;/strong&gt; — Contributions can happen at different times&lt;br&gt;
✅ &lt;strong&gt;Built-in Tools&lt;/strong&gt; — Timer, voting, chat, frames, and reactions&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Miro simulates the free-flowing feel of a whiteboard while giving structure and scalability.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;🏁 Step-by-Step: How to Start a Brainstorming Session Using Miro&lt;/h3&gt;

&lt;h3&gt;🔹 Step 1: Define the Problem and Session Goal&lt;/h3&gt;

&lt;p&gt;Before opening Miro, be very clear on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Problem Statement&lt;/strong&gt;
&lt;em&gt;Example&lt;/em&gt; : “How might we reduce user churn in the first week?”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session Objective&lt;/strong&gt;
&lt;em&gt;Example&lt;/em&gt; : “Generate at least 15 actionable ideas we can test in Q2.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This clarity ensures participants don’t go off-topic and gives them confidence in contributing.&lt;/p&gt;

&lt;p&gt;📝 Pro tip: Share the agenda and objective with participants 24–48 hours before the session.&lt;/p&gt;

&lt;h3&gt;🔹 Step 2: Prepare the Miro Board (Facilitator Only)&lt;/h3&gt;

&lt;p&gt;Don’t just drop everyone into a blank board. Structure is key.&lt;/p&gt;

&lt;h4&gt;👉 Choose or Create a Template&lt;/h4&gt;

&lt;p&gt;Here are a few good starting points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mind Map&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How Might We (HMW)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SCAMPER Technique&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SWOT Analysis&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact/Effort Matrix&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If nothing fits, you can create a custom layout with the following:&lt;/p&gt;

&lt;h4&gt;🔧 Suggested Layout:&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AOHebA0iPhnhMfwJ0Zx3wWQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AOHebA0iPhnhMfwJ0Zx3wWQ.png" alt="" width="771" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Miro tip: Use &lt;strong&gt;Frames&lt;/strong&gt; to create a flow like slides. Add labels and arrows to guide attention.&lt;/p&gt;

&lt;h3&gt;🔹 Step 3: Send Invitations and Access Settings&lt;/h3&gt;

&lt;p&gt;Invite collaborators with “&lt;strong&gt;Can Edit&lt;/strong&gt; ” access. If they’re not familiar with Miro, send:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A quick 3-minute tutorial video (Miro has great ones)&lt;/li&gt;
&lt;li&gt;A pre-session checklist: link, agenda, browser recommendation (Chrome/Edge), etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, test the link beforehand in incognito to see what participants will experience.&lt;/p&gt;

&lt;h3&gt;🔹 Step 4: Kick Off the Session (Live or Hybrid)&lt;/h3&gt;

&lt;p&gt;Time to start!&lt;/p&gt;

&lt;h4&gt;Recommended Flow (60–90 minutes):&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Welcome &amp;amp; Icebreaker (5–10 min)&lt;/strong&gt;
Ask: “What’s your go-to productivity tool?” and let people place sticky notes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;2. Objective &amp;amp; Ground Rules (5 min)&lt;/strong&gt;&lt;br&gt;
State clearly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every idea is welcome&lt;/li&gt;
&lt;li&gt;Defer judgment&lt;/li&gt;
&lt;li&gt;Build on others’ ideas&lt;/li&gt;
&lt;li&gt;Stay focused on the topic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Individual Ideation — Brainwriting (10–15 min)&lt;/strong&gt;&lt;br&gt;
Everyone silently adds as many ideas as they can. One idea per sticky. Color-code per person.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Sharing &amp;amp; Discussion (15–20 min)&lt;/strong&gt;&lt;br&gt;
Go around, let people explain a few of their ideas. Group similar ones together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Theme Clustering (10–15 min)&lt;/strong&gt;&lt;br&gt;
Use shapes, labels, or emojis to group ideas into categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Prioritization (10–15 min)&lt;/strong&gt;&lt;br&gt;
Use dot-voting (Miro has a plugin!) to pick the most promising ideas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Wrap-up &amp;amp; Next Steps (5–10 min)&lt;/strong&gt;&lt;br&gt;
Summarize top-voted ideas, capture decisions, assign actions or follow-up tasks.&lt;/p&gt;

&lt;p&gt;🎯 Facilitator tip: Use the &lt;strong&gt;Timer&lt;/strong&gt; and &lt;strong&gt;Laser Pointer&lt;/strong&gt; in Miro to keep people focused.&lt;/p&gt;

&lt;h3&gt;💡 Best Practices for a Successful Brainstorm in Miro&lt;/h3&gt;

&lt;h3&gt;1. Timebox Everything&lt;/h3&gt;

&lt;p&gt;Creativity thrives under constraints. Set clear durations for each phase and stick to them.&lt;/p&gt;

&lt;h3&gt;2. Encourage Quantity Over Quality First&lt;/h3&gt;

&lt;p&gt;Set a target like “10 ideas per person in 10 minutes.” Judging too early kills creativity.&lt;/p&gt;

&lt;h3&gt;3. Be Visually Organized&lt;/h3&gt;

&lt;p&gt;Use colors, emojis, and icons to visually distinguish categories, people, or themes.&lt;/p&gt;

&lt;h3&gt;4. Use Silent Brainwriting&lt;/h3&gt;

&lt;p&gt;It removes groupthink and boosts the diversity of ideas. Let everyone write silently first.&lt;/p&gt;

&lt;h3&gt;5. Document Outcomes&lt;/h3&gt;

&lt;p&gt;Export the board or take screenshots of the key sections. Follow up with a recap email.&lt;/p&gt;

&lt;h3&gt;⚠️ Common Pitfalls and How to Avoid Them&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AxoE_mv_AtRbZt803XJApuQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AxoE_mv_AtRbZt803XJApuQ.png" alt="" width="785" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;🧰 Miro Templates You Should Try&lt;/h3&gt;

&lt;p&gt;Here are 5 templates I personally recommend:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AXFFPwnL9wQ7Aljse3db50Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AXFFPwnL9wQ7Aljse3db50Q.png" alt="" width="793" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Tip: You can combine multiple templates into one board as your session progresses.&lt;/p&gt;

&lt;h3&gt;🕹️ Optional Add-Ons&lt;/h3&gt;

&lt;p&gt;If you’re feeling more advanced, try these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sticky Note Kanban:&lt;/strong&gt; Turn brainstormed ideas into tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connections &amp;amp; Flow Arrows:&lt;/strong&gt; Build user flows or systems from clustered ideas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embed Videos or Docs:&lt;/strong&gt; Link to inspiration directly in the board&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add AI Plug-ins&lt;/strong&gt; (coming soon in Miro): Summarize themes or cluster ideas automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;🔚 Final Thoughts&lt;/h3&gt;

&lt;p&gt;Running a brainstorming session doesn’t have to be chaotic or boring — especially with a tool like Miro in your toolkit. With the right planning, a well-structured board, and some engaging facilitation, your sessions can produce &lt;strong&gt;real value&lt;/strong&gt; and foster a stronger team culture.&lt;/p&gt;

&lt;p&gt;Remember:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The best way to have a good idea is to have a lot of ideas.” — Linus Pauling&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, fire up Miro, invite your team, and let the ideas flow!&lt;/p&gt;

&lt;h3&gt;📥 Template &amp;amp; Bonus Material&lt;/h3&gt;

&lt;p&gt;Want a ready-to-use Miro board with everything above built-in?&lt;/p&gt;

&lt;p&gt;👉 [DM me or drop a comment] and I’ll send you a free template!&lt;/p&gt;

&lt;h3&gt;🧑‍💻 About the Author&lt;/h3&gt;

&lt;p&gt;I’m a software engineering manager, product strategist, and facilitator who’s passionate about creating engaging, productive team rituals — especially in distributed environments.&lt;/p&gt;

&lt;p&gt;Follow me for more guides on team collaboration, facilitation techniques, and remote productivity.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep reading&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>How ISO 9001 applies for the Software Development</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Wed, 17 Jun 2026 09:10:31 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/how-iso-9001-applies-for-the-software-development-1cl6</link>
      <guid>https://dev.to/phamtuanchip/how-iso-9001-applies-for-the-software-development-1cl6</guid>
      <description>&lt;p&gt;In today’s competitive business environment, delivering high-quality services is a key factor in building long-term client relationships, especially for software outsourcing companies. ISO 9001, a globally recognized quality management standard, offers a structured approach to ensuring consistent and high-quality service delivery. But how exactly does ISO 9001 apply to the software outsourcing industry? In this post, we’ll dive into the history of ISO 9001, its application in a global software outsourcing context, and the steps needed to successfully implement it in your company.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;The History of ISO 9001: A Quality Management Standard&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;ISO 9001 is part of the ISO 9000 family of standards that was first introduced in 1987 by the International Organization for Standardization (ISO). Its origins trace back to the need for companies to adopt consistent practices to ensure quality management across industries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Early Versions&lt;/strong&gt; : The initial version of ISO 9001 focused mainly on manufacturing processes, ensuring product consistency. However, it soon became clear that quality management principles could apply to service-based industries as well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evolution&lt;/strong&gt; : Over the years, ISO 9001 has undergone several revisions (1994, 2000, 2008, and 2015), evolving to focus more on performance, continuous improvement, and customer satisfaction. The 2015 version is more flexible, focusing on risk-based thinking and applying the standard to a broader range of industries, including software development and outsourcing services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;strong&gt;The Importance of ISO 9001 for Software Outsourcing Companies&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;For software outsourcing companies, ISO 9001 provides a framework to manage processes and improve the quality of services. It is not just about creating documentation or meeting compliance; it’s about implementing a mindset of continuous improvement, accountability, and delivering value to clients.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client Confidence&lt;/strong&gt; : ISO 9001 certification signals to potential clients that your company meets international standards for quality management. It fosters trust, which is crucial in the software outsourcing space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational Efficiency&lt;/strong&gt; : The standard helps streamline processes, making teams more efficient and reducing rework, bugs, and overall operational costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk Management&lt;/strong&gt; : By applying risk-based thinking, ISO 9001 enables outsourcing companies to anticipate potential risks and proactively mitigate them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;strong&gt;How to Apply ISO 9001 in a Software Outsourcing Company: A Global View&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Applying ISO 9001 in a software outsourcing context requires tailoring its principles to the unique challenges of software development and client expectations.&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;&lt;em&gt;A. Understanding the Core Principles&lt;/em&gt;&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;ISO 9001 is built on seven quality management principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Customer Focus&lt;/strong&gt; : Understand and meet client needs and expectations consistently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leadership&lt;/strong&gt; : Create a culture of quality leadership and responsibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engagement of People&lt;/strong&gt; : Involve all levels of the organization in the quality management process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Process Approach&lt;/strong&gt; : Manage activities as interconnected processes that work together for efficiency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improvement&lt;/strong&gt; : Constantly seek ways to enhance your processes and service quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence-Based Decision Making&lt;/strong&gt; : Use data and analysis for decision-making.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relationship Management&lt;/strong&gt; : Maintain good relationships with stakeholders, including clients, vendors, and partners.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;&lt;strong&gt;&lt;em&gt;B. Tailoring to Software Development and Outsourcing&lt;/em&gt;&lt;/strong&gt;&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Management&lt;/strong&gt; : Implement structured approaches (Agile, Scrum) to meet deadlines while maintaining quality standards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development Processes&lt;/strong&gt; : ISO 9001 ensures that development, testing, and deployment are standardized, minimizing inconsistencies in the code and product delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client Communication&lt;/strong&gt; : Formalize client communication, feedback, and satisfaction tracking processes to ensure that expectations are met consistently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk-Based Thinking&lt;/strong&gt; : Apply risk management strategies to identify potential risks in project execution, timelines, or resource allocation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;strong&gt;C. Process and Steps to Implement ISO 9001 in a Software Outsourcing Company&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;Successfully implementing ISO 9001 involves several steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 1: Gap Analysis&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start by performing a gap analysis to compare your current processes against ISO 9001 requirements. Identify areas where your software outsourcing practices may fall short.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 2: Leadership Commitment&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensure that leadership is committed to the process. Implementing ISO 9001 requires buy-in from all levels of the organization, especially top management, as they will set the tone for quality-driven practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 3: Process Design and Documentation&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Map out your software development processes, including project management, client interactions, quality checks, and testing phases. Document each process clearly, ensuring it aligns with the ISO 9001 framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 4: Training and Awareness&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Train employees at all levels on the principles of ISO 9001 and how they apply to their daily tasks. For example, developers need to understand how quality applies to code consistency and client satisfaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 5: Implementation of a Quality Management System (QMS)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set up a Quality Management System (QMS) that monitors all key processes, including software development, testing, client feedback, and issue resolution. Automating parts of your QMS using project management tools (e.g., Jira, Confluence) can improve efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 6: Internal Audits&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Conduct regular internal audits to assess whether your processes are compliant with ISO 9001 standards. Internal audits also provide insights into potential areas for improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 7: Certification Audit&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve implemented all processes and are confident in their compliance, invite an external auditor to review your systems. Passing this audit will earn your company the ISO 9001 certification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Step 8: Continuous Improvement&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ISO 9001 is not a one-time certification. It requires continuous improvement and monitoring. Regularly update your QMS, perform audits, and refine processes based on performance and feedback.&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;D. Levels of ISO 9001 Application in Software Outsourcing&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;ISO 9001 can be applied at various levels within a software outsourcing company, from individual projects to the entire organization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Level&lt;/strong&gt; : Apply ISO 9001 to specific projects or clients to ensure consistency in service delivery. This is useful for companies testing the waters with certification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Department Level&lt;/strong&gt; : Implement ISO 9001 within specific departments like development, testing, or client support. This ensures that key functions meet global standards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organizational Level&lt;/strong&gt; : Full-scale implementation across the company demonstrates a commitment to quality and process improvement at every level, from sales and marketing to project execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;strong&gt;Conclusion: The Path to Global Competitiveness&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;For software outsourcing companies, ISO 9001 certification is a powerful tool that not only ensures compliance with international quality standards but also drives operational efficiency and client satisfaction. By adopting ISO 9001, your company can distinguish itself in a crowded market and provide consistent, high-quality services that clients can trust.&lt;/p&gt;

&lt;p&gt;Investing in ISO 9001 certification is a step towards long-term success, enabling software outsourcing companies to enhance their reputation, improve their processes, and foster continuous improvement.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep reading&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>management</category>
      <category>productivity</category>
      <category>software</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Thất nghiệp tuổi 35</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Wed, 13 Nov 2024 10:26:53 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/that-nghiep-tuoi-35-3oaj</link>
      <guid>https://dev.to/phamtuanchip/that-nghiep-tuoi-35-3oaj</guid>
      <description>&lt;p&gt;Ngành công nghệ thông tin (CNTT) tại Việt Nam từ lâu đã trở thành một trong những ngành có tốc độ phát triển nhanh nhất và đóng góp đáng kể vào sự phát triển kinh tế của đất nước. Tuy nhiên, giữa những cơ hội thăng tiến mạnh mẽ trong công việc, một thực tế đáng lo ngại đang diễn ra đối với rất nhiều lập trình viên: Tình trạng thất nghiệp ở độ tuổi 35 và hơn thế nữa.&lt;br&gt;
Trong khi những lập trình viên trẻ tuổi, đặc biệt là dưới 30, có thể dễ dàng tìm thấy cơ hội nghề nghiệp và thăng tiến nhanh chóng, những người ở độ tuổi trên 35 lại phải đối mặt với nhiều thử thách lớn. Một trong những vấn đề nổi bật là sự thay đổi nhanh chóng của công nghệ, sự thay thế của các công cụ và ngôn ngữ lập trình, và đặc biệt là xu hướng tuyển dụng ưu tiên nhân viên trẻ của các công ty, đặc biệt là các startup và công ty công nghệ lớn.&lt;br&gt;
Bài viết này sẽ phân tích tình trạng thất nghiệp ở tuổi 35 trong ngành CNTT và lập trình viên tại Việt Nam, đưa ra các nguyên nhân chính dẫn đến thực trạng này, và đồng thời cung cấp những giải pháp hữu ích để lập trình viên duy trì sự nghiệp bền vững trong một môi trường công nghệ thay đổi liên tục.&lt;/p&gt;

&lt;h1&gt;
  
  
  Sự phát triển mạnh mẽ của ngành CNTT
&lt;/h1&gt;

&lt;p&gt;Ngành công nghệ thông tin tại Việt Nam đã có những bước tiến vượt bậc trong suốt hơn một thập kỷ qua. Theo báo cáo của Bộ Thông tin và Truyền thông Việt Nam, ngành CNTT đã đạt mức tăng trưởng trung bình hàng năm từ 10-15% trong nhiều năm qua, với hàng nghìn công ty công nghệ trong và ngoài nước có mặt tại Việt Nam. Đồng thời, nhu cầu tuyển dụng lập trình viên và các chuyên gia CNTT cũng đang ở mức cao, đặc biệt là trong các lĩnh vực như phát triển phần mềm, trí tuệ nhân tạo (AI), dữ liệu lớn (Big Data), và điện toán đám mây (Cloud Computing).&lt;br&gt;
Tuy nhiên, điều này không có nghĩa là tất cả các lập trình viên đều dễ dàng tìm được công việc. Trái lại, một vấn đề đang ngày càng trở nên nghiêm trọng đối với những lập trình viên khi họ bước qua độ tuổi 35.&lt;/p&gt;

&lt;h1&gt;
  
  
  Xu hướng tuyển dụng trong ngành CNTT
&lt;/h1&gt;

&lt;p&gt;Theo một khảo sát của TopDev, nền tảng tuyển dụng hàng đầu trong lĩnh vực CNTT tại Việt Nam, có khoảng 80% các công ty công nghệ ưu tiên tuyển dụng lập trình viên dưới 30 tuổi. Điều này phản ánh một xu hướng chung trong ngành: Các công ty, đặc biệt là các startup và các công ty lớn, có xu hướng tuyển dụng những nhân viên trẻ, năng động, dễ dàng thích nghi với sự thay đổi nhanh chóng của công nghệ.&lt;br&gt;
Ngoài ra, các công ty khởi nghiệp (startup) thường yêu cầu nhân viên có thể làm việc lâu dài và linh hoạt, với khả năng tự học hỏi và thích ứng nhanh chóng. Điều này dẫn đến việc lập trình viên từ 35 tuổi trở lên gặp khó khăn trong việc gia nhập vào môi trường làm việc như vậy.&lt;br&gt;
Trong khi đó, những lập trình viên giàu kinh nghiệm có thể gặp khó khăn trong việc chuyển sang các vai trò lãnh đạo hoặc quản lý. Điều này là do nhiều công ty yêu cầu các ứng viên quản lý có những kỹ năng lãnh đạo rõ ràng hoặc có một sự nghiệp được ghi nhận trong các vai trò không liên quan trực tiếp đến lập trình.&lt;br&gt;
Nguyên nhân dẫn đến thất nghiệp ở tuổi 35 trong ngành CNTT&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Sự thay đổi công nghệ nhanh chóng
&lt;/h2&gt;

&lt;p&gt;Ngành công nghệ thông tin luôn được đặc trưng bởi sự thay đổi nhanh chóng của các công nghệ, công cụ và ngôn ngữ lập trình. Mỗi năm, hàng loạt công nghệ mới ra đời, và lập trình viên cần phải liên tục cập nhật kiến thức và cải thiện kỹ năng của mình. Những lập trình viên không kịp thời học hỏi những công nghệ mới hoặc duy trì các kỹ năng cũ có thể dễ dàng bị bỏ lại phía sau.&lt;br&gt;
Chẳng hạn, một lập trình viên giỏi trong việc sử dụng ngôn ngữ lập trình cũ như Java hoặc C++ có thể gặp khó khăn khi không cập nhật kịp thời các ngôn ngữ và công cụ mới như Python, JavaScript (ReactJS) hay Node.js, đặc biệt khi các công ty hiện nay đang tìm kiếm các lập trình viên có thể làm việc với các công nghệ hiện đại.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Thiếu sự linh hoạt và thích ứng nhanh chóng
&lt;/h2&gt;

&lt;p&gt;Các công ty công nghệ lớn và startup ngày nay ưu tiên những lập trình viên trẻ tuổi vì họ cho rằng nhóm này có thể dễ dàng thích nghi với các công nghệ mới, có khả năng học hỏi nhanh chóng, và đôi khi không ngại thử thách. Mặc dù các lập trình viên có kinh nghiệm có thể có lợi thế về kiến thức và kỹ năng chuyên môn, nhưng họ có thể gặp khó khăn khi cần phải học lại một công nghệ hoàn toàn mới hoặc thay đổi cách làm việc.&lt;br&gt;
Thêm vào đó, môi trường làm việc tại các startup thường yêu cầu nhân viên có sự linh hoạt trong công việc và có thể làm việc dưới áp lực cao mà không gặp phải nhiều vấn đề. Đặc biệt, các lập trình viên lớn tuổi đôi khi không thích ứng được với sự thay đổi nhanh chóng trong văn hóa công ty hoặc yêu cầu công việc.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Cạnh tranh từ lập trình viên trẻ
&lt;/h2&gt;

&lt;p&gt;Cạnh tranh từ những lập trình viên trẻ tuổi cũng là một yếu tố quan trọng khiến nhiều lập trình viên trên 35 tuổi gặp khó khăn trong việc tìm việc làm. Các công ty lớn, đặc biệt là các công ty công nghệ, thường ưu tiên tuyển dụng lập trình viên trẻ bởi họ có thể gắn bó lâu dài và dễ dàng học hỏi những công nghệ mới mà công ty yêu cầu. Điều này làm giảm cơ hội cho những lập trình viên lớn tuổi, mặc dù họ có kinh nghiệm và kỹ năng đáng giá.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Thiếu kỹ năng quản lý hoặc chuyển đổi nghề nghiệp
&lt;/h2&gt;

&lt;p&gt;Nhiều lập trình viên ở độ tuổi 35 có thể mong muốn chuyển sang các vị trí quản lý hoặc chuyên gia tư vấn, nhưng việc chuyển hướng này không phải lúc nào cũng dễ dàng. Công việc quản lý yêu cầu những kỹ năng khác biệt so với công việc lập trình, như khả năng lãnh đạo, giao tiếp, và quản lý đội ngũ. Nếu không có sự chuẩn bị kỹ lưỡng, những lập trình viên lớn tuổi có thể gặp khó khăn trong việc chuyển sang các vai trò quản lý, dẫn đến việc không có cơ hội thăng tiến trong sự nghiệp.&lt;/p&gt;

&lt;h1&gt;
  
  
  Giải pháp để vượt qua thách thức
&lt;/h1&gt;

&lt;p&gt;Mặc dù tình trạng thất nghiệp ở tuổi 35 trong ngành CNTT có thể là một thách thức lớn, nhưng không phải là không thể vượt qua. Dưới đây là một số giải pháp hữu ích để lập trình viên duy trì và phát triển sự nghiệp của mình trong một ngành công nghệ thay đổi nhanh chóng.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Cập nhật và nâng cao kỹ năng liên tục
&lt;/h2&gt;

&lt;p&gt;Trong một ngành công nghệ phát triển như CNTT, việc học hỏi không bao giờ là đủ. Lập trình viên cần chủ động tham gia các khóa học, hội thảo, và chương trình đào tạo để cập nhật những kiến thức mới nhất về các công nghệ và công cụ hiện đại. Việc này không chỉ giúp lập trình viên duy trì sự cạnh tranh mà còn mở rộng cơ hội nghề nghiệp của họ.&lt;br&gt;
Một số nền tảng học trực tuyến như Coursera, Udemy, Pluralsight, và edX cung cấp các khóa học chuyên sâu về các chủ đề mới nhất như Machine Learning, Artificial Intelligence, Cloud Computing, và DevOps. Tham gia những khóa học này không chỉ giúp bạn duy trì sự nghiệp mà còn có thể nâng cao năng lực chuyên môn, tạo dựng thương hiệu cá nhân trong ngành.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Học các công nghệ mới và làm quen với các xu hướng hiện đại
&lt;/h2&gt;

&lt;p&gt;Việc học các công nghệ mới và làm quen với các xu hướng hiện đại như Blockchain, AI, Cloud, DevOps, hoặc IoT (Internet of Things) là một trong những cách tốt nhất để nâng cao giá trị của bản thân trên thị trường lao động. Các công nghệ này đang được áp dụng rộng rãi trong nhiều lĩnh vực và mở ra những cơ hội lớn cho những lập trình viên chủ động nắm bắt.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Chuyển sang các vai trò quản lý hoặc tư vấn
&lt;/h2&gt;

&lt;p&gt;Nếu bạn cảm thấy mình không thể tiếp tục theo đuổi công việc lập trình trong lâu dài, việc chuyển sang các vai trò quản lý hoặc chuyên gia tư vấn có thể là một lựa chọn hợp lý. Vai trò như trưởng nhóm kỹ thuật, giám đốc công nghệ (CTO), hay chuyên gia tư vấn sẽ giúp bạn phát huy những kỹ năng đã có trong suốt sự nghiệp lập trình của mình.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Xây dựng mạng lưới quan hệ (Networking)
&lt;/h2&gt;

&lt;p&gt;Duy trì và phát triển mạng lưới quan hệ trong ngành công nghệ là một yếu tố không thể thiếu giúp bạn tìm kiếm cơ hội nghề nghiệp. Việc tham gia vào các cộng đồng lập trình viên, hội thảo, và sự kiện công nghệ sẽ giúp bạn tiếp&lt;/p&gt;

</description>
      <category>careerdevelopment</category>
      <category>webdev</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Trở Thành Nhà Lãnh Đạo Cân Bằng: Tránh Bẫy Kẻ Bóc Lột Trung Gian</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Mon, 27 May 2024 06:53:28 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/tro-thanh-nha-lanh-dao-can-bang-tranh-bay-ke-boc-lot-trung-gian-cce</link>
      <guid>https://dev.to/phamtuanchip/tro-thanh-nha-lanh-dao-can-bang-tranh-bay-ke-boc-lot-trung-gian-cce</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugluyia99i8dd0tn9xdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugluyia99i8dd0tn9xdk.png" alt=" " width="640" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trong thế giới phức tạp của hệ thống phân cấp doanh nghiệp, các nhà quản lý trung gian thường thấy mình phải đi trên dây. Họ được giao nhiệm vụ thực hiện tầm nhìn chiến lược của ban lãnh đạo cấp cao trong khi đồng thời quản lý và thúc đẩy các nhóm của mình. Tuy nhiên, hành động cân bằng này đôi khi có thể dẫn đến việc các nhà quản lý trung gian chỉ tập trung vào việc làm hài lòng sếp của họ, vô tình trở thành những "nhà lãnh đạo khai thác". Thuật ngữ này mô tả những nhà lãnh đạo ưu tiên lợi ích của ban lãnh đạo cấp cao hơn là hạnh phúc và sự phát triển của các thành viên trong nhóm của họ.&lt;/p&gt;

&lt;p&gt;Trong bài viết này, chúng ta sẽ khám phá những cạm bẫy của việc trở thành một nhà lãnh đạo khai thác, cung cấp các ví dụ chi tiết và thảo luận các chiến lược để tránh bẫy này và thúc đẩy một phong cách lãnh đạo cân bằng, hiệu quả hơn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cạm Bẫy Của Lãnh Đạo Bóc Lột Trung Gian&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Quá Chú Trọng Vào Chỉ Số Hiệu Suất&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ví dụ:&lt;/strong&gt; Jane, một quản lý trung gian tại một công ty công nghệ, đang chịu áp lực rất lớn từ ban lãnh đạo cấp cao để cải thiện số liệu bán hàng hàng quý. Để đáp ứng những yêu cầu này, cô đặt ra các mục tiêu cực kỳ cao cho nhóm bán hàng của mình và giám sát tiến độ của họ một cách nghiêm ngặt. Nhóm của cô cảm thấy luôn bị áp lực, dẫn đến tình trạng kiệt sức và tỷ lệ nhân viên nghỉ việc cao. Mặc dù Jane tạm thời đạt được mục tiêu, nhưng hậu quả lâu dài là tiêu cực, với tinh thần nhân viên giảm sút và hiệu suất tổng thể giảm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Bỏ Qua Sự Phát Triển Của Nhân Viên&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ví dụ:&lt;/strong&gt; Mark, một quản lý trung gian tại một công ty tiếp thị, muốn gây ấn tượng với sếp của mình. Anh dành phần lớn thời gian để lập chiến lược và tham dự các cuộc họp với ban lãnh đạo cấp cao, ít thời gian để hướng dẫn nhóm của mình. Nhân viên của anh cảm thấy bị bỏ rơi và không được hỗ trợ, dẫn đến sự trì trệ trong kỹ năng và thiếu sự đổi mới trong nhóm. Do đó, những người tài năng bắt đầu rời công ty để tìm kiếm cơ hội tốt hơn ở nơi khác.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Ưu Tiên Lợi Ích Ngắn Hạn Hơn Sự Ổn Định Dài Hạn&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ví dụ:&lt;/strong&gt; Lisa, một quản lý trung gian tại một công ty sản xuất, quyết định cắt giảm chi phí để cho thấy sự cải thiện tài chính ngay lập tức. Cô giảm các chương trình đào tạo và trì hoãn việc nâng cấp thiết bị cần thiết. Trong khi hành động của cô tạm thời tăng cường hiệu suất tài chính của công ty, tác động lâu dài là tiêu cực. Việc thiếu đào tạo dẫn đến nhiều sai lầm hơn và thiết bị lỗi thời gây ra sự chậm trễ trong sản xuất, cuối cùng làm tổn hại đến uy tín và lợi nhuận của công ty.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Quan Hệ Làm Việc Căng Thẳng&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ví dụ:&lt;/strong&gt; Tom, một quản lý trung gian tại một trung tâm dịch vụ khách hàng, ưu tiên chỉ thị của ban lãnh đạo cấp cao để tăng tỷ lệ giải quyết cuộc gọi. Anh thực hiện các chính sách nghiêm ngặt mà không tham khảo ý kiến của nhóm mình, dẫn đến sự thất vọng và oán giận. Các thành viên trong nhóm cảm thấy đóng góp của họ không được coi trọng, dẫn đến sự hợp tác giảm sút và môi trường làm việc độc hại. Điều này cuối cùng ảnh hưởng đến sự hài lòng của khách hàng và sự gắn kết của nhóm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Tác Động Đến Đạo Đức Và Văn Hóa Công Ty&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ví dụ:&lt;/strong&gt; Sarah, một quản lý trung gian tại một công ty dịch vụ tài chính, cảm thấy áp lực phải đạt được kết quả bằng mọi giá. Cô bỏ qua các vấn đề đạo đức và khuyến khích nhóm của mình sử dụng các chiến thuật bán hàng hung hãn để đạt mục tiêu. Hành vi này không chỉ làm hỏng uy tín của công ty mà còn tạo ra một văn hóa sợ hãi và không tin tưởng trong nhóm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Làm Sao Tránh?: Chiến Lược Để Lãnh Đạo Cân Bằng&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Giao Tiếp Hiệu Quả&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chiến lược:&lt;/strong&gt; Khuyến khích đối thoại mở với cả ban lãnh đạo cấp cao và nhóm của bạn. Thường xuyên cập nhật cho nhóm về các mục tiêu của công ty và xin ý kiến phản hồi của họ. Ví dụ, tổ chức các cuộc họp hàng tháng nơi các thành viên trong nhóm có thể nêu lên mối quan tâm và đề xuất cải tiến. Điều này đảm bảo rằng mọi người đều hiểu rõ và cảm thấy được coi trọng.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Bảo Vệ Quyền Lợi Của Nhân Viên&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chiến lược:&lt;/strong&gt; Hành động như một cầu nối giữa nhóm của bạn và ban lãnh đạo cấp cao. Khi ban lãnh đạo cấp cao đặt ra các chỉ thị mới, giải thích cách chúng phù hợp với công việc của nhóm và bảo vệ các nguồn lực cần thiết. Ví dụ, nếu một dự án mới được giao, đảm bảo rằng nhóm của bạn có đào tạo và công cụ cần thiết để thành công, và truyền đạt bất kỳ hạn chế nào cho ban lãnh đạo cấp cao.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Thực Hành Bền Vững&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chiến lược:&lt;/strong&gt; Tập trung vào các chiến lược dài hạn có lợi cho cả tổ chức và nhóm của bạn. Thực hiện các thực hành thúc đẩy sự phát triển bền vững, chẳng hạn như phát triển chuyên nghiệp thường xuyên và các chương trình chăm sóc sức khỏe. Ví dụ, giới thiệu một chương trình cố vấn nơi các nhân viên có kinh nghiệm có thể hướng dẫn các thành viên mới, thúc đẩy văn hóa học tập liên tục và hỗ trợ.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Phát Triển Liên Tục&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chiến lược:&lt;/strong&gt; Đầu tư vào sự phát triển của nhóm bạn. Cung cấp các cơ hội nâng cao kỹ năng và thăng tiến trong sự nghiệp. Ví dụ, cung cấp các hội thảo, khóa học trực tuyến và các buổi đào tạo chéo. Điều này không chỉ cải thiện hiệu suất cá nhân mà còn tăng cường năng lực tổng thể và sự hài lòng của nhóm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Chỉ Số Hiệu Suất Cân Bằng&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chiến lược:&lt;/strong&gt; Mặc dù đạt được các mục tiêu là quan trọng, đảm bảo chúng thực tế và có thể đạt được. Cân bằng các chỉ số định lượng với phản hồi định tính. Ví dụ, tích hợp các khảo sát hài lòng của nhân viên và kiểm tra thường xuyên để đánh giá tinh thần của nhóm và giải quyết kịp thời các vấn đề.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kết Luận&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Trở thành một quản lý trung gian đi kèm với những thách thức riêng. Tuy nhiên, bằng cách tránh các cạm bẫy của lãnh đạo khai thác và áp dụng một cách tiếp cận cân bằng, bạn có thể tạo ra một môi trường làm việc tích cực và hiệu quả. Giao tiếp hiệu quả, bảo vệ quyền lợi của nhân viên, thực hành bền vững, phát triển liên tục và chỉ số hiệu suất cân bằng là những chiến lược then chốt để đạt được sự cân bằng này. Bằng cách coi trọng và hỗ trợ nhóm của mình, bạn không chỉ đáp ứng kỳ vọng của ban lãnh đạo cấp cao mà còn thúc đẩy một nhóm làm việc có động lực, hiệu suất cao, góp phần vào sự thành công bền vững của tổ chức.&lt;/p&gt;

</description>
      <category>work</category>
      <category>career</category>
      <category>management</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Web3: Mở Đầu Cho Sự Đổi Mới Trong Thế Giới Web</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Tue, 26 Dec 2023 02:37:50 +0000</pubDate>
      <link>https://dev.to/5minutes-education/web3-mo-dau-cho-su-doi-moi-trong-the-gioi-web-3dej</link>
      <guid>https://dev.to/5minutes-education/web3-mo-dau-cho-su-doi-moi-trong-the-gioi-web-3dej</guid>
      <description>&lt;h2&gt;
  
  
  1. Giới Thiệu Chung:
&lt;/h2&gt;

&lt;p&gt;Web3, viết tắt của "Web 3.0", đại diện cho một sự tiến bộ lớn trong cách chúng ta tương tác với internet. Nếu Web1.0 là web tĩnh, Web2.0 đưa đến sự tương tác và chia sẻ thông tin, thì Web3.0 mang lại sự phi tập trung và đa dạng thông tin thông qua công nghệ blockchain và các ứng dụng phi tập trung.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Sự Khác Biệt Của Web3:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Phi Tập Trung (Decentralization):&lt;/strong&gt; Web3 loại bỏ sự phụ thuộc vào các trung tâm dữ liệu và cơ sở hạ tầng truyền thống, thay vào đó, sử dụng blockchain để tạo ra môi trường phi tập trung, nơi dữ liệu và ứng dụng không thuộc sở hữu của bất kỳ tổ chức hay cá nhân nào cụ thể.&lt;br&gt;
&lt;strong&gt;Quản lý Tài Khoản và Giao Dịch thông qua Blockchain:&lt;/strong&gt; Web3 cho phép người dùng tạo và quản lý các ví số trên blockchain, điều này có nghĩa là họ có quyền kiểm soát hoàn toàn tài khoản và giao dịch của mình mà không cần sự can thiệp của bên thứ ba.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Ví dụ về JS:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tạo Ví Ethereum:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Web3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;web3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Web3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newAccount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;eth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;New Account Address:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newAccount&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Chuyển Tiền:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;senderAddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_SENDER_ADDRESS&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;receiverAddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;RECEIVER_ADDRESS&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;privateKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PRIVATE_KEY_OF_SENDER&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;amountToSend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;utils&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toWei&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ether&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;eth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;eth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendTransaction&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;senderAddress&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;receiverAddress&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;amountToSend&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;transactionHash&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Transaction Hash:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;receipt&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;receipt&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Receipt:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;receipt&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Tương Tác với Smart Contracts:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;contractAddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;SMART_CONTRACT_ADDRESS&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;abi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...];&lt;/span&gt; &lt;span class="c1"&gt;// ABI của smart contract&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;contract&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;eth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Contract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;abi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;contractAddress&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;contract&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getSomeValue&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Some Value:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Dự Đoán Xu Thế Ứng Dụng của Web3:
&lt;/h2&gt;

&lt;p&gt;Tài Chính Phi Tập Trung (DeFi): Web3 mở ra khả năng tạo ra các dịch vụ tài chính không cần sự can thiệp của ngân hàng trung ương hay các tổ chức tài chính truyền thống.&lt;br&gt;
Chủ Quyền Dữ Liệu Cá Nhân: Người dùng sẽ có quyền kiểm soát đầy đủ về dữ liệu cá nhân của họ, có khả năng chia sẻ thông tin mà không mất quyền kiểm soát.&lt;br&gt;
Nền Tảng Ứng Dụng Phi Tập Trung (DApps): Web3 tạo ra một môi trường cho việc xây dựng ứng dụng phi tập trung mà không cần phải tin tưởng vào một bên thứ ba duy nhất.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết bài:
&lt;/h2&gt;

&lt;p&gt;Web3 đánh dấu một bước tiến lớn trong sự phát triển của internet, mở ra một thế giới mới của sự đa dạng, chủ quyền cá nhân, và khả năng tương tác không giới hạn. Đối với những người phát triển, hiểu biết vững về Web3 và các công nghệ blockchain là chìa khóa để tham gia vào cuộc cách mạng này và tạo ra những ứng dụng đột phá.&lt;/p&gt;

&lt;h2&gt;
  
  
  Để bắt đầu, bạn có thể tham gia các khoá học online dưới đây:
&lt;/h2&gt;

&lt;p&gt;"Ethereum and Solidity: The Complete Developer's Guide"&lt;/p&gt;

&lt;p&gt;Giảng viên: Stephen Grider&lt;br&gt;
Nội dung: Tìm hiểu về Ethereum, Solidity, tạo smart contracts, và phát triển ứng dụng phi tập trung (DApps).&lt;br&gt;
Xem chi tiết khóa học&lt;br&gt;
"Blockchain and Cryptocurrency Explained"&lt;/p&gt;

&lt;p&gt;Giảng viên: Ravinder Deol, Buidl School&lt;br&gt;
Nội dung: Giải thích cơ bản về blockchain, cryptocurrency, và cách chúng tương tác với nhau.&lt;br&gt;
Xem chi tiết khóa học&lt;br&gt;
"Web3.js: The Complete Guide (2022 Edition)"&lt;/p&gt;

&lt;p&gt;Giảng viên: David Katz&lt;br&gt;
Nội dung: Hướng dẫn sâu sắc về Web3.js, thư viện JavaScript để tương tác với blockchain Ethereum.&lt;br&gt;
Xem chi tiết khóa học&lt;br&gt;
"Blockchain A-Z™: Learn How To Build Your First Blockchain"&lt;/p&gt;

&lt;p&gt;Giảng viên: Hadelin de Ponteves, Kirill Eremenko, SuperDataScience Team&lt;br&gt;
Nội dung: Xây dựng một blockchain đơn giản và hiểu rõ cơ bản về công nghệ blockchain.&lt;br&gt;
Xem chi tiết khóa học&lt;br&gt;
"Master Ethereum: A How to Guide for Building Apps on Ethereum"&lt;/p&gt;

&lt;p&gt;Giảng viên: Gregory McCubbin&lt;br&gt;
Nội dung: Hướng dẫn chi tiết về cách phát triển ứng dụng trên nền tảng Ethereum.&lt;br&gt;
Xem chi tiết khóa học&lt;br&gt;
"Blockchain Basics: A Practical Approach"&lt;/p&gt;

&lt;p&gt;Giảng viên: George Levy&lt;br&gt;
Nội dung: Tìm hiểu về các khái niệm cơ bản của blockchain và cách chúng áp dụng trong thực tế.&lt;br&gt;
Xem chi tiết khóa học&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git cho Người Mới Bắt Đầu: Các khái niệm cơ bản</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Wed, 25 Oct 2023 04:19:45 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/git-cho-nguoi-moi-bat-dau-cac-khai-niem-co-ban-3co7</link>
      <guid>https://dev.to/phamtuanchip/git-cho-nguoi-moi-bat-dau-cac-khai-niem-co-ban-3co7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0offvupd0aejylgl0frb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0offvupd0aejylgl0frb.jpg" alt=" " width="640" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git là một hệ thống quản lý phiên bản mạnh mẽ giúp nhà phát triển quản lý mã nguồn của họ, hợp tác với người khác và theo dõi sự thay đổi trong dự án của họ. Cho dù bạn là một nhà phát triển phần mềm, một người thiết kế hoặc bất kỳ ai đang làm việc trên một dự án liên quan đến tệp và mã nguồn, Git là một công cụ cần thiết phải hiểu. Trong bài viết này, chúng tôi sẽ cung cấp một sự giới thiệu chi tiết về Git dành cho người mới bắt đầu, bao gồm các khái niệm cơ bản, các lệnh phổ biến và ưu điểm và nhược điểm của nó.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Hiểu về Git&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Git là một hệ thống quản lý phiên bản phân tán cho phép nhiều người làm việc trên cùng một dự án mà không gây xung đột. Nó theo dõi sự thay đổi trong tệp qua thời gian và duy trì một lịch sử hoàn chỉnh của tất cả các thay đổi, giúp dễ dàng hợp tác và quay lại phiên bản trước đó khi cần.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Các Khái Niệm Cơ Bản&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Trước khi chúng ta tìm hiểu về các lệnh Git, hãy tìm hiểu một số khái niệm cơ bản:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kho lưu trữ (Repo)&lt;/strong&gt;: Một kho lưu trữ tương tự như thư mục dự án, nơi Git lưu trữ tất cả các tệp và lịch sử thay đổi của chúng.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Commit&lt;/strong&gt;: Một commit là một bản chụp của dự án tại một thời điểm cụ thể. Mỗi commit đại diện cho một bộ thay đổi được thực hiện trên dự án.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nhánh (Branch)&lt;/strong&gt;: Một nhánh là một dòng phát triển riêng lẻ. Bạn có thể có nhiều nhánh trong một kho lưu trữ, cho phép bạn làm việc trên các tính năng hoặc sửa lỗi khác nhau cùng một lúc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sao chép (Clone)&lt;/strong&gt;: Tạo một bản sao của kho lưu trữ từ xa trên máy tính cá nhân.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kéo về (Pull)&lt;/strong&gt;: Lấy các thay đổi mới nhất từ kho lưu trữ từ xa và ghép chúng vào nhánh cục bộ của bạn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Đẩy lên (Push)&lt;/strong&gt;: Đưa các thay đổi cục bộ của bạn lên kho lưu trữ từ xa.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hợp nhất (Merge)&lt;/strong&gt;: Kết hợp các thay đổi từ một nhánh vào nhánh hiện tại.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Xung đột (Conflict)&lt;/strong&gt;: Xuất hiện khi Git không thể tự động hợp nhất các thay đổi và bạn cần giải quyết chúng bằng tay.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Các Lệnh Git Phổ Biến&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Dưới đây là một số lệnh Git phổ biến để bạn bắt đầu:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. &lt;code&gt;git init&lt;/code&gt;&lt;/strong&gt;: Khởi tạo một kho lưu trữ Git mới trong thư mục hiện tại.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. &lt;code&gt;git clone [URL kho lưu trữ]&lt;/code&gt;&lt;/strong&gt;: Tạo một bản sao cục bộ của kho lưu trữ từ xa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. &lt;code&gt;git add [tệp]&lt;/code&gt;&lt;/strong&gt;: Đặt các thay đổi vào trạng thái chuẩn bị để commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. &lt;code&gt;git commit -m "Thông điệp commit của bạn"&lt;/code&gt;&lt;/strong&gt;: Commit các thay đổi đã chuẩn bị với một thông điệp mô tả.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. &lt;code&gt;git pull&lt;/code&gt;&lt;/strong&gt;: Lấy các thay đổi mới nhất từ kho lưu trữ từ xa và hợp nhất chúng vào nhánh cục bộ của bạn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. &lt;code&gt;git push&lt;/code&gt;&lt;/strong&gt;: Đẩy các commit cục bộ của bạn lên kho lưu trữ từ xa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. &lt;code&gt;git branch&lt;/code&gt;&lt;/strong&gt;: Liệt kê tất cả các nhánh trong kho lưu trữ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. &lt;code&gt;git checkout [nhánh]&lt;/code&gt;&lt;/strong&gt;: Chuyển đổi sang một nhánh khác.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. &lt;code&gt;git merge [nhánh]&lt;/code&gt;&lt;/strong&gt;: Hợp nhất các thay đổi từ một nhánh vào nhánh hiện tại.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. &lt;code&gt;git status&lt;/code&gt;&lt;/strong&gt;: Hiển thị trạng thái của nhánh hiện tại của bạn, bao gồm các thay đổi chưa commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ưu điểm và Nhược Điểm của Git&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Ưu điểm:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quản Lý Phiên Bản&lt;/strong&gt;: Git theo dõi sự thay đổi một cách chi tiết, giúp dễ dàng hợp tác và quay lại các phiên bản trước đó.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phân Tán&lt;/strong&gt;: Bạn có thể làm việc ngoại tuyến và hợp tác với người khác mà không cần kết nối internet liên tục.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nhánh (Branch)&lt;/strong&gt;: Tạo ra các nhánh cho phát triển tính năng mới và sửa lỗi mà không làm ảnh hưởng đến dự án chính.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hỗ Trợ Cộng Đồng&lt;/strong&gt;: Git có một cộng đồ&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ng lớn và tích cực, bạn có thể dễ dàng tìm kiếm sự trợ giúp và tài liệu trực tuyến.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nhược Điểm:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phức Tạp&lt;/strong&gt;: Git có thể khá phức tạp cho người mới bắt đầu do nhiều tính năng và lệnh.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Khó Khăn Trong Quá Trình Học&lt;/strong&gt;: Có thể cần thời gian để trở nên thành thạo về Git và các tính năng nâng cao của nó.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Giao Diện Dòng Lệnh&lt;/strong&gt;: Một số người có thể cảm thấy giao diện dòng lệnh đáng sợ.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Xung Đột Hợp Nhất Mã (Merge Conflicts)&lt;/strong&gt;: Việc giải quyết xung đột hợp nhất có thể khó khăn, đặc biệt trong các dự án lớn hơn.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Tóm Lại&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Với kiến thức cơ bản về Git và các lệnh phổ biến, bạn đã có một bước đầu tiên trong việc quản lý mã nguồn và hợp tác hiệu quả trên dự án của mình. Git có thể là một công cụ mạnh mẽ, mặc dù có một số khía cạnh phức tạp, nhưng với thời gian và sự thực hành, bạn sẽ trở thành một chuyên gia về Git. Chúc bạn may mắn và hãy tiếp tục học hỏi!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hãy thỏa sức khám phá nhiều tài liệu và tài nguyên Git khác và luyện tập để trở nên thành thạo hơn với công cụ quan trọng này trong phát triển phần mềm hiện đại. Đây là một trong những công cụ CẦN PHẢI CÓ của bất kỳ bạn nào muốn đi theo lĩnh vực phát triển phần mềm.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/phamtuanchip" rel="noopener noreferrer"&gt;Nếu thấy bài hữu ích gửi cho tôi 1 cốc cà phê &lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Theo dõi các bài viết tiếp theo về phần nâng cao&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>git</category>
      <category>work</category>
    </item>
    <item>
      <title>Lập Trình C++ Cho Người Mới Bắt Đầu</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Sun, 24 Sep 2023 07:15:47 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/lap-trinh-c-cho-nguoi-moi-bat-dau-3672</link>
      <guid>https://dev.to/phamtuanchip/lap-trinh-c-cho-nguoi-moi-bat-dau-3672</guid>
      <description>&lt;p&gt;C++ là một trong những ngôn ngữ lập trình phổ biến và mạnh mẽ nhất trên thế giới. Được tạo ra bởi Bjarne Stroustrup vào những năm 1980, C++ là một phiên bản mở rộng của ngôn ngữ C, với sự bổ sung của hướng đối tượng. Dưới đây, chúng tôi sẽ giới thiệu bạn về C++, bao gồm lịch sử, thuật toán, các khái niệm cơ bản và ví dụ mã nguồn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lịch Sử Ra Đời của C++&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C++ ra đời từ ngôn ngữ C, là một sự phát triển hướng đối tượng. Bjarne Stroustrup, người sáng lập C++, đặt ra mục tiêu tạo ra một ngôn ngữ mà kết hợp tính linh hoạt và hiệu suất của C với tính năng hướng đối tượng. Ngôn ngữ C++ chính thức xuất hiện vào năm 1983 và đã trải qua nhiều phiên bản và sửa đổi từ đó.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thuật Toán và Thuật Giải Trong C++&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C++ là một ngôn ngữ mạnh mẽ cho việc triển khai thuật toán và thuật giải. Bạn có thể viết mã để giải quyết các vấn đề phức tạp như sắp xếp dãy số, tìm kiếm, đồ thị, và nhiều thuật toán khác. Thư viện chuẩn của C++ cung cấp nhiều cấu trúc dữ liệu và thuật giải sẵn có như vector, map, set, và thuật toán như sort, binary_search.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Các Từ Khóa C++ Cơ Bản&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C++ có một số từ khóa quan trọng để kiểm soát luồng của chương trình, bao gồm &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;else&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;while&lt;/code&gt;, và &lt;code&gt;switch&lt;/code&gt;. Đây là một ví dụ sử dụng &lt;code&gt;if&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Bạn đã đủ tuổi."&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Bạn chưa đủ tuổi."&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Các Loại Biến&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Trong C++, bạn có thể sử dụng nhiều loại biến khác nhau như int (số nguyên), double (số thực), string (chuỗi ký tự), và nhiều loại dữ liệu khác. Ví dụ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;pi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.14159&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"John"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Toán Tử&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C++ hỗ trợ nhiều toán tử để thực hiện các phép tính. Ví dụ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// sum = 15&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;difference&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// difference = 5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Các Thư Viện Chuẩn&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C++ đi kèm với một thư viện chuẩn mạnh mẽ, bao gồm &lt;code&gt;iostream&lt;/code&gt; cho đầu vào và đầu ra, &lt;code&gt;vector&lt;/code&gt; và &lt;code&gt;algorithm&lt;/code&gt; cho cấu trúc dữ liệu và thuật toán, và nhiều thư viện khác. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiểu Dữ Liệu Cơ Bản và Mở Rộng&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C++ cung cấp kiểu dữ liệu cơ bản như &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;double&lt;/code&gt;, &lt;code&gt;char&lt;/code&gt;, và kiểu dữ liệu mở rộng như &lt;code&gt;long long&lt;/code&gt;, &lt;code&gt;float&lt;/code&gt;, &lt;code&gt;bool&lt;/code&gt;. Ví dụ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.14159&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;isTrue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Hướng Đối Tượng trong C++&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hướng đối tượng là một khía cạnh quan trọng của C++. Bạn có thể tạo lớp và đối tượng để tổ chức mã của mình thành các đối tượng riêng biệt. Dưới đây là một ví dụ đơn giản:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;public:&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;bark&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Gâu gâu!"&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Dog&lt;/span&gt; &lt;span class="n"&gt;myDog&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;myDog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bark&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trong ví dụ này, chúng ta tạo một lớp &lt;code&gt;Dog&lt;/code&gt; và sử dụng đối tượng &lt;code&gt;myDog&lt;/code&gt; của lớp này để gọi phương thức &lt;code&gt;bark()&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Để bắt đầu với C++ chúng ta sẽ có thể tìm hiểu từ các bước sau:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Cài Đặt Môi Trường Phát Triển&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Trước tiên, bạn cần cài đặt một môi trường phát triển C++ trên máy tính của bạn. Một trong những lựa chọn phổ biến là sử dụng IDE như Visual Studio Code, CLion, hoặc Code::Blocks. Đảm bảo bạn đã cài đặt trình biên dịch C++ như g++ (trên Linux) hoặc MinGW (trên Windows) nếu bạn sử dụng môi trường phát triển khác.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ngoài ra chúng ta có thể sử dụng các môi trường hỗ trợ lập trình cơ bản trên nền trình duyệt ở đây &lt;a href="https://www.tutorialspoint.com/compile_cpp_online.php" rel="noopener noreferrer"&gt;https://www.tutorialspoint.com/compile_cpp_online.php&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Chương Trình C++ Đầu Tiên&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Hãy tạo một tập tin mới với phần mở rộng &lt;code&gt;.cpp&lt;/code&gt;, ví dụ: &lt;code&gt;hello.cpp&lt;/code&gt;. Mở tập tin này bằng trình soạn thảo yêu thích của bạn và thêm mã sau:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Xin chào, C++!"&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&lt;/code&gt;: Dòng này cho phép sử dụng thư viện &lt;code&gt;iostream&lt;/code&gt; để làm việc với đầu vào và đầu ra. Thư viện này cung cấp đối tượng &lt;code&gt;cout&lt;/code&gt; để xuất dữ liệu ra màn hình.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;int main()&lt;/code&gt;: Đây là hàm chính của chương trình. Mọi chương trình C++ phải có một hàm &lt;code&gt;main&lt;/code&gt;, và nó là điểm bắt đầu của chương trình.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;std::cout &amp;lt;&amp;lt; "Xin chào, C++!" &amp;lt;&amp;lt; std::endl;&lt;/code&gt;: Dòng này sử dụng &lt;code&gt;cout&lt;/code&gt; để in ra dòng chữ "Xin chào, C++!" trên màn hình.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;return 0;&lt;/code&gt;: Chương trình trả về giá trị 0 để thể hiện rằng nó thực hiện thành công.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Biên Dịch và Chạy Chương Trình&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Nếu bạn sử dụng Visual Studio Code, bạn có thể sử dụng extension C/C++ để biên dịch và chạy chương trình. Nếu bạn sử dụng trình biên dịch g++, mở terminal và gõ lệnh sau:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;g++ &lt;span class="nt"&gt;-o&lt;/span&gt; hello hello.cpp
./hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lệnh đầu tiên biên dịch tập tin &lt;code&gt;hello.cpp&lt;/code&gt; và tạo một tập tin thực thi có tên &lt;code&gt;hello&lt;/code&gt;. Lệnh thứ hai chạy chương trình.&lt;/p&gt;

&lt;p&gt;Kết quả trên màn hình sẽ là:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Xin chào, C++!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. &lt;strong&gt;Các Khái Niệm Cơ Bản Thêm&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Biến&lt;/strong&gt;: Hãy tạo biến để lưu trữ dữ liệu. Ví dụ:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;pi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.14159&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"John"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Toán tử&lt;/strong&gt;: Sử dụng các toán tử như +, -, *, / để thực hiện phép tính.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cấu trúc điều kiện&lt;/strong&gt;: Sử dụng câu lệnh &lt;code&gt;if&lt;/code&gt; để kiểm tra điều kiện:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Bạn đã đủ tuổi."&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Bạn chưa đủ tuổi."&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vòng lặp&lt;/strong&gt;: Sử dụng vòng lặp &lt;code&gt;for&lt;/code&gt; hoặc &lt;code&gt;while&lt;/code&gt; để lặp qua một chuỗi lệnh nhiều lần.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Số "&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hàm&lt;/strong&gt;: Bạn có thể tạo và sử dụng các hàm để tạo các đoạn mã nguồn con.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;"Xin chào từ hàm!"&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chúc bạn học tốt và thành công trong việc phát triển kỹ năng lập trình C++!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/phamtuanchip" rel="noopener noreferrer"&gt;Nếu thấy bài hữu ích gửi cho tôi 1 cốc cà phê &lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <title>So Sánh Kanban và Scrum: Giống Nhau và Khác Nhau</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Tue, 15 Aug 2023 10:44:58 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/so-sanh-kanban-va-scrum-giong-nhau-va-khac-nhau-4jdg</link>
      <guid>https://dev.to/phamtuanchip/so-sanh-kanban-va-scrum-giong-nhau-va-khac-nhau-4jdg</guid>
      <description>&lt;p&gt;Kanban và Scrum đều là hai phương pháp quản lý dự án linh hoạt được sử dụng rộng rãi trong phát triển phần mềm và nhiều lĩnh vực khác. Mặc dù cả hai đều hướng tới tối ưu hóa quy trình làm việc, chúng có những sự giống và khác nhau quan trọng. Dưới đây là một bảng so sánh chi tiết giữa Kanban và Scrum:&lt;/p&gt;

&lt;h1&gt;
  
  
  So sánh
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Yếu Tố&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Kanban&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Scrum&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tự Quản Lý&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Nhóm quyết định cách thức triển khai và thay đổi quy trình.&lt;/td&gt;
&lt;td&gt;Quy trình cố định, sự quản lý được thực hiện qua các sự kiện.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Thời Gian Và Sự Kiện&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Không yêu cầu các sự kiện cố định như Sprint hoặc Daily Scrum.&lt;/td&gt;
&lt;td&gt;Các sự kiện cố định như Sprint Planning, Daily Scrum.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quản Lý Công Việc&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Theo hình thức "hệ thống kéo" - chỉ thực hiện công việc mới khi có sự cần thiết.&lt;/td&gt;
&lt;td&gt;Theo hình thức "hệ thống đẩy" - công việc được đưa vào Sprint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quản Lý Sản Phẩm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hướng tới tối ưu hóa hiệu suất dự án và quy trình.&lt;/td&gt;
&lt;td&gt;Tập trung vào việc cung cấp giá trị cho khách hàng.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lập Lịch&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Công việc có thể được bắt đầu và hoàn thành bất kỳ lúc nào.&lt;/td&gt;
&lt;td&gt;Công việc được lập lịch trong suốt Sprint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quản Lý Lượng Công Việc&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Quản lý dự án dựa trên tình hình thực tế và tải công việc hiện tại.&lt;/td&gt;
&lt;td&gt;Quản lý dự án dựa trên tốc độ công việc trong Sprint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sự Linh Hoạt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Có khả năng thay đổi quy trình và hiển thị công việc một cách linh hoạt.&lt;/td&gt;
&lt;td&gt;Quy trình và sự kiện có cố định, ít thay đổi.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ưu Điểm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Linh hoạt, dễ dàng thích nghi với thay đổi.&lt;/td&gt;
&lt;td&gt;Có cấu trúc rõ ràng, thúc đẩy khả năng cung cấp sản phẩm.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Khuyết Điểm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Có thể dẫn đến sự mơ hồ và thiếu sự tập trung.&lt;/td&gt;
&lt;td&gt;Yêu cầu kế hoạch và thời gian cố định cho Sprint.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Chọn cái nào?
&lt;/h1&gt;

&lt;p&gt;Lựa chọn mô hình phát triển dự án phụ thuộc vào nhiều yếu tố, bao gồm tính chất của dự án, mục tiêu, độ phức tạp, yêu cầu thay đổi, và cả tính chất của nhóm làm việc. Dưới đây là một hướng dẫn giúp bạn xác định mô hình phù hợp dựa trên các yếu tố này:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;strong&gt;Kanban:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Khi sử dụng:&lt;/strong&gt; Mô hình Kanban thích hợp cho dự án có tính chất linh hoạt và động thái cao, trong đó yêu cầu thay đổi thường xuyên.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mục tiêu:&lt;/strong&gt; Kanban giúp tối ưu hóa quy trình làm việc hiện tại, giảm thời gian chờ và tăng khả năng thích nghi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lợi ích:&lt;/strong&gt; Dễ dàng thích nghi với thay đổi, linh hoạt trong việc quản lý quy trình, tạo điều kiện cho sự cải thiện liên tục.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yêu cầu đội:&lt;/strong&gt; Đội làm việc cần có khả năng tự quản lý, tạo quy trình làm việc cùng nhau, và làm việc một cách linh hoạt để đáp ứng yêu cầu thay đổi.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. &lt;strong&gt;Scrum:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Khi sử dụng:&lt;/strong&gt; Scrum thích hợp cho các dự án có mục tiêu rõ ràng, sự phân chia công việc cụ thể và yêu cầu phát triển sản phẩm theo chu kỳ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mục tiêu:&lt;/strong&gt; Scrum tập trung vào việc cung cấp giá trị cho khách hàng thông qua các phiên bản sản phẩm định kỳ (Sprint).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lợi ích:&lt;/strong&gt; Có cấu trúc rõ ràng, tạo sự định hướng cho đội làm việc, thúc đẩy khả năng cung cấp sản phẩm theo mục tiêu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yêu cầu đội:&lt;/strong&gt; Đội làm việc cần phải tham gia vào các sự kiện Scrum cố định như Sprint Planning, Daily Scrum và Sprint Review. Yêu cầu tương đối nghiêm ngặt về kế hoạch và thời gian.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. &lt;strong&gt;Mô hình Khác:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ngoài Kanban và Scrum, còn nhiều mô hình khác như Lean, Extreme Programming (XP), và Waterfall. Các mô hình này cũng có ứng dụng của riêng mình:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lean:&lt;/strong&gt; Thích hợp cho dự án cần tập trung vào loại bỏ lãng phí và tối ưu hóa quy trình sản xuất.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extreme Programming (XP):&lt;/strong&gt; Phù hợp với dự án cần chú trọng vào phát triển mã nguồn chất lượng cao và kiểm thử tương đối nghiêm ngặt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Waterfall:&lt;/strong&gt; Được sử dụng cho các dự án có yêu cầu cố định và thể hiện rõ ràng từng giai đoạn.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kết Luận
&lt;/h2&gt;

&lt;p&gt;Sự so sánh giữa Kanban và Scrum qua bảng trên đã làm nổi bật những điểm quan trọng về cả hai phương pháp quản lý dự án linh hoạt. Dựa vào mục tiêu và tình hình cụ thể của dự án, bạn có thể lựa chọn phương pháp phù hợp để tối ưu hóa quy trình làm việc và cung cấp giá trị cho khách hàng một cách hiệu quả nhất.&lt;/p&gt;

&lt;p&gt;Lựa chọn mô hình phát triển phụ thuộc vào các yếu tố như tính chất của dự án, yêu cầu thay đổi, tính chất của nhóm làm việc, và mục tiêu cuối cùng của dự án. Một hiểu biết rõ ràng về các mô hình và tính chất của dự án sẽ giúp bạn chọn lựa phương pháp phát triển phù hợp để đạt được hiệu suất tốt nhất và cung cấp giá trị cho khách hàng.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/phamtuanchip" rel="noopener noreferrer"&gt;Nếu thấy bài hữu ích gửi cho tôi 1 cốc cà phê &lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hiểu thế nào cho đúng về scrum master?</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Tue, 15 Aug 2023 10:39:47 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/hieu-the-nao-cho-dung-ve-scrum-master-2jo1</link>
      <guid>https://dev.to/phamtuanchip/hieu-the-nao-cho-dung-ve-scrum-master-2jo1</guid>
      <description>&lt;p&gt;Scrum Master là một vai trò quan trọng trong quá trình triển khai và duy trì phương pháp Agile Scrum trong môi trường phát triển phần mềm. Tuy nhiên, do sự hiểu biết hạn chế hoặc những thông tin không chính xác, có thể dẫn đến sự hiểu sai về vai trò Scrum Master. Dưới đây là một số hiểu sai phổ biến mà người ta có thể có về Scrum Master:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;strong&gt;Scrum Master Là Quản Lý Dự Án:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sai lầm:&lt;/strong&gt; Một trong những hiểu lầm thường gặp nhất về Scrum Master là coi họ là người quản lý dự án.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thực tế:&lt;/strong&gt; Scrum Master không phải là người quản lý dự án theo kiểu truyền thống. Vai trò này tập trung hướng dẫn và hỗ trợ nhóm phát triển để thực hiện quy trình Agile Scrum một cách hiệu quả. Scrum Master không quản lý công việc của các thành viên nhóm, mà thay vào đó họ giúp nhóm tự quản lý.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;strong&gt;Scrum Master Chịu Trách Nhiệm Về Sản Phẩm:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sai lầm:&lt;/strong&gt; Một số người nghĩ rằng Scrum Master chịu trách nhiệm về việc phát triển sản phẩm và cả việc hoàn thành dự án.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thực tế:&lt;/strong&gt; Scrum Master không chịu trách nhiệm về sản phẩm hoặc kết quả cuối cùng của dự án. Trách nhiệm này thuộc về Product Owner và toàn bộ nhóm phát triển. Scrum Master chỉ đảm bảo rằng quy trình Scrum được thực hiện đúng cách.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;strong&gt;Scrum Master Là Người Chỉ Đạo:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sai lầm:&lt;/strong&gt; Một số người coi Scrum Master như người chỉ đạo, yêu cầu mọi người thực hiện theo chỉ thị của họ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thực tế:&lt;/strong&gt; Scrum Master không là người chỉ đạo, họ không ra lệnh cho nhóm làm gì. Thay vào đó, Scrum Master tạo ra môi trường thúc đẩy sự tự quản lý và sáng tạo của nhóm. Họ giúp nhóm hiểu và tuân theo các nguyên tắc và quy trình Agile Scrum.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. &lt;strong&gt;Scrum Master Là Chuyên Gia Công Nghệ:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sai lầm:&lt;/strong&gt; Một số người cho rằng Scrum Master cần phải là chuyên gia về công nghệ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thực tế:&lt;/strong&gt; Scrum Master không cần phải là chuyên gia về công nghệ. Quan trọng hơn, họ cần hiểu về quy trình Agile Scrum, có khả năng giao tiếp tốt và tạo môi trường thuận lợi cho sự hợp tác trong nhóm.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. &lt;strong&gt;Scrum Master Giải Quyết Mọi Vấn Đề Cho Nhóm:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sai lầm:&lt;/strong&gt; Một hiểu lầm khác là Scrum Master phải giải quyết mọi vấn đề cho nhóm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thực tế:&lt;/strong&gt; Scrum Master không giải quyết mọi vấn đề thay mọi người trong nhóm. Họ tạo điều kiện cho nhóm giải quyết vấn đề một cách tự chủ và hỗ trợ khi cần.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết Luận
&lt;/h2&gt;

&lt;p&gt;Scrum Master không phải là người quản lý dự án truyền thống. Họ là người hướng dẫn, hỗ trợ, và tạo điều kiện cho nhóm thực hiện quy trình Agile Scrum một cách hiệu quả. Hiểu biết chính xác về vai trò của Scrum Master giúp tạo ra môi trường làm việc tích cực và sáng tạo trong quá trình phát triển sản phẩm.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Agile: Khám phá Tương lai Phát triển Phần mềm</title>
      <dc:creator>Tommy</dc:creator>
      <pubDate>Sun, 13 Aug 2023 07:34:48 +0000</pubDate>
      <link>https://dev.to/phamtuanchip/agile-kham-pha-tuong-lai-phat-trien-phan-mem-2nje</link>
      <guid>https://dev.to/phamtuanchip/agile-kham-pha-tuong-lai-phat-trien-phan-mem-2nje</guid>
      <description>&lt;p&gt;Trong thời đại hiện đại với sự thay đổi nhanh chóng và tốc độ cạnh tranh ngày càng cao, phương pháp phát triển phần mềm truyền thống đã không còn đáp ứng được nhu cầu của thị trường. Để đối phó với những thách thức này, Agile đã ra đời với triết lý linh hoạt, tạo nên cuộc cách mạng trong lĩnh vực phát triển phần mềm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lịch sử và Khái niệm Agile:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agile ra đời vào những năm 1990, là kết quả của sự tập trung của một nhóm các chuyên gia trong lĩnh vực phát triển phần mềm như Kent Beck, Jeff Sutherland, Ken Schwaber và nhiều người khác. Họ đã thấy những hạn chế của mô hình phát triển phần mềm truyền thống như "Waterfall" (lặng sóng), nơi phát triển diễn ra theo một chuỗi tuyến tính các giai đoạn.&lt;/p&gt;

&lt;p&gt;Agile tập trung vào việc tạo ra giá trị thực sự cho khách hàng thông qua việc liên tục cải thiện sản phẩm, phản hồi nhanh chóng và khả năng thích ứng linh hoạt với thay đổi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lý do Agile ra đời:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agile ra đời để đối phó với những thách thức mà phương pháp phát triển truyền thống không thể giải quyết. Trong khi Waterfall yêu cầu xác định rõ ràng và chi tiết từ đầu đến cuối dự án, Agile thừa nhận rằng yêu cầu và điều kiện có thể thay đổi trong quá trình phát triển.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So sánh với các mô hình khác:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Waterfall:&lt;/strong&gt; Khác với Agile, Waterfall áp đặt một quá trình tuyến tính và khó thay đổi khi yêu cầu hay tình hình thay đổi.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;XP (Extreme Programming):&lt;/strong&gt; XP tập trung vào chất lượng mã và thường áp dụng trong các dự án nhỏ, với các phương pháp kiểm tra và sửa chữa liên tục.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RUP (Rational Unified Process):&lt;/strong&gt; RUP kết hợp linh hoạt và tiến bộ, nhưng nhiều khía cạnh của nó vẫn cần sự xác định từ đầu.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Agile tại Việt Nam và ứng dụng Kanban, Scrum:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Năm 2009, Tôi bắt đầu được tiếp cận với Agile tại Việt Nam khi các chuyên gia phát triển phần mềm mang kiến thức nền tảng ở châu âu qua đào tạo và tôi nhận ra tầm quan trọng của việc áp dụng các phương pháp linh hoạt trong môi trường công việc của chúng tôi.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Kanban:&lt;/strong&gt; Được lấy cảm hứng từ ngành sản xuất, Kanban là một phương pháp quản lý quá trình làm việc, giúp tối ưu hóa hiệu suất và kiểm soát quá trình phát triển.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scrum:&lt;/strong&gt; Scrum là một phương pháp quản lý dự án theo các vòng lặp ngắn, gọi là "Sprints", trong đó các yêu cầu được ưu tiên và thực hiện trong mỗi Sprint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Điểm mạnh của Agile:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Linh hoạt và thích ứng:&lt;/strong&gt; Agile cho phép thay đổi yêu cầu và ưu tiên trong quá trình phát triển, giúp đảm bảo rằng sản phẩm luôn phản ánh những thay đổi trong môi trường kinh doanh và yêu cầu của khách hàng.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phản hồi nhanh chóng:&lt;/strong&gt; Các chu kỳ ngắn và liên tục cải tiến trong Agile giúp tạo ra sản phẩm chất lượng cao và khả năng đáp ứng nhanh chóng với phản hồi từ khách hàng.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tạo giá trị thực sự:&lt;/strong&gt; Agile tập trung vào việc tạo ra giá trị cho khách hàng thông qua việc phát triển các tính năng quan trọng và hữu ích đầu tiên.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tích hợp liên tục:&lt;/strong&gt; Agile khuyến khích tích hợp liên tục và kiểm tra liên tục để đảm bảo rằng mã nguồn luôn ổn định và có khả năng hoạt động tốt.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Điểm yếu của Agile:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phù hợp không đối xứng:&lt;/strong&gt; Agile thích hợp với các dự án nhỏ hoặc có tính chất biến đổi cao. Đối với các dự án lớn và phức tạp, việc quản lý và đồng bộ hóa có thể trở nên khó khăn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Yêu cầu sự tham gia mạnh mẽ từ khách hàng:&lt;/strong&gt; Agile yêu cầu sự tương tác liên tục với khách hàng để hiểu rõ yêu cầu và thay đổi. Nếu không có sự hợp tác tốt từ phía khách hàng, dự án có thể gặp khó khăn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Khả năng quản lý thời gian và nguồn lực:&lt;/strong&gt; Việc quản lý thời gian và nguồn lực trong các chu kỳ ngắn có thể đòi hỏi kiến thức và kỹ năng quản lý cao.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Mô hình thay thế trong tương lai:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hiện tại, không có mô hình cụ thể nào có thể hoàn toàn thay thế Agile vì nó đã chứng minh khả năng linh hoạt và thích ứng của mình. Tuy nhiên, có một số xu hướng đang phát triển mà có thể tương lai sẽ thúc đẩy sự phát triển của chúng:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DevOps và Continuous Delivery:&lt;/strong&gt; DevOps kết hợp phát triển phần mềm và hoạch định hoạt động (operations), tạo ra một quá trình liên tục từ việc phát triển đến triển khai. Điều này có thể thay đổi cách chúng ta hiểu về quản lý và phát triển phần mềm.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI và tự động hóa:&lt;/strong&gt; Sự phát triển của trí tuệ nhân tạo và tự động hóa có thể tạo ra các phương pháp mới cho việc phát triển và quản lý phần mềm.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hybrid Approaches:&lt;/strong&gt; Có thể xuất hiện các phương pháp kết hợp giữa các mô hình khác nhau để tận dụng những ưu điểm riêng biệt của chúng.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Tuy nhiên, điều quan trọng là tương lai phát triển của phương pháp phát triển phần mềm sẽ phụ thuộc vào sự biến đổi của môi trường kinh doanh và công nghệ.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Một số điểm lưu ý khi áp dụng vào quản lý dự án phần mềm:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Sự tham gia và hợp tác:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đảm bảo sự tham gia tích cực và hợp tác từ phía khách hàng và người dùng cuối.&lt;/li&gt;
&lt;li&gt;Thiết lập cơ chế liên lạc thường xuyên để đảm bảo thông tin được chia sẻ một cách hiệu quả.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Ưu tiên và quản lý yêu cầu:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xác định các yêu cầu quan trọng nhất và ưu tiên chúng trong từng chu kỳ phát triển.&lt;/li&gt;
&lt;li&gt;Sẵn sàng thay đổi yêu cầu khi cần thiết, nhưng cần đảm bảo rằng thay đổi không làm mất đi tính linh hoạt của quá trình Agile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Lập kế hoạch và dự báo:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xác định thời gian và nguồn lực cần thiết cho từng chu kỳ phát triển.&lt;/li&gt;
&lt;li&gt;Điều chỉnh kế hoạch dựa trên phản hồi liên tục và hiệu suất của nhóm phát triển.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Chu kỳ phát triển (Sprints):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xác định thời gian cho các chu kỳ phát triển (Sprints) sao cho phù hợp với khả năng và tình trạng của nhóm.&lt;/li&gt;
&lt;li&gt;Chia nhỏ yêu cầu thành các nhiệm vụ cụ thể trong từng Sprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Sự phản hồi và cải tiến:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tổ chức cuộc họp hàng ngày (Daily Standup) để theo dõi tiến độ, đưa ra sự phản hồi và giải quyết vấn đề.&lt;/li&gt;
&lt;li&gt;Sử dụng cuộc họp Retrospective để đánh giá và cải tiến quá trình làm việc của nhóm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Kiểm tra và tích hợp liên tục:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đảm bảo rằng mã nguồn luôn ổn định và kiểm tra liên tục để đảm bảo chất lượng sản phẩm.&lt;/li&gt;
&lt;li&gt;Tích hợp mã nguồn thường xuyên để tránh việc tích hợp lớn và gây xáo trộn.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7. Quản lý rủi ro:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nhận diện và ước tính rủi ro liên quan đến việc thay đổi yêu cầu, tình trạng của dự án, v.v.&lt;/li&gt;
&lt;li&gt;Xác định các kế hoạch khắc phục và giảm thiểu tác động của rủi ro.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;8. Sự tự quản lý của nhóm:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Khuyến khích sự tự quản lý và đồng cảm giữa các thành viên trong nhóm.&lt;/li&gt;
&lt;li&gt;Tạo cơ hội cho các thành viên thể hiện ý kiến và đóng góp trong quá trình phát triển.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;9. Hiểu rõ về mô hình Agile:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đảm bảo tất cả các thành viên trong nhóm hiểu rõ về nguyên tắc và phương pháp làm việc của Agile.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Nhớ rằng, Agile không phải là một quy trình cứng nhắc, mà là một triết lý linh hoạt và thích ứng. Điều quan trọng là thích nghi và điều chỉnh quy trình theo tình hình cụ thể của dự án và tổ chức.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Ứng dụng trong các lĩnh vực khác&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Sản xuất sản phẩm vật lý:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Thay vì sản xuất toàn bộ một lô sản phẩm, bạn có thể tạo ra các phần nhỏ hoặc mẫu thử nghiệm để kiểm tra và phản hồi nhanh chóng.&lt;/li&gt;
&lt;li&gt;Áp dụng các chu kỳ ngắn trong quá trình sản xuất để cải thiện và tối ưu hóa hiệu suất.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Dịch vụ khách hàng:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Áp dụng Agile trong việc cải tiến dịch vụ khách hàng, như dịch vụ hỗ trợ hoặc quản lý dự án, thông qua việc tạo ra các chu kỳ ngắn để cải tiến dựa trên phản hồi từ khách hàng.&lt;/li&gt;
&lt;li&gt;Đặt khách hàng vào trung tâm quyết định và tạo cơ hội liên tục để thay đổi phản hồi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Quản lý sự kiện và dự án:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sử dụng chu kỳ ngắn để cải thiện và điều chỉnh kế hoạch sự kiện, hội thảo, hay dự án, dựa trên phản hồi từ người tham gia hoặc đối tác.&lt;/li&gt;
&lt;li&gt;Tổ chức cuộc họp hàng ngày để theo dõi tiến độ và điều chỉnh kế hoạch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Tiếp thị và quảng cáo:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sử dụng Agile để thích nghi với sự biến đổi nhanh chóng của thị trường và phản hồi từ khách hàng.&lt;/li&gt;
&lt;li&gt;Tạo ra các chiến dịch tiếp thị ngắn hạn và điều chỉnh chiến lược dựa trên hiệu suất thực tế.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Quản lý dự án xây dựng và kiến trúc:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Áp dụng Agile trong việc quản lý dự án xây dựng, tạo ra các chu kỳ ngắn để theo dõi tiến độ và thay đổi kế hoạch dựa trên tình hình thực tế.&lt;/li&gt;
&lt;li&gt;Điều chỉnh thiết kế và kế hoạch dựa trên phản hồi từ các bên liên quan và sự thay đổi của dự án.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Tuy nhiên, khi áp dụng Agile vào các lĩnh vực khác ngoài phát triển phần mềm, cần phải tùy chỉnh và điều chỉnh phương pháp để phù hợp với tình hình cụ thể của từng ngành và quy trình sản xuất.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Tìm kiếm các khoá học&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Các bạn có thể sử dụng từ khoá dưới đây để tìm kiếm khi tìm kiếm khóa học về Agile trên Udemy hoặc các nền tảng học trực tuyến khác:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agile Fundamentals:&lt;/strong&gt; Khóa học này cung cấp cái nhìn tổng quan về Agile, giúp bạn hiểu các nguyên tắc cơ bản và triết lý của phương pháp.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scrum Master Certification:&lt;/strong&gt; Nếu bạn quan tâm đến Scrum, có nhiều khóa học dành riêng cho việc chuẩn bị và đạt chứng chỉ Scrum Master.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kanban and Lean Agile:&lt;/strong&gt; Tìm kiếm khóa học về cách áp dụng Kanban và triết lý Lean vào quy trình làm việc của bạn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agile Project Management:&lt;/strong&gt; Các khóa học này tập trung vào cách quản lý dự án theo phương pháp Agile, bao gồm cách xác định yêu cầu, lập kế hoạch và theo dõi tiến độ.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agile Development with Specific Technologies:&lt;/strong&gt; Nếu bạn đang làm việc với một ngôn ngữ lập trình hoặc công nghệ cụ thể, hãy tìm kiếm các khóa học Agile liên quan đến ngôn ngữ hoặc công nghệ đó.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agile Leadership and Culture:&lt;/strong&gt; Khám phá cách thúc đẩy sự linh hoạt và triển khai văn hóa Agile trong tổ chức của bạn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agile Coaching and Facilitation:&lt;/strong&gt; Tìm hiểu cách trở thành một huấn luyện viên Agile và cách tạo điều kiện thuận lợi cho sự hợp tác và phát triển trong nhóm.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Trước khi mua bất kỳ khóa học nào, hãy đảm bảo đọc xem các đánh giá của học viên trước đó và kiểm tra chất lượng nội dung.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Kết luận&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agile đã mang lại sự thay đổi cách mạng trong lĩnh vực phát triển phần mềm bằng cách tập trung vào tương tác liên tục, phản hồi nhanh chóng và khả năng thích ứng linh hoạt với sự biến đổi. Việc áp dụng các phương pháp như Kanban và Scrum đã giúp các tổ chức tại Việt Nam cải thiện quá trình sản xuất phần mềm, đáp ứng tốt hơn với sự biến đổi nhanh chóng của thị trường. Từ đó đến nay, Agile đã trở thành một phần quan trọng của lĩnh vực phát triển phần mềm tại Việt Nam, và nhiều doanh nghiệp và tổ chức đã thành công trong việc áp dụng Agile để cải thiện quá trình phát triển sản phẩm và dịch vụ của họ.&lt;/p&gt;

&lt;p&gt;Nhưng Agile cũng không phải cây đũa thần. Mặc dù Agile mang lại nhiều lợi ích về linh hoạt, tương tác, và khả năng thích ứng với sự biến đổi, nhưng việc áp dụng Agile không đúng cách hoặc cồng kềnh có thể dẫn đến những vấn đề và khó khăn không mong muốn.&lt;/p&gt;

&lt;p&gt;Áp dụng Agile không đúng cách có thể dẫn đến việc quản lý yêu cầu không hiệu quả, làm cho dự án mất kiểm soát, và gây ra sự nhầm lẫn trong việc lập kế hoạch. Nếu không có sự tham gia tích cực và hợp tác từ phía khách hàng, các quy trình Agile có thể trở nên cồng kềnh và không hiệu quả. Đôi khi, việc thay đổi yêu cầu quá thường xuyên có thể làm suy yếu tính linh hoạt của Agile và gây ra sự bất ổn trong quá trình phát triển.&lt;/p&gt;

&lt;p&gt;Ngoài ra, mô hình Agile cũng không phù hợp với tất cả các loại dự án. Các dự án lớn và phức tạp có thể đòi hỏi sự quản lý cẩn thận và kế hoạch chi tiết hơn, trong khi Agile thường tập trung vào tính linh hoạt và khả năng thích ứng.&lt;/p&gt;

&lt;p&gt;Do đó, để thành công với Agile, cần có sự hiểu biết sâu rộ về nguyên tắc và phương pháp của nó. Việc áp dụng Agile nên được điều chỉnh theo tình hình cụ thể của dự án và tổ chức. Tìm hiểu và học hỏi từ các tài liệu, khóa học và kinh nghiệm thực tế là điều cần thiết để đảm bảo rằng Agile được áp dụng một cách hiệu quả và mang lại giá trị thực sự cho dự án và khách hàng.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/phamtuanchip" rel="noopener noreferrer"&gt;Nếu thấy bài hữu ích gửi cho tôi 1 cốc cà phê &lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
