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.