3 ms·
I can add a few more from my own experience: Billing really is complicated, but the people who set the policies don't understand that. They want to be able to
by jerf 4y ago
I can add a few more from my own experience:
Billing really is complicated, but the people who set the policies don't understand that. They want to be able to say "Hey, let's give people a 10% discount if they sign up for a yearly bill, but also don't have this service over here, and for governments and students let's cut that down by another 15%" and so on, basically "billing by English spec", and because they think this is trivial and easy it gets handed as a spec written in stone to the billing team. Even in engineering-type organizations, treating this as an engineering problem is often a foreign concept to the org, so the idea of having the eng team estimate effort and then go back to the original requestor and make sure they really want it 1000 engineer-hour's worth, and that the rest of the org is willing to dedicate that much time to it, is generally not done. (Or whether or not there's an alternative thing that could be done at 1/10th the price that achieves the original goals, e.g. "we don't have annual discounts built into the system but we have this other fairly-close concept already built in, can we just slightly tweak the ask to use that, rather than having to implement a whole new complicated concept?") Even a company that has learned the hard way that "Let's just change the button to blue and move it down an inch" is more complicated than it looks thinks that management can just write whatever billing policy they want and there are no costs associated with it.
On a more pure-engineering front, engineers have the tendency to want to implement billing discounts and such by lying to the usage database. "Ah, we will implement this 10% off policy by telling our record-keeping system that they used 10% less stuff." I've banged on how important it is to never lie to your database a few times, and the billing database is what really brought this home to me. This way lies madness, as you start to stack lies on lies on other lies in the database and then counter the lies with other heuristics and then counter the heuristics with other lies and before you know it your database contains no truth anymore, which is a problem because neither does anything else. The database was supposed to be the source of truth.
- fatnoah 4y ago> Billing really is complicated, but the people who set the policies don't understand that. The very first startup I joined in the late '90s tackled this problem. The company tackled billing and all of its complexities by building a SaaS product before SaaS was a widely used term (even the company didn't call it SaaS for a few years). The level of complexity was very high. Creating rules, calculating charges, dealing with taxes, ensuring things were auditable, and making it all performant were all huge challenges. Basic billing of hours x rate is easy, but (as you've noted) it's a rare person that is content with that. I cringe every time someone says "We'll build it ourselves" when it comes to billing. Even for simple things like the 10% discount (new customers only, plans > $9.99/month, discount expires after 3 months) get complicated very quickly.
- Retric 4y agoRather than becoming complicated it much better to assume discounts are already complex. Rebates (final bill - X$) aren’t the same as exclusive discounts (X% for seniors or Y% for veterans) which are different from additive discounts ( X% + Y% = Z%) as separate from multiplicative ( (1 - X%) * (1 - Y%) = (1 - Z%)) etc. Unfortunately, it’s really easy to assume everything is simple until the system gets complicated enough nobody understands it.