Never build the payment system tight coupled to the rest. Humans need to be able to overrule anything, anytime.
This should be a rule of thumb for everything.
It's emails and spreadsheets all the way down if you're building a product for an Enterprise audience.
You are right in that decoupled systems aren't good.
For every exception, you need someone on top of it. You have a limited pool of people to distribute this knowledge to, and the responsibility for maintaining this knowledge to even if that just invoves knowing where to look to figure something out.
Overrides are tricky to accomodate, standardize, and organize if you don't nail dpwn the appropriate data model for the process.
So when told there is this thing which must be done by sales that prevents machines doing what that affects customers, it’s interpreted as either an IT guy is making incomprehensibles or hypotheticals because machines cannot be subject of a sentence, and as an empty demand with no return because neither party gains credits from the conversation.
And we’ll end up in “I told you! You had to!” “Told you what? You didn’t say anything”.
This needs to be a guiding principle of anyone who builds any sort of software.
It is SOFTware so it can always be changed. The question becomes who can do the changes and when (which ends up being much trickier to answer)
In the meantime I'm well aware of and speak to our Microsoft rep regularly, they know our business and what we need, and have been helping round up resources for upcoming projects and initiatives. It's night and day between MS and Google.
It seems like Google thinks their products are so perfect and infallible that they can cut out the human element entirely. That may work for personal Gmail accounts and such but not so great when you spend millions with them.
Despite buying all those through a VAR we still have account managers/executives, dedicated systems engineers that we work with directly at the vendor, except Google.
Having human overrides to correct or change data is equally useful for just fixing what you get wrong yourself, as it is for special cases.
I’m sure he’ll make a mess of something down the line, and I hope someone after my time added audit logs (to track what he inevitably changes and breaks). But there’s something deep and important in empowering other aspects of the business to interact with the computing silo. There’s a time for automation. And there’s a time before that where custom tooling isn’t worth building yet. And just changing records manually is the right approach.
1. Launch a SaaS app that people like, with self-service signup and monthly billing by credit card.
2. Continue to grow and become more successful.
3. New leadership comes in, and decides that the path to growth is hiring a bunch of sales people and selling to "enterprises" instead of self service people with credit cards.
4. The sales people start selling to enterprises and promising terms that not only can the billing system not support, but that engineering hasn't even been asked to look into yet.
5. Yell at engineering for not "supporting our sales team" and try to get them to fix it, without slipping other feature launches, and without hiring more engineers.
6. Look like an idiot to all of your enterprise customers because you're selling them a product that was never designed for their needs, and without appropriate engineering scale to change it.