Credit card buckets spec

Steve Yegge had a few questions, so here are the answers. This shit is so obvious. It’s not hard to be a programmer at all.

Can customers control the buckets, or are they fixed?
Customers can control the buckets.
If fixed, how many are there? What are their names?
They’re not fixed.
Let’s assume for the remaining questions that they are NOT fixed, since a predefined set of buckets would be “insanely stupid” and rejected by customers. So, how many buckets can a customer make? Min and max?
Min: 0; Max: 2,147,483,647.
Can customers give the buckets names?
Yes.
If not, do they have to use numbers?
They can.
What characters can they use in the name?
[a-zA-Z0-9_\’\@\#\$\%\&\*\(\)\:\;\/\\\-\+ ]
What’s the maximum length?
64.
If we need to truncate the name in a printed statement, how do we truncate it?
Truncate to MAX_LEN-3 characters long and append ‘…’.
Can a customer change their buckets mid-month?
Yes.
Can a customer change their buckets between months?
Yes.
What if their balance is nonzero?
Balances are usually nonzero.
Can they transfer balance between buckets?
Yes.
Can a customer change the name of a bucket?
Yes.
Do names have to be unique?
No.
Exactly how does a customer name a bucket?
They nominate a name for buckets they have created on the web-site.
Online?
Yes.
Over the phone?
No.
By snail mail forms?
No.
Talking to bank teller?
No.
All of the above?
Online only, to save on administration overhead.
Same question for all other configuration settings. How? Where?
Online only.
Do credit-card customer service reps have to know about the buckets?
No.
How much do they have to know? (hint: everything)
They have to know that the policy is that this feature is supported online only.
Is there training involved? (hint: yes)
Yes, we need to inform them that there’s a new online service.
Do the customer-service tools have to be redesigned to take into account this bucketization?
No.
What about the bank’s customer self-service website?
We’re integrated as a part of that.
What about the phone interactive voice-response tree?
It’s not relevant to this feature.
What about the software that sends email updates to the customer?
It doesn’t need to know about buckets.
What about the software that generates printed billing statements?
It should incorporate bucket information.
How exactly does it represent the buckets, the individual spending limits and balances, the carry-overs from month to month, the transfers, the charge-backs, the individual per-bucket fees?
Buckets are named per the customer’s setting. The individual spending limits and balances are reported. There are no carry-overs from month to month. Transfers are allocated in a bucket. What are charge-backs? There are no fees for this service.
What about the help text on the website?
It should be in UTF-8 format, and contain useful descriptive information about the service.
What about the terms and conditions?
This is a “best efforts” under-taking of the bank that is fraught with peril and not guaranteed (though maybe useful).
What about the little marketing pamphlets?
They should advertise the availability of the new service.
Should they try to explain all this shit, or just do some hand-waving?
Just do some hand-waving.
Can a customer insert a new bucket into the list?
Yes.
How are the credit limits of the remaining buckets re-allocated?
They’re not. If the customer adds a new bucket they increase their monthly spending unless they modify another bucket to account.
What if adding a new bucket puts one or more of the older buckets over the limit?
Adding a new bucket can’t do that.
Do we charge fees?
No. The service is free as a point of difference from other banks.
Do we tell the customer they’re about to be charged a fee right before they create the bucket?
There is no fee.
Is it, like, OK/Cancel?
It’s not relevant, there’s no fee.
Do we send them a follow-up email telling them they just fucked themselves over?
No, that would be a bad idea.
What exact wording do we use?
We don’t send such and email.
Can a customer delete a bucket?
Yes.
What if there’s money in it?
We ask them which bucket they’d like to transfer it too, or if they’d like it in ‘unallocated’.
What if it’s overdrawn?
It can still be deleted if it’s overdrawn.
How do we represent the overdraft fee in the database?
There is no fee.
How do we show the deletion event in their bill?
By omitting that bucket from their list.
Can a customer merge or consolidate buckets?
Yes.
What if a customer has an emergency situation, plenty of limit in other buckets, and they really really need to charge to a couple of buckets, but they want to avoid an overdraft fee? What do they do? Are the buckets mandatory or discretionary?
Buckets are discretionary, overall account balance attracts overdraft fee.
How the hell do we even tell if they’re buying “chocolate”, anyway?
We provide a facility for them to nominate the bucket of a transaction after it has been processed. There is a bucket for unallocated spending.
The vendor doesn’t tell us the purchase type. How do we know how to charge the right bucket?
We can’t, it’s up to the customer to allocate their spending.
What if it’s ambiguous?
It will always be ambiguous.
What if the buckets overlap?
The customer picks a bucket.
Does the customer need a point-of-sale interface for deciding which bucket to put the charge in?
No, it can be done after the purchase.
Can they do “separate checks” and split the charge into several buckets?
Yes.
Where are you going? Answer me!
I’m still here, baby.
WHAT THE EVER-LOVING *FUCK* ARE YOU PEOPLE SMOKING? HUH? HAVE YOU EVEN THOUGHT ABOUT THIS PROJECT FOR MORE THAN A MILLISECOND? THE SPEC FOR THIS PROJECT WILL BE 5,000 PAGES! IT WILL TAKE THOUSANDS OF MAN-YEARS TO IMPLEMENT, AND *NOBODY* WILL UNDERSTAND HOW IT WORKS OR HOW TO USE IT, EVEN IF WE SOMEHOW MANAGE TO LAUNCH IT! IT’S FRIGGING IMPOSSIBLE! IT’S INSANE! __YOU__ ARE INSANE! I QUIT! NO, WAIT, YOU’RE FIRED! ALL OF YOU! AAAAAAAAAUUUGH!
Having a rough day, Stevey? This programming gig isn’t for the meek, you know.