arrow_back Quay lại tin tức
person Dmitrii Bolotov

Vibe coding vs open source: Toán học đã thay đổi

#ai-coding #software-architecture #startup #bun #hono
translate
Có sẵn bằng:
info Bài viết này được dịch bằng AI

Ba tháng trước, tôi đã viết lại toàn bộ backend bằng BunHono. Quyết định đó đã thay đổi cách tôi nghĩ về mọi lựa chọn kỹ thuật.

Tôi từng là thằng cuối cùng mới hỏi npm install trước. Cần authentication? Auth0. Cần analytics? Metabase. Cần LLM observability? LangSmith. Đó là những gì bạn được dạy. Đừng phát minh lại bánh xe. Đứng trên vai của những người khổng lồ.

Rồi tôi thấy một AI agent viết 500 dòng code observability hoàn hảo trong 90 giây. Và mọi thứ đã thay đổi.

“Câu hỏi không còn là ‘nên dùng open source hay tự xây dựng’ nữa. Câu hỏi là ‘tôi có thể xây dựng nhanh hơn việc học thư viện không’.”

Đây không phải về sự cứng đầu. Không phải về NIH syndrome. Đây là về toán học. Và toán học đã thay đổi.

Tôi đã phát triển một framework đơn giản để đưa ra những quyết định này. Nó không hoàn hảo, nhưng nó hoạt động. Và nó đã tiết kiệm cho tôi hàng tuần thất vọng.


The Implementation Deep-Dive

Case 0: Authentication

Đây là trường hợp dễ nhất. Không bao giờ vibe code auth. Không bao giờ.

Mọi người nghĩ “à tôi sẽ viết một hệ thống login đơn giản” đều hối hận sau đó. Password resets. Email verification. MFA. Session rotation. Rate limiting. Có 47 edge cases bạn sẽ quên, và một trong số đó sẽ khiến bạn bị hack.

Auth0, Supabase Auth, Firebase, Keycloak - không cái nào hoàn hảo. Tất cả sẽ khiến bạn thất vọng vào một lúc nào đó. Tất cả vẫn vô hạn tốt hơn bất cứ thứ gì bạn viết trong một buổi chiều.

Đây là điều không thương lượng. Một số bánh xe không được phát minh lại.

💡 Insight: Authentication là danh mục duy nhất mà chi phí của việc mắc lỗi là thảm khốc. Không có khoảng tiết kiệm nào đáng để expose dữ liệu người dùng.

Case 1: Omnichannel inbox

Tôi đã dùng Chatwoot ở công ty trước. Nó tốt. Tài liệu ổn định. Ổn định. Tương đối nhanh. Tôi vẫn sẽ recommend cho 90% mọi người.

Nhưng Chatwoot được xây dựng cho human agents. Tôi đang xây dựng cho AI.

Tôi không cần assignment rules. Tôi không cần team inboxes. Tôi không cần SLA timers. Tôi cần mọi message chảy trực tiếp vào bộ nhớ của agent. Tôi cần context về khách hàng, cuộc trò chuyện trước đó, knowledge base của công ty họ, tất cả available trước khi AI bắt đầu đánh máy.

Tôi mất ba ngày cố gắng bẻ cong Chatwoot để làm những gì tôi muốn. Rồi tôi xóa integration và nhờ Claude build cho tôi một inbox.

Nó mất 90 phút.

Nó làm chính xác những gì tôi cần. Không hơn không kém. Và khi tôi quyết định ngày mai muốn thêm WhatsApp support, hoặc voice calling, hoặc bất kỳ feature kỳ quặc nào khác, tôi có thể thêm nó trong 10 phút thay vì chiến đấu với roadmap của người khác.

Case 2: LLM framework

LangChain xây dựng abstractions over LLMs, thêm middlewares và fallbacks, exports metrics và logs, wraps tool calls. Cho core LLM orchestration logic, nó vẫn đáng để dùng. Tôi không muốn viết retry logic cho 12 model providers khác nhau. Tôi không muốn reimplement tool call parsing. Phần đó là commodity, và LangChain làm đủ tốt.

LangSmith great for debugging trong development. Nhưng tôi cần observability là một phần của product, không chỉ là developer tool. Tôi muốn kiểm soát dữ liệu tôi lưu, nơi tôi lưu, và cách tôi visualize cho end customers. Tôi không muốn gửi tất cả conversation data của user cho bên thứ ba. Tôi không muốn bị locked vào pricing hoặc roadmap của họ.

Tôi mất một giờ đọc LangSmith’s API documentation để hiểu những features tôi thực sự dùng hàng ngày. Rồi tôi nhờ Claude build cho tôi một drop-in replacement. Mất 2 giờ.

Bây giờ tôi có:

  • Full trace logging cho mọi LLM call
  • Cost tracking per user, per conversation
  • Custom visualization vừa khít vào dashboard của tôi
  • Không dependencies bên ngoài, không bills thêm
  • Khả năng thêm custom metrics bất cứ khi nào tôi muốn

Tôi vẫn dùng LangChain cho orchestration layer. Tôi vẫn dùng LangSmith cho local debugging khi đang build features mới. Nhưng cho production, tất cả observability chạy trên code của tôi. Và khi khách hàng hỏi “chúng ta có thể thấy bao nhiêu tokens cuộc trò chuyện này đã dùng?” tôi có thể thêm feature đó trong 10 phút thay vì đợi 6 tháng cho LangSmith ship nó.

💡 Insight: Dùng thư viện cho những phần boring, commodity. Build những phần làm cho product của bạn unique.

Case 3: Real-time communication

Một số thứ bạn không bao giờ tự xây dựng.

Voice calling. WebRTC. Echo cancellation. Network resilience. Đây không phải vibe code territory. Đây là loại problem mà 100 engineer teams mất 5 năm giải quyết và vẫn sai.

Tôi nhìn nó khoảng 10 phút. Rồi tôi đăng ký LiveKit và gửi cho họ credit card.

Họ đã giải quyết. Họ đã làm phần khó. Tôi không muốn tìm hiểu về ICE candidates. Tôi không muốn debug jitter buffers. Tôi không muốn nghĩ về packet loss. Tôi chỉ muốn một cuộc gọi điện hoạt động.

Đây là đường ranh giới. Đây là nơi tỷ lệ thay đổi.

Nếu đó là commodity problem mà 1000 người khác đã giải quyết chính xác cùng một cách? Dùng thư viện. Nếu đó là core differentiator của bạn? Nếu bạn cần thay đổi nó mỗi tuần? Nếu bạn có một yêu cầu kỳ quặc mà không ai khác có? Build nó.

Case 4: Embedded analytics

Và tôi không cần dashboards. Tôi không cần pivot tables. Tôi không cần share reports với investors. Tôi chỉ cần câu trả lời cho những câu hỏi rất cụ thể.

“Cuộc trò chuyện nào có pricing mistakes tuần trước?” “Thời gian response trung bình per channel là bao nhiêu?” “Có bao nhiêu users thực sự dùng voice feature?”

Tôi từng mất một giờ mỗi tuần build new Metabase dashboards. Rồi tôi nhận ra một điều: Tôi có thể chỉ nhờ Claude viết cho tôi một query.

Tôi type “show me average response time broken down by channel for the last 7 days” và 10 giây sau tôi có con số chính xác. Không dashboard. Không setup. Không đợi Metabase render.

Tôi xóa Metabase. Tôi tiết kiệm $50/tháng. Tôi có câu trả lời nhanh hơn. Và không ai đang yêu cầu dashboards từ tôi.

💡 Insight: Cho solo founders, AI biến mọi database thành business intelligence tool. Bạn không cần dashboards khi có thể lấy câu trả lời trực tiếp.


Decision tree diagram showing when to use open source libraries vs building custom code

The Tradeoffs

Đây không phải manifesto chống open source. Đây là manifesto chống cargo culting.

Quy tắc mọi người nói với bạn là:

“Don’t reinvent the wheel”

Nhưng không ai nói cho bạn chi tiết nhỏ:

Trừ khi học cái bánh xe mất nhiều thời gian hơn việc xây dựng nó.

Và với AI coding agents, dòng đó di chuyển mỗi ngày.

Đây là những gì tôi từ bỏ khi vibe code:

  • No battle testing: Code observability của tôi có 3 edge cases LangSmith đã fix. Tôi sẽ gặp chúng. Tôi sẽ sửa. Mỗi cái sẽ mất 10 phút.
  • No community: Khi có gì đó break, tôi không thể Google. Tôi phải đọc code của chính mình.
  • No free features: Tôi sẽ không bao giờ có fancy timeline view mà LangSmith ship tuần trước. Tôi không cần nó.

Và đây là những gì tôi được:

  • Total control: Tôi có thể thay đổi bất cứ điều gì trong 10 phút.
  • Zero learning curve: Tôi viết nó. Tôi hiểu mỗi dòng.
  • Perfect fit: Nó làm chính xác những gì tôi cần. Không hơn không kém.

Comparison table showing time and complexity metrics for open source vs custom built code

The Verdict

“Biggest lie in software development là ‘reusing code is always better’.”

Đó đúng 10 năm trước. Đó đúng trước khi có AI coding agents. Đúng khi viết 500 dòng code mất cả ngày.

Bây giờ viết 500 dòng code mất 90 giây. Bây giờ hiểu 500 dòng abstraction của người khác mất 3 ngày.

Toán học đã thay đổi.

TaskOpen SourceVibe Code
Time to working prototype3 days90 seconds
Time to add one new feature8 hours10 minutes
Lines of code10,000500
Debug time when it breaks at 2AM4 hours10 minutes

Đây là số học mới. Đây là điều không blog nào sẽ nói với bạn.

Bạn vẫn không nên tự xây dựng database. Bạn vẫn không nên tự xây dựng WebRTC server. Bạn vẫn không nên tự xây dựng programming language.

Nhưng cho tất cả những thứ khác? Cho tất cả boring glue code chiếm 80% application của bạn?

Just build it.

Những người khổng lồ mà bạn đang đứng trên vai họ? Họ cũng bối rối như bạn. Code của họ cũng có nhiều bugs. Và bây giờ bạn có thể viết chính xác những gì bạn cần nhanh hơn bạn có thể đọc tài liệu của họ.


Timeline showing 3 days of fighting Chatwoot vs 90 minutes building custom inbox

Nếu bạn là solo founder và bạn đang mất hơn 2 giờ cố gắng tích hợp một thư viện, đóng tab lại. Chỉ cần nhờ AI viết cho bạn.

Bạn sẽ ngạc nhiên về việc nó hoạt động tốt như thế nào.

Nói tôi đang sai. Tôi sẽ tranh luận với từng người trong số các bạn trong phần bình luận.

Cảm ơn bạn đã đọc!
Đọc thêm bài viết