Ngày nay, chương trình/ứng dụng máy tính được triển khai ở mọi lúc, 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ới thế giới đang ngày càng số hóa, nhu cầu sử dụng chương trình mới ngày càng gia tăng. Nếu bạn có ý tưởng lớn, tại sao bạn không tự mình thực hiện nhỉ? Hãy đọc từ Bước 1 dưới đây để biết cách bắt đầu học ngôn ngữ lập trình, phát triển ý tưởng của bạn thành sản phẩm có thể kiểm thử, rồi lặp lại cho đến khi sẵn sàng phát hành.
Các bước
Phát minh ý tưởng

Kích thích trí não để nảy ra ý tưởng. Một ứng dụng xuất sắc sẽ đơn giản hóa cuộc sống của người dùng, làm cho mọi thứ trở nên thuận tiện hơn. Tìm hiểu về các phần mềm đã có liên quan đến công việc bạn quan tâm và xem xét cách làm cuộc sống dễ dàng hơn. Một ứng dụng thành công là ứng dụng mang lại nhiều tiện ích cho người sử dụng.
- Xem xét công việc hàng ngày trên máy tính của bạn. Có cách nào để bạn có thể tự động hóa một phần trong những công việc đó thông qua ứng dụng không?
- Ghi chép mọi ý tưởng. Dù có vẻ kỳ cục hoặc độc đáo, những ý tưởng này có thể trở thành điều gì đó hữu ích hoặc thậm chí tuyệt vời.

Nghiên cứu các ứng dụng khác. Các ứng dụng đó thực hiện những công việc gì? Làm thế nào để chúng có thể thực hiện tốt hơn? Chúng còn thiếu gì? Việc này có thể giúp bạn đưa ra ý tưởng cho dự án của mình.

Viết tài liệu kỹ thuật. Tài liệu này sẽ mô tả các tính năng và mục tiêu của bạn với dự án này. Đọc bài viết này để biết cách viết tài liệu chi tiết. Việc viết tài liệu kỹ thuật cũng giúp bạn chọn ngôn ngữ lập trình phù hợp với dự án.

Bắt đầu với điều đơn giản. Khi bắt đầu lập trình máy tính, hãy tập trung vào những điều nhỏ và mở rộng theo thời gian. Đặt một mục tiêu cụ thể với một chương trình cơ bản để học hỏi nhiều hơn.
Đào tạo trong một ngôn ngữ

Tải một trình soạn thảo văn bản tốt. Hầu hết các chương trình đều được viết bằng trình soạn thảo văn bản và biên dịch để chạy trên máy tính. Mặc dù có thể sử dụng Notepad hoặc TextEdit, nhưng hãy tải về một trình soạn thảo với tính năng làm nổi bật cú pháp như Notepad++ JEdit hoặc Sublime Text. Điều này giúp mã nguồn trở nên dễ đọc và phân tích hơn.
- Một số ngôn ngữ như Visual Basic tích hợp cả trình soạn thảo và trình biên dịch.

Học một ngôn ngữ lập trình. Mọi chương trình đều ra đời qua ngôn ngữ code. Muốn sáng tạo chương trình riêng, bạn cần nắm vững ít nhất một ngôn ngữ lập trình. Lựa chọn ngôn ngữ phụ thuộc vào loại chương trình bạn muốn tạo. Một số ngôn ngữ quan trọng bao gồm:
- C - Ngôn ngữ tương tác chặt chẽ với phần cứng máy tính, vẫn đang được sử dụng rộng rãi.
- C++ - Được xem là bản nâng cấp của C với hướng đối tượng, phổ biến trong việc tạo trò chơi và ứng dụng lớn.
- Java - Linh động và sử dụng rộng rãi trên mọi thiết bị, thích hợp cho trò chơi và doanh nghiệp.
- C# - Thiết kế cho Windows, phổ biến khi tạo ứng dụng cho hệ điều hành này.
- Objective-C - Dành cho ứng dụng Apple như iPhone hoặc iPad.

Tải về trình biên dịch (compiler) hoặc trình thông dịch (interpreter). Đối với ngôn ngữ như C++, Java, bạn cần trình biên dịch chuyển code thành định dạng máy tính có thể hiểu được. Một số ngôn ngữ không cần trình biên dịch, chỉ cần trình thông dịch như Perl và Python.
- Có nhiều lựa chọn trình biên dịch phù hợp với ngôn ngữ bạn chọn.

Hiểu khái niệm cơ bản về lập trình. Không kể chọn ngôn ngữ nào, bạn cần hiểu cơ bản về lập trình. Xử lý cú pháp giúp bạn viết code hiệu quả hơn. Một số khái niệm cơ bản bao gồm:
- Khai báo biến - Lưu trữ dữ liệu tạm thời trong chương trình.
- Câu điều kiện - Quyết định theo logic 'đúng' hoặc 'sai'.
- Vòng lặp - Lặp lại quy trình đến khi điều kiện dừng.
- Escape sequence - Tạo định dạng đặc biệt như dòng mới, thụt lề.
- Bình luận - Ghi chú giúp lập trình viên khác hiểu code của bạn.
- Hiểu regular expression (biểu thức chính quy).

Tìm sách về ngôn ngữ bạn chọn. Sách là nguồn kiến thức quý giá. Tìm ở hiệu sách địa phương hoặc trực tuyến. Ngoài sách, Internet có nhiều bài hướng dẫn từ các trang như Codecademy, Udacity, W3Schools...
- Chọn sách phù hợp với trình độ và mục tiêu học của bạn.

Tham gia một khóa học. Tự học là quan trọng, nhưng có giáo viên và lớp học cũng hữu ích. Học với chuyên gia giúp bạn nhanh chóng nắm bắt nguyên tắc và kiến thức cơ bản. Lớp học còn là nơi tốt để học toán và logic - quan trọng để tạo ra chương trình phức tạp.
- Đảm bảo bạn đăng ký lớp phù hợp với mục tiêu học của bạn.

Đặt câu hỏi. Mạng internet là kết nối với cộng đồng nhà phát triển. Khi gặp vấn đề, hãy tận dụng các diễn đàn như StackOverflow. Đặt câu hỏi một cách lịch sự, chứng minh đã thử nhiều cách.
Chế tạo bản thử nghiệm

Bắt đầu xây dựng chương trình cơ bản với tính năng chính. Tạo prototype để thể hiện tính năng bạn muốn. Prototype nhanh giúp tìm thiết kế hiệu quả. Hãy liệt kê các công việc từ trên xuống, giữ code đơn giản và tinh tế. Prototype sẽ thay đổi liên tục, giúp bạn nhanh chóng thí nghiệm ý tưởng mới.
- Prototype nên thú vị, đặc biệt nếu bạn tạo trò chơi.
- Nếu prototype không thành công, quay lại phác thảo ý tưởng.

Hình thành đội ngũ. Nếu làm dự án lớn, prototype giúp tạo đội. Đội sẽ nhanh chóng phát hiện lỗi, làm mới tính năng và thiết kế.
- Dù không cần đội cho dự án nhỏ, nhưng nếu có, sẽ giảm thời gian phát triển.
- Quản lý đội đòi hỏi kỹ năng và cấu trúc đội chặt chẽ.

Bắt đầu từ con số không nếu cần. Sau khi làm quen với ngôn ngữ, tạo prototype và chạy thử trong vài ngày. Đừng sợ bắt đầu lại từ đầu nếu cần. Giai đoạn này linh hoạt và quan trọng, khi bạn có thể thực hiện sự thay đổi lớn.

Đánh giá mọi thứ. Sử dụng chú thích trong mã nguồn để ghi lại mọi thứ, trừ các dòng mã cơ bản. Bước này giúp bạn nhớ công việc khi dừng dự án và làm cho code dễ hiểu đối với các lập trình viên khác.
- Bạn có thể chú thích để tạm ngưng một đoạn mã trong quá trình kiểm thử. Đó chỉ là việc bọc đoạn mã không muốn thực hiện trong cú pháp chú thích, và đoạn mã sẽ không được biên dịch. Sau đó, bạn có thể xóa chú thích và đoạn mã sẽ hoạt động lại.
Thử nghiệm Alpha

Tạo đội ngũ kiểm thử. Trong giai đoạn alpha, đội ngũ kiểm thử nên nhỏ nhưng đồng đều. Nhóm nhỏ sẽ tập trung phản hồi và tương tác với từng kiểm thử viên. Mỗi lần cập nhật prototype, bản mới sẽ đến tester. Tester kiểm thử và viết báo cáo lỗi.
- Nếu là sản phẩm thương mại, đảm bảo tester ký Thỏa thuận bảo mật thông tin. Điều này ngăn họ nói chuyện về dự án và tránh rò rỉ thông tin.
- Đặt kế hoạch test bền vững. Tester cần dễ báo cáo lỗi và sử dụng phiên bản mới trong giai đoạn alpha. GitHub là công cụ quản lý tốt cho điều này.

Thử nghiệm lặp lại prototype. Lỗi là nỗi ám ảnh của nhà phát triển. Chúng có thể gây vấn đề nhiều loại trong sản phẩm hoàn chỉnh. Khi làm prototype, hãy kiểm thử kỹ. Tìm lỗi, và cố gắng tránh chúng trong tương lai.
- Thử nhập ngày tháng ngoại lệ. Ngày tháng quá khứ hoặc tương lai có thể làm chương trình hoạt động không đúng.
- Nhập kiểu biến sai. Ví dụ: Trong form hỏi tuổi, thử nhập chữ xem chương trình xử lý thế nào.
- Nếu có giao diện đồ họa, hãy nhấp vào mọi thứ. Điều gì xảy ra khi quay lại hoặc nhấp sai trình tự?

Sửa lỗi theo trình tự ưu tiên. Trong giai đoạn alpha, bạn sẽ phải dành nhiều thời gian sửa lỗi. Khi đọc báo cáo lỗi, sắp xếp chúng theo mức độ nghiêm trọng và mức độ ưu tiên.
- Mức độ nghiêm trọng đánh giá mức độ tổn thất của lỗi. Lỗi làm chương trình văng ra ngoài, hỏng dữ liệu, hoặc không chạy được đượ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 lỗi Major làm ảnh hưởng đến tính năng và thiết kế. Normal, Minor và Trivial ảnh hưởng ít quan trọng hơn.
- Mức độ ưu tiên quyết định thứ tự sửa lỗi. Sửa lỗi là công việc tốn thời gian, và bạn cần phải ưu tiên để hoàn thành đúng hạn. Blocker và Critical ưu tiên cao nhất, thường được gọi là P1. Lỗi P2 là Major được lên lịch sửa, nhưng không làm trì hoãn giao sản phẩm. P3 và P4 thường được xem xét sau cùng, khi không còn áp lực.

Mở rộng tính năng đa dạng hơn. Trong giai đoạn alpha, hãy phát triển nhiều tính năng hơn cho chương trình để nó phản ánh tốt hơn so với tài liệu thiết kế ban đầu. Alpha là bước từ prototype đến nền tảng cơ bản cho chương trình hoàn chỉnh. Khi kết thúc giai đoạn alpha, chương trình nên có đầy đủ tính năng.
- Giữ tính nhất quán với tài liệu thiết kế ban đầu. Tránh tình trạng 'quá nhiều tính năng mới', giữ cho chất lượng ban đầu và tránh mất thời gian với quá nhiều tính năng không cần thiết.

Test từng tính năng khi thêm vào. Khi thêm tính năng vào chương trình trong giai đoạn alpha, hãy chuyển bản cập nhật cho các kiểm thử viên. Tần suất thêm mới phụ thuộc vào kích thước đội và quy trình phát triển tính năng.

Khoá tính năng khi hoàn thành giai đoạn alpha. Sau khi triển khai tất cả các tính năng, chuyển từ giai đoạn alpha sang giai đoạn mới. Tại đây, không thêm tính năng mới, tất cả tính năng sẽ sử dụng bình thường. Bây giờ, bạn có thể chuyển sang giai đoạn test rộng và làm đẹp, thường được gọi là beta.
Thử nghiệm Beta

Mở rộng quy mô đội kiểm thử. Trong giai đoạn beta, chương trình sẽ được gửi đến một đội kiểm thử lớn hơn nhiều. Một số nhà phát triển công bố giai đoạn beta, hay còn gọi là open beta. Điều này cho phép mọi người đăng ký và tham gia kiểm thử sản phẩm.
- Tùy thuộc vào yêu cầu sản phẩm, bạn có thể chọn ra mắt open beta hoặc không.

Kiểm thử liên kết. Do các chương trình ngày càng liên kết sâu rộng, có thể chương trình của bạn sẽ phải tương tác với các sản phẩm khác hoặc kết nối đến máy chủ. Beta test giúp bạn đảm bảo rằng tất cả kết nối vẫn hoạt động ổn định khi phải đối mặt với áp lực lớn hơn, đồng nghĩa với việc chương trình sẽ sẵn sàng khi phát hành công khai.

Tinh chỉnh chương trình. Trong giai đoạn beta, với không có tính năng mới nào được thêm vào, tập trung vào việc nâng cao giao diện và trải nghiệm người dùng. Tại đây, thiết kế giao diện trở nên quan trọng, đảm bảo người dùng dễ sử dụng và tận dụng mọi tính năng.
- Thiết kế UI và tính năng có thể phức tạp. Bạn chỉ cần chắc rằng dự án của bạn thân thiện và hấp dẫn. Nếu có ngân sách và đội ngũ, hợp tác với các chuyên gia thiết kế UI để có kết quả xuất sắc.
- Nếu ngân sách cho phép, có nhiều nhà thiết kế đồ họa freelance sẵn sàng hợp tác. Đối với các dự án lớn, tìm kiếm một UI designer chất lượng và bổ nhiệm vào đội của bạn.

Tiếp tục đào sâu vào quá trình tìm lỗi. Trong suốt giai đoạn beta, hãy tổ chức và xác định ưu tiên các báo cáo lỗi từ người dùng. Với số lượng người thử nghiệm nhiều hơn, có khả năng phát hiện lỗi mới. Xử lý lỗi theo thứ tự ưu tiên và luôn giữ đúng thời hạn.
Phát hành chương trình

Tiếp thị chương trình. Nếu muốn có người dùng, đảm bảo họ biết về chương trình của bạn. Như bất kỳ sản phẩm nào khác, quảng bá là chìa khóa. Phạm vi và chiến lược quảng bá phụ thuộc vào tính năng và ngân sách. Một số cách đơn giản bao gồm:
- Chia sẻ thông tin trên diễn đàn liên quan. Tuân thủ quy tắc để tránh bị đánh dấu là spam.
- Gửi bản thông báo tới các trang web công nghệ. Tìm blog và trang web phù hợp với chủ đề chương trình và gửi bản thông báo chi tiết về tính năng. Đính kèm một số ảnh màn hình.
- Tạo video trên YouTube. Nếu chương trình giải quyết một vấn đề cụ thể, hãy tạo video hướng dẫn hoạt động của chương trình và đăng vào loại 'Hướng dẫn'.
- Tạo trang mạng xã hội. Tạo trang Facebook và Google+ miễn phí, và sử dụng Twitter để cập nhật tin tức về công ty và chương trình.

Lưu trữ chương trình trên trang web của bạn. Với chương trình nhỏ, bạn có thể dễ dàng lưu trữ tập tin trực tiếp trên trang web của mình. Nếu muốn thu phí, hãy tích hợp hệ thống thanh toán. Nếu chương trình trở nên phổ biến, bạn cần lưu trữ trên máy chủ có khả năng xử lý nhiều tải về.

Thiết lập dịch vụ hỗ trợ. Khi chương trình ra tay, cung cấp đầy đủ tài liệu hướng dẫn và dịch vụ hỗ trợ. Điều này có thể bao gồm diễn đàn kỹ thuật, hỗ trợ qua email, trợ giúp trực tuyến hoặc sự kết hợp giữa chúng. Phạm vi dịch vụ phụ thuộc vào ngân sách.

Cập nhật chương trình. Đa số chương trình đều được cập nhật và vá lỗi sau bản phát hành đầu tiên. Cập nhật có thể sửa lỗi nghiêm trọng, cải thiện bảo mật, tăng ổn định, thậm chí là thêm tính năng mới. Việc cập nhật thường xuyên giúp cạnh tranh hiệu quả với các chương trình khác.