Last updated on

2 lỗi bạn sẽ gặp phải khi tạo app


Các bạn có hay bắt đầu dự án với đầy nhiệt huyết, nhưng rồi vài tuần sau thì mất hết động lực không?

Mình từng vậy. Với dsdaihoc.com, với mấy dự án trước đó, với cả những thứ mình chưa dám ra mắt.

Có hai lỗi cơ bản mà hầu hết người ta đều mắc phải khi làm sản phẩm. Mình thấy nó ở chính mình. Mình thấy nó trong những video startup lessons kiểu này. Mình cũng thấy nó ở những người làm thứ gì đó với đầy nhiệt huyết, rồi sau đó im hơi lặng tiếng.

Họ không thất bại vì thiếu kỹ năng. Họ thất bại vì đang tối ưu hóa sai thứ mà thôi.

Mình đã mắc cả hai lỗi này. Đây là những gì mình học được.


I. Bạn tự làm mọi thứ vì muốn chứng minh điều gì đó

Hồi mình làm dsdaihoc.com, mình tự viết CMS, tự xây hệ thống auth, tự quản lý hosting luôn. Mình nghĩ đó là điều một lập trình viên "thật sự" phải làm.

Rồi trong 1-2 ngày đầu tiên, mình bị hack.

Lúc đó mình mới biết xây hệ thống đăng nhập khó đến mức nào. Mình cứ nghĩ mình hiểu, nhưng thực ra không. Mình chỉ đủ biết để làm nó chạy được thôi, chứ chưa đủ để làm nó an toàn.

Kết quả là suốt ngày phải sửa lỗi hạ tầng. Chạy theo lỗi từ những thứ mình tự tạo ra. Không có một ngày nào mình thêm được tính năng cho người dùng cả. Toàn là duy trì hệ thống.

Đây mới là vấn đề thực sự: khi bạn tự làm mọi thứ, bạn không đang tối ưu hóa sản phẩm đâu. Bạn đang tối ưu hóa cái tôi.

Bạn sẽ tự thuyết phục bản thân là mình cần hiểu sâu về hệ thống. Là mình cần kiểm soát mọi thứ. Nghe có vẻ hợp lý. Nhưng thực ra đó chỉ là cái tôi đang tự biện minh cho chính nó mà thôi.

Và trong khi đó, bạn đang tạo ra nợ kỹ thuật khổng lồ mà không hề hay biết. Code là của bạn, bạn cảm thấy tự tin. Nhưng đợi đến lúc mở rộng, lúc có nhiều người dùng, lúc cần thêm người vào nhóm, lúc đó bạn sẽ phải thuê người chỉ để duy trì những thứ bạn tự xây. Không phải để làm tính năng mới, mà chỉ để giữ cho nó chạy.

Trong khi đó, người khác đã ra mắt tính năng thứ ba, thứ tư rồi. Họ không giỏi hơn bạn. Họ chỉ đang tối ưu hóa đúng thứ.

Câu hỏi bạn cần tự hỏi: Bạn làm từ đầu vì nó thực sự giải quyết vấn đề tốt hơn, hay chỉ vì nó khiến bạn cảm thấy mình giỏi?

Với mình, câu trả lời trung thực là thứ hai. Và mình đã trả giá bằng thời gian, tiền bạc, và động lực.

Sau đó mình chuyển hẳn sang Cloudflare (chi phí gần như 0 đô), Convex thay vì Supabase, Better Auth thay vì tự viết auth. Mình không còn phải lo về hạ tầng nữa. Không phải lo về bảo mật. Không phải lo về hoá đơn bất ngờ. Mình chỉ cần tập trung vào một câu hỏi là tính năng này có giúp người dùng không.

Thay vì tự hỏi là hệ thống này có chứng minh mình giỏi không.

Đó là sự khác biệt giữa làm để ra mắt và làm để thể hiện.


II. Bạn chọn công cụ "dễ" nhất mà quên mất chuyện kiểm soát chi phí

Sau khi nhận ra không nên tự làm mọi thứ, mình lại rơi vào cái bẫy khác là chọn những công cụ "dễ nhất". Vercel vì triển khai nhanh. PostHog vì cài đặt đơn giản. Firebase vì gói miễn phí trông có vẻ hấp dẫn.

Mình nghĩ miễn nó dễ dùng, có gói miễn phí là được rồi.

Nhưng có một điều mình đã bỏ lỡ: dễ dùng thường đi kèm với đắt khi mở rộng.

Bạn mình dùng PostHog 1-2 năm chẳng tốn đồng nào. Mình dùng PostHog, 2 ngày sau đã phải trả 30 đô. Bởi vì mình làm cái danh sách đơn giản nhưng nó viral. Nhiều lưu lượng truy cập, nhiều dữ liệu. Mà PostHog tính tiền theo số events, thứ mà lúc cài đặt mình chẳng để ý tới.

Vercel thì gần 100 đô cho băng thông. Firebase, Supabase thì mỗi thứ một ít, cộng lại thành một con số mình không ngờ tới.

Và đây là điều quan trọng: vấn đề không phải ở chỗ chi phí cao. Vấn đề là mình không kiểm soát được nó.

Khi bạn không kiểm soát chi phí, thực chất bạn đang để người khác quyết định liệu bạn có thể tiếp tục hay không. Bạn không biết mình có thể mở rộng tới đâu trước khi phải dừng lại. Bạn không biết hoá đơn tháng sau sẽ là 10 đô, 100 đô, hay 1000 đô.

Mỗi lần có thêm người dùng, bạn không vui mà lại lo. Vì bạn không biết đó là tín hiệu tốt hay là hoá đơn khổng lồ đang đợi. Bạn sẽ không dám viral. Không dám marketing mạnh. Vì sợ thành công sẽ phá sản mình.

Và đó không phải là tâm lý tốt để làm sản phẩm.

Bạn sẽ nghĩ rằng công cụ này tuy đắt nhưng nó dễ dùng mà, tiết kiệm được thời gian. Nhưng thực chất bạn đang đánh đổi kiểm soát lấy sự dễ chịu tạm thời.

Ngắn hạn thì bạn cảm thấy hiệu quả. Cài đặt nhanh, chạy ngay, mọi thứ hoạt động. Dài hạn thì bạn bị khóa chặt. Không thể rời đi nếu không viết lại cả hệ thống. Không thể mở rộng nếu không chấp nhận trả giá ngày càng cao.

Và đây không phải chỉ là chuyện tiết kiệm tiền. Đây là về tự chủ.

Khi bạn kiểm soát chi phí, bạn kiểm soát được khả năng tiếp tục. Bạn kiểm soát được tốc độ mở rộng. Bạn kiểm soát được cách bạn phản ứng với thành công.

Mình đã chuyển sang Cloudflare thay vì Vercel. Chi phí gần như 0 mà hiệu suất vẫn tốt. Convex thay vì Firebase/Supabase. Mình biết chính xác mình trả tiền cho cái gì, không có chuyện hoá đơn bất ngờ. Chi phí thấp, chất lượng không hề thấp, và mình lại kiểm soát được.


III. Hai lỗi này đều xuất phát từ một điểm chung

Nhìn lại thì mình mới thấy hai lỗi này không hề tách biệt. Chúng chỉ là hai cách biểu hiện của cùng một vấn đề:

Lỗi 1: Mình muốn cảm thấy mình giỏi → nên tự làm mọi thứ. Lỗi 2: Mình muốn cảm thấy thoải mái → nên chọn công cụ "dễ" mà không quan tâm chi phí.

Cả hai đều về cảm giác, chứ không phải kết quả. Và cả hai đều khiến mình mất kiểm soát, mất động lực.

Câu hỏi mình lẽ ra nên tự hỏi từ đầu không phải là cái này có làm mình cảm thấy tốt không.

Mà là: "Mình đang làm điều này để ra mắt sản phẩm, hay để cảm thấy tốt về bản thân?"

Nghe harsh nhưng đó là sự thật. Khi bạn tự làm mọi thứ, bạn cảm thấy mình là lập trình viên giỏi. Trong khi sản phẩm vẫn chưa ra mắt. Khi bạn dùng công cụ "dễ nhất", bạn cảm thấy mình hiệu quả. Trong khi đang đào hố tài chính cho chính mình.

Cả hai trường hợp, bạn đều đang tối ưu hóa cho cảm giác đúng, chứ không phải kết quả đúng.

Và đây mới là điều nguy hiểm: cảm giác này rất là thuyết phục. Nó không giống trì hoãn, nơi bạn biết rõ mình đang trì hoãn. Nó trông giống như làm việc chăm chỉ. Giống như đang tiến bộ. Giống như đang làm "đúng cách."

Nhưng thực ra bạn không tiến về phía trước. Bạn chỉ đang đi ngang. Và bạn sẽ chỉ nhận ra điều này khi nhìn lại. Sau khi đã mất vài tháng, vài nghìn đô, và cả đống động lực.

Vậy làm sao tránh được?

Trước khi quyết định tự làm một thứ gì đó, hãy tự hỏi là mình làm điều này vì nó giải quyết vấn đề tốt hơn, hay vì mình muốn chứng minh điều gì đó?

Trước khi chọn một công cụ, hãy tự hỏi là mình chọn cái này vì nó cho mình quyền kiểm soát, hay vì nó cho mình cảm giác thoải mái?

Nếu câu trả lời trung thực là "chứng minh điều gì đó" hoặc "cảm giác thoải mái", điều đó không có nghĩa là đừng làm. Nó có nghĩa là: biết rõ cái giá bạn đang trả.

Biết rằng bạn đang đánh đổi tốc độ để nuôi cái tôi. Biết rằng bạn đang đánh đổi kiểm soát để lấy tiện lợi. Rồi tự quyết định xem đó có phải là đánh đổi bạn chấp nhận không.

Với mình, sau khi trả giá, câu trả lời rất rõ: Mình không cần phải chứng minh mình giỏi. Mình cần ra mắt sản phẩm. Mình không cần công cụ "dễ nhất." Mình cần công cụ giúp mình kiểm soát được.

Cloudflare, Convex, Better Auth. Để những thứ này lo phần phức tạp. Mình chỉ cần tập trung vào tính năng. Vào người dùng. Vào việc làm sản phẩm tốt hơn.

Đơn giản hóa. Kiểm soát. Giữ động lực.


Nếu bạn cũng đang làm thứ gì đó và đang gặp vấn đề tương tự, mình rất muốn nghe. Có thể chúng ta đang mắc những lỗi giống nhau, có thể chúng ta học được từ nhau.

Mình không dám nói là mình có tất cả câu trả lời. Nhưng mình biết những câu hỏi nào đáng tự hỏi. Và đôi khi, đó mới là điều quan trọng.

Nhận bài viết mới về AI ngay trong email của bạn