Phương pháp Tạo chương trình Tainghetrothinh

Ngày nay, chương trình/program máy tính được triển khai ở khắp mọi nơi, từ xe hơi đến điện thoại thông minh của chúng ta, và trong hầu hết mọi công việc. Vì thế giới đang ngày càng trở nên số hóa hơn, nhu cầu dùng chương trình mới sẽ tiếp tục tăng lên. Nếu bạn có ý tưởng lớn, tại sao bạn không tự mình làm nhỉ? Hãy đọc từ Bước 1 dưới đây để biết cách bắt đầu học ngôn ngữ, phát triển ý tưởng của bạn thành sản phẩm có thể kiểm thử/test, rồi lặp lại cho đến khi sẵn sàng release/phát hành.

những bước

Phần 1Phần 1 Nảy ra ý tưởng

1Động não để nghĩ ra ý tưởng.Một chương trình tốt sẽ thực hiện việc giúp cuộc sống của người dùng/user trở nên dễ dàng hơn. Hãy tìm hiểu về phần mềm đang sẵn có về công việc bạn muốn thực hiện, và nghĩ xem liệu có cách nào khiến quy trình trở nên dễ dàng hay suôn sẻ hơn không. Một chương trình thành công là chương trình mang lại nhiều tiện ích cho người dùng. Xem xét công việc hàng ngày trên máy tính của bạn. Liệu có cách nào giúp bạn có thể tự động hóa một phần trong số những công việc đó bằng chương trình?Viết ra mọi ý tưởng. Dù có vẻ hơi ngớ ngẩn hoặc kỳ lạ, nhưng ý tưởng đó có thể trở thành thứ gì đó hữu ích hoặc thậm chí là tuyệt vời.2Tham khảo những chương trình khác. Những chương trình đó làm gì? Làm thế nào để chúng có thể làm điều đó tốt hơn? Chúng còn thiếu điều gì? Việc trả lời những câu hỏi này có thể giúp bạn nảy ra ý tưởng để chính mình thực hiện. 3Viết tài liệu thiết kế. Tài liệu này sẽ nêu ra những tính năng (feature) và những gì bạn dự định đạt được với dự án này. Việc xem tài liệu thiết kế trong quá trình phát triển sẽ giúp giữ tiến độ và sự tập trung cho dự án của bạn. Hãy đọc bài đăng này để được chỉ dẫn chi tiết cách viết tài liệu. Việc viết tài liệu thiết kế cũng sẽ giúp bạn quyết định ngôn ngữ lập trình nào phù hợp nhất với dự án của bạn. 4Bắt đầu bằng sự đơn giản. Khi mới bắt đầu lập trình máy tính, bạn cần bắt đầu bằng cái nhỏ và phát triển qua thời gian. Chẳng hạn như, bạn sẽ học hỏi được nhiều hơn nữa nếu đặt ra mục tiêu cụ thể mà bạn có thể đạt được với một chương trình cơ bản

Phần 2Phần 2 Học một ngôn ngữ

1Tải về một trình chỉnh sửa văn bản tốt. Hầu hết tất cả những chương trình đều được viết bằng trình chỉnh sửa văn bản (text editor) và được biên dịch để chạy trên máy tính. Dù có thể dùng chương trình kiểu như Notepad hoặc TextEdit, bạn nên tải về trình chỉnh sửa có tính năng làm nổi bật cú pháp (syntax) kiểu như Notepad++ JEdit hoặc Sublime Text. Đây là bước khiến code (đoạn mã) của bạn trông dễ nhìn và phân tích hơn nhiều. một vài ngôn ngữ kiểu như Visual Basic gói gọn trình chỉnh sửa và trình biên dịch (compiler).2Học một ngôn ngữ lập trình. Tất cả những chương trình đều được tạo ra bằng code. Nếu muốn tạo ra chương trình của riêng bạn, bạn sẽ cần làm quen với ít nhất một ngôn ngữ lập trình. Ngôn ngữ bạn cần học sẽ khác nhau tùy theo loại chương trình bạn muốn tạo. một vài ngôn ngữ hữu ích và quan trọng hơn cả là: C – C là ngôn ngữ bậc thấp tương tác chặt chẽ với phần cứng máy tính. Đây là một trong những ngôn ngữ lập trình cũ vẫn còn được dùng rộng rãi.C++ – Nhược điểm lớn nhất của C là không hướng đối tượng (object-oriented). Vì thế mà cần đến C++. C++ đang là ngôn ngữ lập trình phổ biến nhất trên thế giới. những chương trình kiểu như Chrome, Firefox, Photoshop và nhiều chương trình khác đều được tạo ra bằng C++. Đây cũng là ngôn ngữ rất phổ biến để tạo trò chơi điện tử (video game).Java – Java có thể được coi là sự tiến hóa của ngôn ngữ C++ và rất linh động. Hầu hết máy tính, bất kể là hệ điều hành gì, đều có thể chạy máy ảo (Virtual Machine) Java, cho phép chương trình được dùng trên hầu hết mọi thiết bị. Ngôn ngữ này được dùng rộng rãi trong trò chơi điện tử và phần mềm doanh nghiệp, và thường được coi là ngôn ngữ thiết yếu.C# – C# là ngôn ngữ được thiết kế cho Windows và là một trong những ngôn ngữ chính được dùng khi tạo chương trình Windows. Ngôn ngữ này có liên hệ mật thiết với Java và C++, dễ học nếu bạn đã quen với Java. Nếu bạn muốn tạo chương trình cho Windows hoặc Windows Phone, bạn cần xem xét ngôn ngữ này.Objective-C – Lại là một ngôn ngữ khác liên quan đến C được thiết kế riêng cho hệ thống Apple. Nếu bạn muốn tạo ứng dụng iPhone hoặc iPad, đây là ngôn ngữ dành cho bạn.3Tải về trình biên dịch (compiler) hoặc trình thông dịch (interpreter). Đối với bất cứ ngôn ngữ bậc cao nào như C++, Java và nhiều ngôn ngữ khác, bạn cần có trình biên dịch để chuyển đổi code của bạn thành định dạng mà máy tính có thể dùng. Có nhiều trình biên dịch để bạn lựa chọn tùy theo ngôn ngữ đang dùng.một vài ngôn ngữ là ngôn ngữ thông dịch, nghĩa là không cần có trình biên dịch. Thay vào đó chỉ cần trình thông dịch ngôn ngữ được cài đặt trên máy tính, và những chương trình có thể chạy ngay lập tức. Có thể kể đến một vài ngôn ngữ thông dịch như Perl và Python.4Học khái niệm lập trình cơ bản. Bất kể chọn ngôn ngữ nào, bạn cần hiểu một vài khái niệm chung cơ bản. Việc biết cách xử lý cú pháp (syntax) của ngôn ngữ cho phép bạn tạo ra chương trình tốt hơn. một vài khái niệm chung bao gồm: Khai báo biến – Biến (Variable) là cách dữ liệu được lưu trữ tạm thời trong chương trình của bạn. Sau đó, dữ liệu này có thể được lưu trữ, chỉnh sửa, kiểm soát và gọi trong chương trình về sau.dùng câu điều kiện (if, else, when…) – Đây là một trong những tính năng cơ bản của chương trình và cho thấy cách thức hoạt động của logic. Câu điều kiện thường xoay quanh “true” (đúng) và “false” (sai).dùng vòng lặp (for, goto, do…) – Vòng lặp (Loop) cho phép bạn lặp lại tiến trình cho đến khi câu lệnh dừng lại.dùng escape sequence (chuỗi thoát) – Câu lệnh này thực hiện những tính năng kiểu như tạo dòng mới, thụt lề, trích dẫn…Viết bình luận vào code – Bình luận (Comment) là Phương pháp nhớ đoạn code của bạn thực hiện việc gì, giúp những lập trình viên khác hiểu code của bạn và tạm thời không dùng một vài đoạn code.Hiểu regular expression (biểu thức chính quy).5Tìm kiếm một vài quyển sá
ch viết về ngôn ngữ bạn chọn.
Có sách cho mọi ngôn ngữ và trình độ chuyên môn. Bạn có thể tìm kiếm sách dạy lập trình ở hiệu sách địa phương hoặc bất cứ cửa hàng bán lẻ trực tuyến nào. Sách có thể là một công cụ vô giá vì bạn có thể giữ nó gần bên mình khi đang làm việc. Ngoài sách, Internet là một kho tàng vô tận chứa đầy đủ những bài chỉ dẫn. Bạn có thể tìm kiếm bài chỉ dẫn về ngôn ngữ mong muốn trên những trang kiểu như Codecademy, Code.org, Bento, Udacity, Udemy, Khan Academy, W3Schools và nhiều trang khác.6Đăng ký học một lớp nào đó. Bất cứ ai cũng có thể tự học cách tạo chương trình nếu chuyên tâm, nhưng đôi khi có giáo viên và lớp học cũng vui và hiệu quả. Học kiểu một-kèm-một với chuyên gia có thể giảm đáng kể thời gian công sức để nắm bắt nguyên tắc cơ bản và khái niệm trong lập trình. Lớp học cũng là một nơi phù hợp để học toán cao cấp và logic – những thứ cần có để tạo chương trình phức tạp hơn. Nhớ rằng sẽ cần đóng học phí, vì vậy hãy đảm bảo rằng bạn đang đăng ký lớp học giúp bạn tiếp thu kiến thức muốn biết.7Đặt câu hỏi. Internet là một cách tuyệt vời để kết nối với những nhà phát triển (developer) khác. Nếu gặp vấn đề chưa thể giải quyết khi thực hiện một trong những dự án, bạn có thể nhờ giúp đỡ trên những trang kiểu như StackOverflow. Hãy đảm bảo rằng bạn hỏi với thái độ phù hợp và có thể chứng tỏ rằng bạn đã thử nhiều cách nhưng chưa được

Phần 3Phần 3 Tạo prototype

1Bắt đầu viết một chương trình cơ bản có tính năng cốt lõi. Đây sẽ là prototype cho thấy tính năng mà bạn mong muốn làm được. Prototype là một chương trình được tạo nhanh, thường được làm đi làm lại cho đến khi bạn tìm ra kiểu thiết kế hiệu quả. Ví dụ: Nếu bạn đang tạo một chương trình lịch, prototype của bạn có thể là lịch cơ bản (có ngày tháng chuẩn xác) và có một cách thêm sự kiện vào lịch. Khi tạo prototype, hãy dùng phương pháp từ trên xuống. Nghĩa là liệt kê ra nhiều đầu việc mà bạn có thể làm trước. Sau đó từ từ thêm nhiều đầu việc chi tiết hơn. Đây là cách tăng tốc độ của quy trình prototype và cũng giúp code của bạn không trở nên quá phức tạp và không thể quản lý nổi. Nếu code của bạn trở nên quá khó theo dõi, bạn có thể sẽ lâm vào cảnh buộc phải “đập đi” làm lại từ đầu.Prototype của bạn sẽ thay đổi liên tục trong quy trình phát triển khi bạn nghĩ ra cách mới để giải quyết vấn đề hoặc về sau mới nảy ra ý tưởng mà bạn muốn thực hiện.Nếu bạn đang tạo một trò chơi (game), prototype của bạn nên thú vị! Nếu prototype không thú vị, có khả năng là trò chơi hoàn chỉnh cũng không thú vị.Nếu cơ chế không được như ý muốn trong prototype, có lẽ đã đến lúc quay về giai đoạn phác thảo ý tưởng.2Tập hợp một đội. Nếu đang phát triển chương trình của riêng mình, bạn có thể dùng prototype để hỗ trợ việc thành lập một đội. Có đội sẽ giúp bạn tìm ra lỗi (bug) nhanh hơn, làm lại những tính năng và thiết kế đồ họa của chương trình. Không nhất thiết phải có một đội khi làm dự án nhỏ, nhưng sẽ giảm đáng kể thời gian phát triển.Vận hành một đội là quá trình phức tạp và khó khăn, đòi hỏi kỹ năng quản lý tốt và cấu trúc đội vững chãi.3Bắt đầu từ con số không nếu cần. Một khi đã quen với ngôn ngữ, bạn có thể tạo dựng prototype và chạy thử chỉ trong một vài ngày. Vì bản chất là làm nhanh, đừng ngại loại bỏ ý tưởng và bắt đầu từ con số không theo một góc nhìn khác nếu bạn chưa hài lòng với kết quả hiện tại. Bạn sẽ dễ tạo ra sự thay đổi lớn trong giai đoạn này hơn nhiều so với về sau, khi mà những tính năng đã bắt đầu đâu vào đó. 4Bình luận về mọi thứ. dùng cú pháp bình luận (comment) trong ngôn ngữ lập trình của bạn để ghi chú về mọi thứ, trừ những dòng code cơ bản nhất. Đây là bước giúp bạn nhớ bạn đã làm gì nếu buộc phải tạm dừng dự án một thời gian, và sẽ giúp những nhà phát triển khác hiểu code của bạn. Bước này hết sức cần thiết nếu bạn đang làm việc với tư cách là một thành viên trong đội lập trình. Bạn có thể dùng bình luận để tạm thời không dùng một đoạn code trong lúc kiểm thử (test). Bạn chỉ cần gói gọn đoạn code mà bạn không muốn dùng đến vào trong cú pháp bình luận và đoạn code đó sẽ không được biên dịch (compile). Sau đó, bạn có thể xóa cú pháp bình luận và đoạn code sẽ được khôi phục

Phần 4Phần 4 Alpha test

1Tập hợp đội test. Trong giai đoạn alpha, đội test (kiểm thử) có thể nhỏ và nên thế. Một nhóm nhỏ sẽ giúp bạn nhận được ý kiến phản hồi (feedback) tập trung và có khả năng tương tác với từng tester (kiểm thử viên). Mỗi lần bạn cập nhật prototype, build (bản) mới sẽ được gửi đến những alpha tester. Sau đó tester sẽ kiểm thử tất cả những tính năng và cố gắng tìm ra lỗi của chương trình, sau đó viết tài liệu về kết quả kiểm thử. Nếu đang phát triển một sản phẩm thương mại, bạn cần đảm bảo rằng tất cả những tester của bạn đều đã ký Thỏa thuận bảo mật thông tin (Non-Disclosure Agreement hay NDA). Việc này giúp ngăn ngừa việc họ nói với người khác về chương trình của bạn và chống rò rỉ thông tin tới báo chí và người dùng khác.Dành chút thời gian để nghĩ ra kế hoạch test bền vững. Đảm bảo rằng tester của bạn có cách dễ dàng báo lỗi trong chương trình và dùng phiên bản mới trong giai đoạn alpha. GitHub và những trang lưu trữ code khác là một cách tuyệt vời để dễ dàng quản lý việc này.2Test đi test lại prototype. Lỗi (bug) là nguyên nhân khiến nhà phát triển (developer) phải vò đầu bứt tóc tìm cách sửa. Lỗi trong code và cách dùng khác thường có thể gây ra đủ loại vấn đề trong sản phẩm hoàn chỉnh. Chừng nào bạn còn tiếp tục làm prototype, hãy test càng nhiều càng tốt. Hãy làm đủ mọi Phương pháp tìm ra lỗi, sau đó cố gắng không để nó bị lỗi trong tương lai. Thử nhập ngày tháng khác thường nếu chương trình của bạn phải xử lý ngày tháng. Ngày tháng quá xưa hoặc trong tương lai xa có thể khiến chương trình hoạt động bất thường.Nhập sai kiểu biến. Ví dụ: Nếu bạn tạo ra form (mẫu) hỏi tuổi của người dùng, hãy thử nhập chữ xem chương trình xử lý như thế nào.Nếu chương trình có giao diện đồ họa, hãy nhấp vào mọi thứ. Điều gì sẽ xảy ra khi bạn trở về màn hình trước đó, hoặc nhấp vào những nút sai trình
tự?3Sửa lỗi theo trình tự ưu tiên. Khi sửa lại chương trình trong giai đoạn alpha, bạn sẽ phải dành nhiều thời gian sửa tính năng không hoạt động đúng như ý muốn. Khi xem báo cáo lỗi của alpha tester, lỗi nên được sắp xếp theo hai tiêu chí: Mức độ nghiêm trọngmức độ ưu tiên. Mức độ nghiêm trọng của lỗi giúp đo lường mức độ gây thiệt hại của lỗi. Lỗi khiến chương trình bị crash (văng ra ngoài), hỏng dữ liệu, hoặc không chạy được gọi là Blocker. Tính năng không hoạt động hoặc trả về kết quả không đúng được gọi là Critical, còn tính năng khó dùng hoặc trông xấu được gọi là Major. Ngoài ra có những mức độ lỗi khác như Normal, Minor và Trivial chỉ gây ảnh hưởng đến những phần nhỏ hơn hoặc tính năng ít quan trọng hơn.Mức độ ưu tiên của lỗi quyết định trình tự mà bạn xử lý chúng khi cố gắng sửa lỗi. Sửa lỗi trong phần mềm là một quá trình tốn thời gian, và không được tính cùng với khoảng thời gian bạn cần bổ sung tính năng và trau chuốt. Thế nghĩa là bạn cần xem xét mức độ ưu tiên của lỗi để đảm bảo rằng bạn hoàn thành công việc đúng thời hạn (deadline). Tất cả những lỗi Blocker và Critical chiếm mức độ ưu tiên cao nhất, đôi khi được coi là P1 (mức độ ưu tiên số 1). Lỗi P2 thường là lỗi Major được lên lịch sửa, nhưng sẽ không làm cản trở việc giao sản phẩm. Lỗi P3 và P4 thường không được lên lịch sửa, thuộc loại “có cũng được”.4Bổ sung nhiều tính năng hơn. Trong giai đoạn alpha, bạn sẽ bổ sung nhiều tính năng hơn nữa vào chương trình của bạn cho giống với chương trình được phác thảo trong tài liệu thiết kế hơn. Alpha là giai đoạn prototype được phát triển thành nền tảng cơ bản cho chương trình hoàn chỉnh. Ở cuối giai đoạn alpha, chương trình của bạn nên có đủ tính năng được implement (triển khai). Đừng đi quá xa so với tài liệu thiết kế ban đầu của bạn. Một vấn đề phổ biến trong phát triển phần mềm là “quá nhiều tính năng mới”, nhiều ý tưởng mới liên tục được thêm vào, khiến cái chất ban đầu bị mất đi và phân tán thời gian phát triển vì có quá nhiều tính năng khác nhau. Chắc hẳn bạn muốn chương trình của bạn thực hiện tốt nhất vai trò của nó, chứ không phải là tính năng gì cũng có nhưng không nổi trội.5Test từng tính năng trong quá trình thêm vào. Khi bạn thêm tính năng vào chương trình trong giai đoạn alpha, hãy gửi bản mới cho tester của bạn. Mức độ thường xuyên của việc thêm bản mới sẽ hoàn toàn phụ thuộc vào quy mô của đội và tiến trình tạo tính năng. 6Khóa tính năng khi giai đoạn alpha hoàn thành. Một khi đã implement tất cả những tính năng trong chương trình, bạn có thể chuyển từ giai đoạn alpha sang giai đoạn khác. Vào thời điểm này sẽ không thêm tính năng nữa, và những tính năng đã có nên dùng được bình thường. Giờ thì bạn có thể chuyển sang giai đoạn test rộng hơn và trau chuốt, hay thường được gọi là giai đoạn beta

Phần 5Phần 5 Beta test

1Tăng quy mô của nhóm test. Trong giai đoạn beta, chương trình sẽ được gửi đến nhóm tester (kiểm thử viên) có quy mô lớn hơn nhiều. một vài nhà phát triển (developer) công khai giai đoạn beta, hay còn được gọi là open beta. Điều này cho phép bất cứ ai cũng có thể đăng ký và tham gia vào việc test sản phẩm. Tùy theo nhu cầu sản phẩm, bạn có thể muốn hoặc không muốn ra mắt open beta.2Test kết nối. Vì những chương trình đang ngày càng có mối liên hệ mật thiết hơn, có nhiều khả năng là chương trình của bạn sẽ cần kết nối với sản phẩm khác hoặc kết nối đến server (máy chủ). Beta test cho phép bạn đảm bảo rằng những kết nối đó vẫn bình thường khi phải chịu tải lớn hơn, nghĩa là sẽ đảm bảo rằng chương trình dùng được khi release (phát hành) công khai. 3Trau chuốt chương trình. Trong giai đoạn beta, vì không có tính năng nào mới được thêm vào nữa, nên có thể quay sang tập trung vào việc cải thiện giao diện và tính khả dụng của chương trình. Trong giai đoạn này, UI design (thiết kế giao diện người dùng) trở thành ưu tiên, đảm bảo rằng người dùng (user) sẽ không gặp khó khăn khi vào những phần trong chương trình và có thể tận dụng tính năng. Thiết kế UI và tính năng có thể rất khó khăn và phức tạp. Nhiều người dành cả sự nghiệp để thiết kế UI. Bạn chỉ cần đảm bảo rằng dự án cá nhân của bạn dễ dùng và dễ nhìn. UI chuyên nghiệp khó có thể được thực hiện nếu không có ngân sách và một đội.Nếu bạn có ngân sách, hiện có nhiều designer (nhà thiết kế) đồ họa làm tự do có khả năng thiết kế UI theo hợp đồng cho bạn. Nếu bạn có dự án khủng và đang mong rằng nó sẽ trở thành bom tấn, hãy tìm kiếm một UI designer giỏi và tuyển làm thành viên trong đội.4Tiếp tục công cuộc săn tìm lỗi. Trong suốt giai đoạn beta, bạn nên lập danh mục và ưu tiên báo cáo lỗi từ phía người dùng của bạn. Vì nhiều testers hơn nữa sẽ dùng thử sản phẩm, có khả năng là lỗi mới sẽ được phát hiện. Hãy xử lý lỗi dựa trên mức độ ưu tiên và luôn nhớ hoàn thành công việc đúng hạn chót.

Phần 6Phần 6 Release (phát hành) chương trình

1Quảng bá chương trình. Nếu bạn muốn có người dùng, bạn cần đảm bảo rằng họ biết đến chương trình của bạn. Giống như bất cứ sản phẩm nào khác, bạn sẽ cần một chút để được mọi người chú ý. Mức độ và chiều sâu của chiến dịch marketing sẽ phụ thuộc vào tính năng của chương trình và ngân sách sẵn có. một vài cách đơn giản để gây chú ý về chương trình là: Đăng bài về chương trình của bạn trên bảng tin có liên quan. Đảm bảo rằng bạn tuân theo luật đăng bài của diễn đàn bạn chọn để bài đăng không bị đánh dấu là spam (rác).Gửi release (bản phát hành) dạng báo chí tới những website công nghệ. Tìm kiếm một vài blog và website công nghệ phù hợp với thể loại chương trình của bạn. Gửi cho biên tập viên bản release dạng báo chí mô tả chi tiết về chương trình của bạn và những tính năng. Hãy thêm cả một vài ảnh chụp màn hình.Tạo một vài video trên YouTube. Nếu chương trình của bạn được thiết kế để hoàn thành một công việc cụ thể, hãy làm một vài video trên YouTube cho thấy cách thức hoạt động của chương trình. Sau đó xếp chúng vào loại video “chỉ dẫn”.Tạo trang mạng xã hội. Bạn có thể tạo trang Facebook và Google+ miễn phí cho chương trình của bạn, và có thể dùng Twitter cho cả tin tức liên quan đến công ty và
chương trình.2Lưu trữ chương trình trên website của bạn. Đối với chương trình nhỏ, rất có khả năng là bạn có thể lưu trữ tập tin trên chính website của bạn. Bạn có thể sẽ muốn bổ sung hệ thống thanh toán nếu có ý định yêu cầu người dùng trả phí cho chương trình. Nếu chương trình trở nên quá phổ biến, bạn sẽ cần lưu trữ tập tin trên máy chủ (server) có thể xử lý nhiều lượt tải về hơn. 3Thiết lập dịch vụ hỗ trợ. Một khi chương trình của bạn đến tay cộng đồng, bạn sẽ luôn thấy cảnh có người dùng gặp vấn đề kỹ thuật hoặc không hiểu cách thức hoạt động của chương trình. Website của bạn nên có đầy đủ tài liệu chỉ dẫn và một vài kiểu dịch vụ hỗ trợ. Trong đó có thể bao gồm diễn đàn hỗ trợ kỹ thuật, email hỗ trợ, trợ giúp trực tiếp hoặc kết hợp những dịch vụ. Việc bạn có thể cung cấp những gì sẽ phụ thuộc vào ngân sách đang có. 4Cập nhật chương trình. Hầu hết mọi chương trình ngày nay đều được vá (patch) và cập nhật sau lần release đầu tiên. những bản vá này có thể sửa lỗi nghiêm trọng hoặc không nghiêm trọng, cập nhật giao thức bảo mật, cải thiện độ ổn định, thậm chí là thêm tính năng hoặc làm lại giao diện cho đẹp mắt hơn. Cập nhật chương trình của bạn thường xuyên là Phương pháp cạnh tranh với chương trình khác