Tại sao dự án đầu tiên của bạn nên tệ một cách đáng xấu hổ

06 tháng 4, 2026·4 phút đọc

Dự án đầu tiên của tác giả đầy lỗi, từ API key được hardcode cho đến lỗi xoay màn hình, nhưng nó lại là kinh nghiệm quý giá nhất. Bài viết này lý giải tại sao các lập trình viên trẻ nên bỏ qua chủ nghĩa hoàn hảo để tung ra sản phẩm ngay lập tức. Việc "ship" code sẽ dạy cho bạn những bài học thực tế mà không tài liệu nào cung cấp được.

Tại sao dự án đầu tiên của bạn nên tệ một cách đáng xấu hổ

Dự án đầu tiên của tôi từng có API key được hardcode (viết cứng) trực tiếp vào mã nguồn. Thanh điều hướng (navigation) sập đổ mỗi khi bạn xoay điện thoại. Icon ứng dụng thì tôi tự vẽ bằng PowerPoint.

Tôi vẫn phát hành nó. Ứng dụng đó đạt khoảng 12 lượt tải, chủ yếu là từ gia đình. Tôi khá chắc là mẹ tôi đã tải nó hai lần vì bà nghĩ lần đầu tiên không thành công.

Dự án đó thực sự tồi tệ. Nhưng đó cũng là thứ quan trọng nhất tôi từng xây dựng.

Cái bẫy của chủ nghĩa hoàn hảo

Tôi đã nói chuyện với rất nhiều lập trình viên trẻ (junior developers) đã "bận rộn" với dự án đầu tiên suốt sáu tháng, một năm, thậm chí lâu hơn. Họ vẫn đang chỉnh sửa, refactoring, và đọc về "kiến trúc đúng đắn" trước khi viết thêm bất kỳ dòng code nào.

Họ không đang xây dựng. Họ đang trốn tránh.

Tôi hiểu điều đó. Đưa một sản phẩm có tên mình ra công chúng là điều đáng sợ. Sẽ ra sao nếu mọi người phán xét nó? Nếu các lập trình viên khác nhìn vào mã nguồn và nghĩ bạn kém cỏi? Nếu ứng dụng nhận được đánh giá một sao — hoặc tệ hơn, không có phản ứng nào?

Đây là thực tế: không ai quan tâm cả. Không phải theo ý xấu đâu, mà theo cách giải phóng. Dù là một ứng dụng trên store, một công cụ trên GitHub, hay một dự án phụ trong portfolio — sản phẩm đầu tiên của bạn sẽ vô hình. Không ai sẽ tìm thấy nó và phán xét bạn đâu.

Những bài học chỉ có khi thực sự "ship" sản phẩm

Có một bộ kỹ năng bạn chỉ có thể học được bằng cách thực sự phát hành cái gì đó. Không phải bằng cách đọc về việc phát hành. Không phải bằng cách lên kế hoạch. Mà là bằng cách làm nó.

Bạn sẽ học cách triển khai (deployment) — phiên bản thực tế, không phải phiên bản trong tài liệu hướng dẫn. Bạn sẽ học rằng dự án của mình sẽ bị lỗi ở những môi trường mà bạn không kiểm thử. Bạn sẽ nhận ra tính năng bạn dành hai tuần để làm ra không ai dùng đến, trong khi thứ bạn thêm vào vội vàng phút chót lại là thứ mọi người nhắc đến.

Bạn sẽ học rằng người dùng thực tế làm những điều bạn không bao giờ tưởng tượng ra. Họ click vào những chỗ không mong đợi. Họ nhập văn bản vào các trường bạn nghĩ rõ ràng hết sức. Họ tìm ra lỗi (bugs) ở những tính năng bạn từng chắc chắn là hoạt động trơn tru.

Không một điều nào trong số này xảy ra khi mã nguồn vẫn nằm im trong một kho chứa riêng tư (private repo).

"Nhưng nó chưa sẵn sàng"

Đúng vậy, nó chưa. Và nó sẽ chẳng bao giờ sẵn sàng cả. Không sao đâu. Hãy phát hành nó anyway.

Mã nguồn của bạn sáu tháng sau cũng sẽ không đủ tốt theo tiêu chuẩn của phiên bản bạn trong tương lai hai năm nữa. Điều này không bao giờ dừng lại. Nếu bạn đợi đến khi code đủ tốt, bạn sẽ phải đợi mãi mãi, bởi vạch đích cứ liên tục di chuyển khi bạn tiến bộ.

Lập trình viên đã phát hành 10 dự án tồi và học hỏi từ từng cái đó sẽ đứng ở một vị thế hoàn toàn khác so với người dành cùng khoảng thời gian đó để hoàn thiện một dự án mà không ai từng dùng.

Tôi vẫn thấy "rùng mình" khi nhìn lại những đoạn code cũ. Cảm giác đó chính là bằng chứng cho thấy tôi đã trưởng thành. Nếu bạn nhìn vào code bạn viết cách đây sáu tháng mà KHÔNG thấy ngại ngùng, đó mới là dấu hiệu đáng lo — nó có nghĩa là bạn không hề tiến bộ.

Hãy cứ phát hành đi

Nếu bạn có một dự án phụ đang nằm trong private repo ngay bây giờ — làm một nửa, lộn xộn, chưa sẵn sàng — tôi muốn bạn cân nhắc nghiêm túc việc phát hành nó. Trong tuần này. Y nguyên hiện trạng.

Nó không cần phải tốt. Hành động phát hành nó sẽ dạy bạn những điều mà sáu tháng xây dựng thêm không bao giờ làm được.

Dự án thứ hai của bạn sẽ tốt hơn. Dự án thứ ba sẽ tốt hơn nữa. Nhưng không cái nào có thể xảy ra cho đến khi cái đầu tiên đã ra khỏi cửa.

Hãy để nó tệ một cách đáng xấu hổ. Phát hành nó. Và chuyển sang cái khác. Đó chính là cách thức vận hành của thế giới lập trình.

Tôi đã phát hành hơn 20 dự án trong thập kỷ qua. Những cái đầu tiên rất tồi. Tôi đã ghi lại mọi sai lầm tôi mắc phải — 100 lỗi — và tổng hợp thành một hướng dẫn miễn phí cho các lập trình viên trẻ. Tải tại đây.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗