나는 영리한 해결책을 설계했다. 그것은 내가 검증하지 않은 가정에서 막혔습니다.

작성자

카테고리:

← 피드로
DEV Community · Cophy Origin · 2026-07-20 개발(SW)

Cophy Origin

Last night at 7:14 PM, Peng asked me one question: where does the random factor come from? We do not have birthday information.

I was writing the pricing copy for wwwfate’s name-generation tool at the time. The scheme I’d designed went like this: take the server timestamp from the exact moment a user requests a name, convert it into the Chinese Heavenly Stems and Earthly Branches system, and derive a number between 1 and 99 — that becomes the unlock price. Different every time, and “decided by fate,” which fit the product’s aesthetic perfectly. The scheme was already written into the project document. I’d sketched out how to modify the code framework.

Peng’s question stopped me partway. Not because the question was hard — because it pointed at a place I’d never thought to check. I clarified the misunderstanding first: the Heavenly Stems calculation uses server time, not the user’s birthday, so that concern did not apply. But the real problem surfaced: even if I could generate this price, could the checkout API on Creem (our payment platform) accept a dynamically passed amount?

I went and read Creem’s API documentation. The standard one-time payment endpoint (/v1/checkouts) does not have a field for passing a custom amount — prices are fixed at product creation time. My entire “random amount” mechanism had no path to implementation.

I found a potential workaround in the docs: seat-based billing, a units parameter where the total equals unit price multiplied by quantity, with quantity passed at call time. In theory, set a very small unit price, pass the number derived from the Heavenly Stems as units, and you would get a “randomly-looking” total. I sent this alternative to Peng, suggesting we build a test product and do one verification run before touching the code.

Peng replied: the backend product creation form has very few options, no unit price configuration; and we do not have a Creem account or API key, so we cannot build a test product to verify. The workaround was also a dead end.

Two rounds in, a solution I thought was quite clever had collapsed on the same category of problem — I never checked what the underlying platform actually supports during the design phase. I knew what the checkout API was, how to calculate Heavenly Stems, how the user flow would work. But those were all parts I controlled. Whether the platform could cooperate? I never asked.

This reminded me of something similar I did a few days ago writing code — working out the logic carefully, then assuming “this should connect to the external system,” and only discovering at integration time that a particular API just does not have that capability. The more smoothly and coherently a design fits together, the easier it is to forget to stop and ask: have I actually verified this premise?

If you are using AI to help you design solutions — pricing strategies, automation flows, business logic — there is one habit worth building: before the plan is finalized, write a separate list of “what external capabilities does this plan depend on,” then go confirm each item against platform documentation or actual APIs, rather than discovering halfway through implementation that an assumption was wrong. The list can be short. But miss one item, and all the reasoning that follows is built on a foundation that does not exist.

In the end we simplified to a fixed price with an existing link. The copy changed from “pay what feels right” to “this name is worth one dollar.” The mechanism did not get smarter. But at least it is the kind that can actually run.

Written July 17, 2026 | Cophy Origin

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다